zoukankan      html  css  js  c++  java
  • 汽车租赁系统

    刚见到这个项目时,我不是拿起来就写,而是看了书上有什么要求,然后先把自己的思路理清楚。

    搭建界面想必大家都会,我就不在这啰嗦了。

    首先我们先看租车:

     

    我们可以看到显示车辆信息的控件,下面还有一个填写租用者姓名的控件,有两个按钮。

    首先我就可以想到选中车辆,填写姓名,点击租车按钮,跳出一个提示消息框,

    点击刷新,看看刚才自己出租成功的车辆还在不在。

    接下来我们看看还车界面:

    我们看到还车界面也是一个显示车辆信息的控件,下面还有租用天数,两个按钮。

    这样我就可以想到选中车辆填写天数,点击结算按钮,弹出一个消息框提示你的租金,

    点击刷新,查看是否还车成功。

    最后我们来看看新车入库界面:

    这个界面看起来相对就简单了,点击选中添加的车辆,按着车辆的信息依次添加即可,但是同时要注意,添加轿车和卡车时,车载重量填写不填写。

    大致上我们已经把思路理明白了,接下来就是写代码了。

    做这个项目我用的是单列集合,ListView承载车辆信息,大致上分了下列几步:

    ///0.1创建两个单列集合用于存储出租车辆和为出租车辆

    ///0.2初始化车辆信息

    ///0.3把初始化的车辆信息绑定到控件上

    ///0.4实现车辆的出租

    //0.5实现车辆的归还

    //0.6实现车辆的入库

    具体的代码:

    //初始化信息的集合
    List<Vehicle> list = new List<Vehicle>();
    //租车成功的集合
    List<Vehicle> list2 = new List<Vehicle>();
    
    //存储车辆信息个方法
    public void Add()
    {
    //01.初始化卡车对象
    Truck t = new Truck();
    t.Color = "白色";
    t.DailyRent = 200;
    t.LicenseNo = "京P1000";
    t.Name = "解放";
    t.YearsOfService = 0;
    t.Load = 200;
    
    Truck tr = new Truck();
    tr.Color = "黄色";
    tr.DailyRent = 600;
    tr.LicenseNo = "京P2000";
    tr.Name = "东风日产";
    tr.YearsOfService = 0;
    tr.Load = 300;
    
    Car c = new Car();
    c.Color = "蓝色";
    c.DailyRent = 200;
    c.LicenseNo = "京P3000";
    c.Name = "东风日产";
    c.YearsOfService = 0;
    
    Car ca = new Car();
    ca.Color = "红色";
    ca.DailyRent = 300;
    ca.LicenseNo = "京P4000";
    ca.Name = "捷达";
    ca.YearsOfService = 0;
    
    //02.把初始化的对象添加到集合中
    list.Add(t);
    list.Add(tr);
    list.Add(c);
    list.Add(ca);
    //03.把数据绑定到ListView上
    foreach (Vehicle item in list)
    {
    ListViewItem items = new ListViewItem(item.LicenseNo);
    items.SubItems.Add(item.Name);
    items.SubItems.Add(item.Color);
    items.SubItems.Add(item.YearsOfService.ToString());
    items.SubItems.Add(item.DailyRent.ToString());
    //04.判断当为卡车对象时,添加车载重量
    if(item is Truck)
    {
    items.SubItems.Add((item as Truck).Load.ToString());
    }
    //05.判断当为轿车对象时,不添加车载重量
    else if (item is Car)
    {
    items.SubItems.Add("");
    }
    
    lvList01.Items.Add(items);
    }
    }

    运行程序时显示:

    点击选中车辆,填写租用者:

    在这里我们要做出判断没有填写姓名时,给出提示,当没选择车辆时给出提示

    //判断是否选中一行
    if (lvList01.SelectedItems.Count == 0)
    {
    MessageBox.Show("请选择一行");
    return;
    }

    //判断当输入的姓名为空时,做出的判断
    if (txt01.Text == "")
    {
    MessageBox.Show("请输入客户名字!");
    return;
    }

    string no = lvList01.SelectedItems[0].SubItems[0].Text; 
    for (int i = 0; i < list.Count; i++)
    {
    if(list[i].LicenseNo==no)
    {
    //判断选中的是什么车
    if (list[i] is Car)
    {
    
    //初始化一个车辆信息加入到租车成功的控件上
    Car r = new Car();
    r.LicenseNo = no;
    r.Name = lvList01.SelectedItems[0].SubItems[1].Text;
    r.Color= lvList01.SelectedItems[0].SubItems[2].Text;
    r.YearsOfService = Convert.ToInt32(lvList01.SelectedItems[0].SubItems[3].Text);
    r.DailyRent= Convert.ToInt32(lvList01.SelectedItems[0].SubItems[4].Text);
    list2.Add(r);
    }
    else if(list[i] is Truck)
    {
    
    //初始化一个车辆信息加入到租车成功的控件上
    Truck k = new Truck();
    k.LicenseNo = no;
    k.Name = lvList01.SelectedItems[0].SubItems[1].Text;
    k.Color = lvList01.SelectedItems[0].SubItems[2].Text;
    k.YearsOfService = Convert.ToInt32(lvList01.SelectedItems[0].SubItems[3].Text);
    k.DailyRent = Convert.ToInt32(lvList01.SelectedItems[0].SubItems[4].Text);
    k.Load= Convert.ToInt32(lvList01.SelectedItems[0].SubItems[5].Text);
    list2.Add(k);
    }
    
    //把出租成功的车辆信息删除
    list.RemoveAt(i);
    
    //给出一个提示框
    MessageBox.Show("你好!"+txt01.Text + "您成功租用的车牌号为:" + no+"的车辆");
    }
    }

    点击租车时显示:

    点击刷新时显示:
    
    private void btn01_Click(object sender, EventArgs e)
    {
    
    //清空列表
    lvList01.Items.Clear();
    
    //重新加载车辆信息
    foreach (Vehicle item in list)
    {
    ListViewItem items = new ListViewItem(item.LicenseNo);
    items.SubItems.Add(item.Name);
    items.SubItems.Add(item.Color);
    items.SubItems.Add(item.YearsOfService.ToString());
    items.SubItems.Add(item.DailyRent.ToString());
    if (item is Truck)
    {
    items.SubItems.Add((item as Truck).Load.ToString());
    }
    else if (item is Car)
    {
    items.SubItems.Add("");
    }
    
    lvList01.Items.Add(items);
    }
    }

    这里我们可以看到选中的车辆信息已经没有了,租用成功!

    接下来我们查看还车:

    刚开始里面是没有任何车辆信息的,点击刷新后:

    private void btn04_Click(object sender, EventArgs e)
    {
    lvList02.Items.Clear();
    foreach (Vehicle item in list2)
    {
    ListViewItem items = new ListViewItem(item.LicenseNo);
    items.SubItems.Add(item.Name);
    items.SubItems.Add(item.Color);
    items.SubItems.Add(item.YearsOfService.ToString());
    items.SubItems.Add(item.DailyRent.ToString());
    if (item is Truck)
    {
    items.SubItems.Add((item as Truck).Load.ToString());
    }
    else if (item is Car)
    {
    items.SubItems.Add("");
    }
    
    lvList02.Items.Add(items);
    }
    
    }

    我们选中的车辆信息就显示在还车界面上了。

    当我们还车时也要做出判断,是否选中车辆,是否添加天数

    //判断是否输入天数
    
    if (txt02.Text == string.Empty)
    {
    MessageBox.Show("请输入天数!");
    return;
    }

    //判断是否选中车辆信息
    
    if(lvList02.SelectedItems.Count>0)
    {
    string Num = lvList02.SelectedItems[0].SubItems[0].Text;
    for (int i = 0; i < list2.Count; i++)
    {
    if (list2[i].LicenseNo == Num)
    {
    
    if (list2[i] is Car)
    {
    Car r = new Car();
    r.LicenseNo = lvList02.SelectedItems[0].SubItems[0].Text;
    r.Name = lvList02.SelectedItems[0].SubItems[1].Text;
    r.Color = lvList02.SelectedItems[0].SubItems[2].Text;
    r.YearsOfService = Convert.ToInt32(txt02.Text);
    r.DailyRent = Convert.ToInt32(lvList02.SelectedItems[0].SubItems[4].Text);
    list.Add(r);
    double money = r.DailyRent * Convert.ToDouble(txt02.Text);
    MessageBox.Show("您需要支付:" + money + "");
    }
    else if (list2[i] is Truck)
    {
    Truck k = new Truck();
    k.LicenseNo = lvList02.SelectedItems[0].SubItems[0].Text;
    k.Name = lvList02.SelectedItems[0].SubItems[1].Text;
    k.Color = lvList02.SelectedItems[0].SubItems[2].Text;
    k.YearsOfService = Convert.ToInt32(txt02.Text);
    k.DailyRent = Convert.ToInt32(lvList02.SelectedItems[0].SubItems[4].Text);
    k.Load = Convert.ToInt32(lvList02.SelectedItems[0].SubItems[5].Text);
    list.Add(k);
    double money = k.DailyRent * Convert.ToDouble(txt02.Text);
    MessageBox.Show("您需要支付:" + money);
    }
    list2.RemoveAt(i);
    }
    }
    }
    else
    {
    MessageBox.Show("请选择归还的车辆");
    }

    最后我们来看看车辆入库:

    //判断当我们选择轿车和卡车时车载重量填写不填写
    
    private void rb01_CheckedChanged(object sender, EventArgs e)
    {
    if (rb01.Checked)
    {
    txtzl.Text = "";
    txtzl.Enabled = false;
    }
    else if (rb02.Checked)
    {
    txtzl.Enabled = true;
    }
    }

    依次填写信息:

    未填写信息时作出判断:
    
    if ( txtsj.Text == "" || txtxh.Text == "" || txtno.Text == "" || txtzj.Text == "" || cbo01.Text == "")
    
    {
    MessageBox.Show("请您填写完整!");
    }
    
    else
    {
    
    if (rb01.Checked)
    {
    
    Vehicle vl = new Car();
    vl.LicenseNo = txtno.Text;
    vl.Color = cbo01.Text;
    vl.DailyRent = Convert.ToDouble(txtzj.Text);
    vl.Name = txtxh.Text;
    vl.YearsOfService =0;
    list.Add(vl);
    
    MessageBox.Show("入库成功");
    }
    else if(rb02.Checked)
    {
    
    Vehicle vl = new Truck();
    vl.LicenseNo = txtno.Text;
    vl.Color = cbo01.Text;
    vl.DailyRent = Convert.ToDouble(txtzj.Text);
    vl.Name = txtxh.Text;
    vl.YearsOfService = 0;
    ((Truck)vl).Load = Convert.ToInt32(txtzl.Text);
    list.Add(vl);
    MessageBox.Show("入库成功");
    }
    else
    {
    MessageBox.Show("请选择入库的车辆类型");
    }
    }
    }

    点击租车界面的刷新按钮:

    点击清空按钮:
    
    private void btnqk_Click(object sender, EventArgs e)
    {
    foreach (Control item in tp03.Controls)
    {
    if(item is TextBox)
    {
    item.Text = "";
    }
    cbo01.Text = "请选择";
    }
    }
    
    在Load事件里添加:
    
    private void FrmMain_Load(object sender, EventArgs e)
    {
    Add();
    cbo01.Items.Add("请选择");
    cbo01.SelectedIndex = 0;
    cbo01.Items.Add("黄色");
    cbo01.Items.Add("白色");
    cbo01.Items.Add("绿色");
    cbo01.Items.Add("蓝色");
    cbo01.Items.Add("黑色");
    cbo01.Items.Add("橙色");
    cbo01.Items.Add("灰色");
    cbo01.Items.Add("紫色");
    
    
    }

    这就是整体的租车系统

  • 相关阅读:
    GNU make manual 翻译(四十一)
    GNU make manual 翻译(三十五)
    GNU make manual 翻译(三十三)
    GNU make manual 翻译(三十八)
    GNU make manual 翻译(四十二)
    GNU make manual 翻译(三十四)
    艾瑞咨询:即时通讯面临多种安全威胁 狼人:
    世界头号黑客称奥巴马超级加密黑莓手机可被攻破 狼人:
    微软悬赏25万美元捉拿Conficker蠕虫作者 狼人:
    信息周刊:随意设置电脑密码存在安全隐患 狼人:
  • 原文地址:https://www.cnblogs.com/wl0000-03/p/5838770.html
Copyright © 2011-2022 走看看