汽車租賃系統(第二種方式)

来源:http://www.cnblogs.com/yejiaojiao/archive/2016/03/07/5252002.html
-Advertisement-
Play Games

一、系統窗體 1)vehic類 //父類 汽車類 public abstract class Vehicle { //汽車牌照 public string CarID { get; set; } //汽車名 public string Name { get; set; } //顏色 public s


一、系統窗體

 

1)vehic類

  //父類  汽車類
   public abstract  class Vehicle
    {
       //汽車牌照
        public string  CarID { get; set; }
       //汽車名
        public string Name { get; set; }
       //顏色
        public string  Color { get; set; }
       //使用 時間
        public int  RentDate { get; set; }
       //日租金
        public int Price { get; set; }
       //計算租金的抽象方法
        public abstract double GetPrice(int day);
    }

2)Car小轎車類

//小車類
   public  class Car:Vehicle
    {
       //計算汽車租金
        public override double GetPrice(int day)
        {
            double Price = this.Price * day;
            return Price;
        }
    }

  

3)Truck卡車類

public  class Truck:Vehicle
    {
       //卡車載重
        public int Load { get; set; }

       //計算卡車的租金
        public override double GetPrice( int day)
        {
            double Price = this.Price * day;
            return Price;
        }
    }

  

4)FrmMain窗體的代碼

 public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
        }
        //保存可租車輛的信息  (Key : 車牌號  ,  Value: 車輛對象)
        public Dictionary<string, Vehicle> RentalCar = new Dictionary<string, Vehicle>();

        //保存租車 車輛信息  (Key : 車牌號 , Value 車輛對象)
        public Dictionary<string, Vehicle> EndCar = new Dictionary<string, Vehicle>();

       

        //初始化租車信息
        public void Rental()
        {
            Car car1 = new Car();
            car1.CarID = "京Ro7845";
            car1.Color = "紅色";
            car1.Name = "賓士";
            car1.Price = 100;
            car1.RentDate = 30;

            Car car2 = new Car();
            car2.CarID = "湘Rok545";
            car2.Color = "紅色";
            car2.Name = "大眾";
            car2.Price = 500;
            car2.RentDate = 30;
            
            Truck truck1 = new Truck();
            truck1.CarID = "粵Jo7845";
            truck1.Color = "黑色";
            truck1.Name = "路虎";
            truck1.Price = 60;
            truck1.RentDate = 30;
            truck1.Load = 130;

            Truck truck2 = new Truck();
            truck2.CarID = "贛Kjg845";
            truck2.Color = "白色";
            truck2.Name = "三菱";
            truck2.Price = 120;
            truck2.RentDate = 30;
            truck2.Load = 60;

            RentalCar.Add(car1.CarID, car1);
            RentalCar.Add(truck1.CarID, truck1);
            RentalCar.Add(car2.CarID, car2);
            RentalCar.Add(truck2.CarID, truck2);
        }

        private void FrmMain_Load(object sender, EventArgs e)
        {
            //初始化租車信息
            Rental();
            //綁定數據到租車信息的listview上
            GetDataToList();
        }

        //給租車Listview上綁定數據
        private void GetDataToList()
        {
            //清空Iistview集合的數據 重新綁定
            lvlist.Items.Clear();

            foreach (KeyValuePair<string,Vehicle> item in RentalCar)
            {
                ListViewItem list = new ListViewItem(item.Value.CarID);
                list.SubItems.Add(item.Value.Name);
                list.SubItems.Add(item.Value.Color);
                list.SubItems.Add(item.Value.RentDate.ToString());
                list.SubItems.Add(item.Value.Price.ToString());
                if (item.Value is Truck)
                {
                    Truck truck = (Truck)item.Value;
                    list.SubItems.Add(truck.Load.ToString());
                }
                else
                {
                    list.SubItems.Add("無");
                }
                
                
              
                lvlist.Items.Add(list);
            }
            
        }

        //給還車ListView綁定數據
        public void GetDataToListEnd()
        {

            //清空數據
            lvlistEnd.Items.Clear();

            foreach (KeyValuePair<string, Vehicle> item in EndCar)
            {
                ListViewItem list = new ListViewItem(item.Value.CarID);
                list.SubItems.Add(item.Value.Name);
                list.SubItems.Add(item.Value.Color);
                list.SubItems.Add(item.Value.RentDate.ToString());
                list.SubItems.Add(item.Value.Price.ToString());
                if (item.Value is Truck)
                {
                    Truck truck = (Truck)item.Value;
                    list.SubItems.Add(truck.Load.ToString());
                }
                else
                {
                    list.SubItems.Add("無");
                }



                lvlistEnd.Items.Add(list);
            }
            
        }

        //租車刷新
        private void button2_Click(object sender, EventArgs e)
        {
           

            GetDataToList();

        }

      
        //租車
        private void button1_Click(object sender, EventArgs e)
        {
            //判斷租車人信息不為空
            if (txtName.Text != "")
            {
                //判斷是否選中一項
                if (lvlist.SelectedItems.Count > 0)
                {
                    //獲取選中車輛的車牌號
                string   CarID = lvlist.SelectedItems[0].SubItems[0].Text;
                    //在可租集合裡面找到車牌號為CarID的車輛,並將其車對象賦值到已租車輛的集合中
                    EndCar.Add(CarID, RentalCar[CarID]);
                    //移除可租車輛里該車輛的信息
                    RentalCar.Remove(CarID);
                    MessageBox.Show("租車成功!!");
                }
                else
                {
                    MessageBox.Show("請選擇一項!!");
                }
               
                
            }
            else
            {
                MessageBox.Show("請填寫租車人信息!!");
            }
        }

        //還車刷新
        private void button3_Click(object sender, EventArgs e)
        {
            //刷新還車list
            GetDataToListEnd();
        }

        //選擇選項卡時發生
        private void tabControl1_Selected(object sender, TabControlEventArgs e)
        {

            if (e.TabPage == tabPage1)     //租車的選項卡
            {
                //刷新租車List
                GetDataToList();
            }
            else if (e.TabPage == tabPage2)  //還車選項卡
            {
                //刷新還車list
                GetDataToListEnd();
            }
            else
            {
                rdoCar.Checked = true;
            }
          

        }

        //還車結算
        private void button4_Click(object sender, EventArgs e)
        {
          
            //判斷租車時間不為空
            if (txtDay.Text != "")
            {
                //獲得租車的天數
                int Day = Convert.ToInt32(txtDay.Text);

                //判斷是否選中一項
                if (lvlist.SelectedItems.Count > 0)
                {
                    //獲取選中車輛的車牌號
                    string CarID = lvlistEnd.SelectedItems[0].SubItems[0].Text;
                    //調用計算價格的方法
                    double Price = EndCar[CarID].GetPrice(Day);
                    MessageBox.Show("您的總價格是"+Price.ToString());
                    //將已借車輛從已借集合中複製到可借車輛集合中
                    RentalCar.Add(CarID,EndCar[CarID]);
                    //移除已借車輛集合中的該車對象
                    EndCar.Remove(CarID);
                }
                else
                {
                    MessageBox.Show("請選擇一項!!");
                }
            }
            else
            {
                MessageBox.Show("請填寫租車使用時間");
            }

        }

        //新車入庫
        private void button5_Click(object sender, EventArgs e)
        {

            //獲得車牌號
            string CarId = txtCarId.Text;
            //獲得車名
            string CarName = txtName.Text;
            //獲得車顏色
            string CarColor = rboColor.Text;
            //獲得車使用時間
            int Day = Convert.ToInt32(txtuseTime.Text);
            //獲得日租金
            int Price = Convert.ToInt32(txtPrice.Text);

            //判斷是選中的卡車還是汽車
            if (rdoTruck.Checked == true)
            {
                //獲得載重量
                int Height = Height = Convert.ToInt32(txtHeight.Text);
                Truck truck = new Truck();
                truck.CarID = CarId;
                truck.Name = CarName;
                truck.Price = Price;
                truck.RentDate = Day;
                truck.Color = CarColor;
                //將新增車加入到可借集合中
                RentalCar.Add(CarId,truck);

            }
            else
            {
                Car car = new Car();
                car.CarID = CarId;
                car.Name = CarName;
                car.Price = Price;
                car.RentDate = Day;
                car.Color = CarColor;
                //將新增車加入到可借集合中
                RentalCar.Add(CarId, car);
            }

           
        }

        //單選按鈕
        private void rdoCar_CheckedChanged(object sender, EventArgs e)
        {
            //判斷是選中的卡車還是汽車
            if (rdoTruck.Checked == true)
            {
                Clear();
                //啟用載重控制項
                txtHeight.Enabled = true;


            }
            else
            {
                Clear();
                //禁用載重控制項
                txtHeight.Enabled = false;
            }
        }


        //清空txt文本的值
        public void Clear()
        {
              txtCarId.Text = "";
             txtName.Text = "";
             rboColor.Text = "";
             txtuseTime.Text= "";
              txtPrice.Text= "";
              txtCarName.Text = "";
        }
      



    }

  這種方法相對簡單理解

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Button btNext=(Button)findViewById(R.id.next); btNext.setOnClickListener(new Button.OnClickListener(){ public void onClick(View view){ //創建一個佈局管理器控制項 L
  • 服務 服務的生命周期 --- 1 開啟服務的生命周期 完整的生命周期:onCreate()-->onStartCommand()-->onDestroy() * 開啟服務:onCreate()-->onStartCommand() * 停止服務:onDestroy() * 特點: 1. 服務可以被多
  • · 代碼段。這個功能很早就知道了,Framework已經提供了很多代碼段,我們也可以自定義代碼段,不過之前一直沒有用過,今天實踐了一下,還是挺有意思的,這種代碼自動生成的思想其實挺有用的。另外發現一點,Framework中提供的代碼段中,關於C#和VB的數量明顯不一樣,不知道為啥C#要少呢?上網查了
  • 更新日線,是一項我們經常遇到的數據導入功能。 這項功能的說明文字,我是這麼寫的: 用戶在初次使用本系統的時候,需要安裝滬深兩市從開市到本年度的所有歷史數據,這些數據可以從某證券行情軟體獲得,是遵循一定格式的二進位文件。此後,每天兩市交易結束之後,用戶必須更新當天的日線行情,當然,用戶也可能在幾天後一
  • 這些東西是基礎中的基礎,基本上是本書都會講這個。但是很多東西到處都有,所以只撿了以下的這些寫下來。 關於類型的可見性和可訪問性 也就是public,internal這種東西,但是還是有個東西要提一下,那就是友元程式集。 利用System.Runtime.CompilerServices中的Inter
  • 自己編寫Mvvm模式代碼實現一個簡單的登陸畫面。涉及到了INotifyPropertyChanged的實現,ICommand的實現。最重要的還有Xbind
  • 這幾天開始新項目,在AbstractDalFactory反射實例的時候,遇到的問題是load程式集成功,但是Create實例為null. 被反射的程式集名稱和命名空間都為s2s.Dal, 剛開始我在想,會不會是中間的有個點 . 的問題,轉而一想不可能啊,因為我AutoFac依賴註入s2s.BLL對象
  • 最近學習了繼承,多態,集合,設計模式,有一個汽車租憑系統,給大家分享一下: 我們首先來看看我們這個系統的效果 1.做一個項目,我們首先對項目進行分析 根據我們最近學的知識,我們可以看出繼承,多態,集合,設計模式,我們都能用到 我們把所需要的類和簡單模式中的“簡單工廠”的工廠準備好 類圖: 01.車輛
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...