车辆管理系统数据库设计.docx
《车辆管理系统数据库设计.docx》由会员分享,可在线阅读,更多相关《车辆管理系统数据库设计.docx(19页珍藏版)》请在冰豆网上搜索。
车辆管理系统数据库设计
学年论文
(课程论文、课程设计)
题 目:
车辆管理系统
作 者:
所在学院:
信息科学与工程学院
专业年级:
信息安全09-1
指导教师:
职 称:
讲师
2012年5月25日
一、概述
随着经济的日益增长,信息化时代已经到来,生活中各种信息趋向数字化、清晰化。
车辆管理系统就是在这样的一个环境中诞生的,交通的日益发达,使得一个单位不再是简单的一辆商务车,而是有很多辆车组成,而且车型也不再单一,这使得单位车辆信息复杂化。
因此我们将发挥计算机的庞大的存储空间,高性能的处理能力,高度可靠的数据安全,清晰的可视化数据等这些优势来辅助单位对车辆进行管理,加强对本单位使用车辆的管理,实现了计算机资源的合理利用,真正实现了减少劳动力提高劳动质量的目的
车辆管理系统要求有如下管理功能:
(1)用车申请
(2)派车登记
(3)车辆支出的登记
(4)查看功能:
可随时查看车辆基本信息、驾驶员基本信息、车辆使用记录、违章记录、车辆费用管理、事故记录;
(5)根据车号查看当前车的使用情况
(6)统计功能:
统计各车辆的违章记录、事故记录等;在某一时间内各车辆的油料使用情况
本人在系统开发中承担用户登录,账户管理,登陆密码加密等相关功能
二、需求分析
1、数据流图:
图1第一层数据流图
图2第二层数据流图
图3第三层数据流图
2、数字字典:
1)数据项:
表1数据项
数据项名
类型
字节长度
取值范围
数据项含义说明
单位职工
字符型
20
任意
车辆申请人
部门
字符型
20
任意
车辆申请人所在部门
外出目的地
字符型
20
任意
申请人外出目的地
外出时间
字符型
20
任意
申请人外出时间
外出事由
字符型
20
任意
申请人外出原因
车牌号
字符型
20
任意
标识车辆车牌号
出车时间
整型
20
任意
车辆借出时间
返回时间
整型
20
任意
车辆返还时间
驾驶员驾照号
字符型
20
任意
司机的驾照编号
事故记录单
字符型
20
任意
车辆外出违章、事故的记录
车辆费用单
字符型
20
任意
车辆外出花费费用
事故记录
字符型
20
任意
车辆外出违章记录
编号
整型
20
任意
对单位员工的标识
汽车编号
整型
20
任意
单位车辆的编号
驾驶员编号
整型
20
任意
对单位驾驶员的标识
2)数据处理:
表2数据处理
处理过程名
说明
输入
输出
处理
添加
添加借出归/还信息
车辆信息表
车辆信息表
执行添加操作
查询
查询借出归/还信息
车辆信息表
车辆信息表
执行查询操作
修改
修改借出归/还信息
车辆信息表
车辆信息表
执行修改操作
删除
删除借出归/还信息
车辆信息表
车辆信息表
执行删除操作
统计
统计车辆借出归还信息
车辆信息表
车辆信息表
执行统计操作
3)数据流:
表3数据流
数据流名
说明
数据流来源
数据流去向
组成
用车申请
员工对借车原由的描述
员工
车辆管理系统
申请人、所在部门、外出目的地,外出时间、外出事由
派车登记表
对借出车辆的登记
内部车队
车辆管理系统
车牌号、车辆型号、燃油种类、司机信息
违归处罚
对违归使用的处罚明细
车辆管理系统
员工(司机)
违章记录、事故记录、过期
还车
还车信息登记
员工
车辆管理系统
车辆信息、司机信息
借车凭证
借车信息登记
车辆管理系统
员工
车辆信息、司机信息
提交记录
司机对外出使用车辆的记录信息
司机
车辆管理系统
事故、燃油、维修等状况的记录
检查异常(正常)
对归还车辆的检查看是否超期等(正常)
申请单据
车辆管理系统
检查归还汽车是否被损坏、超期等
结算
费用结算
车辆管理系统
员工(司机)
对违规、超期罚款结算
更新
对表数据的增删修改等
车辆管理系统
各个信息表格
对各个数据的变动统计
4)数据存储:
表4数据存储
数据存储名
说明
编号
输入数据流
输出数据流
组成
存取方式
频率
司机信息统计表
对司机的统计信息
01
司机信息
车辆管理系统
司机姓名、住址、所在部门、联系电话
随机
更新
借还统计表
车辆借出归还统计信息
02
借出/归还信息
车辆管理系统
车辆车牌号、车辆借出时间、车辆归还时间
随机
更新
车辆信息统计表
对车辆目前情况的统计
03
汽车的借还信息
车辆管理系统
车辆忙闲维修以及外出使用记录与统计
随机
更新
三、概要分析
1、分析
实体:
职工、车辆、驾驶员、出车、事故、维修、油耗、变动
实体属性:
职工:
编号、姓名、性别、籍贯、生日、政治面貌、住址、身份证号、电话、部门、工龄
车辆:
汽车编号、车牌号、车型、忙闲、车名、车龄、变动
驾驶员:
驾驶员编号、忙闲、驾照号
事故:
时间、地点、类型、费用
维修:
时间、地点、类型、费用
油耗:
时间、地点、燃油类型、费用
变动:
变动单号、汽车编号、变动时间、原因
出车:
时间
2、E—R图:
四、逻辑结构设计
1、关系模式:
R1、车辆(汽车编号,车名,车型,车牌号,忙/闲,车龄)
R2、职工(编号,姓名,性别,部门,籍贯,生日,政治面貌,住址,身份证号,工龄,电话,部门)
R3、申请(编号,汽车编号,地点,事由,时间)
R4、驾驶员(驾驶员编号,驾照号,忙闲)
R5、事故(汽车编号,时间,地点,费用,类型)
R6、维修(汽车编号,时间,地点,费用,类型)
R7、油耗(汽车编号,时间,地点,费用,燃油类型)
R8、变动(变动单号,汽车编号、变动时间、原因)
2、关系模式规范化:
R1、车辆(汽车编号,车名,车型,车牌号,忙/闲,车龄)
R2、职工(编号,姓名,性别,部门,籍贯,生日,政治面貌,住址,身份证号,工龄,电话,部门)
R3、申请(编号,汽车编号,地点,事由,时间)
编号,汽车编号为外码
R4、驾驶员(驾驶员编号,驾照号,忙闲)
R5、事故(汽车编号,时间,地点,费用,类型)
R6、维修(汽车编号,时间,地点,费用,类型)
R7、油耗(汽车编号,时间,地点,费用,燃油类型)
上述关系中的每个属性都是不可再分的,所以满足第一范式。
上述关系中的每个属性都完全依赖于关系主码,所以满足第二范式。
上述关系都不存在传递依赖关系,所以满足第三范式。
3、最后确定的关系定义:
1)职工信息表:
staffs
表5职工信息表
含义
属性名
数据类型
长度
完整性约束
备注
编号
staff_ID
Int
pk
员工统一号
姓名
staff_name
varchar
20
Notnull
性别
Sex
varchar
20
Notnull
籍贯
Nationality
varchar
20
Notnull
生日
birth
varchar
20
Notnull
政治面貌
Political_Party
varchar
20
Notnull
家庭住址
Family_Place
varchar
20
Notnull
身份证号
Id_Card
varchar
20
NotNull
证件号
BadgeID
varchar
20
Notnull
电话
Home_phone
varchar
20
Notnull
邮编
Postcode
varchar
20
Notnull
工龄
InDate
varchar
20
Notnull
2)维修信息表:
reparis
表6维修信息表
含义
属性名
数据类型
长度
完整性约束
备注
汽车编号
carId
Int
pk
执行单
exeID
int
时间
haptime
Varchar
20
地点
location
Varchar
20
费用
fee
Int
类型
haptype
Varchar
20
3)事故信息表:
accidents
表7事故信息表
含义
属性名
数据类型
长度
完整性约束
备注
汽车编号
carId
Int
Pk
执行单
exeID
int
时间
atime
Varchar
20
地点
location
Varchar
20
费用
fee
Int
类型
haptype
Varchar
20
4)油耗信息表:
fuels
表8油耗信息表
含义
属性名
数据类型
长度
完整性约束
备注
汽车编号
carId
Int
pk
执行单
exeID
int
时间
atime
Varchar
20
地点
location
Varchar
20
费用
fee
Int
燃油种类
haptype
Varchar
20
汽车燃油的类型
5)车辆信息表:
carinfo
表9车辆信息表
含义
属性名
数据类型
长度
完整性约束
备注
汽车编号
carId
Int
Pk
车名
carname
varchar
20
车型
ctype
varchar
20
车牌号
number
varchar
20
车龄
age
varchar
20
汽车使用的时长
忙/闲
bof
varchar
20
当前车辆状态
6)驾驶员信息表:
driverinfo
表10驾驶员信息表
含义
属性名
数据类型
长度
完整性约束
备注
驾驶员编号
driId
Int
pk
驾照号
licence
varchar
20
notnull
忙/闲
busy_free
varchar
20
notnull
当前驾驶员状态
7)申请信息表:
applicants
表11申请信息表
含义
属性名
数据类型
长度
完整性约束
备注
编号
staff_ID
Int
pk
员工编号号
汽车编号
carId
Int
notnull
地点
location
Varchar
20
notnull
事由
aplwhy
varchar
20
notnull
申请汽车的原因及用途
时间
apltime
Int
notnull
申请时间及时长
五、物理设计
索引说明
用主键索引,即利用数据库默认索引。
六、系统实现
采用的工具有:
visualbasic6.0
SQLServer2005
完成的功能:
用户登录账户管理等相关方面的功能
部分功能代码如下:
1、用户登录功能代码如下:
1.1数据有效性检查
IftxtUser=""Then
MsgBox"请输入用户名"
txtUser.SetFocus
ExitSub
EndIf
IftxtPwd=""Then
MsgBox"请输入密码"
txtPwd.SetFocus
ExitSub
EndIf
1.2将用户输入赋值到变量中
NameKey=MakeStr(txtUser)
PasswordKey=MakeStr(txtPwd)
1.3判断用户是否存在
IfMyUser.In_DB(NameKey)=FalseThen
MsgBox"用户名不存在"
Try_times=Try_times+1
IfTry_times>=3Then
MsgBox"您已经三次尝试进入本系统,均不成功,系统将关闭"
DBapi_Disconnect
End
Else
ExitSub
EndIf
EndIf
1.4判断密码是否正确
MyUser.GetInfo(NameKey)
IfMyUser.Pwd<>PasswordKeyThen
MsgBox"密码错误"
Try_times=Try_times+1
IfTry_times>=3Then
MsgBox"您已经三次尝试进入本系统,均不成功,系统将关闭"
DBapi_Disconnect
End
Else
ExitSub
EndIf
EndIf
2、账户管理功能代码如下
2.1'启动窗体FrmUserEdit
.Show1
EndWith
2.2'刷新用户名列表框
AdoUserList.Refresh
DataList1_Click
EndSub
2.3'读取当前用户数据
MyUser.GetInfo(DataList1.Text)
2.4'设置用户名
lblUserName=MyUser.username
2.5'设置用户类型
IfFormat(MyUser.username,"<")="admin"Then
lblUserType="系统管理员"
2.6'确认删除
IfMsgBox("是否删除当前用户",vbYesNo,"请确认")=vbYesThen
'删除当前用户
MyUser.Delete(DataList1.Text)
'刷新用户名列表框内容
AdoUserList.Refresh
DataList1_Click
EndIf
EndSub
2.7把当前用户的数据赋值到FrmUserEdit窗体的相关位置
WithFrmUserEdit
.OriUser=MyUser.username
.txtUserName=MyUser.username
.txtPass=MyUser.Pwd
.txtPass2=MyUser.Pwd
.modify=True
'如果当前用户为Admin,则不能修改用户名
IfFormat(MyUser.username,"<")="admin"Then
.txtUserName.Enabled=False
EndIf
'将变量Modify设置为True,表示当前状态为修改已有数据
2.8'启动窗体FrmUserEdit
.Show1
EndWith
2.9'刷新用户名列表框
AdoUserList.Refresh
DataList1_Click
EndSub
2.10'读取当前用户数据
MyUser.GetInfo(DataList1.Text)
2.11'设置用户名
lblUserName=MyUser.username
2.12设置用户类型
IfFormat(MyUser.username,"<")="admin"Then
lblUserType="系统管理员"
3用户登录密码加密功能代码如下:
PrivateFunctionEncryption(ByValstrEncAsString)AsString
DimiAsInteger'for循环用
DimstrTmpAsString'临时字符存储
Encryption=""
If(Len(strEnc)<1)Then
Encryption=""
Else
Fori=1ToLen(strEnc)
IfAsc(Mid(strEnc,i,1))<-6000AndMid(strEnc,i,1)<>"?
"Then
strTmp=Chr(Asc(Mid(strEnc,i,1))-5)'对gbk的汉字进行加密
ElseIfAsc(Mid(strEnc,i,1))<=126AndAsc(Mid(strEnc,i,1))>=80Then
strTmp=Chr(Asc(Mid(strEnc,i,1))-47)'对大于79的asc进行加密
ElseIfAsc(Mid(strEnc,i,1))<=79AndAsc(Mid(strEnc,i,1))>=33Then
strTmp=Chr(Asc(Mid(strEnc,i,1))+47)'对小于80的asc进行加密
Else
strTmp=Mid(strEnc,i,1)'其它的字符不去转化,但是要显示的
EndIf
Encryption=Encryption&strTmp'加密后的字符
Next
EndIf
EndFunction
七、总结
在将近一学期的课程设计中,我们用vb语言以及SQLServer2005做了一个车辆管理系统,分别实现了对车辆管理系统的添加车辆信息、删除车辆信息、修改车辆信息退出等几大功能。
在这次项目中,我们都很用心去做,但是,在项目中也出现了很多的问题,最大的问题就是对VistaBasic6.0软件的不了解,在实现与数据库的连接时经常会出现各种不同的错误,在实现一些功能时系统常常会报错。
在将近一学期的课程设计中,我们学到了很多东西,也发现了很多的问题,以前都没遇见过的,收获很大,在对不同的功能代码是不一定可以完整的执行的,不过大概都是一样的,只有一些小的细节。
在整个设计过程中,通过怎样对把各个管理信息连接起来的分析,锻炼了我们对事情的分析能力,通过怎样解决过程中出现的问题,提高了我们查找文献的能力、对网络资源的利用能力和和其他同学的交流沟通能力。
而且,经历这次的课程设计,我们也学会了自学和分工协作。
我们觉得每一次的课程设计,都是让我们对原有的知识从了解表面到深入本质,从个体学习到整体把握的跳跃,对新知识的汲取,更是让我们把课本的知识应用到实际中,让我们了解了我们的学习有什么用,能够解决什么样的问题,增加我们的自信和学习的动力。
总之,通过这次的课程设计,我们收获匪浅。