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(" !");
}
}
이상 은 본문의 전체 내용 이 므 로 여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.