//汽车租凭
//我的思路:一个父类(汽车类),两个子类(轿车类和客车类),然后按题意定义属性
//分别在两个子类创建一个父类对象数组,将两个子类表上的具体信息和对应的租金存入数组中
//然后再按照效果实现表上进行编写,灵活调用数组
class Motorcar //汽车类
{
public string License { get; set; } //车牌号
public string Brand { get; set; } //品牌
public double Money { get; set; } //日租金
public string Seat { get; set; } //座位数
public string Model { get; set; } //型号
public int days; //租凭天数
public double discount; //打折
public void SumMoney() //租凭天数 子类进行调用
{
Console.Write("请输入你要租凭的天数:");
days = int.Parse(Console.ReadLine());
}
public virtual double Discount() { return 1; } //打折方法 子类进行覆盖
public virtual void Take() { } //编写输出方法 子类进行覆盖
}
class Bus : Motorcar //客车类
{
public Motorcar[] dd = new Motorcar[4]; //建一个存客车信息的父类数组
public void Mada()
{
for (int i = 0; i < dd.Length; i++)
{
Console.WriteLine(dd[i].Brand);
}
}
public override double Discount() //客车折扣
{
if (days >= 150)
{
discount = 0.6;
}
else if (days < 150 && days >= 30)
{
discount = 0.7;
}
else if (days < 30 && days >= 7)
{
discount = 0.8;
}
else if (days < 7 && days >= 3)
{
discount = 0.9;
}
return discount;
}
public override void Take() //客车编写
{
//把客车具体信息和日租金存入数组
Bus a = new Bus();
a.Brand = "金杯";
a.Seat = "16座";
a.License = "京6566754";
a.Money = 800;
dd[0] = a;
Bus a1 = new Bus();
a1.Brand = "金龙";
a1.Seat = "16座";
a1.License = "京8696997";
a1.Money = 800;
dd[1] = a1;
Bus a2 = new Bus();
a2.Brand = "金杯";
a2.Seat = "34座";
a2.License = "京9696996";
a2.Money = 1500;
dd[2] = a2;
Bus a3 = new Bus();
a3.Brand = "金龙";
a3.Seat = "34座";
a3.License = "京5694564";
a3.Money = 1500;
dd[3] = a3;
Console.Write("请选择你要租凭的汽车品牌:(1、金龙 2、金杯)");
string aa = Console.ReadLine();
Console.Write("请输入你要租凭的汽车座位数:(1、16座 2、34座)");
string b = Console.ReadLine();
SumMoney();
for (int i = 0; i < dd.Length; i++)
{
if (dd[i].Brand == aa && dd[i].Seat == b)
{
Console.WriteLine("分配给你的汽车牌号是:" + dd[i].License);
Console.WriteLine("天数:" + days + " 打折:" + Discount() + " 日租金:" + dd[i].Money);
Console.WriteLine("你需要支付的租凭分费用是:" + Discount() * days * dd[i].Money);
}
}
}
}
class Car : Motorcar //轿车类
{
public Motorcar[] dd = new Motorcar[4]; //建一个存轿车信息的父类数组
public override double Discount() //轿车折扣
{
if (days >= 150)
{
discount = 0.7;
}
else if (days < 150 && days >= 30)
{
discount = 0.8;
}
else if (days < 30 && days >= 7)
{
discount = 0.9;
}
return discount;
}
public override void Take() //轿车编写
{
//把轿车具体信息和日租金存入数组
Car b = new Car();
b.Brand = "宝马";
b.Model = "x6";
b.License = "京NY54656";
b.Money = 800;
dd[0] = b;
Car b1 = new Car();
b1.Brand = "宝马";
b1.Model = "550i";
b1.License = "京CNY6997";
b1.Money = 600;
dd[1] = b1;
Car b2 = new Car();
b2.Brand = "别克";
b2.Model = "林荫大道";
b2.License = "京NT96996";
b2.Money = 300;
dd[2] = b2;
Car b3 = new Car();
b3.Brand = "别克";
b3.Model = "GL8";
b3.License = "京NT94564";
b3.Money = 600;
dd[3] = b3;
Console.Write("请选择你要租凭的汽车品牌:(1、别克 2、宝马)");
string a = Console.ReadLine();
string bb = "0";
if (a == "别克")
{
Console.Write("请输入你要租凭的汽车类型:(1、林荫大道 2、GL8)");
bb = Console.ReadLine();
}
else if (a == "宝马")
{
Console.Write("请输入你要租凭的汽车类型:(1、X6 2、550i)");
bb = Console.ReadLine();
}
SumMoney();
for (int i = 0; i < dd.Length; i++)
{
if (dd[i].Brand == a && dd[i].Model == bb)
{
Console.WriteLine("分配给你的汽车牌号是:" + dd[i].License);
Console.WriteLine("天数:" + days + " 打折:" + Discount() + " 日租金:" + dd[i].Money);
Console.WriteLine("你需要支付的租凭分费用是:" + Discount() * days * dd[i].Money);
}
}
}
}
class Test
{
public static Motorcar Get(int a) //父类有参构造函数 返回父类对象
{
Motorcar hh = new Motorcar();
if (a == 1)
{
hh = new Bus();
}
else if (a == 2)
{
hh = new Car();
}
return hh;
}
static void Main(string[] args)
{
Console.WriteLine("1.客车 2.轿车");
Console.Write("请输入你要租凭的汽车类型:");
int a = int.Parse(Console.ReadLine());
Get(a).Take(); //父类对象调用方法
}
}
}