C\#간단 한 자동차 임대 시스템 실현

최근 에 계승,다 형,집합,디자인 모델 을 배 웠 습 니 다.자동차 임대 시스템 이 있 습 니 다.여러분 께 공유 해 드 리 겠 습 니 다.
저희 가 먼저 이 시스템 의 효 과 를 보도 록 하 겠 습 니 다.



1.프로젝트 를 만 들 면 우 리 는 먼저 프로젝트 를 분석한다.
우리 가 최근 에 배 운 지식 에 따 르 면 우 리 는 계승,다 형,집합,디자인 모델 을 모두 사용 할 수 있다 는 것 을 알 수 있다.
우 리 는 필요 한 종류 와 간단 한 모델 중의'간단 한 공장'의 공장 을 준비 했다.
 아 날로 그:

01.차량 류(부류)

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace       
{
 //       
 public abstract class Vehicle
 {
  //  
  //   
  public string LicenseNo { get; set; }
  
  //  
  public string Name { get; set; }
  //  
  public string Color { get; set; }
  //    
  public int RentDate { get; set; }
  //   
  public string RentUser { get; set; }
  //   
  public double DailyRent { get; set; }
  //    
  public int ReturnDate { get; set; }

  public Vehicle() { }
  //  
  public Vehicle(string liceseno,string name,string color,int rentdate,double dailyrent)
  {
   this.Color = color;
   this.DailyRent = dailyrent;
   this.LicenseNo = liceseno;
   this.Name = name;
   this.RentDate = rentdate;
 
  }

  //        
  public abstract double GetNum();
  
 }
}

02.서브 클래스 자동차   (카 테 고리

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace       
{
 //      
 public class Car:Vehicle
 {
  public Car() { }
  //  
  public Car(string licenseno, string name, string color, int rentdate, double dailyrent)
   : base(licenseno, name, color, rentdate, dailyrent) 
  { }
  //           
  public override double GetNum()
  {
   //   *    
   double result = this.DailyRent * this.ReturnDate;
   return result;
  }
 }
}

03.하위 트럭 류 계승 차량 류 부류

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace       
{
 //  
 public class Truck:Vehicle
 {
  //  
  public int Load { get; set; }

  public Truck() { }

  //  
  public Truck(string licenseno,string name,string color,int rentdate,double dailyrent,int load )
   :base(licenseno,name,color,rentdate,dailyrent ) 
  {
   this.Load = load;
  }

  //           
  public override double GetNum()
  {
   //   *    
   double result = this.DailyRent * this.ReturnDate;
   return result;
  }
 }
}

 04.단순 공장
이 공장 류 는 신차 가 입고 되 었 을 때 승용차 인지 트럭 인지 알 수 있 도록 서로 다른 대상 을 예화 하여 편리 하 게 사용 할 수 있 도록 하 는 것 이다.

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace       
{
 //   
 public class VehicleFactory
 {
  //      
  public static Vehicle Carteshow(string liceseno, string name, string color, int rentdate, double dailyrent, int Load,string type)
  {
   //       
   Vehicle vehicle = null;
   switch (type)
   {
    //      ,        
    case"  ":
     vehicle = new Truck(liceseno, name, color, rentdate, dailyrent, Load);
     break;
    case"  ":
     vehicle = new Car(liceseno, name, color, rentdate, dailyrent);
     break;
   }
   //       
   return vehicle;
  
  
  }
 }
}

2.남 은 것 은 메 인 창의 기능 을 실현 하 는 것 이다.
사실 렌터카 와 반납 의 핵심 은 두 집합 간 의 상호작용 이다.
신차 입 고 는'단순 공장'의 설계 모델 로 대응 추가 하 는 것 이다.
그 중 에 저희 가 예전 에 보지 못 했 던 컨트롤 이 있어 요.TabControl.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace       
{
 public partial class FrmMain : Form
 {
  public FrmMain()
  {
   InitializeComponent();
  }
  //         
  Dictionary<string, Vehicle> vehicles=new Dictionary<string,Vehicle>();
  //        
  Dictionary<string, Vehicle> rentvehicles=new Dictionary<string,Vehicle>();

  //    listview   
  public void New(Dictionary<string,Vehicle> list,ListView lvlist) 
  {
   ListViewItem listview = null;
   lvlist.Items.Clear();
   foreach (Vehicle item in list.Values)
   {
    if (item is Car)
    {
     listview = new ListViewItem();
     listview.Text = item.LicenseNo;
     listview.SubItems.Add(item.Name);
     listview.SubItems.Add(item.Color);
     listview.SubItems.Add(item.RentDate.ToString());
     listview.SubItems.Add(item.DailyRent.ToString());
    }
    else if (item is Truck)
    {
     listview = new ListViewItem();
     listview.Text = item.LicenseNo;
     listview.SubItems.Add(item.Name);
     listview.SubItems.Add(item.Color);
     listview.SubItems.Add(item.RentDate.ToString());
     listview.SubItems.Add(item.DailyRent.ToString());
     listview.SubItems.Add(((Truck)item).Load.ToString());
    }
    lvlist.Items.Add(listview);
   }
   
  }

  //      
  public void Intitle() 
  {
   
   Truck truck = new Truck(" A111","  ","  ",3,240,10);
   Car car = new Car(" A222", "  ", "  ", 3, 240);

   vehicles.Add(truck.LicenseNo,truck);
   vehicles.Add(car.LicenseNo, car);
   //    
   New(vehicles,lvlist);
   
  }
  private void FrmMain_Load(object sender, EventArgs e)
  {
   Intitle();
  }
  //         
  private void btn_zu_Click(object sender, EventArgs e)
  {
   if(lvlist.SelectedItems.Count==0)
   
   {
    MessageBox.Show("     !");
    return;
   }
   if (txt_name.Text=="")
   {
    MessageBox.Show("     !");
    return;

   }
   //    .
   //       
   string carnum = lvlist.SelectedItems[0].Text;
   Vehicle ve= vehicles[carnum];

   //            rentvehicles  

   rentvehicles.Add(carnum,ve);

   //       
   vehicles.Remove(carnum);

   //    
   New(vehicles,lvlist);
   MessageBox.Show("    ");

  }

  private void button1_Click(object sender, EventArgs e)
  {
   //         
   New(rentvehicles,lvlist_huan);
   
  }

  private void btn_ji_Click(object sender, EventArgs e)
  {
   if (txt_day.Text=="")
   {
    MessageBox.Show("     ");
    return;
   }

   if (lvlist_huan.SelectedItems.Count==0)
   {
    MessageBox.Show("     ");
    return;
   }
   //       
   string carnum1 = lvlist_huan.SelectedItems[0].Text;
   Vehicle ve = rentvehicles[carnum1];

  
   //      
   int num = Convert.ToInt32(txt_day.Text);
   ve.ReturnDate = num;
   double money=ve.GetNum();
   DialogResult result= MessageBox.Show("    "+money+" ","  ",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
   if (result==DialogResult.OK)
   {
    //            vehicles  
    vehicles.Add(carnum1, ve);

    //       
    rentvehicles.Remove(carnum1);

    //    
    New(rentvehicles, lvlist_huan);
    MessageBox.Show("    ");
   }
   

  }
  //    
  private void btn_new_Click(object sender, EventArgs e)
  {
   //    
   New(vehicles, lvlist);
  }
  //           
  public bool Good() 
  {
   bool flag = true;
   if (txt_id.Text==""||txt_xing.Text==""||cmb_color.Text==""||txt_time.Text==""||txt_money.Text==""||txt_zhong.Text==""|| rdb_jiao.Text=="")
   {
    flag = false;

   }
   return flag;
  }
  //        
  private void btn_ruku_Click(object sender, EventArgs e)
  {
   if (Good())//        
   {

    foreach (string item in vehicles.Keys)
    {
     if (txt_id.Text==item)
     {
      MessageBox.Show("         ,    !");
      return;
     }
    }
    //  "    "
    Vehicle ve = null;
    if (rdb_jiao.Checked == true)
    {
     ve = VehicleFactory.Carteshow(txt_id.Text, txt_xing.Text, cmb_color.Text,Convert.ToInt32(txt_time.Text), Convert.ToDouble(txt_money.Text), Convert.ToInt32(txt_zhong.Text), rdb_jiao.Text);

    }
    else
    {
     ve = VehicleFactory.Carteshow(txt_id.Text, txt_xing.Text, cmb_color.Text, Convert.ToInt32(txt_time.Text), Convert.ToDouble(txt_money.Text), Convert.ToInt32(txt_zhong.Text), rdb_ka.Text);

    }
    //    
    vehicles.Add(txt_id.Text, ve);
    MessageBox.Show("    ");

    //         
    txt_id.Text="";
    txt_xing.Text="";
    cmb_color.Text="";
    txt_time.Text="";
    txt_money.Text= "";
    txt_zhong.Text = ""; 
   }
   else
   {

    MessageBox.Show("        !");
   }
   

  }
  //       
  private void rdb_jiao_CheckedChanged(object sender, EventArgs e)
  {
   if (rdb_jiao.Checked==true)
   {
    lab_zhong.ForeColor = Color.Red;
    txt_zhong.Enabled = false;
   }
   else
   {
    lab_zhong.ForeColor = Color.Black;
    txt_zhong.Enabled = true;
   }
  }
 }
}

그 매력 코드 를 분류 해 보 자.
1.렌터카 의 인터페이스 기능
01.렌터카 버튼  

//         
  private void btn_zu_Click(object sender, EventArgs e)
  {
   //      
   if(lvlist.SelectedItems.Count==0)
   
   {
    MessageBox.Show("     !");
    return;
   }
   //      
   if (txt_name.Text=="")
   {
    MessageBox.Show("     !");
    return;

   }
   //    .
   //       
   string carnum = lvlist.SelectedItems[0].Text;
   //           
   Vehicle ve= vehicles[carnum];

   //            rentvehicles  

   rentvehicles.Add(carnum,ve);

   //       
   vehicles.Remove(carnum);

   //    
   New(vehicles,lvlist);
   MessageBox.Show("    ");

02.리 셋 버튼

//    
  private void btn_new_Click(object sender, EventArgs e)
  {
   //    
   New(vehicles, lvlist);
  }
리 셋 은 ListView 를 동적 으로 불 러 오 는 방법(Nuw 방법)을 정의 합 니 다.
이 방법 은 두 개의 매개 변수 가 있 습 니 다.첫 번 째 매개 변 수 는 차량 유형 집합 대상 에 들 어가 고 두 번 째 는 Listview 의 이름 에 들 어 갑 니 다.
이런 역할 은 렌 트 카 와 반납 할 때 모두 이 방법 으로 리 셋 을 할 수 있다 는 것 이다.어찌 좋 지 않 겠 는가!

 //    listview   
  public void New(Dictionary<string,Vehicle> list,ListView lvlist) 
  {
   //   LIstviewItem  
   ListViewItem listview = null;
    //  Listview,       
   lvlist.Items.Clear();
   foreach (Vehicle item in list.Values)
   {
    //    
    if (item is Car)
    {
     listview = new ListViewItem();
     listview.Text = item.LicenseNo;
     listview.SubItems.Add(item.Name);
     listview.SubItems.Add(item.Color);
     listview.SubItems.Add(item.RentDate.ToString());
     listview.SubItems.Add(item.DailyRent.ToString());
    }
    else if (item is Truck)
    {
     listview = new ListViewItem();
     listview.Text = item.LicenseNo;
     listview.SubItems.Add(item.Name);
     listview.SubItems.Add(item.Color);
     listview.SubItems.Add(item.RentDate.ToString());
     listview.SubItems.Add(item.DailyRent.ToString());
     listview.SubItems.Add(((Truck)item).Load.ToString());
    }
    //  
    lvlist.Items.Add(listview);
   }
   
  }
2.환 차 의 인터페이스 기능
01.결제 버튼 선택

 private void btn_ji_Click(object sender, EventArgs e)
  {
   //         
   if (txt_day.Text=="")
   {
    MessageBox.Show("     ");
    return;
   }
   //        
   if (lvlist_huan.SelectedItems.Count==0)
   {
    MessageBox.Show("     ");
    return;
   }
   //       
   string carnum1 = lvlist_huan.SelectedItems[0].Text;
    //              
   Vehicle ve = rentvehicles[carnum1];
  
   //      
   int num = Convert.ToInt32(txt_day.Text);
   //         
   ve.ReturnDate = num;
   //      (     )
   double money=ve.GetNum();
   DialogResult result= MessageBox.Show("    "+money+" ","  ",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
   if (result==DialogResult.OK)
   {
    //            vehicles  
    vehicles.Add(carnum1, ve);

    //       
    rentvehicles.Remove(carnum1);

    //    
    New(rentvehicles, lvlist_huan);
    MessageBox.Show("    ");
   }
   

  }

02.리 셋 버튼(렌 트 카 를 호출 할 때 쓰 는 방법)

private void button1_Click(object sender, EventArgs e)
  {
   //         
   New(rentvehicles,lvlist_huan);
   
  }
3.신차 입고 인터페이스 기능
01.입고 버튼

 //        
  private void btn_ruku_Click(object sender, EventArgs e)
  {
   if (Good())//        
   {
     //       ,            
    foreach (string item in vehicles.Keys)
    {
     if (txt_id.Text==item)
     {
      MessageBox.Show("         ,    !");
      return;
     }
    }
    //  "    ",      
    Vehicle ve = null;
    if (rdb_jiao.Checked == true)
    {
     ve = VehicleFactory.Carteshow(txt_id.Text, txt_xing.Text, cmb_color.Text,Convert.ToInt32(txt_time.Text), Convert.ToDouble(txt_money.Text), Convert.ToInt32(txt_zhong.Text), rdb_jiao.Text);

    }
    else
    {
     ve = VehicleFactory.Carteshow(txt_id.Text, txt_xing.Text, cmb_color.Text, Convert.ToInt32(txt_time.Text), Convert.ToDouble(txt_money.Text), Convert.ToInt32(txt_zhong.Text), rdb_ka.Text);

    }
    //    
    vehicles.Add(txt_id.Text, ve);
    MessageBox.Show("    ");

    //         
    txt_id.Text="";
    txt_xing.Text="";
    cmb_color.Text="";
    txt_time.Text="";
    txt_money.Text= "";
    txt_zhong.Text = ""; 
   }
   else
   {

    MessageBox.Show("        !");
   }
   

  }
이상 은 본문의 전체 내용 이 므 로 여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기