汽车租赁系统

首先:在窗体上头先定义储存的集合!!
 public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
            this.skinEngine1.SkinFile = "Silver.ssk";
            
        }
        //初始化可租用车集合信息
        Dictionary<string, Vehicle> dic = new Dictionary<string, Vehicle>();
        //初始化结算车的集合信息
        Dictionary<string, Vehicle> rentVehicles = new Dictionary<string, Vehicle>();
   //抽象类
   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 YearOfService { get; set; }//使用时间
        public Vehicle() { }
        public Vehicle(string Color, double DailyRent, string LicenseNO, string Name,int YearOfService) 
          {
              this.Color = Color;
              this.DailyRent = DailyRent;
              this.LicenseNO = LicenseNO; ;
              this.Name = Name;           
              this.YearOfService = YearOfService;      
        }
        //计算价格的方法
        public abstract double CalculatePrice();
    }
抽象类,父类
 //卡车类
   public class Truck:Vehicle
    {
        private int load;//装载量      
        public Truck(){ }
        public Truck(string Color, double DailyRent, string LicenseNO, string Name,int YearOfService,int load)
            : base(Color, DailyRent, LicenseNO, Name,YearOfService) 
        {
            this.Load = load;
        }
        public int Load
        {
            get { return load; }
            set { load = value; }
        }
       //卡车类的计算方法
        public override double CalculatePrice()
        {
            double money = this.DailyRent * RentDate;
            return money;
        }
       
    }
卡车类
轿车类
轿车类

 初始化几个放在Load事件里:

 // 主窗口   
        private void FrmMain_Load(object sender, EventArgs e)
        {

            Car car = new Car("黄色", 300, "鲁888888", "法拉利",3);
            Car car1 = new Car("白色", 250, "鲁88888", "奥托",4);
            Truck t1 = new Truck
            {
                LicenseNO = "湘B666666",
                Name = "东风A5",
                Color = "蓝色",
                DailyRent = 2000,
                YearOfService = 2,
                Load = 120
            };
            dic.Add(car.LicenseNO, car);
            dic.Add(car1.LicenseNO, car1);
            dic.Add(t1.LicenseNO, t1);
            //绑定控件
            Info(dic, listView1);
            //给颜色下拉框赋值
            this.comboBox1.Items.Add("红色");
            this.comboBox1.Items.Add("蓝色");
            this.comboBox1.Items.Add("白色");
            this.comboBox1.Items.Add("黑色");
            this.comboBox1.Items.Add("灰色");
            this.textBox5.Enabled = false;
        }
 //初始值出租
        public void Info(Dictionary<string, Vehicle> dic, ListView lv)
        {                      
            //循环之前先清空
            lv.Items.Clear();  
            //循环绑定         
            foreach (Vehicle item in dic.Values)
            {              
                ListViewItem lv1 = new ListViewItem();
                lv1.Text = item.LicenseNO;
                lv1.SubItems.Add(item.Name);
                lv1.SubItems.Add(item.Color);
                lv1.SubItems.Add(item.DailyRent.ToString());
                lv1.SubItems.Add(item.RentDate.ToString());
                //判断
                if (item is Truck)
                {
                    lv1.SubItems.Add((item as Truck).Load.ToString());
                }
                else
                {
                    lv1.SubItems.Add("");
                    
                }
                //总的
                lv.Items.Add(lv1);

            }
        }
初始值出租

2.到这里出租的listView中已经有显示:

 //刷新的按钮
        private void btnRefresh_Click(object sender, EventArgs e)
        {
            Info(dic,listView1);
        }

3.点击租车按钮:从列表中删除然后放到还车的列表中;

  //租车
        private void btnCar_Click(object sender, EventArgs e)
        {
            //判断
            if (listView1.SelectedItems.Count == 0)
            {
                MessageBox.Show("请选择一行!");
            }
            else if (this.txtHirer.Text == "")
            {
                MessageBox.Show("请输入租用者的名字");
            }
            else
            {
                //这是通过选择车牌号
                string key = listView1.SelectedItems[0].Text;
                //租用者和车牌号绑定在一起
                dic[key].RentUser = this.txtHirer.Text;
                //将已租车辆放入到已租集合中
                rentVehicles.Add(dic[key].LicenseNO, dic[key]);
                //判断是否已经出租
                if (dic.ContainsKey(key))
                {
                    dic.Remove(key);
                }
                //重新绑定listView
                Info(dic, listView1);
                MessageBox.Show("已出租");
                //使用者赋空
                this.txtHirer.Text = "";
            }
            

 4.还车列表:

 //还车的循环刷新
        public void Info1(Dictionary<string, Vehicle> rentVehicles, ListView list)
        {
            list.Items.Clear();
            foreach (Vehicle item in rentVehicles.Values)
            {
                ListViewItem lv1 = new ListViewItem();
                lv1.Text = item.LicenseNO;
                lv1.SubItems.Add(item.Name);
                lv1.SubItems.Add(item.Color);
                lv1.SubItems.Add(item.DailyRent.ToString());
                lv1.SubItems.Add(item.RentDate.ToString());
                //判断
                if (item is Truck)
                {
                    lv1.SubItems.Add((item as Truck).Load.ToString());
                }
                else
                {
                    lv1.SubItems.Add("");

                }
                //总的
                list.Items.Add(lv1);
            }
        }

接着把方法名放到刷新的按钮中!
 //还车刷新
        private void btnshaxin_Click(object sender, EventArgs e)
        {
            Info1(rentVehicles,listView2);
        }

5.点击还车按钮,从还车列表中删除然后放到租车列表中去!

  //还车的选择结算
        private void btnMoney_Click(object sender, EventArgs e)
        {
            if (this.listView2.SelectedItems.Count == 0)
            {
                MessageBox.Show("请选择车辆!!");
                return;
            }
            if (this.txtDay.Text == "")
            {
                MessageBox.Show("请输入租用天数!");
                return;
            }
            string key = listView2.SelectedItems[0].Text;
            rentVehicles[key].RentDate = int.Parse(this.txtDay.Text);
            //调用抽象方法
            double totalPrice = rentVehicles[key].CalculatePrice();
            string msg = string.Format("您的总价是{0}",totalPrice.ToString());
            MessageBox.Show(msg,"提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
            //加入到可租车辆集合里
            dic.Add(rentVehicles[key].LicenseNO,rentVehicles[key]);
            //从当前的集合中移除
            if (rentVehicles.ContainsKey(key))
            {
                rentVehicles.Remove(key);
            }
            //重新刷新列表
            Info1(rentVehicles, listView2);
            //租用天数赋空
            this.txtDay.Text = "";

 5.新车入库(还有各种的友情提示)。

  //新车入库按钮
        private void btnRuku_Click(object sender, EventArgs e)
        {
            //友情判断
            if (limousine() == true)
            {
                //遍历车牌号
                foreach (string item in dic.Keys)
                {
                    
                    if (textBox1.Text == item)
                    {
                        
                        MessageBox.Show("该车牌号已经存在");
                        return;
                    }                  

                }
                Vehicle vs = null;
                //运用里氏替换原则
                if (radioButton1.Checked == true)
                {
                  
                    vs = new Car();

                }
                else if (radioButton2.Checked == true)
                {
                    Truck tr = new Truck();
                    tr.Load = Convert.ToInt32(textBox5.Text);
                    vs = new Truck();
                    vs = tr;
                           

                }
                //01获取对应文本框中的值,
                vs.LicenseNO = textBox1.Text;//车号
                vs.Name = textBox2.Text;//车型
                vs.Color = comboBox1.Text;//颜色
                vs.YearOfService = Convert.ToInt32(textBox3.Text);//使用时间
                vs.DailyRent = Convert.ToInt32(textBox4.Text);//每日租金  
                dic.Add(vs.LicenseNO, vs);
                uptatetxt();
                MessageBox.Show("添加成功!");


           
            }
          
        }
        //卡车友情提示
        public bool truck()
        {
            if (radioButton1.Checked == false&& radioButton2.Checked == false)
            {
                MessageBox.Show("请选择车辆类型!");
                return false;
            }
            else if (textBox1.Text == ""||textBox2.Text == ""||textBox3.Text == ""||comboBox1.Text == ""||textBox4.Text == ""||textBox5.Text == "")
            {
                MessageBox.Show("请填写完整!!");
                return false;
            }
            else
            {
                return true;  
            }
        }

        //轿车的友情提示
        public bool limousine()
        {
            if (radioButton1.Checked == false && radioButton2.Checked == false)
            {
                MessageBox.Show("请选择车辆类型!");
                return false;
            }
            else if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || comboBox1.Text == "" || textBox4.Text == "")
            {
                MessageBox.Show("请填写完整!!");
                return false;
            }
            else
            {
                return true;
            }
        }
        //轿车
        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton1.Checked == true)
            {
                this.textBox5.Enabled = false;
            }
        }
        //卡车
        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton2.Checked == true)
            {
                this.textBox5.Enabled = true;
            }
        }
        //当写完文本框赋空
        public void uptatetxt()
        {
            this.textBox1.Text = "";
            this.textBox2.Text = "";
            this.textBox3.Text = "";
            this.textBox4.Text = "";
            this.textBox5.Text = "";
            this.comboBox1.Text = "";
        }



 




原文地址:https://www.cnblogs.com/www-yang-com/p/8892287.html