长沙学院课程设计说明书题目汽车租赁管理系统学院计数院专业(班级) 软件工程学号指导教师刚、怡起止日期2017/5/29-2017/6/29课程设计任务书课程名称:数据库系统原理课程设计设计题目:汽车租赁管理系统。
已知技术参数和设计要求:题目:汽车租赁管理系统1、某汽车租赁公司汽车租赁管理系统需要如下信息:工作人员信息包括:工号、、性别、联系等。
客户信息包括:号、、性别、所在单位、联系等。
车辆信息包括:车牌号、品牌、颜色、座位数、日租价格、日租超公里价格、月租价格、租赁状态、购入日期等。
车辆类别信息包括:分类号,库存数。
其业务规则描述如下:一个工作人员可以对很多辆车辆进行管理,一辆车也可以被多个工作人员管理;一辆车只能属于一种车辆类别,而一种车辆类别可以包含多辆车;一个客户可以租多辆不同的车。
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) 答辩注意事项⏹提交电子文档➢学院课程设计任务书(每学生1份)➢学院课程设计论文(每学生1份)➢学院课程设计鉴定表(每学生1份)指导教师签名:日期:教研室主任签名:日期:院长签名:日期:学院课程设计鉴定表目录一、引言 (7)1.1编写目的 (7)1.2参考资料 (7)二、需求规约 (8)2.1业务描述 (8)2.2需求分析 (8)三、数据库环境说明 (8)四、数据库的命名规则 (9)3.1数据库对象命名规则 (9)3.2数据项编码规则 (9)五、逻辑设计 (10)5.1创建与数据库相关的那部分实体关系图(ERD)、表及关系图 (10)5.2创建数据库系统的关系模型 (11)六、物理设计 (12)6.1表汇总 (12)6.2存储过程 (20)6.3触发器 (24)七、安全性设计 (30)7.1防止用户直接操作数据库的方法 (30)7.2角色与权限 (31)八、数据库管理与维护说明 (31)九、附录:源代码 (33)一、引言1.1编写目的本文档是汽车租赁系统设计文档的组成部分,编写数据库设计文档的目的是:明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发。
本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。
1.2参考资料二、需求规约2.1 业务描述2.1.1数据库创建背景该数据库建立于sq l server 2008 r2,环境为windows7系统名称:汽车租赁管理系统。
系统的开发者:小组成员系统的用户:租车客户以及租赁公司的工作人员。
2.1.2 数据库系统要完成的业务流程及工作容首先完成需求分析,根据需求关系画出ER-图,并写出关系模式。
根据ER图用SQL server创建与数据库相关的表,视图,存储过程以及触发器。
系统的功能要求基本实现对车辆,租赁客户的查询。
可以查询客户租赁的历史记录。
可以查看汽车价格、库存,可以查看汽车的租借、归还、以及费用。
2.1.3揭示该数据库的资源需求和设计约束2.2 需求分析2.2.1功能需求(1)车辆管理主要是表示管理员可以对租赁公司现有的汽车的具体信息进行管理,修改汽车基本信息,包括车牌号、汽车颜色、购入日期、类别及租赁状态等,也可以添加新购进来的汽车基本信息,以便更快的投入租赁市场,方便客户了解最新车辆信息以及做出更好的租赁选择。
(2)业务管理主要提供对汽车的日常业务进行管理,如查询指定汽车的租赁状态,被租赁的车的车牌号,所生成的订单号,所租车的种类,租车时间、归还时间及租赁金额,查询租车客户的基本信息,以便于管理员更好的管理车辆系统,保障系统安全性。
三、数据库环境说明四、数据库的命名规则3.1 数据库对象命名规则:3.2 数据项编码规则五、逻辑设计5.1创建与数据库相关的那部分实体关系图(ERD)、表及关系图5.2创建数据库系统的关系模型1.工作人员(工号、密码、、性别、联系)2.客户信息(号、密码、、性别、所在单位、联系)、3.车辆信息(车牌号、品牌、座位数、颜色、租赁状态、购入日期、分类号)4车辆类别(分类号、库存数、日租价格、日租超公里价格、月租价格、月租超公里价格、品牌)5.管理(工号、车牌号)备注:(工号和车牌号共同作为管理表的主键,同时也是外键)6.租赁(订单号、号、车牌号、租赁日期、归还日期、租赁总金额)六、物理设计6.1表汇总6.1.1表[car]:[车辆信息表]6.1.2表[carclass]:[车辆类别表]6.1.3表[customer]:[客户信息表]6.1.4表[worker]:[工作人员信息表]6.1.5表[rent]:[租赁表]6.1.6表[manage]:[管理表]sql脚本DROP TABLE IF EXISTS `manege`;CREATE TABLE `manege` (`WorkNo` varchar(10) NOT NULL DEFAULT '',`CarNo` varchar(10) NOT NULL DEFAULT '',PRIMARY KEY (`WorkNo`,`CarNo`),KEY `CarNo` (`CarNo`),CONSTRAINT `manege_ibfk_1` FOREIGN KEY (`CarNo`)REFERENCES `car` (`CarNo`),CONSTRAINT `WorkNo` FOREIGN KEY (`WorkNo`) REFERENCES`worker1` (`WorkNo`))6.2存储过程6.2.1查询每辆车的状态和库存数关键代码use car_rentgoCREATE PROCEDURE proc_carasselect car.CarNo,car.CarState,carclass.CarClassCntfrom car,carclasswhere car.CarClassNo=carclass.CarClassNo6.2.2查询所输入客户账号的租赁历史记录关键代码use car_rentgocreate procedure proc_customers(CusNo varchar(10))asselect rent.Record,rent.RentData,rent.RetunDate,rent.RecordCost,rent.CusNo,car.CarNo,carclass.CarClassBrandfrom rent,car,carclasswhere CusNo=CusNo and rent.CarNo=car.CarNo and car.CarClassNo=carclass.CarClassNo;执行exec proc_customers 'A01'6.2.3 查询输入客户账号的租赁历史记录关键代码use car_rentgocreate procedure proc_car_rent(CarNo varchar(10))asselect rent.Record,rent.RentData,rent.RetunDate,rent.CarNo,rent.CusNo,rent.RecordCost from rentwhere rent.CarNo=CarNo;执行exec proc_car_rent '湘A8888'6.2.4 查询通过输入订单号查询订单信息关键代码use car_rentgocreate procedure proc_record(Record varchar(10))asselect rent.Record,rent.RentData,rent.RetunDate,rent.CusNo,rent.RecordCost from rentwhere rent.Record=Record;执行exec proc_record '1'6.2.5通过输入类别统计汽车的租赁金额和剩余的库存数关键代码use car_rentgocreate procedure proc_carclassno(carclassno varchar(10))asselect carclass.CarClassDayPrice1,carclass.CarClassCntfrom carclasswhere carclass.CarClassNo=carclassno;执行exec proc_carclassno 'A'6.2.6 删除一辆车关键代码use car_rentgocreate procedure proc_delete_car(carno varchar(10))asdelete from carwhere car.CarNo=carno执行exec proc_delete_car '湘B8888'6.2.7 删除一条记录关键代码use car_rentgocreate procedure proc_delete_rent(record varchar(10))asdelete from rentwhere rent.Record=record执行exec proc_delete_rent '2'6.2.8还车(修改还车日期,默认没还车前,还车日期等于借车日期,只有当没还过车的时候才能修改还车日期)关键代码use car_rentgocreate procedure proc_return_car(record varchar(10), returndate date)asupdate rentset RetunDate=returndatewherereturndate>rent.RetunDateand DATEDIFF(DAY,rent.RentData,rent.RetunDate)=0执行exec proc_return_car '1','2016-8-17'6.3触发器6.3.1输入新的车牌号及信息,此车辆所对应车辆类别的库存数自动增加关键代码use car_rentgoCreate Trigger add_newcarOn carafter insertAsUPDATE carclassSET CarClassCnt=CarClassCnt+1WHERE carclass.CarClassNo IN (SELECT CarClassNo from INSERTED i)GO6.3.2删除车牌号及信息,此车辆所对应车辆类别的库存数自动减少关键代码use car_rentgoCreate Trigger delete_carOn carafter deleteAsUPDATE carclassSET CarClassCnt=CarClassCnt-1WHERE carclass.CarClassNo IN (SELECT CarClassNo from deleted i)GO6.3.3 :当产生一个新的订单时,订单中所预订车辆所对应车辆类别的库存数自动减少。