C#汽车租凭(面对对象(封装、继承,多态的应用))

 //汽车租凭
    //我的思路:一个父类(汽车类),两个子类(轿车类和客车类),然后按题意定义属性
    //分别在两个子类创建一个父类对象数组,将两个子类表上的具体信息和对应的租金存入数组中
    //然后再按照效果实现表上进行编写,灵活调用数组
    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();  //父类对象调用方法

        }
    }

}
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值