汽车租赁系统

类图:

 

父类(车类,抽象类)

复制代码
 /// <summary>
    /// 车辆基本信息类。搞一个抽象类玩玩
    /// </summary> public abstract class Vehicle { public string Color { get; set; }//颜色 public double DailyRent { get; set; }//日租金 public string LicenseNo { get; set; }//车牌号 public string Name { get; set; }//车名 public int RentDate { get; set; }//使用时间 public string RentUser { get; set; }//租用者 public int YearsOfService { get; set; }//租用天数 public Vehicle() { } //构造 public Vehicle(string color, double dailyRent, string licenseNo,string name,int rentDate) { this.Color = color; this.Name = name; this.RentDate = rentDate; this.LicenseNo = licenseNo; this.DailyRent = dailyRent; } //结算租金抽象方法 public abstract double GetJieSuang(); }
复制代码

汽车类:

复制代码
 /// <summary>
    /// 汽车类
    /// </summary> public class Car:Vehicle { public Car() { } //构造 public Car(string licenseNo, string name, string color, int rentDate, double dailyRent) :base(color, dailyRent,licenseNo,name, rentDate) { } //重写父类计算价格的方法 public override double GetJieSuang() { //日租金*租的天数 double result = this.DailyRent * this.YearsOfService; return result; } }
复制代码

卡车类:

复制代码
  /// <summary>
    /// 卡车类
    /// </summary> public class Truck:Vehicle { public int Load { get; set; }//卡车载重 //无参构造 public Truck() { } //构造 public Truck(string licenseNo, string name, string color, int rentDate, double dailyRent, int load) : base(color, dailyRent, licenseNo, name, rentDate) { this.Load = load; } //重写父类计算租金的方法 public override double GetJieSuang() { //日租金*租的天数 double result = this.DailyRent * this.YearsOfService; return result; } }
复制代码

具体实现:

复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CarRentalSystem { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.cbColor.SelectedIndex = 0;//显示颜色 this.txtTruckLoad.Visible = false; } //保存可租用车的集合 Dictionary<string, Vehicle> vehicle = new Dictionary<string,Vehicle>(); //保存已租出的车的集合 Dictionary<string, Vehicle> rentvehcile = new Dictionary<string,Vehicle>(); //动态加载listview的方法 public void carZaiZhong() { if (rbcar.Checked == true) { this.txtTruckLoad.Visible = false; } else if(rbTruck.Checked==true) { this.txtTruckLoad.Visible = true; } } /// <summary> /// 刷新ListView的带参方法,传两个不同集合 和刷新对应的ListView /// </summary> /// <param name="list"></param> /// <param name="lvlist"></param> public void New(Dictionary<string, Vehicle> list, ListView lvlist) { ListViewItem listview = null;//局部变量要赋初始值 lvlist.Items.Clear();//清除项 foreach (Vehicle item in list.Values) { //如果是Car,对应的ListView添加数据 if (item is Car) { listview = new ListViewItem();//new出ListViewItem视图 listview.Text = item.LicenseNo;//listView第一列 listview.SubItems.Add(item.Name);//添加子项车名 listview.SubItems.Add(item.Color);//颜色 listview.SubItems.Add(item.RentDate.ToString());//使用时间 listview.SubItems.Add(item.DailyRent.ToString());//日租金
listview.SubItems.Add("无");
} else if (item is Truck) { listview = new ListViewItem(); listview.Text = item.LicenseNo; listview.SubItems.Add(item.Name); listview.SubItems.Add(item.Color); listview.SubItems.Add(item.RentDate.ToString()); listview.SubItems.Add(item.DailyRent.ToString()); listview.SubItems.Add(((Truck)item).Load.ToString()); } lvlist.Items.Add(listview);//添加到对应集合的ListView中 } } /// <summary> /// 初始化可租用车集合信息 /// </summary> public void initial() { Truck truck = new Truck("京A88888", "大卡", "红色", 3, 900, 20);//卡车 Car car = new Car("京A99999", "奔驰", "黑色", 3, 300);//汽车信息 vehicle.Add(truck.LicenseNo, truck);//添加到可租车集合 vehicle.Add(car.LicenseNo, car); //租车数据 New(vehicle, lvCarkezu); } /// <summary> /// 初始化已租出车的信息 /// </summary> public void initialHc() { //对象初始化信息 Truck truck1 = new Truck("京B99999", "小卡", "红色", 3, 280, 10);//卡车 Car car1 = new Car("京B99999", "红旗", "黑色", 3, 280);//汽车信息 rentvehcile.Add(truck1.LicenseNo, truck1);//添加到已租车集合 rentvehcile.Add(car1.LicenseNo, car1); //还车数据 New(rentvehcile, lvHuanche); } //选择结算,还车 private void button5_Click(object sender, EventArgs e) { //租用天数非空验证 if (this.txtRendDay.Text == "") { MessageBox.Show("请输入天数!"); return; } //确定是否选中一行 if (this.lvHuanche.SelectedItems.Count == 0) { MessageBox.Show("请选择一行!"); return; } //获取车牌号的值 string carnum1 = this.lvHuanche.SelectedItems[0].Text; //根据车牌号获得对应的车辆对象 Vehicle ve = rentvehcile[carnum1]; //获取租用天数 int num = Convert.ToInt32(this.txtRendDay.Text); //给属性使用天数赋值 ve.YearsOfService = num; //结算租金 double money = ve.GetJieSuang(); DialogResult result = MessageBox.Show("你要支付" + money + "元", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (result == DialogResult.OK) { //直接把获得要还的信息放入vehicles集合 vehicle.Add(carnum1, ve); //删除原来的集合 rentvehcile.Remove(carnum1); //重新加载 New(rentvehcile, lvHuanche); MessageBox.Show("还车成功"); } } private void textBox5_TextChanged(object sender, EventArgs e) { } private void Form1_Load(object sender, EventArgs e) { initial();//初始化信息 initialHc(); } private void button1_Click(object sender, EventArgs e) { //退出 DialogResult choice = MessageBox.Show("确定要退出吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if(choice==DialogResult.OK) { Application.Exit(); } } //新车入库车型验证,非空验证 public bool emptyNo() { //如果选择了汽车 if (this.rbcar.Checked == true) { if (this.txtLicenseNo.Text != "" && this. txtDailyRent.Text != "" && this.txtName.Text != "" && this.txtRentDate.Text != "") { try { //文本框数字验证 int rntDate = int.Parse(this.txtRentDate.Text); int dailyRent = int.Parse(this.txtDailyRent.Text); //double truckLoad = double.Parse(this.txtTruckLoad.Text); return true; } catch (Exception) { MessageBox.Show("使用时间,日租金应输入数字!"); return false; } } else { MessageBox.Show("请完善新入库汽车信息!"); return false; } } else if (this.rbTruck.Checked == true) { if (this.txtLicenseNo.Text != "" && this.txtDailyRent.Text != "" && this.txtName.Text != "" && this.txtRentDate.Text != ""&&this.txtTruckLoad.Text!="") { try { //文本框数字验证 int rntDate = int.Parse(this.txtRentDate.Text); int dailyRent = int.Parse(this.txtDailyRent.Text); double truckLoad = double.Parse(this.txtTruckLoad.Text); return true; } catch (Exception) { MessageBox.Show("使用时间,日租金或卡车载重应输入数字!"); return false; } } else { MessageBox.Show("请完善新入库卡车信息!"); return false; } } return true;//防止报错 } //新车入库 private void btnRuku_Click(object sender, EventArgs e) { //文本框非空验证 if (emptyNo()) { //对车载重的值做一个判断,然后存入不同的集合 if(this.txtTruckLoad.Visible==false) { //车牌号是唯一的 string licenseNo=this.txtLicenseNo.Text;//车牌号 foreach (string ve in vehicle.Keys)//循环查看是否有相同的车牌号,有给出提示 { if (ve == licenseNo) { MessageBox.Show("已经有相同的汽车车牌号,请您重新确认车牌号!"); return; } } string name =this.txtName.Text;//车名 string cbColor = this.cbColor.SelectedItem.ToString();//颜色 int rentDate=Convert.ToInt32(this.txtRentDate.Text);//使用时间 double dailyRent = Convert.ToDouble(this.txtDailyRent.Text);//每日租金 //双列集合一般用对象初始化器,单列集合用集合初始化器,在添加数据的时候比较清晰,方便但是我这里没用。。。 Car car = new Car(licenseNo, name, cbColor, rentDate, dailyRent); //添加到可租车集合 vehicle.Add(car.LicenseNo,car); MessageBox.Show("汽车入库成功!"); } else if (this.txtTruckLoad.Visible == true) { //车牌号是唯一的 string licenseNo = this.txtLicenseNo.Text;//车牌号 foreach (string rve in vehicle.Keys)//循环查看是否有相同的车牌号,有给出提示 { if (rve== licenseNo) { MessageBox.Show("已经有相同的卡车车牌号,请您重新确认车牌号!"); return; } } string name = this.txtName.Text;//车名 string cbColor = this.cbColor.SelectedItem.ToString();//颜色 int rentDate = Convert.ToInt32(this.txtRentDate.Text);//使用时间 double dailyRent = Convert.ToDouble(this.txtDailyRent.Text);//每日租金 int load = Convert.ToInt32(this.txtTruckLoad.Text); //初始化信息 Truck tk = new Truck(licenseNo, name, cbColor, rentDate, dailyRent,load); //添加到可租车集合 vehicle.Add(tk.LicenseNo, tk); MessageBox.Show("卡车入库成功!"); } } } private void btnBreak_Click(object sender, EventArgs e) { //刷新 New(vehicle, lvCarkezu); } private void btnRent_Click(object sender, EventArgs e) { //租车 if (this.lvCarkezu.SelectedItems.Count == 0) { MessageBox.Show("请选中一行!"); return; } if (txtRentUser.Text == "")//非空判断 { MessageBox.Show("请输入租用者!"); return; } //执行租车. //获取车牌号的值 string carnum = this.lvCarkezu.SelectedItems[0].Text; Vehicle ve = vehicle[carnum]; //直接把获得要租的信息放入rentvehicles集合 rentvehcile.Add(carnum, ve); //删除原来的集合 vehicle.Remove(carnum); //重新加载 New(vehicle, lvCarkezu); MessageBox.Show("租车成功"); } private void btnBreakor_Click(object sender, EventArgs e) { //刷新租出车的信息 New(rentvehcile, lvHuanche); } private void rbcar_CheckedChanged(object sender, EventArgs e) { //选中则显示文本框 if (this.rbcar.Checked == true) { this.txtTruckLoad.Visible = false; } } private void rbTruck_CheckedChanged(object sender, EventArgs e) { //判断是否选中 //carZaiZhong(); if (this.rbTruck.Checked == true) { this.txtTruckLoad.Visible = true; } } private void tabPage3_Click(object sender, EventArgs e) { } private void lvCarkezu_SelectedIndexChanged(object sender, EventArgs e) { } } }

猜你喜欢

转载自www.cnblogs.com/mrzhenghao/p/8905955.html