长沙学院课程设计说明书汽车租赁管理系统样本_第1页
长沙学院课程设计说明书汽车租赁管理系统样本_第2页
长沙学院课程设计说明书汽车租赁管理系统样本_第3页
长沙学院课程设计说明书汽车租赁管理系统样本_第4页
长沙学院课程设计说明书汽车租赁管理系统样本_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

长沙学院课程设计阐明书题目汽车租赁管理系统系(部)数学与计算机科学系专业(班级)姓名学号指引教师潘怡起止日期.6.15~.6.26

课程设计任务书课程名称:数据库系统原理课程设计设计题目:汽车租赁管理系统已知技术参数和设计规定:题目:汽车租赁管理系统某汽车租赁公司汽车租赁管理系统需要如下信息:工作人员信息涉及:工号、姓名、性别、联系电话等。客户信息涉及:身份证号、姓名、性别、所在单位、联系电话等。车辆信息涉及:车牌号、品牌、颜色、座位数、日租价格、日租超公里价格、月租价格、租赁状态、购入日期等。车辆类别信息涉及:分类号,库存数。其业务规则描述如下:一种工作人员可以对诸多辆车辆进行管理,一辆车也可以被各种工作人员管理;一辆车只能属于一种车辆类别,而一种车辆类别可以包括多辆车;一种客户可以租多辆不同车。2、系统功能基本规定:可以实现对车辆、租赁客户查询,可以查询汽车、客户租赁历史记录。可以按类别记录汽车租赁金额和剩余库存数,可以记录某一年龄客户群体对某类汽车租赁喜好,能模仿客户对汽车租借、归还业务。各阶段详细规定:1、需求分析阶段定义数据项含义和取值定义目的系统数据流2、概念构造设计阶段画出实体模型E-R图3、逻辑构造设计阶段将实体模型转化为关系模型给出每个关系主核心字和函数依赖集分析你所设计关系数据库模式与否属于3NF4、物理设计阶段拟定所有字段名称、类型、宽度、小数位数及完整性约束拟定数据库及表名称及其构成拟定索引文献和索引核心字5、数据库安全及维护设计阶段设计一种适合数据库安全方略(顾客身份认证、访问权限、视图)为了实现复杂数据完整性约束,设计恰当触发器设计一种适合数据库备份方略6、实行阶段规定所有操作必要在查询分析器中用SQL语句或系统存储过程完毕。对于学有余力同窗,可以使用嵌入式SQL语句结合高档语言开发完毕。设计工作量:(1)软件设计:完毕问题陈述中所提到所有需求功能。(2)论文:规定撰写不少于3000个文字文档,详细阐明各阶段详细规定。工作筹划:安排两周时间进行课程设计,软件开发环节如下,第一周完毕1~4,第二周完毕5~8,论文同步进行;1) 选定题目 2) 需求分析 3) 概念构造设计 4) 逻辑构造设计 5) 物理设计 6) 数据库安全及维护设计 7) 数据库上机实现 8) 答辩 筹划时间指引教师班级15~16周杨刚13软件1班15~16周潘怡13软件2班15~16周何可可13软件3班15~16周刘钢钦13软件4班注意事项提交文档长沙学院课程设计任务书 (每学生1份)长沙学院课程设计论文 (每学生1份)长沙学院课程设计鉴定表 (每学生1份)指引教师签名:日期:教研室主任签名:日期:系主任签名:日期:长沙学院课程设计鉴定表姓名学号专业班级设计题目汽车租赁管理系统指引教师潘怡指引教师意见:评估级别:教师签名:日期:答辩小组意见:评估级别:答辩小组长签名:日期:教研室意见:教研室主任签名:日期:系(部)意见:系主任签名:日期:阐明课程设计成绩分“先进”、“良好”、“及格”、“不及格”四类;目录一、引言 81.1编写目 81.2参照资料 8二、 需求规约 82.1业务描述 82.2需求分析 92.2.1用例规约 9三、 环境阐明 113.1数据库环境 113.2开发环境 11四、 数据库命名规则 124.1数据库对象命名规则 124.2数据项编码规则 12五、 逻辑设计 125.1实体与关系属性 125.2ER图 13六、 物理设计 136.1表汇总 136.2表Table_Worker 146.3表Table_Customer 146.4表Table_Car 156.5表Table_CarClass 166.6表Table_Record 166.7表Table_Car_Worker 176.8存储过程 176.8.1proc_insert_Worker 176.8.2proc_insert_Customer 186.8.3proc_insert_Car 196.8.4proc_insert_CarClass 206.8.5proc_insert_Record 216.8.6proc_find_AllCarClass 226.8.7proc_find_Cars 236.8.8proc_find_Car 236.8.9proc_find_Customer 246.8.10proc_find_CustomerRecord 246.8.11proc_find_CarRecord 256.8.12proc_find_CustomerFavorite 256.9函数 266.9.1func_CreateRecordNO 266.9.2func_IdToAge 266.10触发器 276.10.1Trigger_insertCar_addCarClassCnt 276.10.2Trigger_deleteCar_subtractCarClassCnt 276.10.3Trigger_updateCar 286.10.4Trigger_updateRecordReturnDate 28七、 运营成果 297.1租赁汽车 297.2资料查询 307.3订单查询 307.4查询一类汽车 317.5还车登记 317.6记录某一年龄最喜欢类型 32八、 总结 32九、 附录 339.1存储过程代码 339.1.1proc_insert_Car 339.1.2proc_insert_CarClass 336.1.3proc_insert_Customer 349.1.4proc_insert_Record 349.1.5proc_insert_Worker 349.1.6proc_find_AllCarClass 359.1.7proc_find_Car 359.1.8proc_find_Cars 359.1.9proc_find_CarRecord 369.1.10proc_find_Customer 369.1.11proc_find_CustomerFavorite 369.1.12proc_find_CustomerRecord 379.2管理系统代码 379.2.1menu.h 379.2.2usersql.h 389.2.3main.cpp 399.2.4menu.cpp 399.2.5usersql.cpp 48

一、引言1.1编写目本文是汽车租赁管理系统设计文档构成某些,编写设计文档目是:明确数据库表名、字段名,明确表之间关系,分析功能详细需求。本文档读者对象是需求人员、系统设计人员、开发人员和测试人员。1.2参照资料表1.1参照资料资料名称作者文献编号、版本《数据库系统概论》王珊、萨师煊5月第4版《C++GUIQt4编程》JasminBlanchetteMarksummerfield5月第1版《SQLServer编程入门典型》RobertVieria1月第1版需求规约2.1业务描述2.1.1创立背景系统名称:汽车租赁管理系统。系统开发者:xxx。系统顾客:租车客户以及租赁公司工作人员。2.1.2业务规则工作人员可以对诸多辆车辆进行管理,一辆车也可以被各种工作人员管理;一辆车只能属于一种车辆类别,而一种车辆类别可以包括多辆车;一种客户可以租多辆不同车。2.2需求分析2.2.1用例规约表2.1顾客登录用例名称:顾客登录摘要用例ID:T-LOGIN-1角色:客户或工作人员用例阐明:汽车租赁系统登录模块前置条件:客户或工作人员运营该系统基本领件流:1.客户或工作人员输入教务处帐号和密码2.点击登录其他事件流:顾客不存在帐号或密码错误后置条件:登录成功并跳转到有关页面表2.2车辆信息查询用例名称:查询车辆信息用例ID:T-FIND-1角色:客户或工作人员用例阐明:使用汽车租赁系统查询车辆信息前置条件:从功能菜单选取进入车辆查询信息页面基本领件流:输入要查询品牌其他事件流:输入品牌不存在后置条件:显示该品牌所有类别车辆供选取表2.3客户信息查询用例名称:查询客户信息用例ID:T-FIND-2角色:客户或工作人员用例阐明:使用汽车租赁系统查询客户信息前置条件:从功能菜单进入客户信息查询页面基本领件流:输入要查询客户身份证号其他事件流:如果角色为客户话,顾客只能查询自己信息后置条件:显示查询成果表2.4汽车历史租赁记录查询用例名称:查询汽车历史租赁记录用例ID:T-FIND-3角色:工作人员用例阐明:使用汽车租赁系统查询汽车历史租赁记录前置条件:从功能菜单进入汽车历史租赁记录查询页面基本领件流:输入要查询汽车车牌号其他事件流:输入车牌号不存在后置条件:显示查询成果表2.5客户历史租赁记录查询用例名称:查询客户历史租赁记录用例ID:T-FIND-4角色:客户或工作人员用例阐明:使用汽车租赁系统查询客户历史租赁记录前置条件:从功能菜单进入客户历史租赁记录查询页面基本领件流:输入要查询客户身份证号其他事件流:输入身份证号不存在角色是客户话只能查询其自身后置条件:显示查询成果表2.6某一年龄对汽车喜好用例名称:记录某一年龄对汽车喜好用例ID:T-COUNT-1角色:工作人员用例阐明:使用汽车租赁系统记录某一年龄对汽车喜好前置条件:从功能菜单进入喜好记录页面基本领件流:输入要查询年龄其他事件流:输入年龄非法后置条件:显示某一年龄最爱慕成果品牌表2.7汽车租赁用例名称:租赁汽车用例ID:T-OP-1角色:客户用例阐明:使用汽车租赁系统租赁汽车前置条件:从查询成果中进入汽车租赁页面基本领件流:选取要租赁车类别其他事件流:租赁失败后置条件:租赁成功并显示顾客成功租赁车信息表2.8汽车归还用例名称:归还汽车用例ID:T-OP-2角色:工作人员用例阐明:使用汽车租赁系统归还汽车前置条件:从功能菜单进入归还汽车页面基本领件流:输入汽车车牌号显示实际费用其他事件流:该车牌号汽车未被租赁后置条件:归还该汽车环境阐明3.1数据库环境表3.1数据库环境数据库实例数据库系统数据库布置环境数据库设计工具数据库存储位置阐明taxiSqlServerWindows7+localDiagramDesignerD:\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA3.2开发环境该汽车租赁管理系统在QtCreator3.3.0下使用Qt库5.4.0开发完毕。数据库命名规则4.1数据库对象命名规则表4.1数据库对象命名规则数据库对象命名规则备注表Table_功能描述字符串例如:Table_studen学生表视图View_功能描述字符串例如:View_student学生视图触发器Trigger_功能描述字符串例如:Trigger_update约束Constraint_功能描述字符串例如:Constraint_primarykey存储过程Proc_功能描述字符串例如:proc_insert4.2数据项编码规则表4.2数据项编码规则数据项命名规则数据类型长度范畴工号W+序号(0000-9999)定长字符串5位车牌号省份简称+都市序号+序号(00000-ZZZZZ)定长字符串10位分类号F+序号(000-999)定长字符串4位订单号D+年+月+日+序号(+)定长字符串18位逻辑设计5.1实体与关系属性表5.1实体与属性实体和关系名称别的属性工作人员工号,密码,姓名,性别,联系电话客户身份证号,密码,姓名,性别,单位,联系电话车辆车牌号,租赁状态,购入日期,颜色车辆类别分类号,品牌,座位数,库存数,日租价格,日租超公里价格,月租价格租赁订单号,车牌号,身份证号,租赁日期,还车日期,实际5.2ER图图5.1ER图物理设计6.1表汇总表6.1数据库表汇总表名功能阐明Table_Worker存储工作人员信息Table_Customer存储顾客信息Table_Car存储车辆信息Table_CarClass存储车辆分类信息Table_Record存储租赁记录,联系客户和车辆,是一张联系表6.2表Table_Worker表6.2Table_Woeker表名Table_Worker数据库顾客Sa主键WorkNo序号字段名称数据类型(精度范畴)容许为空Y/N唯一Y/N区别度默认值约束条件/阐明1WorkNochar(5)NY高无主键2WorkPasswordchar(20)NN低无密码3WorkNamechar(20)NN低无姓名4WorkSexchar(2)NN低无性别5WorkPhonechar(15)YY高无电话sql脚本createtableTable_Worker( WorkNochar(5)notnull, WorkPasswordchar(20)notnull, WorkNamechar(20)notnull, WorkSexchar(2)notnull, WorkPhonechar(26)unique, primarykey(WorkNo))6.3表Table_Customer表6.3Table_Customer表名Table_Customer数据库顾客sa主键CusNo序号字段名称数据类型(精度范畴)容许为空Y/N唯一Y/N区别度默认值约束条件/阐明1CusNochar(20)NY高无主键2CusPasswordchar(20)NN低无密码3CusNamechar(20)NN低无姓名4CusSexchar(2)NN低无性别5CusPhonechar(15)YY高无电话6CusCompanychar(40)YN低NULL单位sql脚本createtableTable_Customer( CusNochar(20)notnull, CusPasswordchar(20)notnull, CusNamechar(20)notnull, CusSexchar(2)notnull, CusPhonechar(15)unique, CusCompanychar(40), primarykey(CusNo))6.4表Table_Car表6.4Table_Car表名Table_Car数据库顾客sa主键CarNO序号字段名称数据类型(精度范畴)容许为空Y/N唯一Y/N区别度默认值约束条件/阐明1CarNochar(10)NY高无主键2CarClassNochar(4)NN高无外键3CarStabitNN低false租赁状态4CarDatedatetimeNN低1970-1-1购入日期5CarColorchar(15)NN低无颜色sql脚本createtableTable_Car( CarNochar(10)notnull, CarClassNOchar(4)notnull, CarStabitnotnull, CarDatedatetimenotnull, CarColorchar(15)notnull, primarykey(CarNo), foreignkey(CarClassNo)referencesTable_CarClass(CarClassNo))6.5表Table_CarClass表6.5Table_CarClass表名Table_CarClass数据库顾客sa主键CarClassNo序号字段名称数据类型(精度范畴)容许为空Y/N唯一Y/N区别度默认值约束条件/阐明1CarClassNochar(4)NY高无主键2CarClassBrandchar(10)NY低无品牌3CarClassSeatsmallintNN低无座位数4CarClassCntintNN低无库存5CarClassDayPrice1moneyNN低无日租价格6CarClassDayPrice2moneyNN低无日租超公里价格7CarClassMonthPricemoneyNN低无月租价格sql脚本createtableTable_CarClass( CarClassNochar(4)notnull, CarClassBrandchar(10)notnull, CarClassSeatsmallintnotnull, CarClassCntintnotnull, CarClassDayPrice1moneynotnull, CarClassDayPrice2moneynotnull, CarClassMonthPricemoneynotnull, primarykey(CarClassNO))6.6表Table_Record表6.6Table_Record表名Table_Record数据库顾客sa主键RecordNo序号字段名称数据类型(精度范畴)容许为空Y/N唯一Y/N区别度默认值约束条件/阐明1RecordNochar(18)NY高无主键2CarNochar(10)NY高无外键3CusNochar(20)NY高无外键4RecordRentDatedatetimeNN低无租赁时间5RecordReturnDatedatetimeNN低NULL还车时间6RecordCostmoneyYN低NULL实际耗费sql脚本createtableTable_Record( RecordNochar(18)notnull, CarNochar(10)notnull, CusNochar(20)notnull, RecordRentDatedatetimenotnull, RecordReturnDatedatetime, RecordCostmoney, primarykey(RecordNo), foreignkey(CarNo)referencesTable_Car(CarNo), foreignkey(CusNo)referencesTable_Customer(CusNo))6.7表Table_Car_Worker表6.7Table_Car_Worker表名Table_Car_Worker数据库顾客sa主键WorkNo,CarNo序号字段名称数据类型(精度范畴)容许为空Y/N唯一Y/N区别度默认值约束条件/阐明1WorkNochar(5)NN高无主键、外键2CarNochar(10)NN高无主键、外键sql脚本createtableTable_Record( RecordNochar(18)notnull, CarNochar(10)notnull, CusNochar(20)notnull, RecordRentDatedatetimenotnull, RecordReturnDatedatetime, RecordCostmoney, primarykey(RecordNo), foreignkey(CarNo)referencesTable_Car(CarNo), foreignkey(CusNo)referencesTable_Customer(CusNo))6.8存储过程6.8.1proc_insert_Worker参数:@WorkNochar(5),@WorkPasswordchar(20),@workNamechar(20),@workSexchar(2),@workPhonechar(15)功能:插入工作人员信息执行存储过程:declare@staintbegin exec@sta=proc_insert_Worker'W0002','123456','WangNiMa','男','' if(@sta=1) print'插入成功' else print'插入失败' select*fromTable_Workerendgo执行成果:图6.1proc_insert_Worker执行成果6.8.2proc_insert_Customer参数:@CusNochar(20),@CusPasswordchar(20),@CusNamechar(20),@CusSexchar(2),@CusPhonechar(15),@CusCompanychar(40)功能:插入客户信息执行存储过程:declare@staintbegin exec@sta=proc_insert_Customer'4303213','550993','MAMAMA','女','','腾讯' if(@sta=1) print'插入成功' else print'插入失败' select*fromTable_Customerendgo执行成果:图6.2proc_insert_Customer执行成果6.8.3proc_insert_Car参数:@CarNochar(10),@CarClassNochar(4),@CarStabit,@CarDatedatetime,@CarColorchar(15)功能:插入汽车信息执行存储过程:declare@staintbegin exec@sta=proc_insert_Car'湘A00021','F007',1,'-6-25','black' if(@sta=1) print'插入成功' else print'插入失败' select*fromTable_Carendgo执行成果:图6.3proc_insert_Car执行成果6.8.4proc_insert_CarClass参数:@CarClassNochar(4),@CarClassBrandchar(10),@CarClassSeatsmallint,@CarClassCntint,@CarClassDayPrice1money,@CarClassDayPrice2money,@CarClassMonthPricemoney功能:插入汽车分类信息执行存储过程:declare@staintbegin exec@sta=proc_insert_CarClass'F007','宝马i8',4,0,1000.00,1050.00,30000.00 if(@sta=1) print'插入成功' else print'插入失败' select*fromTable_CarClass endgo执行成果图6.4proc_insert_CarClass执行成果6.8.5proc_insert_Record参数:@RecordNochar(18),@CarNochar(10),@CusNochar(20),@RecordRentDatedatetime,@RecordReturnDatedatetime,@RecordCostmoney=NULL功能:插入租赁记录执行存储过程:declare@schar(18)begin execproc_insert_Record'湘A00003','4303212',@soutput print@s select*fromTable_Recordendgo执行成果:图6.5proc_insert_Record执行成果6.8.6proc_find_AllCarClass参数:无功能:查找所有分类信息执行存储过程:declare@staintbegin exec@sta=proc_find_AllCarClass if(@sta=0) print'没有记录' else print'查找成功'endgo执行成果:图6.6proc_find_AllCarClass执行成果6.8.7proc_find_Cars参数:@CarClassNochar(4)功能:查找分类号相似汽车执行存储过程:declare@staintbegin exec@sta=proc_find_Cars'F003' if(@sta=0) print'分类号不存在' else print'查找成功'endgo执行成果:图6.7proc_find_Cars执行成果6.8.8proc_find_Car参数:@CarNochar(10)功能:查找车牌号为@CarNo车执行存储过程:declare@staintbegin exec@sta=proc_find_Car'湘A00000' if(@sta=0) print'车牌号不存在' else print'查找成功'end执行成果:图6.8proc_find_Car执行成果6.8.9proc_find_Customer参数:@CusNochar(18)功能:查找身份证号码为@CusNo客户信息执行存储过程:declare@staintbegin exec@sta=proc_find_Customer'4303212' if(@sta=0) print'身份证号码不存在' else print'查找成功'endgo执行成果:图6.9proc_find_Customer执行成果6.8.10proc_find_CustomerRecord参数:@CusNochar(18)功能:查找身份证号码为@CusNo客户租赁记录执行存储过程:declare@staintbegin exec@sta=proc_find_CustomerRecord'4303212' if(@sta=0) print'记录不存在' else print'查找成功'endgo执行成果:图6.10proc_find_CustomerReocrd执行成果6.8.11proc_find_CarRecord参数:@CarNochar(10)功能:查找车牌号为@CarNo车辆租赁记录执行存储过程:declare@staintbegin exec@sta=proc_find_CarRecord'湘A00000' if(@sta=0) print'记录不存在' else print'查找成功'end执行成果:图6.11proc_find_CarRecord执行成果6.8.12proc_find_CustomerFavorite参数:@CusAgeint功能:查找年龄为@CusAge客户最喜欢型号执行存储过程:declare@staintbegin exec@sta=proc_find_CustomerFavorite21 if(@sta=0) print'记录不存在' else print'查找成功'end执行成果:图6.12proc_findCustomerFavorite6.9函数6.9.1func_CreateRecordNO参数:无返回值:char(18)功能:创立一种订单号代码:ALTERfunction[dbo].[func_CreateRecordNo]()returnschar(18)begin returnreplace('D' +str(year(getdate()),4)--年 +str(month(getdate()),2)--月 +str(day(getdate()),2)--日 +str((selectcount(*)fromTable_Record)+1,9)--流水号 ,'','0')end6.9.2func_IdToAge参数:@Idchar(18)返回值:int功能:依照身份证号码算出年龄代码:ALTERfunction[dbo].[func_IdToAge](@Idchar(18))returnsintasbegin returndatediff(year,substring('4303212',7,4)+'-'+substring('4303212',11,2)+'-'+substring('4303212',13,2),getdate())end6.10触发器6.10.1Trigger_insertCar_addCarClassCnt触发器类型:insert功能:在插入一辆新汽车时,相应类别库存增长一辆所属表:Table_Car代码:ALTERtrigger[dbo].[Trigger_insertCar_addCarClassCnt]on[dbo].[Table_Car]afterinsertasbegin updateTable_CarClass setCarClassCnt=CarClassCnt+1 whereCarClassNoin(selectCarClassNofrominserted)end6.10.2Trigger_deleteCar_subtractCarClassCnt触发器类型:delete功能:在删除一辆汽车时,相应类别库存减少一辆所属表:Table_Car代码:ALTERtrigger[dbo].[Trigger_deleteCar_subtractCarClassCnt]on[dbo].[Table_Car]afterdeleteasbegin updateTable_CarClass setCarClassCnt=CarClassCnt-1 whereCarClassNoin(selectCarClassNofromdeleted) end6.10.3Trigger_updateCar触发器类型:update功能:在修改汽车租赁状态时,相应类别库存相应加减一所属表:Table_Car代码:ALTERtrigger[dbo].[Trigger_updateCar]on[dbo].[Table_Car]afterupdateasif(UPDATE(CarSta))begin updateTable_CarClass setCarClassCnt=CarClassCnt-1 whereCarClassNoin(selectinserted.CarClassNofrominserted,deletedwhereinserted.CarNo=deleted.CarNoandinserted.CarSta=0anddeleted.CarSta=1) updateTable_CarClass setCarClassCnt=CarClassCnt+1 whereCarClassNoin(selectinserted.CarClassNofrominserted,deletedwhereinserted.CarNo=deleted.CarNoandinserted.CarSta=1anddeleted.CarSta=0) end6.10.4Trigger_updateRecordReturnDate触发器类型:update功能:在更新还车时间时,更新实际耗费所属表:Table_Record代码:ALTERtrigger[dbo].[Trigger_updateRecordReturnDate]on[dbo].[Table_Record]afterupdateasdeclare@pricemoneyif(UPDATE(RecordReturnDate))begin select@price=(selectCarClassDayPrice1fromTable_CarClasswhereCarClassNoin( selectCarClassNofromTable_CarwhereCarNoin( selectinserted.CarNofrominserted,deletedwhereinserted.RecordNo=deleted.RecordNoand(deleted.RecordReturnDateisnull)and(inserted.RecordReturnDateisnotnull) ) ) ) updateTable_Record setRecordCost=@price*(DATEDIFF(DAY,RecordRentDate,RecordReturnDate)+1) whereRecordNoin(selectinserted.RecordNofrominserted,deletedwhereinserted.RecordNo=deleted.RecordNoand(deleted.RecordReturnDateisnull)and(inserted.RecordReturnDateisnotnull))end运营成果7.1租赁汽车图7.1租赁汽车7.2资料查询图7.2资料查询7.3订单查询图7.3订单查询7.4查询一类汽车图7.4查询一类汽车7.5还车登记图7.5还车登记7.6记录某一年龄最喜欢类型图7.6记录某一年龄最喜欢类型总结通过这次实训熟悉了SqlServer使用,进一步理解了数据库设计,能更加纯熟使用SqlServer来完毕某些数据存储和查询。由于对触发器不怎么熟悉,在建立触发器时遇到了某些困难,通过查阅有关书籍学会了触发器语法,攻克了这个难题,对于SqlServer中触发器重要是要理解好inserted表和deleted表。由于有一种功能要依照年龄分类查询,而我存储信息中只有身份证号码,因此我需要一种函数直接依照身份证号码算出年龄,一开始觉得也许不好写,但是看了几种例子后发现函数和存储过程并没有什么不同,只是多了个返回值而已。实训过程中始终磕磕碰碰,由于想写界面,而我只会C和C++,因此用到了Qt库,但接触时间不长因此没能写出界面,是有点遗憾,于是在写了个控制台程序,也算模仿一下界面把。困难总是会遇到,但只要有决心,问题总会在某个时候迎刃而解。附录9.1存储过程代码9.1.1proc_insert_CarALTERproc[dbo].[proc_insert_Car]@CarNochar(10),@CarClassNochar(4),@CarStabit=1,@CarDatedatetime,@CarColorchar(15)asif(notexists(select*fromTable_CarwhereCarNo=@CarNo))begin insertintoTable_Car values(@CarNo,@CarClassNo,@CarSta,@CarDate,@CarColor) return1endelsereturn09.1.2proc_insert_CarClassALTERproc[dbo].[proc_insert_CarClass]@CarClassNochar(4),@CarClassBrandchar(10),@CarClassSeatsmallint,@CarClassCntint=0,@CarClassDayPrice1money,@CarClassDayPrice2money,@CarClassMonthPricemoneyasif(notexists(select*fromTable_CarClasswhereCarClassNo=@CarClassNo))begin insertintoTable_CarClass values(@CarClassNo,@CarClassBrand,@CarClassSeat,@CarClassCnt,@CarClassDayPrice1,@CarClassDayPrice2,@CarClassMonthPrice); return1endelsereturn0;6.1.3proc_insert_CustomerALTERproc[dbo].[proc_insert_Customer]@CusNochar(20),@CusPasswordchar(20),@CusNamechar(20),@CusSexchar(2),@CusPhonechar(15),@CusCompanychar(40)asif(notexists(select*fromTable_CustomerwhereCusNo=@CusNOorCusPhone=@CusPhone))begin insertintoTable_Customer values(@CusNo,@CusPassword,@CusName,@CusSex,@CusPhone,@CusCompany) return1endelsereturn09.1.4proc_insert_RecordALTERproc[dbo].[proc_insert_Customer]@CusNochar(20),@CusPasswordchar(20),@CusNamechar(20),@CusSexchar(2),@CusPhonechar(15),@CusCompanychar(40)asif(notexists(select*fromTable_CustomerwhereCusNo=@CusNOorCusPhone=@CusPhone))begin insertintoTable_Customer values(@CusNo,@CusPassword,@CusName,@CusSex,@CusPhone,@CusCompany) return1endelsereturn09.1.5proc_insert_WorkerALTERproc[dbo].[proc_insert_Worker]@WorkNochar(5),@WorkPasswordchar(20),@workNamechar(20),@workSexchar(2),@workPhonechar(15)asif(notexists(select*fromTable_WorkerwhereWorkNo=@WorkNO))begin insertintoTable_Worker values(@WorkNo,@WorkPassword,@workName,@workSex,@workPhone) return1endelsereturn09.1.6proc_find_AllCarClassALTERproc[dbo].[proc_find_AllCarClass]asbegin select*fromTable_CarClass return@@rowcountend9.1.7proc_find_CarALTERproc[dbo].[proc_find_Car]@CarNochar(10)asbegin select*fromTable_CarwhereCarNo=@CarNo return@@rowcountend9.1.8proc_find_CarsALTERproc[dbo].[proc_find_Cars]@CarClassNochar(4)asbegin select*fromTable_CarwhereCarClassNO=@CarClassNo return@@rowcountend9.1.9proc_find_CarRecordALTERproc[dbo].[proc_find_CarRecord]@CarNochar(10)asbegin select*fromTable_RecordwhereCarNo=@CarNo return@@rowcountend9.1.10proc_find_CustomerALTERproc[dbo].[proc_find_Customer]@CusNochar(18)asbegin select*fromTable_CustomerwhereCusNo=@CusNo return@@rowcountend9.1.11proc_find_CustomerFavoriteALTERproc[dbo].[proc_find_CustomerFavorite]@CusAgeintasbegin select* fromTable_CarClass whereCarClassNoin (selectCarClassNo fromTable_Record,Table_Car whereTable_Record.CarNo=Table_Car.CarNoanddbo.func_IdToAge(Table_Record.CusNo)=@CusAge groupbyCarClassNo havingcount(*)>=all (selectcount(CarClassNo) fromTable_Record,Table_Car whereTable_Record.CarNo=Table_Car.CarNoanddbo.func_IdToAge(Table_Record.CusNo)=@CusAge groupbyCarClassNO)) return@@rowcount end9.1.12proc_find_CustomerRecordALTERproc[dbo].[proc_find_CustomerRecord]@CusNochar(18)asbegin select*fromTable_RecordwhereCusNo=@CusNo return@@rowcountend9.2管理系统代码9.2.1menu.h#ifndefLOGIN#defineLOGINintmenu_main();intmenu_login();intmenu_regist();intmenu_Customer();intmenu_Worker();intmenu_findCar();intmenu_findUser();intmenu_findUserRecord();intmenu_findUserFavorite();intmenu_rentCar();intmenu_returnCar();#endif//LOGIN9.2.2usersql.h#include<string>#include<QStringList>usingstd::string;#ifndefUSESQL_H#defineUSESQL_HstructCustomer{QStringCusNo;QStringCusPassword;QStringCusName;QStringCusSex;QStringCusPhone;QStringCusCompany;};boolsql_connect();boolsql_find_Customer(stringid,stringpassword);boolsql_find_Worker(stringid,stringpassword);boolsql_insert_Customer(Customer&Cus);boolsql_display_allBrand();boolsql_display_Car(QStringCarClassNo);boolsql_display_CustomerFavorite(intCusAge);boolsql_display_Customer(QStringCusNo);boolsql_display_CustomerRecord(QStringCusNo);QStringsql_rent_Car(QStringCarClassNo);//租车成功返回订单号doublesql_return_Car(QStringCarNo);//还车返回实际耗费QStringsql_find_CarNo(QStringRecordNo);//依照订单号查找车牌号#endif//USESQL_H9.2.3main.cpp#include<QTextCodec>#include"menu.h"#include"usesql.h"#include<cstdlib>#include<iostream>#pragmaexecution_character_set("utf-8")usingnamespacestd;usingstd::wcin;usingstd::wcout;usingstd::cin;usingstd::cout;usingstd::string;usingstd::wstring;usingstd::endl;intmain(intargc,char*argv[]){//QTextCodec*codec=QTextCodec::codecForName("GBK");//QTextCodec::setCodecForLocale(codec);sql_connect();while(1){menu_main();}return0;}9.2.4menu.cpp#include<string>#include<iostream>#include<QDebug>#include<QTextCodec>#include<conio.h>#include"menu.h"#include"usesql.h"usingstd::cin;usingstd::string;usingstd::wcin;usingstd::wstring;QStringid;intmenu_main(){system("cls");qDebug("\t\t\t\n");qDebug("\t\t\t汽车租赁管理系统\n");qDebug("\t\t\t\n");qDebug("\t\t\t(1)登录");qDebug("\t\t\t(2)注册");switch(getch()){case'1':menu_login();break;case'2':menu_regist();break;default:break;}return0;}intmenu_login(){stringuserId,password;system("cls");qDebug("\t\t\t\n");qDebug("\t\t\t汽车租赁管理系统\n");qDebug("\t\t\t\n");qDebug("\n\n\n");qDebug("请输入帐号:");cin>>userId;qDebug("请输入密码:");cin>>password;if(userId.size()==5){if(sql_find_Worker(userId,password)){system("cls");qDebug("登录成功!");id=QString::fromStdString(userId);system("pause");menu_Worker();return0;}else{system("cls");qDebug("帐号不存在或密码错误!");system("pause");}}elseif(userId.size()==18){if(sql_find_Customer(userId,password)){system("cls");qDebug("登录成功!");id=QString::fromStdString(userId);system("pause");menu_Customer();return0;}else{system("cls");qDebug("帐号不存在或密码错误!");system("pause");}}else{system("cls");qDebug("帐号非法!");system("pause");}return0;}intmenu_regist(){system("cls");qDebug("\t\t\t\n");qDebug("\t\t\t汽车租赁管理系统\n");qDebug("\t\t\t\n");qDebug("\n\n\n");CustomerCus;strings;qDebug("请输入您18位身份证号(登录帐号):");cin>>s;Cus.CusNo=QString::fromStdString(s);//检查身份证号码与否合法qDebug("请输入您密码:");cin>>s;Cus.CusPassword=QString::fromStdString(s);qDebug("请输入您姓名:");cin>>s;Cus.CusName=QString::fromStdString(s);qDebug("请输入您性别:");cin>>s;Cus.CusSex=QString::fromStdString(s);qDebug("请输入您11位手机号:");cin>>s;Cus.CusPhone=QString::fromStdString(s);qDebug("请输入您单位名称(此项可不填,按回车结束输入):");getline(cin,s);getline(cin,s);Cus.CusCompany=QString::fromStdString(s);if(Cus.CusNo.size()!=18||Cus.CusPhone.size()!=11){system("cls");qDebug("您输入身份证号或手机号有误!");qDebug("请重新注册!");system("pause");return0;}if(sql_insert_Customer(Cus)){system("cls");qDebug("注册成功!");system("pause");}else{system("cls");qDebug("注册失败!");qDebug("该身份证号或手机号已存在!");system("pause");}return0;}intmenu_Customer(){while(1){system("cls");qDebug("\t\t\t\n");qDebug("\t\t\t汽车租赁管理系统\n");qDebug("\t\t\t\n");qDebug("\n\n\n");qDebug("\t\t\t(1)汽车查询");qDebug("\t\t\t(2)我资料");qDebug("\t\t\t(3)我租赁记录");qDebug("\t\t\t(0)退出");switch(getch()){case'1':menu_findCar();break;case'2':menu_findUser();break;case'3':menu_findUserRecord();break;case'0':system("cls");return0;}}return0;}intmenu_Worker(){while(1){system("cls");qDebug("\t\t\t\n");qDebug("\t\t\t汽车租赁管理系统\n");qDebug("\t\t\t\n");qDebug("\n\n\n");qDebug("\t\t\t(1)汽车查询");qDebug("\t\t\t(2)顾客资料查询");qDebug("\t\t\t(3)顾客租赁记录查询");qDebug("\t\t\t(4)还车登记");qDebug("\t\t\t(5)记录某一年龄最爱慕品牌");qDebug("\t\t\t(0)退出");switch(getch()){case'1':menu_findCar();break;case'2':menu_findUser();break;case'3':menu_findUserRecord();break;case'4':menu_returnCar();break;case'5':menu_findUserFavorite();break;case'0':system("cls");return0;}}return0;}intmenu_findCar(){system("cls");sql_display_allBrand();if(id.size()==18){//客户qDebug("您与否需要租车?(Y/N)");while(2){intop=getch();if(op=='y'||op=='Y'){menu_rentCar();break;}if(op=='n'||op=='N')break;}}else{//工作人员qDebug("请输入要查询类别分类号:");strings;cin>>s;QStringCarClassNo=QString::fromStdString(s);if(sql_display_Car(CarClassNo)){system("pause");}else{system("cls");qDebug("该分类号不存在!");system("pause");}}return0;}intmenu_findUser(){system("cls");if(id.size()==5){//工作人员strings;qDebug("请输入顾客身份证号码:");cin>>s;QStringCusNo=QString::fromStdString(s);if(sql_display_Customer(CusNo)){system("pause");}else{system("cls");qDebug("该身份证号码不存在");system("pause");}}else{//客户sql_display_Customer(id);system("pause");}return0;}intmenu_findUserRecord(){system("cls");if(id.size()==5){//工作人员strings;qDebug("请输入顾客身份证号码:");cin>>s;QStringCusNo=QString::fromStdString(s);if(sql_display_CustomerRecord(CusNo)){system("pause");}else{system("cls");qDebug("该身份证号码不存在!");system("pause");}}else{//客户sql_display_CustomerRecord(id);system("pause");}return0;}intmenu_findUserFavorite(){system("cls");qDebug("请输入要查询年龄:");intCusAge;cin>>CusAge;if(sql_display_CustomerFavorite(CusAge)){system("pause");}else{system("cls");qDebug("该年龄不存在消费记录,无法记录!");system("pause");}}intmenu_rentCar(){qDebug("请输入您要租赁类别分类号:");strings;cin>>s;QStringCarClassNo=QString::fromStdString(s);//sql_display_Car(ts);QStringRecordNo=sql_rent_Car(CarClassNo);QStringCarNo=sql_find_CarNo(RecordNo);qDebug()<<"您订单号为:"<<RecordNo.toStdString().c_str();qDebug()<<"您成功租到车牌号为:"<<CarNo.toStdString().c_str()<<"车辆!";system("pause");}intmenu_returnCar(){system("cls");strings;qDebug("请输入订单号:");cin>>s;QStringRecordNo=QString::fromStdString(s);doublepay=sql_return_Car(RecordNo);if(pay!=0.0){qDebug("还车成功!");qDebug()<<"您本次租车共耗费"<<pay<<"元!";qDebug("感谢您支持!");}else{qDebug("您输入订单号有误!");}system("pause");}9.2.5usersql.cpp#include<QSqlDatabase>#include<QStringList>#include<QDebug>#include<QtSql>#include<QSqlQuery>#include<QTextCodec>#include<iostream>#include<string>#include<windows.h>#include"usesql.h"usingstd::string;usingstd::cout;externQStringid;QSqlDatabasedb;QStringdsn;boolsql_connect(){db=QSqlDatabase::addDatabase("QODBC");dsn=QString::fromLocal8Bit("QTDSN");db.setHostName("127.0.0.1");db.setDatabaseName(dsn);db.setUserName("sa");db.setPassword("123456");if(!db.open()){//qDebug()<<db.lastError().text();returnfalse;}elseqDebug()<<"databaseopensuccess!";returntrue;}boolsql_find_Customer(stringid,stringpassword){QSqlQueryquery(db);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论