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

汽车租赁

任务描述

系统搭建

首先要绑定初始数据

//保存可租用车的集合
Dictionary<string, Vehicle> vehicles=new Dictionary<string,Vehicle>();
//保存租出的车的集合
Dictionary<string, Vehicle> rentVehicles=new Dictionary<string,Vehicle>();

//初始信息

public void Initial()
{
Car car=new Car("京A10001","奥迪A6","黑色",3,240);
vehicles.Add(car.LicenseNo, car);

Truck truck = new Truck("京R44944", "东风", "蓝色", 3, 300,20);
vehicles.Add(truck.LicenseNo, truck);

Car car2=new Car("京A10002","奥迪A7","黑色",3,240);
vehicles.Add(car2.LicenseNo, car2);

//绑定数据
public void Binder()
{

this.lvRent.Items.Clear();
foreach (Vehicle item in vehicles.Values)
{
ListViewItem lvitem = new ListViewItem(item.LicenseNo);
if (item is Car)
{
lvitem.SubItems.Add(item.Name);
lvitem.SubItems.Add(item.Color);
lvitem.SubItems.Add(item.YearOfService.ToString());
lvitem.SubItems.Add(item.DailyRent.ToString());
}
if (item is Truck)
{
lvitem.SubItems.Add(item.Name);
lvitem.SubItems.Add(item.Color);
lvitem.SubItems.Add(item.YearOfService.ToString());
lvitem.SubItems.Add(item.DailyRent.ToString());
lvitem.SubItems.Add(((Truck)item).Load.ToString());
}
lvRent.Items.Add(lvitem);
}
}

租车

//租车 点击刷新时
private void btnQueryRent_Click(object sender, EventArgs e)
{
Binder();

}

//点击租车时
private void btnRent_Click(object sender, EventArgs e)
{
if (this.txtRenter.Text=="")
{
MessageBox.Show("请输入租车人姓名","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
string key = lvRent.SelectedItems[0].Text;
Vehicle ve = vehicles[key];
vehicles.Remove(key);
Binder();
rentVehicles.Add(key,ve);
MessageBox.Show("租车成功");
}

还车

//点击租车时
private void btnRent_Click(object sender, EventArgs e)
{
if (this.txtRenter.Text=="")
{
MessageBox.Show("请输入租车人姓名","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
string key = lvRent.SelectedItems[0].Text;
Vehicle ve = vehicles[key];
vehicles.Remove(key);
Binder();
rentVehicles.Add(key,ve);
MessageBox.Show("租车成功");

}
//退出
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
//还车 点击刷新时
private void btnQueryReturn_Click(object sender, EventArgs e)
{
this.lvReturn.Items.Clear();
foreach (Vehicle item in rentVehicles.Values)
{
ListViewItem lvitem = new ListViewItem(item.LicenseNo);
if (item is Car)
{
lvitem.SubItems.Add(item.Name);
lvitem.SubItems.Add(item.Color);
lvitem.SubItems.Add(item.YearOfService.ToString());
lvitem.SubItems.Add(item.DailyRent.ToString());
}
if (item is Truck)
{
lvitem.SubItems.Add(item.Name);
lvitem.SubItems.Add(item.Color);
lvitem.SubItems.Add(item.YearOfService.ToString());
lvitem.SubItems.Add(item.DailyRent.ToString());
lvitem.SubItems.Add(((Truck)item).Load.ToString());
}
lvReturn.Items.Add(lvitem);
}
}
//结算金额
private void btnCompute_Click(object sender, EventArgs e)
{
if (txtRentDate.Text == "")
{
MessageBox.Show("请输入租车时间");
return;
}
//01.将车A从已租集合中移除 //02,将车A加入到可租车辆中
string number = lvReturn.SelectedItems[0].Text;
Vehicle ve = rentVehicles[number];
rentVehicles.Remove(number);
Binder();
vehicles.Add(number, ve);
ve.RentDate = int.Parse( txtRentDate.Text);

double money = 0;
money = ve.CalcPrice();
MessageBox.Show("你需要支付"+money+"元");
}

新车入库

private void btnAdd_Click(object sender, EventArgs e)
{
string licenseNo = this.txtAutoNum.Text;
string name = this.txtName.Text;
string color = this.chColor.Text;
int year = int.Parse(this.txtYears.Text);
double dailyRent = double.Parse(this.txtLetting.Text);
if (rdoCar.Checked)
{
Car car = new Car(licenseNo,name,color,year,dailyRent);
vehicles.Add(licenseNo,car);
MessageBox.Show("入库成功");
}
if (rdoTruck.Checked)
{
int load = int.Parse( this.txtLoad.Text);
Truck truck = new Truck(licenseNo, name, color, year, dailyRent,load);
vehicles.Add(licenseNo,truck);
MessageBox.Show("入库成功");
}
}

private void rdoCar_CheckedChanged(object sender, EventArgs e)
{
this.txtLoad.Enabled = false;
}

private void rdoTruck_CheckedChanged(object sender, EventArgs e)
{
this.txtLoad.Enabled = true;
}

 

原文地址:https://www.cnblogs.com/PGYXZ/p/4640831.html