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

下载本文档

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

文档简介

1、 . . . 1 / 57课程设计说明书题目汽车租赁管理系统系(部)数学与计算机科学系专业(班级)学号指导教师起止日期课程设计任务书课程名称:课程名称:数据库系统原理课程设计 . . . 2 / 57设计题目:设计题目:汽车租赁管理系统已知技术参数和设计要求:已知技术参数和设计要求:题目:汽车租赁管理系统1、某汽车租赁公司汽车租赁管理系统需要如下信息:工作人员信息包括:工号、 、性别、联系等。客户信息包括:号、 、性别、所在单位、联系等。车辆信息包括:车牌号、品牌、颜色、座位数、日租价格、日租超公里价格、月租价格、租赁状态、购入日期等。车辆类别信息包括:分类号,库存数。其业务规则描述如下:一个

2、工作人员可以对很多辆车辆进行管理,一辆车也可以被多个工作人员管理;一辆车只能属于一种车辆类别,而一种车辆类别可以包含多辆车;一个客户可以租多辆不同的车。2、系统功能的基本要求:可以实现对车辆、租赁客户的查询,可以查询汽车、客户租赁历史记录。可以按类别统计汽车的租赁金额和剩余的库存数,可以统计某一年龄客户群体对某类汽车的租赁喜好,能模拟客户对汽车的租借、归还业务。各阶段具体要求:各阶段具体要求:1、需求分析阶段定义数据项的含义和取值定义目标系统的数据流2、概念结构设计阶段画出实体模型 E-R 图3、逻辑结构设计阶段将实体模型转化为关系模型给出每个关系的主关键字和函数依赖集分析你所设计的关系数据库

3、模式是否属于 3NF4、物理设计阶段确定所有字段的名称、类型、宽度、小数位数与完整性约束确定数据库与表的名称与其组成确定索引文件和索引关键字5、数据库安全与维护设计阶段设计一个适合的数据库安全策略(用户身份认证、访问权限、视图)为了实现复杂的数据完整性约束,设计适当的触发器设计一个适合的数据库备份策略 . . . 3 / 576、实施阶段要求所有操作必须在查询分析器中用 SQL 语句或系统存储过程完成。对于学有余力的同学,可以使用嵌入式 SQL 语句结合高级语言开发完成。设计工作量:设计工作量:(1)软件设计:完成问题述中所提到的所有需求功能。(2)论文:要求撰写不少于 3000 个文字的文档

4、,详细说明各阶段具体要求。工作计划:工作计划:安排两周时间进行课程设计,软件开发步骤如下,第一周完成 14,第二周完成 58,论文同步进行;1) 选定题目2) 需求分析3) 概念结构设计4) 逻辑结构设计5) 物理设计6) 数据库安全与维护设计7) 数据库上机实现8) 答辩计划时间指导老师班级1516 周刚13 软件 1 班1516 周怡13 软件 2 班1516 周何可可13 软件 3 班1516 周钢钦13 软件 4 班注意事项注意事项提交文档提交文档学院课程设计任务书(每学生 1 份)学院课程设计论文(每学生 1 份)学院课程设计鉴定表(每学生 1 份)指导教师签名:日期:教研室主任签名

5、: 日期: . . . 4 / 57系主任签名: 日期:学院课程设计鉴定表学号专业班级 . . . 5 / 57设计题目汽车租赁管理系统指导教师怡指导教师意见:评定等级: 教师签名: 日期:答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期:系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀” 、 “良好” 、 “与格” 、 “不与格”四类;目 录一、引言一、引言 8 81.1 编写目的 8 . . . 6 / 571.2 参考资料 8二、需求规约二、需求规约 8 82.1 业务描述 82.2 需求分析 92.2.1 用例规约 9三、环境说明三、环境说明 1

6、1113.1 数据库环境 113.2 开发环境 11四、数据库的命名规则四、数据库的命名规则 12124.1 数据库对象命名规则 124.2 数据项编码规则 12五、逻辑设计五、逻辑设计 12125.1 实体与关系的属性 125.2 ER 图 13六、物理设计六、物理设计 13136.1 表汇总 136.2 表 TABLE_WORKER146.3 表 TABLE_CUSTOMER146.4 表 TABLE_CAR156.5 表 TABLE_CARCLASS166.6 表 TABLE_RECORD166.7 表 TABLE_CAR_WORKER176.8 存储过程 176.8.1 proc_in

7、sert_Worker176.8.2 proc_insert_Customer186.8.3 proc_insert_Car196.8.4 proc_insert_CarClass206.8.5 proc_insert_Record216.8.6 proc_find_AllCarClass226.8.7 proc_find_Cars236.8.8 proc_find_Car236.8.9 proc_find_Customer246.8.10 proc_find_CustomerRecord246.8.11 proc_find_CarRecord256.8.12 proc_find_Custom

8、erFavorite256.9 函数 266.9.1 func_CreateRecordNO266.9.2 func_IdToAge266.10 触发器 276.10.1 Trigger_insertCar_addCarClassCnt276.10.2 Trigger_deleteCar_subtractCarClassCnt27 . . . 7 / 576.10.3 Trigger_updateCar286.10.4 Trigger_updateRecordReturnDate28七、运行结果七、运行结果 29297.1 租赁汽车 297.2 资料查询 307.3 订单查询 307.4 查询

9、一类汽车 317.5 还车登记 317.6 统计某一年龄最喜欢的类型 32八、总结八、总结 3232九、附录九、附录 33339.1 存储过程代码 339.1.1 proc_insert_Car339.1.2 proc_insert_CarClass336.1.3 proc_insert_Customer349.1.4 proc_insert_Record349.1.5 proc_insert_Worker349.1.6 proc_find_AllCarClass359.1.7 proc_find_Car359.1.8 proc_find_Cars359.1.9 proc_find_CarRe

10、cord369.1.10 proc_find_Customer369.1.11 proc_find_CustomerFavorite369.1.12 proc_find_CustomerRecord379.2 管理系统代码 379.2.1 menu.h379.2.2 usersql.h389.2.3 main.cpp399.2.4 menu.cpp399.2.5 usersql.cpp48一、引言一、引言1.11.1 编写目的编写目的本文是汽车租赁管理系统设计文档的组成部分,编写设计文档的目的是:明确数据库的表名、字段名,明确表之间的关系,分析功能的详细需求。本文档的读者对象是需求人员、系统设

11、计人员、开 . . . 8 / 57发人员和测试人员。1.21.2 参考资料参考资料表 1.1 参考资料资料名称作者文件编号、版本数据库系统概论 王珊、萨师煊2006 年 5 月第 4 版C+ GUI Qt 4编程Jasmin BlanchetteMark summerfield2013 年 5 月第 1 版SQL Server 2008 编程入门经典Robert Vieria2010 年 1 月第 1 版二、二、需求规约需求规约2.12.1 业务描述业务描述.1 创建背景创建背景系统名称:汽车租赁管理系统。系统的开发者:xxx。系统的用户:租车客户以与租赁公司的工作人员。2.

12、 业务规则业务规则工作人员可以对很多辆车辆进行管理,一辆车也可以被多个工作人员管理;一辆车只能属于一种车辆类别,而一种车辆类别可以包含多辆车;一个客户可以租多辆不同的车。2.22.2 需求分析需求分析.1 用例规约用例规约 . . . 9 / 57表 2.1 用户登录用例名称:用户登录摘要用例 ID:T-LOGIN-1角色:客户或工作人员用例说明:汽车租赁系统的登录模块前置条件:客户或工作人员运行该系统基本事件流:1. 客户或工作人员输入教务处和密码2. 点击登录其它事件流:1.用户不存在2.或密码错误后置条件:登录成功并跳转到相关页面表 2.2 车辆信息查询用

13、例名称:查询车辆信息用例 ID:T-FIND-1角色:客户或工作人员用例说明:使用汽车租赁系统查询车辆信息前置条件:从功能菜单选择进入车辆查询信息页面基本事件流:输入要查询的品牌其它事件流:输入的品牌不存在后置条件:显示该品牌的所有类别的车辆供选择表 2.3 客户信息查询用例名称:查询客户信息用例 ID:T-FIND-2角色:客户或工作人员用例说明:使用汽车租赁系统查询客户信息前置条件:从功能菜单进入客户信息查询页面基本事件流:输入要查询客户的号其它事件流:如果角色为客户的话,用户只能查询自己的信息后置条件:显示查询结果表 2.4 汽车历史租赁记录查询用例名称:查询汽车的历史租赁记录用例 ID

14、:T-FIND-3角色:工作人员用例说明:使用汽车租赁系统查询汽车的历史租赁记录前置条件:从功能菜单进入汽车历史租赁记录查询页面基本事件流:输入要查询汽车的车牌号 . . . 10 / 57其它事件流:输入的车牌号不存在后置条件:显示查询结果表 2.5 客户历史租赁记录查询用例名称:查询客户的历史租赁记录用例 ID:T-FIND-4角色:客户或工作人员用例说明:使用汽车租赁系统查询客户的历史租赁记录前置条件:从功能菜单进入客户历史租赁记录查询页面基本事件流:输入要查询客户的号其它事件流:1. 输入的号不存在2. 角色是客户的话只能查询其本身后置条件:显示查询结果表 2.6 某一年龄对汽车的喜好

15、用例名称:统计某一年龄对汽车的喜好用例 ID:T-COUNT-1角色:工作人员用例说明:使用汽车租赁系统统计某一年龄对汽车的喜好前置条件:从功能菜单进入喜好统计页面基本事件流:输入要查询的年龄其它事件流:输入的年龄非法后置条件:显示某一年龄最喜爱结果品牌表 2.7 汽车租赁用例名称:租赁汽车用例 ID:T-OP-1角色:客户用例说明:使用汽车租赁系统租赁汽车前置条件:从查询结果中进入汽车租赁页面基本事件流:选择要租赁的车的类别 . . . 11 / 57其它事件流:租赁失败后置条件:租赁成功并显示用户成功租赁的车的信息表 2.8 汽车归还用例名称:归还汽车用例 ID:T-OP-2角色:工作人员

16、用例说明:使用汽车租赁系统归还汽车前置条件:从功能菜单进入归还汽车页面基本事件流:1. 输入汽车的车牌号2. 显示实际费用其它事件流:该车牌号的汽车未被租赁后置条件:归还该汽车三、三、环境说明环境说明3.13.1 数据库环境数据库环境表 3.1 数据库环境数据库实例数据库系统数据库部署环境数据库设计工具数据库存放位置说明taxiSql Server 2008Windows7+localDiagramDesignerD:ProgramFilesMicrosoftSQLServerMSSQL10_50.MSSQLSERVERMSSQLDATA3.23.2 开发环境开发环境该汽车租赁管理系统在 Qt

17、 Creator 3.3.0 下使用 Qt 库 5.4.0 开发完成。四、四、 数据库的命名规则数据库的命名规则4.14.1 数据库对象命名规则数据库对象命名规则表 4.1 数据库对象命名规则数据库对象命名规则备注 . . . 12 / 57表Table_功能描述字符串例如:Table_studen 学生表视图View_功能描述字符串例如:View_student 学生视图触发器Trigger_功能描述字符串例如:Trigger_update约束Constraint_功能描述字符串例如:Constraint_primarykey存储过程Proc_功能描述字符串例如:proc_insert4.2

18、4.2 数据项编码规则数据项编码规则表 4.2 数据项编码规则数据项命名规则数据类型长度围工号W+序号(0000-9999)定长字符串5 位车牌号省份简称+城市的序号+序号(00000-ZZZZZ)定长字符串10 位分类号F+序号(000-999)定长字符串4 位订单号D+年+月+日+序号(000000000+999999999) 定长字符串18 位五、五、 逻辑设计逻辑设计5.15.1 实体与关系的属性实体与关系的属性表 5.1 实体与属性实体和关系名称其余属性工作人员工号,密码, ,性别,联系客户号,密码, ,性别,单位,联系车辆车牌号,租赁状态,购入日期,颜色车辆类别分类号,品牌,座位数

19、,库存数,日租价格,日租超公里价格,月租价格租赁订单号,车牌号,号,租赁日期,还车日期,实际 . . . 13 / 575.25.2 ERER 图图图 5.1 ER 图六、六、 物理设计物理设计6.16.1 表汇总表汇总表 6.1 数据库表汇总表名功能说明Table_Worker存储工作人员的信息Table_Customer存储用户的信息Table_Car存储车辆的信息Table_CarClass存储车辆的分类信息Table_Record存储租赁记录,联系客户和车辆,是一联系表 . . . 14 / 576.26.2 表表 Table_WorkerTable_Worker表 6.2 Table

20、_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 脚本create table Table_Worker(WorkNo char(5) not null,WorkPassword char(20) not null,WorkName char(20) not nul

21、l,WorkSex char(2) not null,WorkPhone char(26) unique,primary key(WorkNo)6.36.3 表表 Table_CustomerTable_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(

22、15)YY高无6CusCompanychar(40)YN低NULL单位 . . . 15 / 57sql 脚本create table Table_Customer(CusNo char(20) not null,CusPassword char(20) not null,CusName char(20) not null,CusSex char(2) not null,CusPhone char(15) unique,CusCompany char(40),primary key(CusNo)6.46.4 表表 Table_CarTable_Car表 6.4Table_Car表名Table_

23、Car数据库用户sa主键CarNO序号字段名称数据类型(精度围)允许为空 Y/N唯一Y/N区别度默认值约束条件/说明1CarNochar(10)NY高无主键2CarClassNochar(4)NN高无外键3CarStabitNN低false租赁状态4CarDatedatetimeNN低1970-1-1购入日期5CarColorchar(15)NN低无颜色sql 脚本create table Table_Car(CarNo char(10) not null,CarClassNO char(4) not null,CarSta bit not null,CarDate datetime not

24、null,CarColor char(15) not null,primary key(CarNo),foreign key(CarClassNo) references Table_CarClass(CarClassNo) . . . 16 / 576.56.5 表表 Table_CarClassTable_CarClass表 6.5Table_CarClass表名Table_CarClass数据库用户sa主键CarClassNo序号字段名称数据类型(精度围)允许为空 Y/N唯一Y/N区别度默认值约束条件/说明1CarClassNochar(4)NY高无主键2CarClassBrandcha

25、r(10)NY低无品牌3CarClassSeatsmallintNN低无座位数4CarClassCntintNN低无库存5CarClassDayPrice1moneyNN低无日租价格6CarClassDayPrice2moneyNN低无日租超公里价格7CarClassMonthPricemoneyNN低无月租价格sql 脚本create table Table_CarClass(CarClassNo char(4) not null,CarClassBrand char(10) not null,CarClassSeat smallint not null,CarClassCnt int no

26、t null,CarClassDayPrice1 money not null,CarClassDayPrice2 money not null,CarClassMonthPrice money not null,primary key(CarClassNO)6.66.6 表表 Table_RecordTable_Record表 6.6 Table_Record表名Table_Record数据库用户sa主键RecordNo序号字段名称数据类型(精度围)允许为空 Y/N唯一Y/N区别度默认值约束条件/说明1RecordNochar(18)NY高无主键2CarNochar(10)NY高无外键3Cu

27、sNochar(20)NY高无外键 . . . 17 / 574RecordRentDatedatetimeNN低无租赁时间5RecordReturnDatedatetimeNN低NULL还车时间6RecordCostmoneyYN低NULL实际花费sql 脚本create table Table_Record(RecordNo char(18) not null,CarNo char(10) not null,CusNo char(20) not null,RecordRentDate datetime not null,RecordReturnDate datetime,RecordCos

28、t money,primary key(RecordNo),foreign key(CarNo) references Table_Car(CarNo),foreign key(CusNo) references Table_Customer(CusNo)6.76.7 表表 Table_Car_WorkerTable_Car_Worker表 6.7 Table_Car_Worker表名Table_Car_Worker数据库用户sa主键WorkNo,CarNo序号字段名称数据类型(精度围)允许为空 Y/N唯一Y/N区别度默认值约束条件/说明1WorkNochar(5)NN高无主键、外键2CarN

29、ochar(10)NN高无主键、外键sql 脚本create table Table_Record(RecordNo char(18) not null,CarNo char(10) not null,CusNo char(20) not null,RecordRentDate datetime not null,RecordReturnDate datetime,RecordCost money,primary key(RecordNo),foreign key(CarNo) references Table_Car(CarNo),foreign key(CusNo) references

30、Table_Customer(CusNo) . . . 18 / 576.86.8 存储过程存储过程.1 proc_insert_Workerproc_insert_Worker参数:WorkNo char(5),WorkPassword char(20),workName char(20),workSex char(2),workPhone char(15)功能:插入工作人员信息执行存储过程:declare sta intbeginexec sta = proc_insert_Worker W0002,123456,WangNiMa,男,if(sta = 1)print 插入

31、成功elseprint 插入失败select * from Table_Workerendgo执行结果:图 6.1 proc_insert_Worker 执行结果.2 proc_insert_Customerproc_insert_Customer参数:CusNo char(20),CusPassword char(20),CusName char(20),CusSex char(2),CusPhone char(15),CusCompany char(40)功能:插入客户信息 . . . 19 / 57执行存储过程:declare sta intbeginexec sta =

32、 proc_insert_Customer 3,550993,MAMAMA,女,腾讯if(sta = 1)print 插入成功elseprint 插入失败select * from Table_Customerendgo执行结果:图 6.2 proc_insert_Customer 执行结果.3 proc_insert_Carproc_insert_Car参数:CarNo char(10),CarClassNo char(4),CarSta bit,CarDate datetime,CarColor char(15)功能:插入汽车信息执行存储过程:declare sta int

33、beginexec sta = proc_insert_Car 湘 A00021,F007,1,2015-6-25,blackif(sta = 1)print 插入成功elseprint 插入失败 . . . 20 / 57select * from Table_Carendgo执行结果:图 6.3 proc_insert_Car 执行结果.4 proc_insert_CarClassproc_insert_CarClass参数:CarClassNo char(4),CarClassBrand char(10),CarClassSeat smallint,CarClassCnt

34、 int,CarClassDayPrice1 money,CarClassDayPrice2 money,CarClassMonthPrice money功能:插入汽车分类信息执行存储过程:declare sta intbeginexec sta = proc_insert_CarClass F007,宝马 i8,4,0,1000.00,1050.00,30000.00if(sta = 1)print 插入成功elseprint 插入失败select *from Table_CarClass . . . 21 / 57endgo执行结果图 6.4 proc_insert_CarClass 执行

35、结果.5 proc_insert_Recordproc_insert_Record参数:RecordNo char(18),CarNo char(10),CusNo char(20),RecordRentDate datetime,RecordReturnDate datetime,RecordCost money = NULL功能:插入租赁记录执行存储过程:declare s char(18)beginexec proc_insert_Record 湘 A00003,2,s outputprint sselect * from Table_Recordendgo执行结果: .

36、 . . 22 / 57图 6.5 proc_insert_Record 执行结果.6 proc_find_AllCarClassproc_find_AllCarClass参数: 无功能:查找所有的分类信息执行存储过程:declare sta intbeginexec sta = proc_find_AllCarClass if(sta = 0)print 没有记录elseprint 查找成功endgo执行结果:图 6.6 proc_find_AllCarClass 执行结果 . . . 23 / 5.7 proc_find_Carsproc_find_Car

37、s参数:CarClassNo char(4)功能:查找分类号一样的汽车执行存储过程:declare sta intbeginexec sta = proc_find_Cars F003if(sta = 0)print 分类号不存在elseprint 查找成功endgo执行结果:图 6.7 proc_find_Cars 执行结果.8 proc_find_Carproc_find_Car参数:CarNo char (10)功能:查找车牌号为 CarNo 的车执行存储过程:declare sta intbeginexec sta = proc_find_Car 湘A00000if(s

38、ta = 0)print 车牌号不存在elseprint 查找成功end执行结果:图 6.8 proc_find_Car 执行结果 . . . 24 / 5.9 proc_find_Customerproc_find_Customer参数:CusNo char(18)功能:查找为 CusNo 的客户的信息执行存储过程:declare sta intbeginexec sta = proc_find_Customer 2if(sta = 0)print 不存在elseprint 查找成功endgo执行结果:图6.9 proc_find_Customer 执行结果6.8.106.

39、8.10 proc_find_CustomerRecordproc_find_CustomerRecord参数:CusNo char(18)功能:查找为 CusNo 的客户的租赁记录执行存储过程:declare sta intbeginexec sta = proc_find_CustomerRecord 2if(sta = 0)print 记录不存在elseprint 查找成功endgo执行结果: . . . 25 / 57图 6.10 proc_find_CustomerReocrd 执行结果.11 proc_find_CarRecordproc_find_CarReco

40、rd参数:CarNo char(10)功能:查找车牌号为 CarNo 的车辆的租赁记录执行存储过程:declare sta intbeginexec sta = proc_find_CarRecord 湘 A00000if(sta = 0)print 记录不存在elseprint 查找成功end执行结果:图 6.11 proc_find_CarRecord 执行结果.12 proc_find_CustomerFavoriteproc_find_CustomerFavorite参数:CusAge int功能:查找年龄为 CusAge 的客户最喜欢的型号执行存储过程: . . .

41、 26 / 57declare sta intbeginexec sta = proc_find_CustomerFavorite 21if(sta = 0)print 记录不存在elseprint 查找成功end执行结果:图 6.12 proc_findCustomerFavorite6.96.9 函数函数.1 func_CreateRecordNOfunc_CreateRecordNO参数:无返回值:char(18)功能:创建一个订单号代码:ALTER function dbo.func_CreateRecordNo()returns char(18)beginreturn

42、 replace(D+str(year(getdate(),4)-年+str(month(getdate(),2)-月+str(day(getdate(),2)-日+str(select count(*) from Table_Record)+1,9)-流水号, ,0)end.2 func_IdToAgefunc_IdToAge参数:Id char(18)返回值: int功能:根据算出年龄代码:ALTER function dbo.func_IdToAge(Id char(18)returns int asbegin . . . 27 / 57return datediff(y

43、ear,substring(2,7,4)+-+substring(2,11,2)+-+substring(2,13,2),getdate()end6.106.10 触发器触发器6.10.1Trigger_insertCar_addCarClassCnt6.10.1Trigger_insertCar_addCarClassCnt触发器类型:insert功能:在插入一辆新的汽车时,对应类别的库存增加一辆所属表:Table_Car代码:ALTER trigger dbo.Trigger_insertCar_addCarClassCnton dbo.Table_Carafter insertasbeg

44、inupdate Table_CarClassset CarClassCnt = CarClassCnt + 1where CarClassNo in (select CarClassNo from inserted)end6.10.2Trigger_deleteCar_subtractCarClassCnt6.10.2Trigger_deleteCar_subtractCarClassCnt触发器类型:delete功能:在删除一辆汽车时,对应类别的库存减少一辆所属表:Table_Car代码:ALTER trigger dbo.Trigger_deleteCar_subtractCarClas

45、sCnton dbo.Table_Carafter deleteasbeginupdate Table_CarClassset CarClassCnt = CarClassCnt - 1where CarClassNo in (select CarClassNo from deleted)end . . . 28 / 576.10.3Trigger_updateCar6.10.3Trigger_updateCar触发器类型:update功能:在修改汽车租赁状态时,对应类别的库存相应的加减一所属表:Table_Car代码:ALTER trigger dbo.Trigger_updateCaron

46、 dbo.Table_Carafter updateasif(UPDATE(CarSta)beginupdate Table_CarClassset CarClassCnt = CarClassCnt - 1where CarClassNo in(select inserted.CarClassNo from inserted,deleted where inserted.CarNo = deleted.CarNo and inserted.CarSta = 0 and deleted.CarSta = 1)update Table_CarClassset CarClassCnt = CarC

47、lassCnt + 1where CarClassNo in(select inserted.CarClassNo from inserted,deleted where inserted.CarNo = deleted.CarNo and inserted.CarSta = 1and deleted.CarSta = 0)end6.10.4Trigger_updateRecordReturnDate6.10.4Trigger_updateRecordReturnDate触发器类型:update功能:在更新还车时间时,更新实际花费所属表:Table_Record代码:ALTER trigger

48、 dbo.Trigger_updateRecordReturnDateon dbo.Table_Recordafter updateasdeclare price moneyif(UPDATE(RecordReturnDate) . . . 29 / 57beginselect price = (select CarClassDayPrice1 from Table_CarClass where CarClassNo in (select CarClassNo from Table_Car where CarNo in (select inserted.CarNo from inserted,

49、deleted where inserted.RecordNo = deleted.RecordNo and (deleted.RecordReturnDate is null) and (inserted.RecordReturnDate is not null)update Table_Recordset RecordCost = price * (DATEDIFF(DAY,RecordRentDate,RecordReturnDate)+1)where RecordNo in (select inserted.RecordNo from inserted,deleted where in

50、serted.RecordNo = deleted.RecordNo and (deleted.RecordReturnDate is null) and (inserted.RecordReturnDate is not null)end七、七、 运行结果运行结果7.17.1 租赁汽车租赁汽车图 7.1 租赁汽车 . . . 30 / 577.27.2 资料查询资料查询图 7.2 资料查询7.37.3 订单查询订单查询图 7.3 订单查询 . . . 31 / 577.47.4 查询一类汽车查询一类汽车图 7.4 查询一类汽车7.57.5 还车登记还车登记图 7.5 还车登记 . . . 3

51、2 / 577.67.6 统计某一年龄最喜欢的类型统计某一年龄最喜欢的类型图 7.6 统计某一年龄最喜欢的类型八、八、 总结总结通过这次实训熟悉了 Sql Server 2008 的使用,进一步了解了数据库的设计,能更加熟练的使用Sql Server 来完成一些数据的存储和查询。因为对触发器不怎么熟悉,在建立触发器时遇到了一些困难,通过查阅相关书籍学会了触发器的语法,攻克了这个难题,对于 Sql Server 2008 中触发器主要是要理解好 inserted 表和 deleted 表。因为有一个功能要根据年龄分类查询,而我存储的信息中只有,所以我需要一个函数直接根据算出年龄,一开始觉得可能不

52、好写,不过看了几个例子后发现函数和存储过程并没有什么不同,只是多了个返回值而已。实训的过程中一直磕磕碰碰,因为想写界面,而我只会 C 和 C+,所以用到了 Qt 库,但接触时间不长所以没能写出界面,是有点遗憾,于是在写了个控制台程序,也算模拟一下界面把。困难总是会碰到的,但只要有决心,问题总会在某个时候迎刃而解。 . . . 33 / 57九、九、 附录附录9.19.1 存储过程代码存储过程代码.1 proc_insert_Carproc_insert_CarALTER proc c_insert_CarCarNo char(10),CarClassNo char

53、(4),CarSta bit = 1,CarDate datetime,CarColor char(15)asif(not exists (select * from Table_Car where CarNo = CarNo)begininsert into Table_Carvalues(CarNo,CarClassNo,CarSta,CarDate,CarColor)return 1endelse return 0.2 proc_insert_CarClassproc_insert_CarClassALTER proc c_insert_CarClassCa

54、rClassNo char(4),CarClassBrand char(10),CarClassSeat smallint,CarClassCnt int = 0,CarClassDayPrice1 money,CarClassDayPrice2 money,CarClassMonthPrice moneyasif(not exists (select *from Table_CarClass where CarClassNo = CarClassNo)begininsert into Table_CarClassvalues(CarClassNo,CarClassBrand,CarClass

55、Seat,CarClassCnt,CarClassDayPrice1,CarClassDayPrice2,CarClassMonthPrice);return 1endelse return 0; . . . 34 / 5.3 proc_insert_Customerproc_insert_CustomerALTER proc c_insert_CustomerCusNo char(20),CusPassword char(20),CusName char(20),CusSex char(2),CusPhone char(15),CusCompany char(

56、40)asif(not exists(select * from Table_Customer where CusNo = CusNO or CusPhone = CusPhone)begininsert into Table_Customervalues(CusNo,CusPassword,CusName,CusSex,CusPhone,CusCompany)return 1endelse return 0.4 proc_insert_Recordproc_insert_RecordALTER proc c_insert_CustomerCusNo char(2

57、0),CusPassword char(20),CusName char(20),CusSex char(2),CusPhone char(15),CusCompany char(40)asif(not exists(select * from Table_Customer where CusNo = CusNO or CusPhone = CusPhone)begininsert into Table_Customervalues(CusNo,CusPassword,CusName,CusSex,CusPhone,CusCompany)return 1endelse return 09.1.

58、59.1.5 proc_insert_Workerproc_insert_WorkerALTER proc c_insert_Worker . . . 35 / 57WorkNo char(5),WorkPassword char(20),workName char(20),workSex char(2),workPhone char(15)asif(not exists(select * from Table_Worker where WorkNo = WorkNO)begininsert into Table_Workervalues(WorkNo,WorkPassword,

59、workName,workSex,workPhone)return 1endelse return 0.6 proc_find_AllCarClassproc_find_AllCarClassALTER proc c_find_AllCarClassasbeginselect * from Table_CarClassreturn rowcountend.7 proc_find_Carproc_find_CarALTER proc c_find_CarCarNo char (10)asbeginselect * from Table_

60、Car where CarNo = CarNoreturn rowcountend.8 proc_find_Carsproc_find_CarsALTER proc c_find_CarsCarClassNo char(4)asbeginselect * from Table_Car where CarClassNO = CarClassNo . . . 36 / 57return rowcountend.9 proc_find_CarRecordproc_find_CarRecordALTER proc c_find_CarRecordCa

温馨提示

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

评论

0/150

提交评论