汽车租赁系统说明书.docx
《汽车租赁系统说明书.docx》由会员分享,可在线阅读,更多相关《汽车租赁系统说明书.docx(36页珍藏版)》请在冰点文库上搜索。
汽车租赁系统说明书
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2013年春季学期
工程综合开发训练课程设计
题目:
汽车租赁软件系统设计与开发
专业班级:
计算机科学与技术
(1)班
******
学号:
*****126
******
成绩:
摘要
在数据信息时代,这个社会的人必然会因为要记忆各类繁多的信息多少有些烦恼。
在这个问题的解决上,计算机上的管理系统占有很大的优势和可行性。
每一个正规机构,都有自己的信息管理系统,他们分别承担不同的任务。
汽车租赁系统主要管理汽车公司整个的租车业务。
其完整的开发包括后台数据库的开发和维护,以及前端基本应用程序的开发和编写。
我们着重完成后台程序的开发,我们团队选择了C++作为编辑语言,visualc++6.0为开发工具,数据库选择了SQLserver,在老师的指导下,基本完成了设计任务要求。
基本功能:
汽车类型管理、会员类型管理、保险类型管理、销售商管理、保险公司管理、客户信息管理、会员信息管理和汽车租赁、续租、归还管理。
关键词:
合作信息管理数据处理
需求分析
2.1系统目标
软件开发的意图为便于汽车租赁的管理,方便查看管理有关汽车及租赁的情况。
本系统需要实现的目标有以下几点:
(1)能对车辆信息进行添加,修改,删除;
(2)能对客户信息进行添加,修改,删除;
(3)能对租赁信息进行查询;
(4)能添加管理员;
(5)能对汽车销售上信息进行管理。
2.2用户需求
用户需求是指用户要求新系统应具有的全部功能和特性。
a使用范围:
按汽车租赁公司的相关业务完成汽车租赁系统管理。
b使用权限:
汽车租赁公司工作人员。
c需求内容:
(1)查询、修改、删除租赁信息;
(2)查询、修改、删除车辆信息;
(3)查询、修改、删除客户信息;
(4)实现用户登录和密码修改。
(5)添加管理员。
(6)使用图形用户界面,有菜单和工具栏等,符合编程规范。
(7)用数据库建立汽车租赁信息表。
(不限使用哪种数据库)
(8)能进行相关信息的统计分析,排序,打印等。
(9)实现帮助功能。
2.3性能需求
为了保证系统能够长期、安全、稳定、可靠、高效的运行,汽车租赁管理信息系统应该满足以下的性能需求:
(1)数据处理的及时性,准确性
系统处理的准确性和及时性是系统的必要性能。
本系统在设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足企业对信息处理的需求。
由于本系统的各种数据对于整个系统的功能和性能举足轻重,因此其准确性在很大程度上决定了系统功能和性能。
在系统开发过程中,必须采用一定的数据验证方法确保数据的准确性。
(2)数据安全性
系统数据的安全性在整个系统中占有十分重要的地位。
任何系统都应保证数据的安全性。
(3)系统的易用性
本系统是直接面向业务操作员的,而使用人员往往对计算机并不时非常熟悉。
这就要求系统能够提供易用的人机交互界面。
要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面,缩短用户对系统熟悉的过程。
2.4客户端功能
图1客户端功能图
2.5服务器端功能
财务管理
销售商管理
客户信息管理
工管理
保险公司信息管理
租赁信息管理
车辆管理
员工管理
服务器端
图2服务器功能图
概念结构设计
3.1汽车租赁系统总体的系统流程
图3汽车租赁系统总体的系统流程图
从此系统流程图可以知道汽车租赁系统的总体功能,包括:
客户登陆注册,业务员后台服务等。
涉及:
车辆查询,车辆,客户信息管理,租赁信息,员工信息,保险公司,财务管理信息等,体现的是汽车租赁系统的总体实现功能。
3.2租车业务流程
图4租车业务流程图
租车流程包括:
网上租车,到租车公司租车,电话租车。
网上租车时:
客户需先登录(注册)完成系统登录信息,选着自己中意的汽车,然后填写提交租赁订单。
到租赁公司租车时:
客户需先预知租赁公司的租赁手续,挑选中意的汽车,然后出示租车所需各种证件(身份证,户口本)以及交押金,填写相关汽车租赁表。
电话租车时:
在业务员提供的车型,颜色,价格中挑选自己中意的汽车,然后在指定的地点,时间去取车,完成租赁系统过程。
3.3还车业务流程
图5还车业务流程
客户还车流程功能,客户要还车可选这到租赁公司还车和异地还车。
到租赁公司还车时:
首先业务员检查车辆的状态,如果车辆正常,只需填写相关还车手续就可完成还车业务系统;如果车辆损坏,按租赁合同相关信息进行赔偿。
异地还车时:
首先要向租赁公司打电话预约时间,地点,经租赁公司同意后即可还车,当在异地还车时出示租赁公司的相关证件和完成相关手续,提交车辆完成还车业务系统。
逻辑结构设计
4.1客户—租赁公司ER图
图6客户—租赁公司ER图
此ER图是客户与租赁公司的总体关系图。
客户包括:
客户编号类型,性别,年龄,身份证,电话号码,家庭住址等。
租赁公司涉及到:
车辆:
包括汽车名称,汽车状况,车牌号,汽车颜色,购买日期;保险公司:
包括公司名称,公司地址,联系电话;销售商:
包括销售商名称编号,销售商地址,销售商电话号码等。
4.2数据库表的设计
数据库中共建了8张基本表,表与表之间的关系图如图7所示。
图7表关系图
4.3基本表结构
4.3.1车辆表
4.3.2客户表
4.3.3车辆维修记录表
4.3.4汽车租赁信息表
4.3.5保险公司表
4.3.6销售商表
4.3.7担保人信息表
4.3.8管理员信息表
系统实现
5.1基本信息管理(以车辆信息管理为例)
5.1.1数据插入的实现主要代码如下:
voidCDlgCarInfo:
:
OnCarAdd()
{
//车辆信息添加
//注:
1.注意核对数据库,变量定义m_,c_的顺序和类型,类型全为CString,
//2.修改SQLServer表列信息
//判断基础信息是否为空
if(!
InfoIsNull())
{
CStringc_car_no,c_car_name,c_car_color,c_car_series,c_car_engine_no,c_car_frame,c_car_retailer,c_car_push_time,c_safecomp_No,c_car_reatal,c_car_lim_miles,c_car_out_prince,c_car_in_prince,c_car_policy_outlag;
m_car_no.GetWindowText(c_car_no);
m_car_name.GetWindowText(c_car_name);
m_car_color.GetWindowText(c_car_color);
m_car_series.GetWindowText(c_car_series);
m_car_engine_no.GetWindowText(c_car_engine_no);
m_car_frame.GetWindowText(c_car_frame);
m_car_retailer.GetWindowText(c_car_retailer);
m_car_push_time.GetWindowText(c_car_push_time);
m_safecomp_No.GetWindowText(c_safecomp_No);
m_car_reatal.GetWindowText(c_car_reatal);
m_car_lim_miles.GetWindowText(c_car_lim_miles);
m_car_out_prince.GetWindowText(c_car_out_prince);
m_car_in_prince.GetWindowText(c_car_in_prince);
m_car_policy_outlag.GetWindowText(c_car_policy_outlag);
CStringsql;
sql.Format("insertintotb_carvalues('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",c_car_no,c_car_name,c_car_color,c_car_series,c_car_engine_no,c_car_frame,c_car_retailer,c_car_push_time,c_safecomp_No,c_car_reatal,c_car_lim_miles,c_car_out_prince,c_car_in_prince,c_car_policy_outlag);
if(m_pRs->State==adStateOpen)
m_pRs->raw_Close();
try
{
m_pRs->Open((_bstr_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
LoadCarInfo();
ClearInterface();
MessageBox("操作成功.","提示",MB_OK);
}
catch(_com_error*e)
{
MessageBox("操作失败.","提示",MB_OK|MB_ICONERROR);
}
}
else
MessageBox("车辆信息不能为空.","提示",MB_OK+MB_ICONINFORMATION);
}
5.1.2数据修改的实现主要代码如下:
voidCDlgCarInfo:
:
OnCarAlter()
{
//车辆信息修改
if(!
InfoIsNull())//判断车辆信息(文本框)是否完整
{
if(m_car_list.GetSelectionMark()!
=-1)//判断是否有焦点被选中
{
if(MessageBox("确实要修改数据吗?
","提示",MB_YESNO|MB_ICONINFORMATION)==IDYES)
{
CStringc_car_no,c_car_name,c_car_color,c_car_series,c_car_engine_no,c_car_frame,c_car_retailer,c_car_push_time,c_safecomp_No,c_car_reatal,c_car_lim_miles,c_car_out_prince,c_car_in_prince,c_car_policy_outlag;
m_car_no.GetWindowText(c_car_no);
m_car_name.GetWindowText(c_car_name);
m_car_color.GetWindowText(c_car_color);
m_car_series.GetWindowText(c_car_series);
m_car_engine_no.GetWindowText(c_car_engine_no);
m_car_frame.GetWindowText(c_car_frame);
m_car_retailer.GetWindowText(c_car_retailer);
m_car_push_time.GetWindowText(c_car_push_time);
m_safecomp_No.GetWindowText(c_safecomp_No);
m_car_reatal.GetWindowText(c_car_reatal);
m_car_lim_miles.GetWindowText(c_car_lim_miles);
m_car_out_prince.GetWindowText(c_car_out_prince);
m_car_in_prince.GetWindowText(c_car_in_prince);
m_car_policy_outlag.GetWindowText(c_car_policy_outlag);
inti=m_car_list.GetSelectionMark();//获得当前焦点所在的行
CStringstr=m_car_list.GetItemText(i,0);//获得焦点所在行的第0列的内容
CStringsql;
sql.Format("updatetb_carsetcar_name='%s',car_color='%s',car_series='%s',car_engine_no='%s',car_frame='%s',car_retailer='%s',car_push_time='%s',safecomp_No='%s',car_reatal='%s',car_lim_miles='%s',car_out_prince='%s',car_in_prince='%s',car_policy_outlag='%s'wherecar_no='%s'",c_car_name,c_car_color,c_car_series,c_car_engine_no,c_car_frame,c_car_retailer,c_car_push_time,c_safecomp_No,c_car_reatal,c_car_lim_miles,c_car_out_prince,c_car_in_prince,c_car_policy_outlag,str);
m_pRs->raw_Close();
try
{
m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
ClearInterface();//修改成功后清除文本框中的内容
LoadCarInfo();//重新加载(刷新)表格中的内容
MessageBox("操作成功.","提示",64);
}
catch(...)
{
MessageBox("操作失败.","提示",MB_OK|MB_ICONERROR);
}
}
}
else
MessageBox("请选择欲修改的信息.","提示",MB_OK|MB_ICONINFORMATION);
}
else
MessageBox("基础信息不完整.","提示",MB_OK|MB_ICONINFORMATION);
}
5.1.3数据删除的实现主要代码如下:
voidCDlgCarInfo:
:
OnCarDelete()
{
//车辆信息删除
if(m_car_list.GetSelectionMark()!
=-1)
{
if(MessageBox("确实要删除数据吗?
","提示",MB_YESNO|MB_ICONINFORMATION)==IDYES)
{
inti=m_car_list.GetSelectionMark();
CStringstr=m_car_list.GetItemText(i,0);
CStringsql;
sql.Format("deletetb_carwherecar_No='%s'",str);
m_pRs->raw_Close();
try
{
m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
ClearInterface();
LoadCarInfo();
MessageBox("操作成功.","提示",64);
}
catch(...)
{
MessageBox("操作失败.","提示",MB_OK|MB_ICONERROR);
}
}
}
else
MessageBox("请选择欲删除的信息.","提示",MB_OK|MB_ICONINFORMATION);
}
5.2租车、还车、续租
5.2.1租车主要实现代码如下:
voidCDlgRentCarInfo:
:
OnSava()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CStringc_contract_no,c_saleman,c_rent_time,c_rent_duration,c_rent_pattern,c_rent_type,c_discunt,c_rent_deposit,c_total_amount;
m_contract_no.GetWindowText(c_contract_no);
m_saleman.GetWindowText(c_saleman);
m_rent_time.GetWindowText(c_rent_time);
m_rent_duration.GetWindowText(c_rent_duration);
m_rent_pattern.GetWindowText(c_rent_pattern);
m_rent_type.GetWindowText(c_rent_type);
m_discunt.GetWindowText(c_discunt);
m_rent_deposit.GetWindowText(c_rent_deposit);
m_total_amount.GetWindowText(c_total_amount);
if(c_car_no.IsEmpty()||c_client_no.IsEmpty()||c_contract_no.IsEmpty()||c_saleman.IsEmpty()||c_rent_time.IsEmpty()||c_rent_duration.IsEmpty()||c_rent_pattern.IsEmpty()||c_rent_type.IsEmpty()||c_discunt.IsEmpty()||c_rent_deposit.IsEmpty()||c_total_amount.IsEmpty())
{
MessageBox("车辆信息和用户信息不能为空!
","提示",MB_OK);
return;
}
CStringsql;
sql.Format("insertintotb_rentinfovalues('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",c_contract_no,c_car_no,c_client_no,c_saleman,c_rent_time,c_rent_duration,c_rent_pattern,c_rent_type,c_discunt,c_rent_deposit,c_total_amount);
if(m_pRs->State==adStateOpen)
{
m_pRs->raw_Close();
}
try
{
m_pRs->Open((_bstr_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
LoadRentInfo();
MessageBox("租车成功.","提示",MB_OK);
}
catch(_com_error*e)
{
MessageBox("操作失败.","提示",MB_OK|MB_ICONERROR);
}
}
5.2.2还车主要实现代码如下:
voidCDlgReturnInfo:
:
OnReturn()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(c_contract_no.IsEmpty())
{
MessageBox("请选择要归还的订单!
","温馨提示",MB_OK);
return;
}
if(m_list.GetSelectionMark()!
=-1)
{
if(MessageBox("确实要归还车辆吗?
","提示",MB_YESNO|MB_ICONINFORMATION)==IDYES)
{
inti=m_list.GetSelectionMark();
CStringstr=m_list.GetItemText(i,0);//获取订单号
CStringsql;
sql.Format("deletetb_rentinfowherecontract_no='%s'",str);
m_pRs->raw_Close();
try
{
m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
MessageBox("还车成功.","提示",64);
}
catch(...)
{
MessageBox("操作失败.","提示",MB_OK|MB_ICONERROR);
}
}
}
}
5.2.3续租主要实现代码如下:
voidCDlgRerentCarInfo:
:
OnRerent()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(MessageBox("确实要进行续租吗?
","提示",MB_YESNO|MB_ICONINFORMATION)==IDYES)
{
CStringc_contract_no,c_rent_duration,c_rent_deposit;
m_contract_no.GetWindowText(c_contract_no);
m_rent_duration.GetWindowText(c