汽车租赁综合管理系统_第1页
汽车租赁综合管理系统_第2页
汽车租赁综合管理系统_第3页
汽车租赁综合管理系统_第4页
汽车租赁综合管理系统_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

长沙学院课程设计说明书题目汽车租赁管理系统学院计数院专业(班级)软件工程姓名学号指导老师杨刚、潘怡起止日期/5/29-/6/29

课程设计任务书课程名称:数据库系统原理课程设计设计题目:汽车租赁管理系统。已知技术参数和设计要求:题目:汽车租赁管理系统某汽车租赁企业汽车租赁管理系统需要以下信息:工作人员信息包含:工号、姓名、性别、联络电话等。用户信息包含:身份证号、姓名、性别、所在单位、联络电话等。车辆信息包含:车牌号、品牌、颜色、座位数、日租价格、日租超公里价格、月租价格、租赁状态、购入日期等。车辆类别信息包含:分类号,库存数。其业务规则描述以下:一个工作人员能够对很多辆车辆进行管理,一辆车也能够被多个工作人员管理;一辆车只能属于一个车辆类别,而一个车辆类别能够包含多辆车;一个用户能够租多辆不一样车。2、系统功效基础要求:能够实现对车辆、租赁用户查询,能够查询汽车、用户租赁历史统计。能够按类别统计汽车租赁金额和剩下库存数,能够统计某十二个月纪用户群体对某类汽车租赁喜好,能模拟用户对汽车租借、归还业务。各阶段具体要求:1、需求分析阶段定义数据项含义和取值定义目标系统数据流2、概念结构设计阶段画出实体模型E-R图3、逻辑结构设计阶段将实体模型转化为关系模型给出每个关系主关键字和函数依靠集分析你所设计关系数据库模式是否属于3NF4、物理设计阶段确定全部字段名称、类型、宽度、小数位数及完整性约束确定数据库及表名称及其组成确定索引文件和索引关键字5、数据库安全及维护设计阶段设计一个适合数据库安全策略(用户身份认证、访问权限、视图)为了实现复杂数据完整性约束,设计合适触发器设计一个适合数据库备份策略6、实施阶段要求全部操作必需在查询分析器中用SQL语句或系统存放过程完成。设计工作量:(1)软件设计:完成问题陈说中所提到全部需求功效。(2)论文:要求撰写不少于3000个文字电子文档,具体说明各阶段具体要求。工作计划:安排两周时间进行课程设计,软件开发步骤以下,第一周完成1~4,第二周完成5~8,论文同时进行;1) 选定题目 2) 需求分析 3) 概念结构设计 4) 逻辑结构设计 5) 物理设计 6) 数据库安全及维护设计 7) 数据库上机实现 8) 答辩 计划时间指导老师班级15~16周潘怡、杨刚15软件1班15~16周潘怡、杨刚15软件2班15~16周卓琳、田清龙15软件3班15~16周卓琳、田清龙15软件4班15~16周张肖霞、马丽15软件5班15~16周张肖霞、马丽15软件6班注意事项提交电子文档长沙学院课程设计任务书 (每学生1份)长沙学院课程设计论文 (每学生1份)长沙学院课程设计判定表 (每学生1份)指导老师署名:日期:教研室主任署名:日期:院长署名:日期: 长沙学院课程设计判定表姓名学号专业班级设计题目指导老师指导老师意见:评定等级:老师署名:日期:答辩小组意见:评定等级:答辩小组长署名:日期:教研室意见:教研室主任署名:日期:学院意见:院长署名:日期:说明课程设计成绩分“优异”、“良好”、“及格”、“不及格”四类;目录一、引言 71.1 编写目标 71.2 参考资料 7二、 需求规约 72.1业务描述 72.2需求分析 8三、 数据库环境说明 8四、 数据库命名规则 83.1数据库对象命名规则 83.2数据项编码规则 9五、逻辑设计 105.1创建和数据库相关那部分实体关系图(ERD)、表及关系图 105.2创建数据库系统关系模型 12六、 物理设计 126.1表汇总 126.2 存放过程 176.3触发器 21七、安全性设计 287.1预防用户直接操作数据库方法 287.2角色和权限 28八、数据库管理和维护说明 29九、附录:源代码 30一、引言编写目标本文档是汽车租赁系统设计文档组成部分,编写数据库设计文档目标是:明确数据库表名、字段名等数据信息,用来指导后期数据库脚本开发。本文档读者对象是需求人员、系统设计人员、开发人员、测试人员。参考资料资料名称作者文件编号、版本《数据库系统概论》王珊、萨师煊5月第4版需求规约2.1业务描述2.1.1数据库创建背景该数据库建立于sqlserverr2,环境为windows7

系统名称:汽车租赁管理系统。

系统开发者:小组组员

系统用户:租车用户和租赁企业工作人员。2.1.2数据库系统要完成业务步骤及工作内容首先完成需求分析,依据需求关系画出ER-图,并写出关系模式。依据ER图用SQLserver创建和数据库相关表,视图,存放过程和触发器。系统功效要求基础实现对车辆,租赁用户查询。能够查询用户租赁历史统计。能够查看汽车价格、库存,能够查看汽车租借、归还、和费用。2.1.3揭示该数据库资源需求和设计约束2.2需求分析2.2.1功效需求

车辆管理

关键是表示管理员能够对租赁企业现有汽车具体信息进行管理,修改汽车基础信息,包含车牌号、汽车颜色、购入日期、类别及租赁状态等,也能够添加新购进来汽车基础信息,方便愈加快投入租赁市场,方便用户了解最新车辆信息和做出愈加好租赁选择。(2)业务管理

关键提供对汽车日常业务进行管理,如查询指定汽车租赁状态,被租赁车车牌号,所生成订单号,所租车种类,租车时间、归还时间及租赁金额,查询租车用户基础信息,方便于管理员愈加好管理车辆系统,保障系统安全性。数据库环境说明数据库实例数据库系统数据库布署环境数据库设计工具数据库存放位置说明汽车租赁Sqlserverr2Windows7Sqlserverr2MicrosoftofficevisioE:\sql\SQL实例用途说明数据库命名规则3.1数据库对象命名规则:数据库对象命名规则备注表英文命名比如:car汽车表存放过程proc_功效描述字符串比如:proc_car汽车查询存放过程触发器功效命名比如:delete_car删除汽车视图View_功效描述字符串比如:view_rent查看租借信息表3.2数据项编码规则:数据项命名规则数据类型长度范围备注汽车编号所在地+字母号+数字Varchar类型10位租赁状态TrueorfalseBit类型订单号流水号Varchar类型10位用户号字母+数字编号Varchar类型10位工作人员编号数字Varchar类型10位汽车类型号字母Varchar类型10位逻辑设计5.1创建和数据库相关那部分实体关系图(ERD)、表及关系图表customersCusNoPYVarchar(10)NOTNullCusNameVarchar(10)NOTNullCusSexVarchar(2)NOTNullCusAgeVarchar(4) NOTNullCusPhoneVarchar(10) CusCompanyVarchar(10) NOTNullCusIdentityVarchar(10) NOTNull表rentRecordPYVerchar(10)NotnullRentDatedateNotnullReturnDatedateNotnullCusNoVerchar(10)NotnullCarNoVerchar(10)NotnullRecordcostVerchar(100NotNull表carCarNoPYVerchar(10)NotnullCarColorVerchar(10)NotnullCarDatedateNotnullCarClassNoFYVerchar(10)NotnullCarStatebitNotnull表carclassCarClassNoPYVerchar(10)NotnullCarClassCntVarchar(10)NotnullCarClassDayPriceVerchar(10)NotnullCarClassDayPriceExceedVerchar(100NotnullCarClassMonthPriceVerchar(10)NotnullCarClassSeatVerchar(10)Notnull表workerWorkNoPYVerchar(10)NotnullWorkPassWordVerchar(10)NotnullWorkNameVerchar(10)NotnullWorkSexVerchar(2)NotnullWorkPhoneVerchar(10)表manageWorkNoPYVerchar(10)NotnullCarNoPYVerchar(10)Notnull5.2创建数据库系统关系模型1.工作人员(工号、密码、姓名、性别、联络电话)2.用户信息(身份证号、密码、姓名、性别、所在单位、联络电话)、3.车辆信息(车牌号、品牌、座位数、颜色、租赁状态、购入日期、分类号)

4车辆类别(分类号、库存数、日租价格、日租超公里价格、月租价格、月租超公里价格、品牌)5.管理(工号、车牌号)备注:(工号和车牌号共同作为管理表主键,同时也是外键)

6.租赁(订单号、身份证号、车牌号、租赁日期、归还日期、租赁总金额)物理设计6.1表汇总表名功效说明car存放车辆信息carclass存放车辆类别信息rent存放租赁信息customers存放用户信息worker存放工作人员信息manage存放工作人员和车辆之间关系6.1.1表[car]:[车辆信息表]表名car数据库用户Car_rent主键CarNo索引字段CarClassNo序号字段名称数据类型许可为空Y/N唯一Y/N区分度默认值约束条件/说明1CarNovarchar(10)NY高无主键2CarClassNovarchar(10)NN高无外键3CarStatebit(2)NN低00租赁状态4CardatedateNN低无购入日期5CarColorvarchar(10)NN低无汽车颜色sql脚本DROPTABLEIFEXISTS`car`;CREATETABLE`car`(`CarNo`varchar(10)NOTNULL,`CarColor`varchar(10)NOTNULL,`CarDate`dateNOTNULL,`CarSta`bit(10)NOTNULL,`CarClassNo`varchar(10)NOTNULL,PRIMARYKEY(`CarNo`),KEY`CarClassNo`(`CarClassNo`),CONSTRAINT`CarClassNo`FOREIGNKEY(`CarClassNo`)REFERENCES`carclass`(`CarClassNo`))6.1.2表[carclass]:[车辆类别表]表名carclass数据库用户Car_rent主键CarClassNo序号字段名称数据类型许可为空Y/N唯一Y/N区分度默认值约束条件/说明1CarClassNovarchar(10)NY高无主键2CarClassCntvarchar(10)NN低无库存数3CarClassSeatbit(2)NN低无座位数4CarClassDayPrice2dateNN低无日租价格5CarClassDayPrice1varchar(10)NN低无日租超公里价格6CarClassMonthPricevarchar(10)NN低无月租价格7CarClassBrandvarchar(10)NN低无车辆品牌sql脚本DROPTABLEIFEXISTS`carclass`;CREATETABLE`carclass`(`CarClassNo`varchar(10)NOTNULL,`CarClassCnt`varchar(10)NOTNULL,`CarClassDayPrice1`varchar(10)NOTNULL,`CarClassDayPrice2`varchar(10)NOTNULL,`CarClassMonthPrice`varchar(10)NOTNULL,`CarClassBrand`varchar(10)NOTNULL,`CarClassseat`varchar(10)NOTNULL,PRIMARYKEY(`CarClassNo`))6.1.3表[customer]:[用户信息表]表名customer数据库用户Car_rent主键CusNo序号字段名称数据类型许可为空Y/N唯一Y/N区分度默认值约束条件/说明1CusNovarchar(10)NY高无主键2CusPasswordvarchar(10)NN高无登录密码3CusNamevarchar(10)NN低无用户姓名4CusSexvarchar(10)NN低无用户性别5CusAgevarchar(10)NN低无用户年纪6CusPhonevarchar(10)NN低无用户电话7CusCompanyvarchar(10)NN低无企业sql脚本DROPTABLEIFEXISTS`customer`;CREATETABLE`customer`(`CusNo`varchar(10)NOTNULL,`CusName`varchar(10)NOTNULL,`CusSex`varchar(2)NOTNULL,`CusAge`varchar(4)NOTNULL,`CusPhone`varchar(20)NOTNULL,`CusCompany`varchar(20)NOTNULL,`CusPassword`varchar(10)NOTNULL,PRIMARYKEY(`CusNo`))6.1.4表[worker]:[工作人员信息表]表名worker数据库用户Car_rent主键WorkNo序号字段名称数据类型许可为空Y/N唯一Y/N区分度默认值约束条件/说明1WorkNovarchar(10)NY高无主键2WorkPasswordvarchar(10)NN低无密码3WorkNamevarchar(10)NN低无姓名4WorkSexvarchar(10)NN低无性别5WorkPhonevarchar(10)NN低无电话sql脚本DROPTABLEIFEXISTS`worker1`;CREATETABLE`worker1`(`WorkNo`varchar(10)NOTNULLDEFAULT'',`WorkPassword`varchar(10)DEFAULTNULL,`WorkName`varchar(10)DEFAULTNULL,`WorkSex`varchar(10)DEFAULTNULL,`WorkPhone`varchar(10)DEFAULTNULL,PRIMARYKEY(`WorkNo`))6.1.5表[rent]:[租赁表]表名rent数据库用户Car_rent主键RecordNo索引CarNo、CusNo序号字段名称数据类型许可为空Y/N唯一Y/N区分度默认值约束条件/说明1RecordNovarchar(10)NY高无主键2CarNovarchar(10)NN高无外键3CusNovarchar(10)NN低无外键4RecordCostvarchar(10)NN低无总金额5RecordRentDatevarchar(10)NN低无租赁时间6RecordReturnDatevarchar(10)NN低无归还时间sql脚本DROPTABLEIFEXISTS`rent`;CREATETABLE`rent`(`RecordNo`varchar(10)NOTNULL,`RecordRentDate`datetimeNOTNULL,`RecordReturnDate`datetimeNOTNULL,`CusNo`varchar(10)NOTNULL,`CarNo`varchar(10)NOTNULL,`RecordCost`varchar(10)DEFAULTNULL,PRIMARYKEY(`RecordNo`),KEY`CusNo`(`CusNo`),KEY`CarNo`(`CarNo`),CONSTRAINT`CarNo`FOREIGNKEY(`CarNo`)REFERENCES`car`(`CarNo`),CONSTRAINT`CusNo`FOREIGNKEY(`CusNo`)REFERENCES`customer`(`CusNo`))6.1.6表[manage]:[管理表]表名Wmanage数据库用户Car_rent主键CarNo、WorkNo索引CarNo序号字段名称数据类型许可为空Y/N唯一Y/N区分度默认值约束条件/说明1WorkNovarchar(10)NY高无主键2CarNovarchar(10)NN高无主键sql脚本DROPTABLEIFEXISTS`manege`;CREATETABLE`manege`(`WorkNo`varchar(10)NOTNULLDEFAULT'',`CarNo`varchar(10)NOTNULLDEFAULT'',PRIMARYKEY(`WorkNo`,`CarNo`),KEY`CarNo`(`CarNo`),CONSTRAINT`manege_ibfk_1`FOREIGNKEY(`CarNo`)REFERENCES`car`(`CarNo`),CONSTRAINT`WorkNo`FOREIGNKEY(`WorkNo`)REFERENCES`worker1`(`WorkNo`))存放过程查询每辆车状态和库存数关键代码usecar_rentgoCREATEPROCEDUREproc_carasselectcar.CarNo,car.CarState,carclass.CarClassCntfromcar,carclasswherecar.CarClassNo=carclass.CarClassNo6.2.2查询所输入用户账号租赁历史统计关键代码usecar_rentgocreateprocedureproc_customers(@CusNovarchar(10))asselectrent.Record,rent.RentData,rent.RetunDate,rent.RecordCost,rent.CusNo,car.CarNo,carclass.CarClassBrandfromrent,car,carclasswhere@CusNo=CusNoandrent.CarNo=car.CarNoandcar.CarClassNo=carclass.CarClassNo;实施execproc_customers'A01'6.2.3查询输入用户账号租赁历史统计关键代码usecar_rentgocreateprocedureproc_car_rent(@CarNovarchar(10))asselectrent.Record,rent.RentData,rent.RetunDate,rent.CarNo,rent.CusNo,rent.RecordCostfromrentwhererent.CarNo=@CarNo;实施execproc_car_rent'湘A8888'6.2.4查询经过输入订单号查询订单信息关键代码usecar_rentgocreateprocedureproc_record(@Recordvarchar(10))asselectrent.Record,rent.RentData,rent.RetunDate,rent.CusNo,rent.RecordCostfromrentwhererent.Record=@Record;实施execproc_record'1'6.2.5经过输入类别统计汽车租赁金额和剩下库存数关键代码usecar_rentgocreateprocedureproc_carclassno(@carclassnovarchar(10))asselectcarclass.CarClassDayPrice1,carclass.CarClassCntfromcarclasswherecarclass.CarClassNo=@carclassno;实施execproc_carclassno'A'6.2.6删除一辆车关键代码usecar_rentgocreateprocedureproc_delete_car(@carnovarchar(10))asdeletefromcarwherecar.CarNo=@carno实施execproc_delete_car'湘B8888'6.2.7删除一条统计关键代码usecar_rentgocreateprocedureproc_delete_rent(@recordvarchar(10))asdeletefromrentwhererent.Record=@record实施execproc_delete_rent'2'6.2.8还车(修改还车日期,默认没还车前,还车日期等于借车日期,只有当没还过车时候才能修改还车日期)关键代码usecar_rentgocreateprocedureproc_return_car(@recordvarchar(10),@returndatedate)asupdaterentsetRetunDate=@returndatewhere@returndate>rent.RetunDateandDATEDIFF(DAY,rent.RentData,rent.RetunDate)=0实施execproc_return_car'1','-8-17'6.3触发器6.3.1输入新车牌号及信息,此车辆所对应车辆类别库存数自动增加关键代码usecar_rentgoCreateTriggeradd_newcarOncarafterinsertAsUPDATEcarclassSETCarClassCnt=CarClassCnt+1WHEREcarclass.CarClassNoIN(SELECTCarClassNofromINSERTEDi)GO

6.3.2删除车牌号及信息,此车辆所对应车辆类别库存数自动降低关键代码usecar_rentgoCreateTriggerdelete_carOncarafterdeleteAsUPDATEcarclassSETCarClassCnt=CarClassCnt-1WHEREcarclass.CarClassNoIN(SELECTCarClassNofromdeletedi)GO6.3.3:当产生一个新订单时,订单中所预订车辆所对应车辆类别库存数自动降低。(借车时)关键代码usecar_rentgoCreateTriggerrent_carOnrentafterinsertAsUPDATEcarclassSETCarClassCnt=CarClassCnt-1whereCarClassNoin(selectCarClassNofromcarwhereCarNoin(selectCarNofromrentwhereCarNoin(selectCarNofrominserted)))GO6.3.4修改订单还车日期时时,订单中所预订车辆所对应车辆类别库存数自动增加。(还车时)关键代码usecar_rentgoCreateTriggerreturn_carOnrentafterupdateAsUPDATEcarclassSETCarClassCnt=CarClassCnt+1whereCarClassNoin(selectCarClassNofromcarwhereCarNoin(selectCarNofromdeleted))Go6.3.5当产取消一个订单时,订单中所预订车辆所对应车辆类别库存数自动增加关键代码usecar_rentgoCreateTriggerdelete_rent_carOnrentafterdeleteAsUPDATEcarclassSETCarClassCnt=CarClassCnt+1whereCarClassNoin(selectCarClassNofromcarwhereCarNoin(selectCarNofromdeletedwherecar.CarState='false'))GO6.3.6当产生一个新订单时,订单中所预订车辆租赁状态由空闲状态(ture)变为预订状态(false)(借车时)关键代码usecar_rentgoCreateTriggerrent_state_carOnrentafterinsertAsupdatecarsetCarState='false'whereCarNoin(selectCarNofromrentwhereCarNoin(selectCarNofrominserted));GO6.3.7改订单还车日期时时,订单中所预订车辆租赁状态由预订状态(false)变为空闲状态(ture)。(还车时)关键代码usecar_rentgoCreateTriggerreturn_state_carOnrentafterupdateAsUPDATEcarsetCarState='true'whereCarClassNoin(selectCarClassNofromcarwhereCarNoin(selectCarNofromdeleted))Go6.3.8当取消一个新订单时,订单中所预订车辆租赁状态由空闲状态(false)变为预订状态(ture)关键代码usecar_rentgoCreateTriggerdelete_rent_state_carOnrentafterdeleteAsupdatecarsetCarState='true'whereCarNoin(selectCarNofromdeletedwherecar.CarState='false');GO6.3.9修改订单还车日期时时,更新实际花费。(还车时)关键代码usecar_rentgoCreateTriggerreturn_car_priceOnrentafterupdateAsdeclare@pricevarchar(10)select@price=(selectCarClassDayPrice1fromCarClasswhereCarClassNoin(selectCarClassNofromCarwhereCarNoin(selectinserted.CarNofrominserted,deletedwhereinserted.Record=deleted.Record)))UPDATErentSETRecordCost=@price*(DATEDIFF(DAY,rent.RentData,rent.RetunDate)+1)whereRecordin(selectinserted.Recordfrominserted,deletedwhereinserted.Record=deleted.Record)Go安全性设计7.1预防用户直接操作数据库方法关键代码execsp_addlogin'1','123456','car_rent'--worker管理员execsp_grantdbaccess'1','worker'execsp_addlogin'A01','123456','car_rent'--customers用户execsp_grantdbaccess'A01','customers'7.2角色和权限关键代码worker拥有全部权限grantalloncartoworkerwithgrantoptiongrantalloncarclasstoworkerwithgrantoptiongrantallonrenttoworkerwithgrantoptiongrantallonworkertoworkerwithgrantoptiongrantallonmanagetoworkerwithgrantoptiongrantalloncustomerstoworkerwithgrantoption用户拥有查看customer和car权限grantallonselect_customerstocustomersgrantallonselect_cartocustomers角色能够访问表和列操作权限Worker可访问全部表完全控制权限Customers查看用户表视图查看查看汽车表视图查看查看租赁表视图查看数据库管理和维护说明要确保数据库安全和可靠就需要对其日常管理进行全方面掌控和立即维护,以此取得愈加安全数据库环境。具体做法有以下几点:(1)定时对用户和密码进行维护前面提及管理安全性是十分关键,所以对数据库用户和密码应该进行定时维护和管理,借助动态化变更来取得安全性提升。为了确保系统安全性,系统管理人员应该根据系统运行实际情况,对系统进行强制性维护,实施一系列安全确保方法。其中定时修改用户密码就是一个较为有效方法,操作是经过调用系统过程中sp-password来完成。经过这个操作对原有老密码进行更换,并形成新密码供用户使用。在完成一个SQL

Server安装后,就会有一个对应管理员用户sa出现,其拥有是最高管理权限,通常为系统管理人员拥有,这个sa关键性前面已经提及,所以在管理中对sa等级密码也应该注意定时修改。(2)授权给信息表用户设置密码和用户验证手段是控制用户访问数据库正当性,而为每个数据库中信息表用户进行授权就是为了确保用户正当权利,即对不一样信息表用户划定某种访问特权。所以给信息表用户授权是一个实时化确定访问用户权限方法,是有效提升系统安全性关键手段。同时也是系统管理员需要进行一项日常管理工作。(3)对数据库数据资料维护数据库伴随计算机技术发展而变得越来越庞大,同时在和网络相结合实现了网络连接和访问功效,数据备份和恢复工作就成为了数据库数据资料管理关键内容。因为数据资料是数据库关键,对其保护和备份显然是数据库管理关键。1)数据库备份管理每个数据库全部应该在创建后就进行卸出,从而提供一个装入度基点。在以后就会根据一定时间点进程周期表卸出。除了根据计划卸出管理之外,还应该对每次运行没有日志操作后进行卸出数据库操作。这是确保数据库资料得到立即备份关键操作过程,也是对日常管理要求2)数据库事务日志备份在系统管理中,事务日志备份空间要远远小于备份数据库资源空间,所以在对其进行备份时候,操作频率要大于对数据库备份,即频繁操作是其突出特征,以此便于随时掌控访问统计,降低丢失数据可能性。通常全部是采取DUMP

TRAN命令来实施单独备份日志3)数据库系统恢复管理数据库在完成各项操作和功效时候,就会包含到数据库重装,然后在装入前完成卸出日志。对数据库备份和事务日志备份,就是为了预防出现意外时候,能够完整恢复数据库。当出现意外发生时,已经完成操作数据和日志全部能够被恢复,只有还没有被提交事务才会丢失。从而将数据库恢复到没有出现问题前状态,将数据丢失控制在最小范围内。这也是日常维护工作关键目标。(4)对系统情况监控1)控制用户1)利用系统过程:sp-who说明:此过程是显示目前系统中全部注册用户进程信息,且为实时化,显示为进程号、目前状态、注册用户、机主名称、占有资源、数据库名称、实施指令等。假如监控是发觉进程总数靠近系统最大许可数量,系统则会对部分无关进程进行关闭,确保系统正常。2)控制占用空间九、试验总结此次试验熟练掌握了对T-sql语言和数据库掌握,深入了解了存放过程、触发器、视图语法结构和表完整性约束,列完整性约束。十、附录:源代码9.1建库建表CREATEDATABASEcar_rentCREATEDATABASEcar_rentONPRIMARY(NAME=car_data,FILENAME='f:\sql\car_rent.mdf',SIZE=20MB,MAXSIZE=30MB,FILEGROWTH=1MB)LOGON(NAME=car_log,FILENAME='f:\sql\car_rent.ldf',SIZE=10MB,MAXSIZE=15MB,FILEGROWTH=1MB)createtableworkerusecar_rentcreatetableworker(WorkNovarchar(10)notnullCONSTRAINTWorkNOPRIMARYKEY,WorkPassWordvarchar(10)null,WorkNamevarchar(10)null,WorkSexvarchar(10)null,WorkPhonevarchar(10)null,)dataofworkerINSERTINTOworkervalues('1','123456','111','男','');INSERTINTOworkervalues('2','123456','222','女','');createtablemanageusecar_rentcreatetablemanage(WorkNovarchar(10)notnullCONSTRAINTWorkNo_FKFOREIGNKEYREFERENCESworker(WorkNo),CarNovarchar(10)notnullCONSTRAINTCarNo_FKFOREIGNKEYREFERENCEScar(CarNo),PRIMARYKEY(WorkNo,CarNo),)dataofmanagecreatetablecarusecar_rentcreatetablecar(CarNovarchar(10)notnullCONSTRAINTCarNoPRIMARYKEY,CarColorvarchar(10)null,CarDatedatenull,CarClassNovarchar(10)notnullCONSTRAINTCarClassNo_FKFOREIGNKEYREFERENCEScarclass(carclassno),CarStatebitnull,)dataofcarINSERTINTOcarvalues('湘A8888','黑色','-05-31','A','true');INSERTINTOcarvalues('湘A6666','白色','-06-01','A','true');INSERTINTOcarvalues('湘B8888','蓝色','-05-31','B','true');createtablecarclassusecar_rentcreatetablecarclass(CarClassNovarchar(10)notnullCONSTRAINTCarClassNOPRIMARYKEY,CarClassCntintNOTNULL,CarClassDayPrice1varchar(10)NOTNULL,CarClassDayPrice2varchar(10)NOTNULL,CarClassMonthPricevarchar(10)NOTNULL,CarClassBrandvarchar(10)NULL,CarClassseatvarchar(10)NULL,)dataofcarclassINSERTINTOcarclassvalues('A','0','200','20','1000','大众库','4');INSERTINTOcarclassvalues('B','0','300','20','','奥迪库','4');createtablerentusecar_rentcreatetablerent(Recordvarchar(10)notnullCONSTRAINTRecordPRIMARYKEY,RentDatadatenotnull,RetunDatedatenotnull,CusNovarchar(10)notnullCONSTRAINTCusNo_FKFOREIGNKEYREFERENCEScustomers(CusNo),CarNovarchar(10)notnullCONSTRAINTCarNo_rent_FKFOREIGNKEYREFERENCEScar(CarNo),RecordCostvarchar(10)notnull,)dataofrentusecar_rentINSERTINTOrentvalues('1','-06-17','-06-17','A01','湘A8888','0000')INSERTINTOrentvalues('2','-05-17','-05-17','A01','湘A6666','0000')INSERTINTOrentvalues('3','-07-18','-07-18','A02','湘A8888','0000')createtablecustomersusecar_rentcreatetablecustomers(CusNovarchar(10)notnullCONSTRAINTCusNOPRIMARYKEY,CusNamevarchar(10)notnull,CusSexvarchar(2)notnull,CusAgevarchar(4)notnull,CusPhonevarchar(20)notnull,CusCompanyvarchar(20)notnull,CusPasswordvarchar(10)notnull,)dataofcustomersusecar_rentINSERTINTOcustomersvalues('A01','马云','男','40','1888888','阿里巴巴','123456')INSERTINTOcustomersvalues('A02','小明','男','50','122222','汽修厂','222222')9.2存放过程--系统功效基础要求:--能够实现对车辆、租赁用户查询,--能够查询汽车、用户租赁历史统计。--能够按类别统计汽车租赁金额和剩下库存数,--模拟用户对汽车租借、归还业务存放过程Proc.1:查询每辆车状态和库存数usecar_rentgoCREATEPROCEDUREproc_carasselectcar.CarNo,car.CarState,carclass.CarClassCntfromcar,carclasswherecar.CarClassNo=carclass.CarClassNoexecproc_cardropprocedureproc_carProc.2:查询所输入用户账号租赁历史统计usecar_rentgocreateprocedureproc_customers(@CusNovarchar(10))asselectrent.Record,rent.RentData,rent.RetunDate,rent.RecordCost,rent.CusNo,car.CarNo,carclass.CarClassBrandfromrent,car,carclasswhere@CusNo=CusNoandrent.CarNo=car.CarNoandcar.CarClassNo=carclass.CarClassNo;execproc_customers'A01'dropprocedureproc_customersProc.3:查询所输入车牌号被租赁历史统计usecar_rentgocreateprocedureproc_car_rent(@CarNovarchar(10))asselectrent.Record,rent.RentData,rent.RetunDate,rent.CarNo,rent.CusNo,rent.RecordCostfromrentwhererent.CarNo=@CarNo;execproc_car_rent'湘A8888'dropprocedureproc_car_rentProc.4:经过输入订单号查询订单信息usecar_rentgocreateprocedureproc_record(@Recordvarchar(10))asselectrent.Record,rent.RentData,rent.RetunDate,rent.CusNo,rent.RecordCostfromrentwhererent.Record=@Record;execproc_record'1'dropprocedureproc_recordProc.5:经过输入类别统计汽车租赁金额和剩下库存数usecar_rentgocreateprocedureproc_carclassno(@carclassnovarchar(10))asselectcarclass.CarClassDayPrice1,carclass.CarClassCntfromcarclasswherecarclass.CarClassNo=@carclassno;execproc_carclassno'A'dropprocedureproc_carclassnoProc.6:报废一辆车usecar_rentgocreateprocedureproc_delete_car(@carnovarchar(10))asdeletefromcarwherecar.CarNo=@carnoexecproc_delete_car'湘B8888'Proc.7:撤销租赁统计usecar_rentgocreateprocedureproc_delete_rent(@recordvarchar(10))asdeletefromrentwhererent.Record=@recordexecproc_delete_rent'1'Proc.8:还车(修改还车日期,默认没还车前,还车日期等于借车日期,只有当没还过车时候才能修改还车日期)usecar_rentgocreateprocedureproc_return_car(@recordvarchar(10),@returndatedate)asupdaterentsetRetunDate=@returndatewhere@returndate>rent.RetunDateandDATEDIFF(DAY,rent.RentData,rent.RetunDate)=0execproc_return_car'1','-8-17'dropprocedureproc_return_car9.3触发器Trig.1:当租赁企业新购入一辆汽车时,输入新车牌号及信息,此车辆所对应车辆类别库存数自动增加,usecar_rentgoCreateTriggeradd_newcarOncarafterinsertAsUPDATEcarclassSETCarClassCnt=CarClassCnt+1WHEREcarclass.CarClassNoIN(SELECTCarClassNofromINSERTEDi)GO--Trig.2:当租赁企业报废一辆汽车时,删除车牌号及信息,此车辆所对应车辆类别库存数自动降低,usecar_rentgoCreateTriggerdelete_carOncarafterdeleteAsUPDATEcarclassSETCarClassCnt=CarClassCnt-1WHEREcarclass.CarClassNoIN(SELECTCarClassNofromdeletedi)GOTrig.3.1:当产生一个新订单时,订单中所预订车辆所对应车辆类别库存数自动降低。(借车时)usecar_rentgoCreateTriggerrent_carOnrentafterinsertAsUPDATEcarclassSETCarClassCnt=CarClassCnt-1whereCarClassNoin(selectCarClassNofromcarwhereCarNoin(selectCarNofromrentwhereCarNoin(selectCarNofrominserted)))GO--Trig.3.2:修改订单还车日期时时,订单中所预订车辆所对应车辆类别库存数自动降低。(还车时)usecar_rentgoCreateTriggerreturn_carOnrentafterupdateAsUPDATEcarclassSETCarClassCnt=CarClassCnt+1whereCarClassNoin(selectCarClassNofromcarwhereCarNoin(selectCarNofromdeleted))go--Trig.3.3:当产取消一个订单时,订单中所预订车辆所对应车辆类别库存数自动增加usecar_rentgoCreateTriggerdelete_rent_carOnrentafterdeleteAsUPDATEcarclassSETCarClassCnt=CarClassCnt+1whereCarClassNoin(sele

温馨提示

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

评论

0/150

提交评论