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

汽车租赁系统

主界面如下:

关键点一:怎样理清各个类之间的关系?

一共需要4个类:Car 类,Truck类,Vehicle类,VehicleUtil类

Car类:小汽车类  主要包括小汽车价格的计算方法

Truck类:货车类   主要包括货车费用的计算方法

Vehicle类:车辆类  描述车辆的一些基本信息

VehicleUtil类:工具类  创建汽车对象

下面附上一张类图:

关键点二:租车事件

首先要有两道验证:即 “输入出租人姓名验证” 和 “选择车辆验证”,代码如下:

1             if (String.IsNullOrEmpty(this.txtRenter.Text))
2             {
3                 MessageBox.Show("请输入租车人姓名","提示!",MessageBoxButtons.OK,MessageBoxIcon.Information);
4                 return;
5             }
6             if (this.lvRent.SelectedItems.Count == 0)
7             {
8                 MessageBox.Show("请选择车辆", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
9             }

租车完整代码如下:

 1         private void btnRent_Click(object sender, EventArgs e)
 2         {
 3             string key = null;
 4             if (String.IsNullOrEmpty(this.txtRenter.Text))
 5             {
 6                 MessageBox.Show("请输入租车人姓名","提示!",MessageBoxButtons.OK,MessageBoxIcon.Information);
 7                 return;
 8             }
 9             if (this.lvRent.SelectedItems.Count == 0)
10             {
11                 MessageBox.Show("请选择车辆", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
12             }
13             else
14             {
15                 key = lvRent.SelectedItems[0].Text;
16                 vehicles[key].RentUser = this.txtRenter.Text;
17                 rentVehicles.Add(vehicles[key].LicenseNO, vehicles[key]);
18                 if(vehicles.ContainsKey(key))
19                 {
20                     vehicles.Remove(key);
21                 }
22                 PrintVehicles(vehicles, lvRent);
23                 MessageBox.Show("已出租。", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
24             }
25         }

关键点三:还车事件

开始依然是两道验证,模式如上。

验证“选择车辆” 和 “输入租车天数” 关键代码:

1 if (String.IsNullOrEmpty(this.txtRentDate.Text))
2             {
3                 MessageBox.Show("请输入租车天数", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
4                 return;
5             }
6             if (this.lvReturn.SelectedItems.Count == 0)
7             {
8                 MessageBox.Show("请选择车辆", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
9             }

完整还车结算代码如下:

 1      private void btnCompute_Click(object sender, EventArgs e)
 2         {
 3             double totalPrice = 0;
 4             string key = null;
 5             if (String.IsNullOrEmpty(this.txtRentDate.Text))
 6             {
 7                 MessageBox.Show("请输入租车天数", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
 8                 return;
 9             }
10             if (this.lvReturn.SelectedItems.Count == 0)
11             {
12                 MessageBox.Show("请选择车辆", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
13             }
14             else
15             {
16                 key = lvReturn.SelectedItems[0].Text;
17                 rentVehicles[key].RentDate = int.Parse(this.txtRentDate.Text);
18                 //调用抽象方法
19                 totalPrice = rentVehicles[key].CalcPrice();
20                 string msg = string.Format("您的总价是{0}。", totalPrice.ToString());
21                 MessageBox.Show(msg, "提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
22
23                 vehicles.Add(rentVehicles[key].LicenseNO, rentVehicles[key]);
24
25                 if (rentVehicles.ContainsKey(key))
26                 {
27                     rentVehicles.Remove(key);
28                 }
29                 this.PrintVehicles(rentVehicles, lvReturn);
30             }
31         }

关键点四:新车入库

这里要注意的是:选择轿车单选钮的时候,卡车载重文本框是不可用状态。选择卡车单选钮则是可用状态

关键代码如下:

1           if (rdoCar.Checked)
2                 {
3                     type = "car";
4                 }
5                 if (rdoTruck.Checked)
6                 {
7                     type = "truck";
8                     load = int.Parse(this.txtLoad.Text);
9                 }

新车入库完整代码如下:

 1      private void btnAdd_Click(object sender, EventArgs e)
 2         {
 3             try
 4             {
 5                 string LicenseNO = this.txtAutoNum.Text;
 6                 string name = this.txtName.Text;
 7                 string color = this.cobColor.Text;
 8                 int years = int.Parse(this.txtYears.Text);
 9                 double DailyRent = double.Parse(this.txtLetting.Text);
10                 int load = 0;
11                 string type = null;
12                 if (rdoCar.Checked)
13                 {
14                     type = "car";
15                 }
16                 if (rdoTruck.Checked)
17                 {
18                     type = "truck";
19                     load = int.Parse(this.txtLoad.Text);
20                 }
21                 Vehicle auto = VehicleUtil.CreateVehicle(LicenseNO, name, color, years, DailyRent, load, type);
22                 vehicles.Add(auto.LicenseNO, auto);
23                 MessageBox.Show("添加成功。","提示!",MessageBoxButtons.OK,MessageBoxIcon.Information);
24             }
25             catch (Exception ex)
26             {
27                 MessageBox.Show("入库数据不正确!","错误!",MessageBoxButtons.OK,MessageBoxIcon.Error);
28             }
29             finally
30             {
31                 this.txtAutoNum.Text = "";
32                 this.txtLetting.Text = "";
33                 this.txtLoad.Text = "";
34                 this.txtName.Text = "";
35                 this.txtRentDate.Text = "";
36                 this.txtRenter.Text = "";
37                 this.txtYears.Text = "";
38             }
39         }

关键点五:刷新

首先要把listView的项清一下:

1 listView.Items.Clear();

刷新关键代码如下:

 1         private void PrintVehicles(Dictionary<string, Vehicle> autos, ListView listView)
 2         {
 3             listView.Items.Clear();
 4             if (autos.Count == 0)
 5             {
 6                 MessageBox.Show("没有数据", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
 7             }
 8             else
 9             {
10                 foreach (Vehicle auto in autos.Values)
11                 {
12                     ListViewItem item = new ListViewItem(auto.LicenseNO);
13                     if (auto is Car)
14                     {
15                         item.SubItems.AddRange(new string[]{auto.Name,auto.Color,auto.YearsOfService.ToString(),
16                         auto.DailyRent.ToString(),"无"});
17                     }
18                     if (auto is Truck)
19                     {
20                         item.SubItems.AddRange(new string[]{auto.Name,auto.Color,auto.YearsOfService.ToString(),
21                         auto.DailyRent.ToString(),((Truck)auto).Load.ToString()});
22                     }
23                     listView.Items.Add(item);
24                 }
25             }
26         }

再在按钮中调用方法:

1 private void btnQueryRent_Click(object sender, EventArgs e)
2         {
3             this.PrintVehicles(vehicles, lvRent);
4         }

知识回顾:窗体传值

方法一、利用属性传值
 BackGround:①点击 Button按钮,将主窗体Form1中textBox1 中的值传到 Form2中的textBox2中。② 点击Form2中的按钮,将Form2中textBox的值传给主窗体的文本框。
1、    在Form2中定义一个字段,封装成属性:
private string flag;
        /// <summary>
        /// 接收传过来的值
        /// </summary>
        public string Flag
        {
            get { return flag; }
            set { flag = value; }
        }
2、    在Form1 Button按钮事件中,实例化一个Form2 窗体对象,并将textBox1中的值赋给 Form2中的Flag,这样在窗体Form2的登录事件中就可以获取到窗体Form1传过来的值。
窗体:Form1中的代码:
private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Flag = textBox1.Text;
//关键地方 ↓
            if (f2.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = f2.Flag;
            }
        }
            窗体:Form2的Load()事件
private void Form2_Load(object sender, EventArgs e)
        {
            textBox1.Text = this.flag;
        }
3、    子窗体传值给父窗体(回传) 点击Form2中的button按钮将Form2中textBox的值传给父窗体Form1.
窗体:Form2中的代码
private void button1_Click(object sender, EventArgs e)
        {
            flag = this.textBox1.Text;
//关键地方 ↓
            this.DialogResult = DialogResult.OK;
        }
方法二、利用子窗体中的构造函数 (实现了父窗体给子窗体的传值,但是子窗体的值回传暂未实现)
1、    重载窗体Form2中的 构造函数
string str = String.Empty;//接收传过来的值
        public Form2(string textValue)
        {
            InitializeComponent();
            this.str = textValue;
        }
2、    主窗体调用子窗体时候传参数:主窗体Form1的Button事件
Form2 f2 = new Form2(textBox1.Text);
            f2.ShowDialog();
时间: 2024-10-18 22:21:19

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

汽车租赁系统总结

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

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

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

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

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

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

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

第十章 汽车租赁系统

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

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

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

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

小总结:在汽车租赁系统中用到了类的方法,构造函数,值类型,和引用类型 使用集合储存数据,并能使用封装,继承,多态创建和操作类 1.租车..显示系统中所有可出租的汽车,选中要出租的汽车,输入租用人 以出租汽车             代码如下: 1 public Dictionary<string, Vehicle> vehicles;//可租的车的集合保存 2 public Dictionary<string, Vehicle> renttVehicles;//租出的车的集合保存

团队汽车租赁系统

汽车租赁管理系统: 进一步分析: 我们小组做的是新的管理系统,对软件暑假的那个项目有了基础的了解以后做了一个新的项目,在原先的基础上,清楚的了解了项目的各个实行方面,一共分成七块部分:首页,关于我们,汽车租赁,收费标准,订单查询,租赁咨询,联系我们.然后更加完善了每一个部分的内容,比如在汽车租赁方面我们把每一辆汽车的价格型号都清楚的展现了出来. 研究项目需求: 集中数据管理.分布式应用,实现信息的全面共享,为决策者提供最新的人力资源数据. 完全基于浏览器的操作模式,操作方便,具有良好的系统扩充能

抽象类的应用——汽车租赁系统

汽车租赁 任务描述 系统搭建 首先要绑定初始数据 //保存可租用车的集合 Dictionary<string, Vehicle> vehicles=new Dictionary<string,Vehicle>(); //保存租出的车的集合 Dictionary<string, Vehicle> rentVehicles=new Dictionary<string,Vehicle>(); //初始信息 public void Initial() { Car c