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


    汽车租赁

    任务描述

    系统搭建

    首先要绑定初始数据

    //保存可租用车的集合
    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;
    }

     

  • 相关阅读:
    递归浅析
    python3中zip()的用法
    在早期IBP病人中比较风湿病医生诊断中轴型SpA(aSpA)与非aSpA
    超声检查附着点在早期SpA诊断中的应用
    验证MRI检测AS病人骶髂关节骨侵蚀、扩展侵蚀和回填
    EULAR2008_TNF拮抗剂保护RA骨关节的机制可能不止是抑制滑膜炎
    RA关节功能残疾与软骨破坏的相关性高于骨破坏
    TNFBA治疗强柱达8年的放射学评估
    荟萃分析随机对照临床试验显示抗TNF治疗未增加早期RA病人的严重感染和肿瘤发生风险
    早期IBP病人骶髂关节MRI炎症与1年后MRI结构破坏之间的关系
  • 原文地址:https://www.cnblogs.com/PGYXZ/p/4640831.html
Copyright © 2020-2023  润新知