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