1、(完整word版)汽车租赁数据库设计学 号: 课 程 设 计题 目汽车租赁数据库设计学 院计算机专 业班 级姓 名指导教师 唐祖锴2011年1月10日课程设计任务书学生姓名: 赵中祥 专业班级: 指导教师: 工作单位: 计算机学院 题目:汽车租赁数据库设计初始条件:中兴公司是一家长途汽车出租公司,需要处理如下信息:l 租赁业务(发票号、日期、牌照号、地点、往返里程、行驶时间、客户号、司机号)l 汽车(注册号码、汽车型号、购入日期、价格、维修日期、运行功利、运行小时、租金率)l 司机(司机号、姓名、参加工作年月、基本工资)l 客户(客户号、客户姓名、客户单位、客户电话、客户地址、邮编)公司需要时
2、刻掌握汽车和司机的状态,尽量满足客户的租车需求。要求完成的主要任务:1. 根据上述的初始条件,进行调查分析。设计一个汽车租赁数据库,DBMS可选Ms SQL Server、Access、VFP等。2. 完成课程设计说明书,其格式遵守学校今年的新规定。主要内容包括:需求分析,概念设计,逻辑设计,物理实现等。3. 基于该数据库,最好实现一个或多个应用程序(自己确定功能),程序设计语言(工具)任选。这一项是选作,不作硬性要求。时间安排:本学期第18周:1. 消化资料、系统调查1天2. 系统分析1天3. 总体设计,实施计划2天4. 撰写报告1天指导教师签名:年月日系主任(或责任教师)签名:年月日 汽车
3、租赁数据库设计一 摘要 伴随着社会的发展,需要记录处理的事物也越来越多。这就使得数据库在各个领域都得到了极大地应用。同样,汽车租赁行业要想向现代化发展,必然需要采用一种现代化的管理方式。如此便可以扩大行业的服务对象范围及领域,建立与现代化汽车社会相适应的专业化、网络化汽车租赁特许经营服务体系,使汽车租凭在中国有序地发展起来。如何找到一种现代化的管理方式呢?我们可以建立一个系统,使得汽车租赁公司或企业可以在这个系统中管理整个公司不同店面的物流、资金流和人事流。汽车租赁数据库系统是一款专用于汽车租赁行业的信息化管理软件。该软件按照汽车租赁的实际业务流程,结合了租赁行业实际运营特点,能够很好的满足汽
4、车租赁行业的信息化需求。通过本系统租赁公司可以时刻掌握公司内部汽车和司机的状态,来尽量满足客户的租车需求。 二 需求分析 中兴公司是一家长途汽车出租公司,需要处理如下信息:l 租赁业务(发票号、日期、牌照号、地点、往返里程、行驶时间、客户号、司机号)l 汽车(注册号码、汽车型号、购入日期、价格、维修日期、运行功利、运行小时、租金率)l 司机(司机号、姓名、参加工作年月、基本工资)l 客户(客户号、客户姓名、客户单位、客户电话、客户地址、邮编)公司需要时刻掌握汽车和司机的状态,尽量满足客户的租车需求。1. 处理订单的流程图: 客户申请出租公司查看是否有空闲司机和空闲汽车如果有则为用 户安排汽车和
5、司机为客户服务以及生成发票结账处理更新数 据库结束。其具体流程图如下: 当客户发出租车需求后,公司便从数据库相应数据表项中读取汽车信息和司机信息进行客户需求处理,其中汽车信息包括:注册号码、汽车型号、购入日期、价格、维修日期、运行功利、运行小时、租金率;司机信息包括:司机号、姓名、参加工作年月、基本工资。如果有空闲汽车和司机,那么便给客户进行汽车和司机的分配工作。分配成功后便根据数据库相应数据表项中的汽车信息和租赁信息开出发票,其中租赁业务信息包括:发票号、日期、牌照号、地点、往返里程、行驶时间、客户号。最后的发票若经双方核对后确认无误的话,便进行结账处理。2.该系统应具有的功能(1) 查询功
6、能 为了刻掌握汽车和司机的状态,尽量满足客户的租车需求,该系统至少应该满足三个查询功能。 1)查询剩余空闲汽车 2)查询剩余空闲司机 3)查询正在执行任务的司机和汽车(2) 添加功能 在建立好该系统后,由于公司或企业不断变动,可能会增加部分新的汽车和司机。并且接受的任务数目也可能增加(涉及发票的增加)。所以需要有添加功能。(3) 删除功能 同理,公司或企业不断变动,可能会有部分汽车中途淘汰或者司机离职,某些订单也许会取消或者该订单已完成。此时就用到了删除功能。(4)保存功能 每次对数据库进行修改后需要进行保存。所以需要有保存功能。3.数据字典 经分析结合题目要求可知要用到四个表:租赁业务(发票
7、),汽车,司机,客户。数据结构的定义如下: 数据结构的定义数据结构名含义说明组成租赁业务定义了与租赁业务相关的信息发票号、日期、牌照号、地点、往返里程、行驶时间、客户号、司机号汽车定义了与汽车相关的信息注册号码、汽车型号、购入日期、价格、维修日期、运行功利、运行小时、租金率司机定义了与司机相关的信息司机号、姓名、参加工作年月、基本工资客户定义了与客户相关的信息客户号、客户姓名、客户单位、客户电话、客户地址、邮编三概念设计 根据业务流程及数据结构的定义设计E-R图如下: 1.局部E-R图 汽车E-R图 客户E-R图 司机E-R图 2.基本E-R图 注: 由于司机,客户,汽车的属性在部分E-R图中
8、已有,这里就不再表示了。租赁业务为一个关系。1) 一个租赁业务中一个司机可以对应多个汽车,一个汽车也可以对应多个司机,即司机和 汽车为多对多的关系。2) 一个租赁业务中一个客户可以对应多个汽车,一个汽车也可以对应多个客户,即客户和汽车为多对多的关系。3) 一个租赁业务中一个客户可以对应多个司机,一个司机也可以对应多个客户,即司机和客户为多对多的关系。四逻辑设计 1.E-R图向关系模型转换 将(三)中基本E-R图向转换成关系模型 (1)客户(客户号、客户姓名、客户单位、客户电话、客户地址、邮编)(2) 司机(司机号、姓名、参加工作年月、基本工资)(3) 汽车(注册号码、汽车型号、购入日期、价格、
9、维修日期、运行功利、运行小时、租金率)(4) 租赁业务(发票号、日期、牌照号、地点、往返里程、行驶时间、客户号、司机号)2.数据模型的优化将转化的关系模式进行优化,最终达到第三范式。为了提高数据库应用系统的性能,还应该根据应用需要适当的修改、调整关系模式,这就是数据模型的优化。规范化理论为数据库设计人员判断关系模式优劣提供了理论标准,可用来预测模式可能出现的问题,使数据库设计工作有了严格的理论基础。同时为了规范化,我们把表名及表项内容转化为易于理解的英语或英语缩写。经优化得:汽车Car(Reg_idchar(10),Car_modchar(10),Buy_datechar(20),Pricec
10、har(10),M_datechar(30),Run_utichar(20),Run_hourchar(10),R_ratechar(10)客户 Custom(C_idchar(10),C_namechar(10),C_unitchar(30),C_telechar(20),C_addrchar(30),Z_codechar(10).司机Driv(D_idchar(10),D_namechar(10),Job_datechar(30),B_wagechar(10)租赁业务 Inv(Invoice_idchar(20),inv_datechar(20),Lp_numchar(10),Adrrch
11、ar(30),Rt_meichar(10),Timechar(10),C_idchar(20),D_idchar(20)3.数据库的结构 根据各表功能及各字段存储信息形式确定各表结构:1) 汽车 字段名数据类型长度约束描述Reg_idchar10主键注册号码Car_modchar10null汽车类型Buy_datechar20null购入日期Pricechar10null价格M_datechar30null维修日期Run_utichar20null运行功利R_ratechar10null租金率Run_hourchar10null运行小时2) 客户字段号数据类型长度约束描述C_idchar10主
12、键客户号C_namechar10null客户姓名C_unitchar30null客户单位C_telechar20null客户电话C_addrchar30null客户地址Z_codechar10null邮政编码3)司机字段号数据类型长度约束描述D_idchar10主键司机号D_namechar10null司机姓名ob_datechar30null参加工作年月B_wagechar10null基本工资4) 租赁业务字段号数据类型长度约束描述Invoice_idchar20主键发票号inv_datechar20null日期Lp_numchar10外键牌照号Adrrchar30null地点Rt_meic
13、har10null往返里程Timechar10null行驶里程C_idchar20外键客户号D_idchar20外键司机号五.物理实现1.数据表框架1) 创建表. CREATE TABLE Cars( Reg_id char(10) primary key, Car_mod char(10), Buy_date char(20), Price char(10), M_date char(30), Run_uti char(20), Run_hour char(10),R_rate char(10),);.CREATE TABLE Custom( C_id char(10) primary ke
14、y,C_name char(10),C_unit char(30),C_tele char(20),C_addr char(30),Z_code char(10),).CREATE TABLE Driv( D_id char(10) primary key, D_name char(10), Job_date char(30), B_wage char(10),).CREATE TABLE Inv(Invoice_id char(20) primary key,inv_date char(20),Lp_num char(10) not null,Addr char(30),Rt_mei cha
15、r(10),Time char(10),C_id char(20) not null,D_id char(20) not null,) 2.向表中插入部分数据 有两种方法1) 用SQl语句 INSERT INTO 属性列1,属性列2,. VALUES (常量1,常量2,.)2) 直接在数据库的表中插入为了简洁操作采用第二种方法。.汽车.客户.司机.租赁业务3.用C#与数据库连接 本项目中使用SqlConnection对象与SQl Server进行连接,程序员需要制定一个连接字符串,其格式由一系列关键字和值组成,各关键字之间用分号隔开,关键自不区分大小写。在本次项目中系统自动生成了一个连接字符串
16、CarRentalConnectionString。对数据库数据的操作有两种方法。 在保持连接的情况下操作数据的一般步骤是:1) 创建SqlConnection连接2) 创建SqlCommand实例3) 打开连接4) 执行命令5) 关闭连接 在断开连接方式操作数据库的一般步骤是:1) 创建SqlConnection实例2)创建SqlDataAdapter的实例3)创建DataSet的实例4)使用Fill方法将数据库中的表填充到DataSet的表中5)利用DataGirdView或者其他控件编辑或显示数据6)根据需要使用Update方法更新数据库在本项目中采用的时断开连接的方式。 int ind
17、ex = listBox1.SelectedIndex; selectedTable = carRentalDataSet1.Tablesindex; string queryString = “SQL语句 ”+ selectedTable.TableName adapter=newSqlDataAdapter(queryString, Properties.settings.Defaut.CarRentalConnectionString); SqlCommandBuilder builder = new SqlCommandBuilder(adapter); adapter.InsertC
18、ommand = builder.GetInsertCommand(); adapter.DeleteCommand = builder.GetDeleteCommand(); adapter.UpdateCommand = builder.GetUpdateCommand(); adapter.Fill(selectedTable); adapter.Fill(selectedTable); bindingSource1.DataSource = selectedTable; dataGridView1.DataSource = bindingSource1;SqlDataAdapter对象
19、通过SelectedCommand,InsertCommand,UpdateCommand和DeleteCommand属性为后台数据库提供对应的操作命令,并传递需要的参数。一般情况下,只需要向SqlDataAdapter对象提供SELECT语句和连接字符串参数,然后利用SqlCommandBuilder对象让其自动生成InsertCommand,updateCommand和DeleteCommand。本系统的主界面如下:1) 添加点击添加即可在相应的表中添加数据,点保存即可保存。2) 删除选中数据行,点击删除,再点保存即可删除。3) 查看剩余空闲司机4) 查看剩余可用司机5)查看正在执行的任务
20、六 小结 1.特点 本系统能够使公司时刻掌握汽车和司机的情况。当有客户申请租赁业务时能够即时查看汽车和司机状况,实时为客户安排租赁业务。并且当汽车,司机,订单情况变化时,能够实时更改数据库的内容。 2.不足 本系统仅仅实现了基本的数据管理模块。1. 客户信息管理 2. 汽车信息管理 3. 租赁信息管理 4. 司机信息管理。没有注意租赁业务的过程中遇到的问题。比如当汽车租赁过程中汽车出现故障,没有为客户安排第二套方案,当出现交通事故时或超时的情况时,如何进行赔偿,如何查询历史记录等等一些问题。总之来说,此系统还有很多方面有待完善。 3.体会 通过将近一星期的训练,最终完成了此系统。借此训练使我进
21、一步实践了书上所学的数据库设计的一般步骤。 “纸上得来终觉浅,绝知此事要躬行”按照书上数据库设计的一般步骤:1.需求分析2.概念结构设计3.逻辑结构设计4.物理结构设计5.数据库的建立与测试6.数据库的运行与维护 完成了此系统 使我体会到了这种设计方法的科学性。它不仅能使我们在设计数据库的过程中比较严谨的实现所需要的功能,还进一步照顾到后续数据库的扩充与改进。同时这相对前面的实验来说,这次得到的训练更全面从需求分析到数据库实施都得到了训练。再者,在本次训练过程中,对Sql语句的理解和巩固有了一定的提高,这是对数据库知识学习的第一个较全面的训练。在这次训练中,不仅仅巩固了数据库知识,还进一步学习
22、了前面学过的C#语言的一些关于数据库方面的知识。前面学习了一些基本的C#知识。借此机会学习了数据库怎样与C#连接,以及怎样在应用程序中对数据库进行操作。感觉通过对这些的学习使自己受益匪浅。最后,尽管任务书中的功能基本实现了,但由于自己对数据库的学习不够深刻以及数据库与应用程序怎样连接也是刚刚学习的,所以导致一些方面做得不够完善。还有许多更深的理论,方法需要学习。我们要认清自己的不足,在不足的基础上做进一步的学习。 本科生课程设计成绩评定表序号评分项目满分实得分1学习态度认真、遵守纪律102设计分析合理性103设计方案正确性、可行性、创造性204设计结果正确性405设计报告的规范性106设计验收10总得分/等级评语:注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格指导教师签名:20 年月日
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100