汽车租赁系统

刚见到这个项目时,我不是拿起来就写,而是看了书上有什么要求,然后先把自己的思路理清楚。

搭建界面想必大家都会,我就不在这啰嗦了。

首先我们先看租车:

 

我们可以看到显示车辆信息的控件,下面还有一个填写租用者姓名的控件,有两个按钮。

首先我就可以想到选中车辆,填写姓名,点击租车按钮,跳出一个提示消息框,

点击刷新,看看刚才自己出租成功的车辆还在不在。

接下来我们看看还车界面:

我们看到还车界面也是一个显示车辆信息的控件,下面还有租用天数,两个按钮。

这样我就可以想到选中车辆填写天数,点击结算按钮,弹出一个消息框提示你的租金,

点击刷新,查看是否还车成功。

最后我们来看看新车入库界面:

这个界面看起来相对就简单了,点击选中添加的车辆,按着车辆的信息依次添加即可,但是同时要注意,添加轿车和卡车时,车载重量填写不填写。

大致上我们已经把思路理明白了,接下来就是写代码了。

做这个项目我用的是单列集合,ListView承载车辆信息,大致上分了下列几步:

///0.1创建两个单列集合用于存储出租车辆和为出租车辆

///0.2初始化车辆信息

///0.3把初始化的车辆信息绑定到控件上

///0.4实现车辆的出租

//0.5实现车辆的归还

//0.6实现车辆的入库

具体的代码:

//初始化信息的集合
List<Vehicle> list = new List<Vehicle>();
//租车成功的集合
List<Vehicle> list2 = new List<Vehicle>();

//存储车辆信息个方法
public void Add()
{
//01.初始化卡车对象
Truck t = new Truck();
t.Color = "白色";
t.DailyRent = 200;
t.LicenseNo = "京P1000";
t.Name = "解放";
t.YearsOfService = 0;
t.Load = 200;

Truck tr = new Truck();
tr.Color = "黄色";
tr.DailyRent = 600;
tr.LicenseNo = "京P2000";
tr.Name = "东风日产";
tr.YearsOfService = 0;
tr.Load = 300;

Car c = new Car();
c.Color = "蓝色";
c.DailyRent = 200;
c.LicenseNo = "京P3000";
c.Name = "东风日产";
c.YearsOfService = 0;

Car ca = new Car();
ca.Color = "红色";
ca.DailyRent = 300;
ca.LicenseNo = "京P4000";
ca.Name = "捷达";
ca.YearsOfService = 0;

//02.把初始化的对象添加到集合中
list.Add(t);
list.Add(tr);
list.Add(c);
list.Add(ca);
//03.把数据绑定到ListView上
foreach (Vehicle item in list)
{
ListViewItem items = new ListViewItem(item.LicenseNo);
items.SubItems.Add(item.Name);
items.SubItems.Add(item.Color);
items.SubItems.Add(item.YearsOfService.ToString());
items.SubItems.Add(item.DailyRent.ToString());
//04.判断当为卡车对象时,添加车载重量
if(item is Truck)
{
items.SubItems.Add((item as Truck).Load.ToString());
}
//05.判断当为轿车对象时,不添加车载重量
else if (item is Car)
{
items.SubItems.Add("");
}

lvList01.Items.Add(items);
}
}

 

运行程序时显示:

点击选中车辆,填写租用者:

在这里我们要做出判断没有填写姓名时,给出提示,当没选择车辆时给出提示

//判断是否选中一行
if (lvList01.SelectedItems.Count == 0)
{
MessageBox.Show("请选择一行");
return;
}

 

//判断当输入的姓名为空时,做出的判断
if (txt01.Text == "")
{
MessageBox.Show("请输入客户名字!");
return;
}

 

string no = lvList01.SelectedItems[0].SubItems[0].Text; 
for (int i = 0; i < list.Count; i++)
{
if(list[i].LicenseNo==no)
{
//判断选中的是什么车
if (list[i] is Car)
{

//初始化一个车辆信息加入到租车成功的控件上
Car r = new Car();
r.LicenseNo = no;
r.Name = lvList01.SelectedItems[0].SubItems[1].Text;
r.Color= lvList01.SelectedItems[0].SubItems[2].Text;
r.YearsOfService = Convert.ToInt32(lvList01.SelectedItems[0].SubItems[3].Text);
r.DailyRent= Convert.ToInt32(lvList01.SelectedItems[0].SubItems[4].Text);
list2.Add(r);
}
else if(list[i] is Truck)
{

//初始化一个车辆信息加入到租车成功的控件上
Truck k = new Truck();
k.LicenseNo = no;
k.Name = lvList01.SelectedItems[0].SubItems[1].Text;
k.Color = lvList01.SelectedItems[0].SubItems[2].Text;
k.YearsOfService = Convert.ToInt32(lvList01.SelectedItems[0].SubItems[3].Text);
k.DailyRent = Convert.ToInt32(lvList01.SelectedItems[0].SubItems[4].Text);
k.Load= Convert.ToInt32(lvList01.SelectedItems[0].SubItems[5].Text);
list2.Add(k);
}

//把出租成功的车辆信息删除
list.RemoveAt(i);

//给出一个提示框
MessageBox.Show("你好!"+txt01.Text + "您成功租用的车牌号为:" + no+"的车辆");
}
}

 

点击租车时显示:

点击刷新时显示:

private void btn01_Click(object sender, EventArgs e)
{

//清空列表
lvList01.Items.Clear();

//重新加载车辆信息
foreach (Vehicle item in list)
{
ListViewItem items = new ListViewItem(item.LicenseNo);
items.SubItems.Add(item.Name);
items.SubItems.Add(item.Color);
items.SubItems.Add(item.YearsOfService.ToString());
items.SubItems.Add(item.DailyRent.ToString());
if (item is Truck)
{
items.SubItems.Add((item as Truck).Load.ToString());
}
else if (item is Car)
{
items.SubItems.Add("");
}

lvList01.Items.Add(items);
}
}

 

这里我们可以看到选中的车辆信息已经没有了,租用成功!

接下来我们查看还车:

刚开始里面是没有任何车辆信息的,点击刷新后:

private void btn04_Click(object sender, EventArgs e)
{
lvList02.Items.Clear();
foreach (Vehicle item in list2)
{
ListViewItem items = new ListViewItem(item.LicenseNo);
items.SubItems.Add(item.Name);
items.SubItems.Add(item.Color);
items.SubItems.Add(item.YearsOfService.ToString());
items.SubItems.Add(item.DailyRent.ToString());
if (item is Truck)
{
items.SubItems.Add((item as Truck).Load.ToString());
}
else if (item is Car)
{
items.SubItems.Add("");
}

lvList02.Items.Add(items);
}

}

 

我们选中的车辆信息就显示在还车界面上了。

当我们还车时也要做出判断,是否选中车辆,是否添加天数

//判断是否输入天数

if (txt02.Text == string.Empty)
{
MessageBox.Show("请输入天数!");
return;
}

 

//判断是否选中车辆信息

if(lvList02.SelectedItems.Count>0)
{
string Num = lvList02.SelectedItems[0].SubItems[0].Text;
for (int i = 0; i < list2.Count; i++)
{
if (list2[i].LicenseNo == Num)
{

if (list2[i] is Car)
{
Car r = new Car();
r.LicenseNo = lvList02.SelectedItems[0].SubItems[0].Text;
r.Name = lvList02.SelectedItems[0].SubItems[1].Text;
r.Color = lvList02.SelectedItems[0].SubItems[2].Text;
r.YearsOfService = Convert.ToInt32(txt02.Text);
r.DailyRent = Convert.ToInt32(lvList02.SelectedItems[0].SubItems[4].Text);
list.Add(r);
double money = r.DailyRent * Convert.ToDouble(txt02.Text);
MessageBox.Show("您需要支付:" + money + "");
}
else if (list2[i] is Truck)
{
Truck k = new Truck();
k.LicenseNo = lvList02.SelectedItems[0].SubItems[0].Text;
k.Name = lvList02.SelectedItems[0].SubItems[1].Text;
k.Color = lvList02.SelectedItems[0].SubItems[2].Text;
k.YearsOfService = Convert.ToInt32(txt02.Text);
k.DailyRent = Convert.ToInt32(lvList02.SelectedItems[0].SubItems[4].Text);
k.Load = Convert.ToInt32(lvList02.SelectedItems[0].SubItems[5].Text);
list.Add(k);
double money = k.DailyRent * Convert.ToDouble(txt02.Text);
MessageBox.Show("您需要支付:" + money);
}
list2.RemoveAt(i);
}
}
}
else
{
MessageBox.Show("请选择归还的车辆");
}

 

最后我们来看看车辆入库:

//判断当我们选择轿车和卡车时车载重量填写不填写

private void rb01_CheckedChanged(object sender, EventArgs e)
{
if (rb01.Checked)
{
txtzl.Text = "";
txtzl.Enabled = false;
}
else if (rb02.Checked)
{
txtzl.Enabled = true;
}
}

 

依次填写信息:

未填写信息时作出判断:

if ( txtsj.Text == "" || txtxh.Text == "" || txtno.Text == "" || txtzj.Text == "" || cbo01.Text == "")

{
MessageBox.Show("请您填写完整!");
}

else
{

if (rb01.Checked)
{

Vehicle vl = new Car();
vl.LicenseNo = txtno.Text;
vl.Color = cbo01.Text;
vl.DailyRent = Convert.ToDouble(txtzj.Text);
vl.Name = txtxh.Text;
vl.YearsOfService =0;
list.Add(vl);

MessageBox.Show("入库成功");
}
else if(rb02.Checked)
{

Vehicle vl = new Truck();
vl.LicenseNo = txtno.Text;
vl.Color = cbo01.Text;
vl.DailyRent = Convert.ToDouble(txtzj.Text);
vl.Name = txtxh.Text;
vl.YearsOfService = 0;
((Truck)vl).Load = Convert.ToInt32(txtzl.Text);
list.Add(vl);
MessageBox.Show("入库成功");
}
else
{
MessageBox.Show("请选择入库的车辆类型");
}
}
}

 

点击租车界面的刷新按钮:

点击清空按钮:

private void btnqk_Click(object sender, EventArgs e)
{
foreach (Control item in tp03.Controls)
{
if(item is TextBox)
{
item.Text = "";
}
cbo01.Text = "请选择";
}
}

在Load事件里添加:

private void FrmMain_Load(object sender, EventArgs e)
{
Add();
cbo01.Items.Add("请选择");
cbo01.SelectedIndex = 0;
cbo01.Items.Add("黄色");
cbo01.Items.Add("白色");
cbo01.Items.Add("绿色");
cbo01.Items.Add("蓝色");
cbo01.Items.Add("黑色");
cbo01.Items.Add("橙色");
cbo01.Items.Add("灰色");
cbo01.Items.Add("紫色");


}

 

这就是整体的租车系统

posted @ 2016-09-04 10:37  刘二雄  阅读(411)  评论(0编辑  收藏  举报