车辆管理系统数据库设计

发布时间:2018-11-02 20:13:10

学年论文

(课程论文、课程设计)

题  目:  车辆管理系统

作  者:   

所在学院: 信息科学与工程学院

专业年级: 信息安全09-1

指导教师:   

职  称      讲 师  

2012年 5月 25

一、概述

随着经济的日益增长,信息化时代已经到来,生活中各种信息趋向数字化、清晰化。车辆管理系统就是在这样的一个环境中诞生的,交通的日益发达,使得一个单位不再是简单的一辆商务车,而是有很多辆车组成,而且车型也不再单一,这使得单位车辆信息复杂化。因此我们将发挥计算机的庞大的存储空间,高性能的处理能力,高度可靠的数据安全,清晰的可视化数据等这些优势来辅助单位对车辆进行管理,加强对本单位使用车辆的管理,实现了计算机资源的合理利用,真正实现了减少劳动力提高劳动质量的目的

车辆管理系统要求有如下管理功能:

(1) 用车申请

(2) 派车登记

(3) 车辆支出的登记

(4) 查看功能:可随时查看车辆基本信息、驾驶员基本信息、车辆使用记录、违章记录、车辆费用管理、事故记录;

(5) 根据车号查看当前车的使用情况

(6) 统计功能:统计各车辆的违章记录、事故记录等;在某一时间内各车辆的油料使用情况

本人在系统开发中承担用户登录,账户管理,登陆密码加密等相关功能

二、 需求分析

1、 数据流图:

图1第一层数据流图

图2第二层数据流图

图3第三层数据流图

2、 数字字典:

1)数据项: 表1数据项

2)数据处理:

2数据处理

3)数据流:

表3数据流

4)数据存储:

表4数据存储

三、概要分析

1、分析

实体:

职工、车辆、驾驶员、出车、事故、维修、油耗、变动

实体属性:

职工:编号、姓名、性别、籍贯、生日、政治面貌、住址、身份证号、电话、部门、工龄

车辆:汽车编号、车牌号、车型、忙闲、车名、车龄、变动

驾驶员:驾驶员编号、忙闲、驾照号

事故:时间、地点、类型、费用

维修:时间、地点、类型、费用

油耗:时间、地点、燃油类型、费用

变动:变动单号、汽车编号、变动时间、原因

出车:时间

2E—R图

四、 逻辑结构设计

1关系模式

R1、车辆(汽车编号,车名,车型,车牌号,忙/闲,车龄)

R2、职工(编号,姓名,性别,部门,籍贯,生日,政治面貌,住址,身份证号,工龄,电话,部门)

R3、申请(编号,汽车编号,地点,事由,时间)

R4、驾驶员(驾驶员编号,驾照号,忙闲)

R5、事故(汽车编号,时间,地点,费用,类型)

R6、维修(汽车编号,时间,地点,费用,类型)

R7、油耗(汽车编号,时间,地点,费用,燃油类型)

R8、变动(变动单号,汽车编号、变动时间、原因)

2、 关系模式规范化:

R1、车辆(汽车编号,车名,车型,车牌号,忙/闲,车龄)

R2、职工(编号,姓名,性别,部门,籍贯,生日,政治面貌,住址,身份证号,工龄,电话,部门)

R3、申请(编号,汽车编号,地点,事由,时间)

编号,汽车编号为外码

R4、驾驶员(驾驶员编号,驾照号,忙闲)

R5、事故(汽车编号,时间,地点,费用,类型)

R6、维修(汽车编号,时间,地点,费用,类型)

R7、油耗(汽车编号,时间,地点,费用,燃油类型)

上述关系中的每个属性都是不可再分的,所以满足第一范式。

上述关系中的每个属性都完全依赖于关系主码,所以满足第二范式。

上述关系都不存在传递依赖关系,所以满足第三范式。

3最后确定的关系定义

1)职工信息表:staffs

表5职工信息表

2)维修信息表:reparis

表6维修信息表

3)事故信息表:accidents

表7事故信息表

4)油耗信息表:fuels

表8油耗信息表

5)车辆信息表:carinfo

表9车辆信息表

6)驾驶员信息表:driverinfo

表10驾驶员信息表

7)申请信息表: applicants

表11申请信息表

五、物理设计

索引说明

用主键索引,即利用数据库默认索引。

六、 系统实现

采用的工具有:visual basic 6.0

SQL Server 2005

完成的功能:用户登录 账户管理等相关方面的功能

部分功能代码如下:

1、用户登录功能代码如下:

1.1数据有效性检查

If txtUser = "" Then

MsgBox "请输入用户名"

txtUser.SetFocus

Exit Sub

End If

If txtPwd = "" Then

MsgBox "请输入密码"

txtPwd.SetFocus

Exit Sub

End If

1.2将用户输入赋值到变量中

NameKey = MakeStr(txtUser)

PasswordKey = MakeStr(txtPwd)

1.3 判断用户是否存在

If MyUser.In_DB(NameKey) = False Then

MsgBox "用户名不存在"

Try_times = Try_times + 1

If Try_times >= 3 Then

MsgBox "您已经三次尝试进入本系统,均不成功,系统将关闭"

DBapi_Disconnect

End

Else

Exit Sub

End If

End If

1.4 判断密码是否正确

MyUser.GetInfo (NameKey)

If MyUser.Pwd <> PasswordKey Then

MsgBox "密码错误"

Try_times = Try_times + 1

If Try_times >= 3 Then

MsgBox "您已经三次尝试进入本系统,均不成功,系统将关闭"

DBapi_Disconnect

End

Else

Exit Sub

End If

End If

2、账户管理功能代码如下

2.1 '启动窗体FrmUserEdit

.Show 1

End With

2.2 '刷新用户名列表框

AdoUserList.Refresh

DataList1_Click

End Sub

2.3'读取当前用户数据

MyUser.GetInfo (DataList1.Text)

2.4'设置用户名

lblUserName = MyUser.username

2.5 '设置用户类型

If Format(MyUser.username, "<") = "admin" Then

lblUserType = "系统管理员"

2.6 '确认删除

If MsgBox("是否删除当前用户", vbYesNo, "请确认") = vbYes Then

'删除当前用户

MyUser.Delete (DataList1.Text)

'刷新用户名列表框内容

AdoUserList.Refresh

DataList1_Click

End If

End Sub

2.7 把当前用户的数据赋值到FrmUserEdit窗体的相关位置

With FrmUserEdit

.OriUser = MyUser.username

.txtUserName = MyUser.username

.txtPass = MyUser.Pwd

.txtPass2 = MyUser.Pwd

.modify = True

'如果当前用户为Admin,则不能修改用户名

If Format(MyUser.username, "<") = "admin" Then

.txtUserName.Enabled = False

End If

'将变量Modify设置为True,表示当前状态为修改已有数据

2.8'启动窗体FrmUserEdit

.Show 1

End With

2.9 '刷新用户名列表框

AdoUserList.Refresh

DataList1_Click

End Sub

2.10'读取当前用户数据

MyUser.GetInfo (DataList1.Text)

2.11'设置用户名

lblUserName = MyUser.username

2.12设置用户类型

If Format(MyUser.username, "<") = "admin" Then

lblUserType = "系统管理员"

3 用户登录密码加密功能代码如下:

Private Function Encryption(ByVal strEnc As String) As String

Dim i As Integer 'for循环用

Dim strTmp As String '临时字符存储

Encryption = ""

If (Len(strEnc) < 1) Then

Encryption = ""

Else

For i = 1 To Len(strEnc)

If Asc(Mid(strEnc, i, 1)) < -6000 And Mid(strEnc, i, 1) <> "?" Then

strTmp = Chr(Asc(Mid(strEnc, i, 1)) - 5) '对gbk的汉字进行加密

ElseIf Asc(Mid(strEnc, i, 1)) <= 126 And Asc(Mid(strEnc, i, 1)) >= 80 Then

strTmp = Chr(Asc(Mid(strEnc, i, 1)) - 47) '对大于79的asc进行加密

ElseIf Asc(Mid(strEnc, i, 1)) <= 79 And Asc(Mid(strEnc, i, 1)) >= 33 Then

strTmp = Chr(Asc(Mid(strEnc, i, 1)) + 47) '对小于80的asc进行加密

Else

strTmp = Mid(strEnc, i, 1) '其它的字符不去转化,但是要显示的

End If

Encryption = Encryption & strTmp '加密后的字符

Next

End If

End Function

七、 总结

将近一学期的课程设计中,我们用vb语言以及SQL Server2005做了一个车辆管理系统,分别实现了对车辆管理系统的添加车辆信息、删除车辆信息、修改车辆信息退出等几大功能。

在这次项目中,我们都很用心去做,但是,在项目中也出现了很多的问题,最大的问题就是对Vista Basic 6.0软件的不了解,在实现与数据库的连接时经常会出现各种不同的错误,在实现一些功能时系统常常会报错。

将近一学期的课程设计中,我们学到了很多东西,也发现了很多的问题,以前都没遇见过的,收获很大,在对不同的功能代码是不一定可以完整的执行的,不过大概都是一样的,只有一些小的细节。

在整个设计过程中,通过怎样对把各个管理信息连接起来的分析,锻炼了我们对事情的分析能力,通过怎样解决过程中出现的问题,提高了我们查找文献的能力、对网络资源的利用能力和和其他同学的交流沟通能力。而且,经历这次的课程设计,我们也学会了自学和分工协作。

我们觉得每一次的课程设计,都是让我们对原有的知识从了解表面到深入本质,从个体学习到整体把握的跳跃,对新知识的汲取,更是让我们把课本的知识应用到实际中,让我们了解了我们的学习有什么用,能够解决什么样的问题,增加我们的自信和学习的动力。

总之,通过这次的课程设计,我们收获匪浅

车辆管理系统数据库设计

相关推荐