C# 饮料类继承和多态实现:茶、咖啡和牛奶的收费系统
运用C#语言,写出代码内容:using System;
namespace ConsoleApp1 { class Drink { protected int id; protected int num; protected double price;
public Drink(int id, int num, double price)
{
this.id = id;
this.num = num;
this.price = price;
}
public virtual void print()
{
Console.WriteLine(id + ' ' + Math.Round(num * price, 1));
}
}
class Tea : Drink
{
private int areaCode;
const double serviceCharge1 = 0.5;
const double serviceCharge2 = 0.2;
public Tea(int id, int num, double price, int areaCode) : base(id, num, price)
{
this.areaCode = areaCode;
}
public override void print()
{
double charge = 0;
if (areaCode == 1)
{
charge = num * price * serviceCharge1;
}
else
{
charge = num * price * serviceCharge2;
}
Console.WriteLine(id + ' ' + Math.Round(num * price + charge, 1));
}
}
class Coffee : Drink
{
private int processCode;
const double serviceCharge1 = 1.0;
const double serviceCharge2 = 0.2;
public Coffee(int id, int num, double price, int processCode) : base(id, num, price)
{
this.processCode = processCode;
}
public override void print()
{
double charge = 0;
if (processCode == 1)
{
charge = num * price * serviceCharge1;
}
else
{
charge = num * price * serviceCharge2;
}
Console.WriteLine(id + ' ' + Math.Round(num * price + charge, 1));
}
}
class Milk : Drink
{
public Milk(int id, int num, double price) : base(id, num, price)
{
}
}
class Program
{
static void Main(string[] args)
{
Drink[] drinks = new Drink[10];
int count = 0;
string line;
while ((line = Console.ReadLine()) != "0")
{
string[] items = line.Split(' ');
int type = int.Parse(items[0]);
int id = int.Parse(items[1]);
int num = int.Parse(items[2]);
double price = double.Parse(items[3]);
switch (type)
{
case 1:
int areaCode = int.Parse(items[4]);
if (areaCode != 1 && areaCode != 2)
{
Console.WriteLine("Drink type error.");
}
else if (id < 100 || id > 999)
{
Console.WriteLine("Drink ID error.");
}
else if (num < 0)
{
Console.WriteLine("Drink number error.");
}
else if (price < 0)
{
Console.WriteLine("Drink price error.");
}
else
{
drinks[count] = new Tea(id, num, price, areaCode);
count++;
}
break;
case 2:
int processCode = int.Parse(items[4]);
if (processCode != 1 && processCode != 2)
{
Console.WriteLine("Drink type error.");
}
else if (id < 100 || id > 999)
{
Console.WriteLine("Drink ID error.");
}
else if (num < 0)
{
Console.WriteLine("Drink number error.");
}
else if (price < 0)
{
Console.WriteLine("Drink price error.");
}
else
{
drinks[count] = new Coffee(id, num, price, processCode);
count++;
}
break;
case 3:
if (id < 100 || id > 999)
{
Console.WriteLine("Drink ID error.");
}
else if (num < 0)
{
Console.WriteLine("Drink number error.");
}
else if (price < 0)
{
Console.WriteLine("Drink price error.");
}
else
{
drinks[count] = new Milk(id, num, price);
count++;
}
break;
default:
Console.WriteLine("Drink type error.");
break;
}
}
for (int i = 0; i < count; i++)
{
drinks[i].print();
}
}
}
}
原文地址: https://www.cveoy.top/t/topic/nTrt 著作权归作者所有。请勿转载和采集!