汽车租赁系统 封装。继承和多态

小总结:在汽车租赁系统中用到了类的方法,构造函数,值类型,和引用类型

使用集合储存数据,并能使用封装,继承,多态创建和操作类

1.租车。。显示系统中所有可出租的汽车,选中要出租的汽车,输入租用人 以出租汽车            

代码如下:

 1  public Dictionary<string, Vehicle> vehicles;//可租的车的集合保存
 2         public Dictionary<string, Vehicle> renttVehicles;//租出的车的集合保存
 3         private void Form1_Load(object sender, EventArgs e)
 4         {
 5             //将数据加载到集合中
 6             vehiclee();
 7             //默认载重量文本框不可用
 8             this.txtzai.ReadOnly = true;
 9         }
10         //构造出两辆小汽车,两辆卡车
11         public void vehiclee()
12         {
13             //实例化未出租字典类型的集合
14             vehicles = new Dictionary<string, Vehicle>();
15             Car dd = new Car("粉色", 99999, "京P1111", "捷豹TK07", 1);
16             Truck ds = new Truck("蓝色", 150, "豫C6644", "长江卡货", 2, 40);
17             vehicles.Add(dd.LicenseNo, dd);
18             vehicles.Add(ds.LicenseNo, ds);
19             //实例化已出租字典类型的集合
20             renttVehicles = new Dictionary<string, Vehicle>();
21             //出租出去的车
22             Car  car= new Car("白色", 240, "京PC9K11", "奥迪A8", 3);
23             Truck  truck= new Truck("黑色", 582, "京AP6666", "擎天柱", 5, 30);
24             renttVehicles.Add(car.LicenseNo, car);
25             renttVehicles.Add(truck.LicenseNo, truck);
26             car.RentUser = this.txtname.Text;
27
28         }
29    public void PrintVehicles(Dictionary<string, Vehicle> rnotrent, ListView lvshow)
30         {
31             lvshow.Items.Clear();
32             foreach (Vehicle item in rnotrent.Values)
33             {
34                 ListViewItem lvitem = new ListViewItem(item.LicenseNo);
35                 if (item is Car)
36                 {
37                     lvitem.SubItems.Add(item.Name);
38                     lvitem.SubItems.Add(item.Color.ToString());
39                     lvitem.SubItems.Add(item.YearsOfService.ToString());
40                     lvitem.SubItems.Add(item.DailyRent.ToString());
41
42                 }
43                 if (item is Truck)
44                 {
45                     lvitem.SubItems.Add(item.Name);
46                     lvitem.SubItems.Add(item.Color.ToString());
47                     lvitem.SubItems.Add(item.YearsOfService.ToString());
48                     lvitem.SubItems.Add(item.DailyRent.ToString());
49                     lvitem.SubItems.Add(((Truck)item).Load.ToString());
50                 }
51                 lvshow.Items.Add(lvitem);
52             }
53         }                                                                                                                                
54         //租车
55         private void button2_Click(object sender, EventArgs e)
56         {
57             if (txtname.Text=="")
58             {
59                 MessageBox.Show("请您输入租用者的姓名再来租用!哦");
60                 return;
61             }
62             //从可租车辆集合中移除车辆A
63             //将A添加到已租车辆集合中
64             if (listView1.SelectedItems.Count>0)
65             {
66                 string number = listView1.SelectedItems[0].Text;
67                 Vehicle ve = vehicles[number];
68                 vehicles.Remove(number);
69                 PrintVehicles(vehicles, listView1);//重新绑定 ListView
70                 renttVehicles.Add(number, ve);
71                 MessageBox.Show("已出租。", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
72             }
73         }
74         //刷新
75         private void button1_Click(object sender, EventArgs e)
76         {
77             PrintVehicles(vehicles, listView1);
78         }
1         //关闭窗体
2         private void button6_Click(object sender, EventArgs e)
3         {
4             this.Close();
5         }

2.还车。在还车列表中选择汽车信息,输入出租天数,计算租金                                    

    //结算
        private void button3_Click(object sender, EventArgs e)
        {
            if (textBox2.Text==string.Empty)
            {
                MessageBox.Show("请输入租出时间!");
                return;
            }
            //01.将车A从已租集合中移除   //02,将车A加入到可租车辆中
            string number = listView2.SelectedItems[0].Text;
            Vehicle ve = renttVehicles[number];
            renttVehicles.Remove(number);
            PrintVehicles(renttVehicles, listView2);//重新绑定 ListView
            vehicles.Add(number, ve);
            ve.RentDate = Convert.ToInt32(textBox2.Text);
            double money = 0;
            money = ve.CalcPrice();
            MessageBox.Show("您需要支付"+money+"元");
        }
        //刷新
        private void button4_Click(object sender, EventArgs e)
        {
            PrintVehicles(renttVehicles, listView2);
        }

3.新手入库。需要录入汽车的车牌号,车型,颜色使用时间和每日租金。如果是卡车还要录入卡车的载重,

                         

 1       //入库
 2         private void button5_Click(object sender, EventArgs e)
 3         {
 4             if (txthao.Text == string.Empty || txtxing.Text == string.Empty || cmdse.Text == string.Empty || txtshijan.Text == string.Empty
 5                 || txtmei.Text == string.Empty)
 6             {
 7                 MessageBox.Show("请您都填写完整在入库!");
 8             }
 9             else
10             {
11                 string linno = txthao.Text;
12                 string xing = txtxing.Text;
13                 string color = cmdse.Text;
14                 int time = Convert.ToInt32(txtshijan.Text);
15                 double zu = Convert.ToDouble(txtmei.Text);
16                 if (radioButton1.Checked)
17                 {
18                     Car dd = new Car(color, zu, linno, xing, time);
19                     vehicles.Add(linno, dd);
20                 }
21                 if (radioButton2.Checked)
22                 {
23
24                     int load = Convert.ToInt32(txtzai.Text);
25                     Truck ds = new Truck(color, zu, linno, xing, time, load);
26                     vehicles.Add(linno, ds);
27                 }
28                 MessageBox.Show("添加成功@!");
29             }
30         }
31         //切换到汽车载重量变成不可选用
32         private void radioButton1_CheckedChanged(object sender, EventArgs e)
33         {
34             this.txtzai.ReadOnly = true;
35         }
36         //切换到卡车添加清空一下所有的文本框
37         private void radioButton2_CheckedChanged(object sender, EventArgs e)
38         {
39             this.txthao.Text = string.Empty;
40             this.txtmei.Text = string.Empty;
41             this.txtname.Text = string.Empty;
42             this.txtshijan.Text = string.Empty;
43             this.txtxing.Text = string.Empty;
44             this.txtzai.Text = string.Empty;
45             this.txtzai.ReadOnly = false;
46         }

时间: 2024-11-05 14:38:36

汽车租赁系统 封装。继承和多态的相关文章

继承与多态实战,之汽车租赁系统

汽车租赁系统 1.任务描述 ①租车:显示系统中所有可出租的汽车,选中要出租的汽车,输入租用人已出租汽车. ②还车:在还车列表中选择汽车信息,输入出租天数,计算租金 ③新车入库:需要录入汽车的车型,颜色,使用时间和每日租金,如果是卡车还要录入卡车的载重. 2.搭建系统 ① 创建类:交通工具类(抽象类),汽车类,卡车类.卡车汽车继承交通工具类,载重为卡车的特有属性 ②创建存储租车信息还车信息的集合,并将数据显示到对应控件中(由于卡车存在特有属性)必须用List<Vehicle>来存储, 如果使用d

继承与多态之汽车租赁系统

1.租车 显示系统中所有可出租的汽车,选中要出租的汽车,输入租用人以出租汽车,如图所示 2.还车 在还车列表中选择汽车信息,输入出租天数,计算租金,如图所示 3.新车入库 需要录入汽车的车牌号,车型,颜色,使用时间,和每日租金,如果是卡车还要录入卡车的载重,如图所示 具体实现过程: 1.搭建系统 按照类图创建类,体会Vehicle,Trech和Car三个类之间的关系 Car类: namespace _09汽车租赁系统{public class Car:Vehicle{public Car(str

第四节 综合实例:使用多态完善汽车租赁系统计价功能

综合实例:使用多态完善汽车租赁系统计价功能 主讲教师:王少华      QQ群号:483773664 学习目标 在案例中应用多态; 使用父类类型作为方法的形参 一.计算一次租赁多辆汽车的总租金 (一) 需求说明 在前一章(继承)汽车租赁系统的基础上,即已经实现了汽车租赁系统的简单计价功能,客户可以租赁一辆某种型号的汽车若干天.现在要增加需求: 客户可以一次租赁多辆不同品牌的不同型号的汽车若干天,要求计算出总租赁价. 假设有一客户要租赁: 2辆宝马 1辆别克商务舱 1辆金龙(34)座 租5天共多少

跟王老师学多态(四):综合实例:使用多态完善汽车租赁系统计价功能

综合实例:使用多态完善汽车租赁系统计价功能 主讲教师:王少华      QQ群号:483773664 学习目标 在案例中应用多态; 使用父类类型作为方法的形参 一.计算一次租赁多辆汽车的总租金 (一) 需求说明 在前一章(继承)汽车租赁系统的基础上,即已经实现了汽车租赁系统的简单计价功能,客户可以租赁一辆某种型号的汽车若干天.现在要增加需求: 客户可以一次租赁多辆不同品牌的不同型号的汽车若干天,要求计算出总租赁价. 假设有一客户要租赁: 2辆宝马 1辆别克商务舱 1辆金龙(34)座 租5天共多少

你知道汽车租赁系统的关键点吗?

汽车租赁系统 主界面如下: 关键点一:怎样理清各个类之间的关系? 一共需要4个类:Car 类,Truck类,Vehicle类,VehicleUtil类 Car类:小汽车类  主要包括小汽车价格的计算方法 Truck类:货车类   主要包括货车费用的计算方法 Vehicle类:车辆类  描述车辆的一些基本信息 VehicleUtil类:工具类  创建汽车对象 下面附上一张类图: 关键点二:租车事件 首先要有两道验证:即 “输入出租人姓名验证” 和 “选择车辆验证”,代码如下: 1 if (Stri

Mysql数据库大量删除操作及谈面向对象中的封装继承和多态原理(图)

Mysql数据库大量删除操作及谈面向对象中的封装继承和多态原理(图)最近进行数据库操作,遇到一个问题,就是大量删除一个数据表中的数据后,由于设定了id是自增的,导致再插入时,默认生成的id会很大,这个时候想要再次插入新的数据,应该怎么办呢?1.明确目前最后一个id的大小select id from tags order by id DESC limit 0,1; 假设返回的是9,则设置数据表从10开始自增 2.修改这个数据表从10开始自增alter table tags auto_increme

汽车租赁系统总结

汽车租赁系统有一下功能 功能一(租车): 描述:显示系统中所有可租的汽车,选中要出租的汽车,输出租用人已租出汽车 功能二(还车): 描述:在还车列表中选中汽车信息,输入出租天数,计算租金 功能三(新车入库): 描述:需要录入汽车的车牌号,车型,颜色,使用时间和每日租金,如果是卡车还是要录入卡车的载重量 本租车系统要有三个类,有一个父类为(Vehicle),子类分别是(Truck)和(Car) 父类关键代码如下: Truck子类代码如下: Car子类代码如下: 要初始化租车信息: 然后将数据绑定到

第十章 汽车租赁系统

本次综合练习的任务是开发”汽车租赁系统“,汽车租赁系统包括以下功能 1.租车 显示系统中所有可出租的汽车,选中要出租的汽车,输入租用人以出租汽车,如图所示 2.还车 在还车列表中选择汽车信息,输入出租天数,计算租金,如图所示 3.新车入库 需要录入汽车的车牌号,车型,颜色,使用时间,和每日租金,如果是卡车还要录入卡车的载重,如图所示 具体实现过程: 1.搭建系统 按照类图创建类,体会Vehicle,Trech和Car三个类之间的关系 Car类: namespace _09汽车租赁系统{ publ

day33 序列类型,绑定方法,类方法,静态方法,封装继承和多态

Python之路,Day20 = 序列类型,绑定方法,类方法,静态方法,封装继承和多态 序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要以下几种类型: 3种基本序列类型(Basic Sequence Types):list.tuple.range 专门处理文本的附加序列类型(Text Sequence Types):str 专门处理二进制数据的附加序列类型(Binary Sequence Types): bytes.bytearray.mem