车辆管理系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、前言

本课题的内容为开发一套面向校园管理者与安保部门的校园车辆信息管理系统,需要实现人员、车辆基本信息的增删改查以及车辆出入信息的录入与查询,并且系统设计需要充分考虑对校园已有信息系统的可连接性。
校园车辆信息管理系统并不是一个完全独立的系统,实际上它是校园信息平台的一个内容扩充,就目前的网络考察情况来看,绝大部分校园都配备有校园信息平台,内容至少包括有师生注册信息(即在校人员信息统计),学生成绩的录入统计,以及其它种种信息。在一二线城市的校园中,基本实现了出入人员信息登记的系统,本系统正是在以上现状考察的基础上进行的设计开发,用以实现对校园内进出车辆的信息化管理,并且系统具备较强的可移植性,事实上,任何具备出入检测功能的场所,都可以使用这样一个信息记录的系统。
系统开发过程包含有数据库的设计,用户端界面设计,以及系统核心功能的java程序设计实现,其中对数据库的设计实现是本课题的核心部分。


提示:以下是本篇文章正文内容,下面案例可供参考

二、系统需求分析及相关技术介绍

2.1 功能需求分析

数据库需要存储的数据包括
1.登录用户数据:用户名、密码、姓名、部门
2.人员数据:身份证号码、姓名、性别、人员类别、校园卡号
3.车辆数据:车牌号码、车辆类型、车主
4.出入记录:时间、出入类型、出入地点、车牌号码、备注

2.2 可行性分析

信息管理系统的技术门槛较低,在具备一定的数据库设计能力,算法设计能力,界面设计基础以及一定的编程知识后就可以独立开发出一个带界面的信息管理系统。信息时代,使用信息管理系统对信息数据进行管理维护是大势所趋,通过系统添加的各种信息检查与权限限制,可以极大程度保障数据的安全性,通过信息管理系统记录的数据具备的共享性是常规人工信息记录手段无法比拟的。本系统的开发初衷是为了记录下校园进出的所有车辆信息,为可能发生的各种校园安全事件提供一个数据参考,从信息记录与查证的角度,保障校园安全。它的可扩展性极强,从适用对象上来看,所有的封闭式管理区域,均可通过对原系统的针对性改造(主要是数据库的改造与系统底层)实现系统移植,一样具备出入信息记录的功能。

2.3 系统运行环境

本系统的开发运行环境为Windows10操作系统 需要鼠标和键盘作为输入设备,显示器作为输出设备。

2.4 相关技术介绍

数据库技术:SQL Server2008版本 + SSMS
软件开发技术:Eclipse(Java集成开发工具)
界面设计:Windows Builder(Java swing + AWT)

三、系统总体设计

3.1 系统功能结构设计

此系统分为操作员部分与管理员部分,操作员部分可以录入车辆出入的信息;管理员部分的功能可以概括为数据的维护功能,包括系统用户数据的维护,人员信息数据的维护,车辆信息数据的维护以及出入记录数据的维护。此外,由于操作员与管理员系统界面的不同,需要添加系统登录界面,包括登录验证与密码修改功能。
系统功能模块划分如图3-1所示。
图3-1 系统功能结构图

3.2 系统功能流程设计

3.2.1 系统登陆功能流程设计
系统运行后首先进入登陆界面,通过登录验证获取用户的权限后决定该用户的操作界面选择逻辑,此外,该页面提供密码修改的界面,在用户名文本编辑框的后方小方格可以触发点击事件跳转密码修改界面。需要处理的异常情况包括,文本编辑框为空,账户不存在,密码不正确,以及修改密码过程中,两次输入的新密码不一致的情况。系统登录功能的完整流程如图3-2所示。

图3-2系统登录功能流程图
3.2.2 出入登记功能流程设计
考虑到校园出入口的车流量在高峰期会很大,因此要求录入过程简洁,高效,用最少的操作,得到最关键的信息,因此系统在出入登记功能设计部分,只有一个两个点击事件按钮,一个是录入控制按钮,一个是刷新界面按钮(可用于重置文本框输入内容),需要填写的表单数据为出入类型,出入位置,车辆类型,车牌号码,人员证件号和备注,前三者均采用下拉框选择机制保证输入值的合理性,后三者采用文本编辑框(只有备注内容可以为空);该部分的另一个功能是显示已经录入的信息(出入记录),这部分功能要求信息的重新整合显示(需要显示详细的人员信息,车辆信息),以及较高的时效性,主要体现在显示信息内容的筛选排序和信息录入引起的信息变更的即时性。该功能需要处理的异常情况也为表单内容不合法的情形。出入登记功能的完整流程如图3-3所示。
图3-3出入登记功能流程图
3.2.3 数据维护功能流程设计
系统的正常运行,离不开对数据的维护,本系统对数据的维护从界面模块上可以分为用户信息维护、人员信息维护、车辆信息维护和出入记录维护。从功能上可以大致分为信息增加、信息删除、信息更改以及信息查询。其中对信息的查询功能应该尽量提供多种查询方式。数据维护功能的交互流程如图3-4所示。
图3-4出入登记功能流程图

3.3 数据库设计

校园车辆信息管理系统并不是一个完全独立的系统,从实际考虑出发,它应该是校园信息平台的一个内容扩充,因此在设计人员信息时,应该适当减少对冗余信息的录入,例如学生的年级、班级、班主任等等信息都可以通过与其它信息系统的连接进行查询获取,而不必在本系统中要求重复录入。(至于没有人员信息数据库的情况,那我只想说,人员信息数据库对校园的重要性远高于本系统,所以还请贵校领导移步人员信息管理系统)。
3.3.1概念结构设计
(1)系统用户信息
系统用户即登录到该系统的用户,这里将存储用户的基本信息,主要包括用户在系统中的编号(将被作为工号作登录使用),用户的登陆密码,用户的姓名和用户的职务,其中用户的编号的属性被设置为主码自增(初始为1,增量为1)。此外在数据库建立之初将会有一个管理员用户(工号0,密码000)被创建,作为系统唯一的登录用户。系统用户实体如图3-5 所示。
图3-5 系统用户实体属性图
(2)(出入)人员信息
人员信息主要由两部分组成,一部分是由管理员录入的校内人员信息(通常该数据内容可以与学校已有的人员信息系统相关联),另一部分是由从操作员录入的出入信息剥离出的临时人员,这些临时人员的信息会被自动保存录入(此时的人员可以被理解为进出车辆的车主)。(出入)人员实体如图3-6 所示。
图3-6人员实体属性图
(3)(出入)车辆信息
与出入人员信息类似,出入车辆的信息也由两部分组成,由管理员录入的部分必须建立在已有校内人员作为车主的基础上进行添加,由操作员录入的部分,同样是从出入登记的信息中剥离出来以临时车辆的类别属性添加到车辆数据中。这些自动添加临时人员,临时车辆的逻辑将在下一系统详细设计部分进行描述。(出入)车辆实体如图3-7所示。
图3-7 车辆实体属性图
(4)出入记录信息
出入记录信息是有车辆出入该一事件触发产生的数据,考虑到数据库设计不应将时间类型的数据设置为唯一的码属性这一原则,因此在设计时出入记录被作为弱实体集存在,其与识别实体(车辆)构成出入这一识别联系。出入记录实体如图3-8所示。

图3-8 出入记录实体属性图
2)系统总体ER图
在上述实体中,人员实体与车辆实体构成1对多的拥有联系,车辆与出入记录间构成1对多的构成联系(即出入记录由车辆的进出行为产生),系统用户是一个单独的实体,仅用于系统的登陆。系统总体ER图如图3-9所示。
图3-9 系统总体ER图
3.3.2逻辑结构设计
ER图中需要处进行表设计的部分是车辆与出入记录间的识别联系处理,我的处理方法是将车辆中的主码车牌号码作为出入记录表中的外码,而将出入记录中的时间作为部分码与车牌号码一起作为出入记录表的主码。车辆和人员的拥有联系则通过在车辆中添加车主信息(使用人员的主码身份证号)作为外码来体现。
(1)Users(系统用户表)
系统用户表的所有字段要求非空,其中id字段设置为主码自增,用户部门可根据需要进行相应值的约束。系统用户表如表3-1所示。

(2)Personnel(人员信息表)
人员信息表的id和type字段要求非空,type字段及sex字段设置值的约束,id字段设置为主码,schoolCard字段设置默认值约束为0。人员信息表如表3-2所示。

(3)Vehicle(车辆信息表)
车辆信息表的所有字段要求非空,license字段设置为主码,owner字段设置为外码,与人员信息表的id对应,type字段可添加值的约束,车辆信息表如表3-3所示。


4)AccessRecord(出入记录表)
出入记录表除note字段外均非空,time字段与licence字段设置为主码,其中licence字段为外码,与车辆信息表中的licence字段对应,type和addr字段均可添加值的约束。

四、系统详细设计

4.1 系统登录模块详细设计

系统登录模块在设计之初有两种可选方案,第一种是通过设置数据库用户和角色,实现对用户访问数据库权限的设置,从数据库访问权限的角度,实现系统登录功能,它的具体实现方法是首先从数据库管理员角色连接数据库,然后进入管理员界面,所有对用户的添加,权限修改,密码重置,以及用户删除都将转化成对数据库角色的编辑,这样的做法能最大限度地保证数据库里的数据被正确地访问。另一种实现方式,是在Java的界面逻辑中实现用户验证的功能,对不同的用户选择不同的界面逻辑,对用户信息的维护通过修改数据库中实际存在的一张基本表实现,它的安全性不及前者,但胜在实现复杂度较低,因为无论是否使用数据库角色的验证,在系统界面的设计过程中,都需要对用户的身份进行核对,从这个角度考虑,最终我的系统采用了后者,即不设置多个数据库角色,而是直接在数据库基本表中存储用户信息,通过Java的后台逻辑实现用户登录的验证。
登录界面的验证逻辑,采用的是通过输入框中输入的Id号进行用户信息的查询,然后比对密码是否一致,实现登录验证。界面的跳转逻辑,是通过查询Id对应用户的部门进行逻辑选择,实现页面的跳转,跳转后,原登录界面被关闭。

4.2 出入登记模块详细设计

该部分功能是系统的核心功能,其基本逻辑比较简单,操作员填写表单,系统读取表单信息,对表单信息进行判断整合后存储到数据库中,并触发一次页面刷新。但是从读取到的表单内容到数据存储到数据库中这个过程需要较为复杂的逻辑控制,因此在数据库中创建了一个存储过程,来执行一系列的Insert语句,将表单中的数据,存储到数据库中。此外,还需设计一个用于记录显示的视图,对出入记录进行预览。
出入登记的详细实现逻辑为,首先在Java页面控制中对表单的输入合法性进行检测,要求车牌号码和人员信息内容不能为空(人员信息既可以填写校园卡号也可以填写身份证号),在操作员触发录入按钮点击事件后,调用存储过程Proc_add,输入的参数包括出入类型、出入地址、车辆类型、车牌号码、人员信息和备注。在该存储过程中,还设置了三个计数参数@cn1,@cn2,@cn3,分别表示人员信息在人员信息表身份证号字段出现的次数,车牌号码在车辆信息车牌号码字段出现的次数,以及人员信息在人员信息表校园卡字段出现的次数,因为身份证号码与校园卡号不可能一致,因此@cn1与@cn3不可能同时为1。针对三个参数不同的结果,可以得出不同的存储方法,判断逻辑表如表4-1所示。

特别地,出入记录中的时间字段,是调用的数据库中获取当前系统时间的方法(@time=GETDATE())。
出入记录信息的内容除了Access Record表中的内容外还应包括Vehicle表中的车辆类型和车主信息,该数据显示功能可通过创建一个数据库视图来实现,显示的具体实现手段是里利用Java GUI中的Table类对读取的数据视图进行展示。

4.3 数据维护模块详细设计

数据维护部分的总体设计就比较具有特色,所有的数据操作都在一个界面中完成,没有繁杂的窗口弹出重复输入的逻辑,而是更加的人性化,不论是数据的添加还是查询还是修改删除都能在当前页面完成,这样的做法使得数据的录入更加高效,数据的查询与修改功能也能高度耦合,大大提高了数据维护的效率。其缺陷就是界面按钮控制逻辑较为复杂,开发难度较大,可能对后续的维护更新不大友好,但用户体验的提升是一定的。(为了方便比对,在用户信息管理部分,采用了点击按钮触发新页面执行的方案,可供横向对比)。
4.3.1 数据的添加
数据的添加部分功能的实现较为简单,管理员填充信息后点击添加按钮后,系统首先进行输入合法性检测, 对管理员输入的信息进行检测,主要包括检测输入字段是否为空以及该条记录是否重复添加(主码唯一性),特别地,针对人员信息中的校园卡字段,在数据库中设置了插入语句触发器,可以处理添加的人员身份证号未重复,而校园卡号已存在的情形,实现方法就是创建触发器在检测到执行Personnel表插入语句后,对插入记录中的校园卡号在Personnel表校园卡号字段中出现的次数,若大于1,则抛出异常并事务回滚,否则不执行任何操作。
4.3.2 数据的查询
数据的查询功能实现逻辑也比较简单,管理员点击查询按钮后,系统读入表单中的信息,通过模糊查询(like ‘%’+text+’%’)的方法即可实现几乎所有的查询方法。这里需要单独处理的是对出入记录信息的查询,因为这里涉及到按日期进行查询,它没法使用字段模糊查询的方法得出查询结果,我的实现方法是,在表单中加入三个下拉框,分别用以设置年月日,这里需要解决每个月的天数不一致的问题(解决方法是使用Java.calendar中的getActualMaximum (Calendar.DAY_OF_MONTH)方法获得当前月份(由年月下拉框决定)的天数并显示在下拉框里),这样就得到了查询所需的日期字段,然后调用创建好的数据库存储过程Proc_findByDate即可,该存储过程的逻辑是用’where time between’。另一种查询出入记录的方法就是使用属性特征进行查询,这与之前提到的字段模糊查询方法类似。
4.3.3 数据的修改
数据的修改功能比较有技巧性,数据的修改逻辑由管理员选中页面下方表格某行数据开始,当管理员触发点击事件后,选中的记录会被自动填充显示到上方表单区域,其中主码属性对应的表单内容会被设置为不可编辑状态,其它内容都可以被修改,在系统监测到表单内容被修改后(一定是表单内容与数据库中保存的数据出现不一致,才会触发,换言之,你可以通过保存按钮是否亮起看出当前表单数据是否与数据库中数据一致),页面上的保存按钮会进入可选中状态(初始为不可选中状态),之后操作员点击保存按钮,系统会检查修改后的信息是否合法,通过检查后的数据会被update到数据库中。随后界面刷新,回到页面初始化查询状态。
4.3.4 数据的删除
数据的删除也需要先选中该条记录,与数据的修改逻辑相似,选中某条记录后,删除按钮会亮起,此时点击删除,即删除被选中的该条记录,并刷新界面。特别地,针对人员信息和车辆信息的删除,考虑到数据库系统的数据完整性,在数据库中加入了删除语句的触发器Per_del与Veh_del,它们依次实现了删除人员时首先检测该人员是否有是某辆车的车主,如果是的话会连同该车一起删除,删除车辆时首先检测该车辆是否有出入记录,如果有的话,会连同所有该车的出入记录一起删除。另外,考虑到出入信息的转存问题,设置了记录清空功能,能在不删除人员信息和车辆信息的情况下,将所有出入记录清空,释放数据库空间。
4.3.5 其它
管理员界面框架,使用的是CardPanel由界面上方的按钮触发事件,将按钮对应的界面(可以理解为一张Card)显示在最上方。

猜你喜欢

转载自blog.csdn.net/weixin_44120833/article/details/111502748