汽车租赁管理系统

汽车租赁管理系统

一个小demo写的蛮简单,主要练习用,写了2个版本,一个是把数据存到数据库的版本,一个把数据存到本地文件的版本
图1
图2
图3
图4

数据存到本地文件的版本核心代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace Car
{
    public partial class Form1 : Form
    {

        TrafficInfo tNew;//父类
        XRentManager m_RM = new XRentManager();//实例化一个管理类对象
        public Form1()
        {
            InitializeComponent();
        }
        private void btnAdd_Click(object sender, EventArgs e)
        {
            TraMessage();//入库信息

        }
        /// <summary>
        /// 入库信息
        /// </summary>
        public void TraMessage()
        {
            #region 为空判断

            Dictionary<string, string> dicTracffic = new Dictionary<string, string>();
            dicTracffic.Add("车牌号", txtNumber.Text);
            dicTracffic.Add("车名", txtName.Text);
            dicTracffic.Add("车颜色", cbColor.Text);
            dicTracffic.Add("使用时间", txtTime.Text);
            dicTracffic.Add("租金", txtMoney.Text);
            dicTracffic.Add("载重量", txtLoad.Text);
            foreach (string str in dicTracffic.Keys)
            {
                if (dicTracffic[str] == "") //str就是K,dicTracffic[str]就是值
                {
                    MessageBox.Show(string.Format("请输入{0}", str));

                    return;
                }
            }
            #endregion

            if (rdoCar.Checked == true)
            {
                tNew = new Xcar();//创立对象
            }
            if (rdoTruck.Checked == true)
            {
                tNew = new XTruck();


            }
            tNew.Number = txtNumber.Text;//车牌号码
            tNew.Name = txtName.Text;//车名
            tNew.Color = cbColor.Text;//车颜色
            tNew.Time = txtTime.Text;//使用时间
            tNew.Money = int.Parse(txtMoney.Text);//租金
            tNew.Load = txtLoad.Text;//载重

            try
            {
                m_RM.InputLibry(tNew);//可以出租的车集合
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
                txtNumber.Text = "";
                txtNumber.Focus();
                return;
            }
            addTraffic();
            this.tabControl1.SelectedTab = tpRent;
            MessageBox.Show("添加成功");

        }
        /// <summary>
        /// 刷新租车集合
        /// </summary>
        public void addTraffic()
        {

            listHire.Items.Clear();
            foreach (TrafficInfo t in m_RM.DicMyTraffics.Values)
            {
                ListViewItem lv = new ListViewItem();//显示项
                lv.Text = t.Number;
                ListViewItem.ListViewSubItem[] lvs;
                lvs = new ListViewItem.ListViewSubItem[5]//显示子项
                     { 
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem()
                     };
                lvs[0].Text = t.Name;
                lvs[1].Text = t.Color;
                lvs[2].Text = t.Time.ToString();
                lvs[3].Text = t.Money.ToString();
                lvs[4].Text = t.Load;

                listHire.Items.Add(lv);
                lv.SubItems.AddRange(lvs);
                lv.Tag = t;
                lv.ImageKey = "1.png";

            }
        }

        /// <summary>
        /// 刷新还车集合
        /// </summary>
        public void backTraffic()
        {

            listback.Items.Clear();
            foreach (TrafficInfo t in m_RM.DicRenteds.Values)
            {
                ListViewItem lv = new ListViewItem();//显示项
                lv.Text = t.Number;
                ListViewItem.ListViewSubItem[] lvs;
                lvs = new ListViewItem.ListViewSubItem[7]//显示子项
                     { 
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem()
                     };
                lvs[0].Text = t.Name;
                lvs[1].Text = t.Color;
                lvs[2].Text = t.Time.ToString();
                lvs[3].Text = t.Money.ToString();
                lvs[4].Text = t.Load;
                lvs[5].Text = t.tenement;
                lvs[6].Text = dateTime.Text;
                lv.SubItems.AddRange(lvs);
                listback.Items.Add(lv);
                lv.Tag = t;
                lv.ImageKey = "1.png";
            }
        }

        #region 选择车的Load判断
        private void rdoCar_CheckedChanged(object sender, EventArgs e)
        {
            if (rdoCar.Checked == true)//选上
            {
                this.txtLoad.Text = "--无--";
                this.txtLoad.ReadOnly = true;
                this.txtLoad.Cursor = Cursors.No;


            }
            if (rdoTruck.Checked == true)
            {
                this.txtLoad.Text = "";
                this.txtLoad.ReadOnly = false;
                this.txtLoad.Cursor = Cursors.IBeam;
            }

        } 
        #endregion

        /// <summary>
        /// 标题
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            dateTime.Text = DateTime.Now.ToString("yyyy/MM/dd");
            #region 租车头部显示  
            ColumnHeader colNumeber, colName, colColor, colTime, colMoney, colLoad;
            ColumnHeader[] chArr = new ColumnHeader[6]
            {
                 colNumeber = new ColumnHeader(),
                 colName = new ColumnHeader(),
                 colColor = new ColumnHeader(),
                 colTime = new ColumnHeader(),
                 colMoney = new ColumnHeader(),
                 colLoad = new ColumnHeader()
            };
            colTime.Width = 100; colLoad.Width = 60; colNumeber.Width = 100; colName.Width = 100;
            chArr[0].Text = "车牌号";
            chArr[1].Text = "车名";
            chArr[2].Text = "车颜色";
            chArr[3].Text = "使用时间";
            chArr[4].Text = "租金";
            chArr[5].Text = "载重量";
            foreach (ColumnHeader ch in chArr)
            {
                ch.TextAlign = HorizontalAlignment.Center;//居中
            }
            listHire.Columns.AddRange(chArr); 
            #endregion

            #region 还车头部显示
            ColumnHeader colBNumeber, colBName, colBColor, colBTime, colBMoney, colBLoad, colBtenant, coldateTime;
            ColumnHeader[] chBack = new ColumnHeader[8]
            {
                 colBNumeber = new ColumnHeader(),
                 colBName = new ColumnHeader(),
                 colBColor = new ColumnHeader(),
                 colBTime = new ColumnHeader(),
                 colBMoney = new ColumnHeader(),
                 colBLoad = new ColumnHeader(),
                 colBtenant = new ColumnHeader(),
                 coldateTime =new ColumnHeader()
            };
            colBTime.Width = 100; colBLoad.Width = 60; colBNumeber.Width = 100; colBName.Width = 100; coldateTime.Width = 100;
            chBack[0].Text = "车牌号";
            chBack[1].Text = "车名";
            chBack[2].Text = "车颜色";
            chBack[3].Text = "使用时间";
            chBack[4].Text = "租金";
            chBack[5].Text = "载重量";
            chBack[6].Text = "租户";
            chBack[7].Text = "出租时间";
            foreach (ColumnHeader ch in chBack)
            {
                ch.TextAlign = HorizontalAlignment.Center;//居中
            }
            listback.Columns.AddRange(chBack); 
            #endregion

            #region 反序列化
            FileStream fs = new FileStream("Students.bin", FileMode.OpenOrCreate);
            BinaryFormatter bf = new BinaryFormatter();
            if (fs.Length > 0)
            {
                m_RM = bf.Deserialize(fs) as XRentManager;//反序列化
            }
            bf = null;
            fs.Close();
            fs.Dispose(); 
            #endregion
            backTraffic();//还车
            addTraffic();//租车

        }

        //出租
        private void btnHire_Click(object sender, EventArgs e)
        {


            if (listHire.SelectedItems.Count == 0) return;//判断下
            TrafficInfo listback = listHire.SelectedItems[0].Tag as TrafficInfo;
            listback.tenement = txtUser.Text;
            listback.datatime = dateTime.Text;
            if (txtUser.Text == "")
            { MessageBox.Show("情输入租户姓名"); txtUser.Focus(); return; }
            m_RM.Rent(listback);
            MessageBox.Show("出租成功");
            this.tabControl1.SelectedTab = tpReturn;
            backTraffic();//还车
            addTraffic();//租车
        }
        //金额简单结算
        private void btnBalance_Click(object sender, EventArgs e)
        {
            if (txtDays.Text == "")
            { MessageBox.Show("情输入租用时间"); txtDays.Focus(); return; }
            TrafficInfo list = listback.SelectedItems[0].Tag as TrafficInfo;
            int days = int.Parse(txtDays.Text);
            double prise = list.Money;
            double total = days * prise;
            MessageBox.Show("总计费用"+total);
            TrafficInfo listHire = listback.SelectedItems[0].Tag as TrafficInfo;
            m_RM.InputLibry(listHire);//
            MessageBox.Show("已还车");
            this.tabControl1.SelectedTab = tpRent;//转向
            backTraffic();//还车
            addTraffic();//租车

        }

        /// <summary>
        /// 序列化存进2进制流
        /// </summary>
        /// <param name="fileName">路径</param>
        private void LoadDate(string fileName)
        {
            #region 序列化
            FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate);
            BinaryFormatter bf = new BinaryFormatter();//创建序列化
            bf.Serialize(fs, m_RM);//保存
            bf = null;
            fs.Close();
            fs.Dispose(); 
            #endregion
        }
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.LoadDate("Students.bin");
        }


        #region 视图
        private void MenuLarge_Click(object sender, EventArgs e)
        {
            listHire.View = View.LargeIcon;
            listHire.View = View.LargeIcon;
        }

        private void MenuSmall_Click(object sender, EventArgs e)
        {
            listHire.View = View.SmallIcon;
            listHire.View = View.SmallIcon;
        }

        private void MenuPart_Click(object sender, EventArgs e)
        {
            listHire.View = View.Details;
            listHire.View = View.Details;
        }  
        #endregion

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        /// <summary>
        /// 删
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDelete_Click(object sender, EventArgs e)
        {
            //TrafficInfo delect = listHire.SelectedItems[0].Tag as TrafficInfo;
            //m_RM.DicMyTraffics.Remove(delect.Name);
            int count = listHire.SelectedItems.Count;
            string key = "";
            for (int i = 0; i < count; i++)
            {
                key = listHire.SelectedItems[i].Text;
                if (m_RM.DicMyTraffics.ContainsKey(key))
                {
                    m_RM.DicMyTraffics.Remove(key);
                }

            }
            MessageBox.Show("删除成功");
            addTraffic();//租车
        }

        private void dateTime_Click(object sender, EventArgs e)
        {

        }
    }
}

数据存到sqlserver的版本核心代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using Car.DAL;
using Car.BLL;
using Car.Model;
namespace Car
{
    public partial class Form1 : Form
    {

        TrafficInfo tNew;//父类
        XRentManager m_RM;//管理类
        public Form1()
        {
            InitializeComponent();
        }
        private void btnAdd_Click(object sender, EventArgs e)
        {
            TraMessage();//入库信息

        }
        /// <summary>
        /// 入库信息
        /// </summary>
        public void TraMessage()
        {
            string type = rdoTruck.Checked == true ? "Truck" : "Car";
            tNew = TrafficFactoruy.CreatNewTraffic(type); //工厂模式
            #region 为空判断

            Dictionary<string, string> dicTracffic = new Dictionary<string, string>();
            dicTracffic.Add("车牌号", txtNumber.Text);
            dicTracffic.Add("车名", txtName.Text);
            dicTracffic.Add("车颜色", cbColor.Text);
            dicTracffic.Add("使用时间", txtTime.Text);
            dicTracffic.Add("租金", txtMoney.Text);
            dicTracffic.Add("载重量", txtLoad.Text);
            foreach (string str in dicTracffic.Keys)
            {
                if (dicTracffic[str] == "") //str就是K,dicTracffic[str]就是值
                {
                    MessageBox.Show(string.Format("请输入{0}", str));

                    return;
                }
            }
            #endregion
            #region 非工厂模式创立对象
            //if (rdoCar.Checked == true)
            //{
            //    tNew = new Xcar();//创立对象
            //}
            //if (rdoTruck.Checked == true)
            //{
            //    tNew = new XTruck();
            //} 
            #endregion
            tNew.Number = txtNumber.Text;//车牌号码
            tNew.Name = txtName.Text;//车名
            tNew.Color = cbColor.Text;//车颜色
            tNew.Time = Convert.ToInt32(txtTime.Text);//使用时间
            tNew.Money = int.Parse(txtMoney.Text);//租金
            tNew.Load = txtLoad.Text;//载重
            #region 新增数据
            TrafficBLL insertBLL = new TrafficBLL();
            if (tNew is Xcar)
            {
                insertBLL.AddNewTrafficToDbase(tNew, 1);
            }
            else
            {
                insertBLL.AddNewTrafficToDbase(tNew, 2);
            }
            MessageBox.Show("增加成功");
            #endregion
            addMyTrafficShow();//查到数据然后刷新
            this.tabControl1.SelectedTab = tpRent;//跳过去
        }
        #region 选择车的Load判断
        private void rdoCar_CheckedChanged(object sender, EventArgs e)
        {
            if (rdoCar.Checked == true)//选上
            {
                this.txtLoad.Text = "--无--";
                this.txtLoad.ReadOnly = true;
                this.txtLoad.Cursor = Cursors.No;


            }
            if (rdoTruck.Checked == true)
            {
                this.txtLoad.Text = "";
                this.txtLoad.ReadOnly = false;
                this.txtLoad.Cursor = Cursors.IBeam;
            }

        } 
        #endregion

        /// <summary>
        /// 标题
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            //dateTime.Text = DateTime.Now.ToString("yyyy/MM/dd");
            dateTime.Text = DateTime.Now.ToString("F");//拿到时间所有
            #region 租车头部显示  
            ColumnHeader colNumeber, colName, colColor, colTime, colMoney, colLoad;
            ColumnHeader[] chArr = new ColumnHeader[6]
            {
                 colNumeber = new ColumnHeader(),
                 colName = new ColumnHeader(),
                 colColor = new ColumnHeader(),
                 colTime = new ColumnHeader(),
                 colMoney = new ColumnHeader(),
                 colLoad = new ColumnHeader()    
            };
            colTime.Width = 100; colLoad.Width = 60; colNumeber.Width = 100; colName.Width = 100;
            chArr[0].Text = "车牌号";
            chArr[1].Text = "车名";
            chArr[2].Text = "车颜色";
            chArr[3].Text = "使用时间";
            chArr[4].Text = "租金";
            chArr[5].Text = "载重量";
            foreach (ColumnHeader ch in chArr)
            {
                ch.TextAlign = HorizontalAlignment.Center;//居中
            }
            listHire.Columns.AddRange(chArr); 
            #endregion
            #region 还车头部显示
            ColumnHeader colBNumeber, colBName, colBColor, colBTime, colBMoney, colBLoad, colBtenant, coldateTime;
            ColumnHeader[] chBack = new ColumnHeader[8]
            {
                 colBNumeber = new ColumnHeader(),
                 colBName = new ColumnHeader(),
                 colBColor = new ColumnHeader(),
                 colBTime = new ColumnHeader(),
                 colBMoney = new ColumnHeader(),
                 colBLoad = new ColumnHeader(),
                 colBtenant = new ColumnHeader(),
                 coldateTime =new ColumnHeader()
            };
            colBTime.Width = 100; colBLoad.Width = 60; colBNumeber.Width = 100; colBName.Width = 100; coldateTime.Width = 100;
            chBack[0].Text = "车牌号";
            chBack[1].Text = "车名";
            chBack[2].Text = "车颜色";
            chBack[3].Text = "使用时间";
            chBack[4].Text = "租金";
            chBack[5].Text = "载重量";
            chBack[6].Text = "租户";
            chBack[7].Text = "出租时间";
            foreach (ColumnHeader ch in chBack)
            {
                ch.TextAlign = HorizontalAlignment.Center;//居中
            }
            listback.Columns.AddRange(chBack); 
            #endregion
            addMyTrafficShow(); 
            addMyRentShow();
        }
        /// <summary>
        /// 加到租车listHire集合然后显示出来/刷新租车表
        /// </summary>
        public void addMyTrafficShow()
        {
            listHire.Items.Clear();
             m_RM = new XRentManager();//实例化一个管理类对象
             TrafficBLL showBLL = new TrafficBLL();
             showBLL.showTraffic(tNew, m_RM);
            foreach (TrafficInfo t in m_RM.DicMyTraffics.Values)//显示子项
            {
                ListViewItem lv = new ListViewItem();
                lv.Text = t.Number;
                ListViewItem.ListViewSubItem[] lvs;
                lvs = new ListViewItem.ListViewSubItem[5]
                     { 
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem()
                     };
                lvs[0].Text = t.Name;
                lvs[1].Text = t.Color;
                lvs[2].Text = t.Time.ToString();
                lvs[3].Text = t.Money.ToString();
                lvs[4].Text = t.Load;
                lv.Tag = t;
                listHire.Items.Add(lv);
                lv.SubItems.AddRange(lvs);
                lv.ImageKey = "1.png";
            }
        }
        /// <summary>
        /// 加到还车车(listback)集合然后显示出来
        /// </summary>
        public void addMyRentShow()
        {
            listback.Items.Clear();
            m_RM = new XRentManager();//实例化一个管理类对象
            TrafficBLL showBLL = new TrafficBLL();
            showBLL.showRent(tNew, m_RM);
            foreach (TrafficInfo t in m_RM.DicRenteds.Values)//显示子项
            {
                ListViewItem lv = new ListViewItem();
                lv.Text = t.Number;
                ListViewItem.ListViewSubItem[] lvs;
                lvs = new ListViewItem.ListViewSubItem[7]
                     { 
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem(),
                      new ListViewItem.ListViewSubItem()
                     };
                lvs[0].Text = t.Name;
                lvs[1].Text = t.Color;
                lvs[2].Text = t.Time.ToString();
                lvs[3].Text = t.Money.ToString();
                lvs[4].Text = t.Load;
                lvs[5].Text = t.RentName;
                lvs[6].Text = t.RentDate.ToString();
                lv.Tag = t;
                listback.Items.Add(lv);
                lv.SubItems.AddRange(lvs);
                lv.ImageKey = "1.png";
            }
        }
        //出租
        private void btnHire_Click(object sender, EventArgs e)
        {
            if (listHire.SelectedItems.Count == 0) return;//判断下
            TrafficInfo RentTraffic = listHire.SelectedItems[0].Tag as TrafficInfo;
            RentTraffic.RentName = txtUser.Text;
            RentTraffic.RentDate =Convert.ToDateTime(dateTime.Text);
            RentTraffic.RentNumber = RentTraffic.Number;
            RentTraffic.RentManID = txtRentManID.Text;
            if (txtUser.Text == "")
            { MessageBox.Show("情输入租户姓名"); txtUser.Focus(); return; }
            if (txtRentManID.Text == "")
            { MessageBox.Show("情输入租户证件号码"); txtUser.Focus(); return; }
            TrafficBLL BLL = new TrafficBLL();
            BLL.addRent(RentTraffic);

            MessageBox.Show("出租成功");
            this.tabControl1.SelectedTab = tpReturn;
            addMyRentShow();
            addMyTrafficShow();
        }
        //结算,还车
        private void btnBalance_Click(object sender, EventArgs e)
        {
            TrafficInfo listHire = listback.SelectedItems[0].Tag as TrafficInfo;
            if (listHire !=null)
            {
                listHire.ReturnDate = Convert.ToDateTime(dateTime.Text);
                listHire.RentNumber = listHire.Number;
                TrafficBLL balance = new TrafficBLL();
                balance.addlistHire(listHire);
                MessageBox.Show("已还车");
                this.tabControl1.SelectedTab = tpRent;//转向
                addMyRentShow();
                addMyTrafficShow();
            }   
        }

        #region 视图
        private void MenuLarge_Click(object sender, EventArgs e)
        {
            listHire.View = View.LargeIcon;
            listHire.View = View.LargeIcon;
        }

        private void MenuSmall_Click(object sender, EventArgs e)
        {
            listHire.View = View.SmallIcon;
            listHire.View = View.SmallIcon;
        }

        private void MenuPart_Click(object sender, EventArgs e)
        {
            listHire.View = View.Details;
            listHire.View = View.Details;
        }  
        #endregion

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        /// <summary>
        /// 删
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDelete_Click(object sender, EventArgs e)
        {
          TrafficInfo delete=listHire.SelectedItems[0].Tag as TrafficInfo;
          TrafficBLL dBLL = new TrafficBLL();
          bool res=  dBLL.deleteTraffic(delete);
          if (res)
          {
              MessageBox.Show("删除成功");
              addMyTrafficShow();
          }
          else 
          {
              MessageBox.Show("请选中一项");
          }       
        }

        private void btnAccount_Click(object sender, EventArgs e)
        {
            FormAccount Account = new FormAccount();
            Account.ShowDialog();
        }
    }
}

github代码下载:https://github.com/zy20081/practice.git


目录