基于java的企业车辆管理系统设计与实现(论文+源码)-kaic

news2024/11/26 1:35:48

摘  要

随着经济的日益增长,车辆作为最重要的交通工具,在企事业单位中得以普及,单位的车辆数目已经远远不止简单的几辆,与此同时就产生了车辆资源的合理分配使用问题。现有的车辆管理系统存在着不足之处,例如系统不够稳定,功能不够全面。因此,本研究旨在开发一款基于Java的企业车辆管理系统,以提高企业车辆管理的效率和可靠性。本文旨在解决企业车辆管理中存在的问题,研发一款全面、稳定的车辆管理系统,提高企业对车辆使用情况的监管能力,加强对车辆使用有效性的分析,以实现信息化管理。本文采用JSP开发语言,使用SSH框架进行系统设计,利用MySQL数据库存储车辆信息。结合需求分析,本文实现了车辆管理、驾驶员管理及出车信息管理等功能。通过测试和优化,该系统得到了较好的稳定性和运行效能,符合实际应用场景的需求。

关键词车辆管理系统;JSP;SSH框架

ABSTRACT

With the increasing growth of the economy, vehicles, as the most important means of transportation, have been widely used in enterprises and institutions. The number of vehicles in each unit is far beyond just a few, and at the same time, there is a problem of reasonable allocation and use of vehicle resources. The existing vehicle management system has shortcomings, such as insufficient stability and comprehensive functionality. Therefore, this study aims to develop a Java based enterprise vehicle management system to improve the efficiency and reliability of enterprise vehicle management. This article aims to solve the problems in enterprise vehicle management, develop a comprehensive and stable vehicle management system, improve the supervision ability of enterprises on vehicle usage, strengthen the analysis of the effectiveness of vehicle usage, and achieve information management. This article adopts JSP development language, uses SSH framework for system design, and uses MySQL database to store vehicle information. Based on demand analysis, this article implements functions such as vehicle management, driver management, and departure information management. Through testing and optimization, the system has achieved good stability and operational efficiency, which meets the requirements of practical application scenarios.

Keywords: vehicle management system,JSP,SSH Framework

目录

摘  要

ABSTRACT

第1章  绪  论

1.1  课题背景

1.2  目的和意义

1.3  国内外研究现状

1.3.1  国内研究现状

1.3.2  国外研究现状

第2章  相关技术

2.1  SSH框架技术

2.2  MVC模式

2.3  MySQL数据库

2.4  Swagger框架

2.5  JSON WEB TOKEN

2.6  Element UI组件

2.7  Vue.js框架

2.8  JSP

第3章  需求分析

3.1  可行性分析

3.1.1  经济可行性

3.1.2  技术可行性

3.2  功能模块需求分析

3.3  非功能需求分析

3.3.1  可移植性需求

3.3.2  可扩展性需求

3.3.3  可维护性需求

3.3.4  性能需求

3.3.5  系统运行环境需求

3.3.6  安全性需求

第4章  系统设计

4.1  系统设计原则

4.2  系统架构设计

4.3  系统功能模块结构设计

4.4  数据库的分析与设计

4.4.1  数据库的概念结构设计

4.4.2  数据库的逻辑结构设计

4.4.3  数据库管理与优化

第5章  系统实现

第6章  系统测试

6.1  系统测试方法

6.2  系统功能测试

6.3  系统性能测试

结  论

参考文献

原创性声明

致  谢

第1章   

1.1  课题背景

在我国,由于社会经济发展水平的提高,交通工具的种类越来越多,交通工具的使用要求也越来越高,使用次数也越来越多;随着相关公司的汽车业务的迅速发展,车辆数据的处理也给公司的相关责任部门造成了诸多的困难,比如公司的相关责任部门会遇到车辆信息不能自动同步,车辆数据检索效率低下,车辆信息没有得到有效的发掘和分析。所以,运用现代化的信息化技术来提高汽车生产经营的信息化水平,对于我国汽车行业的发展具有很大的借鉴作用和实际应用价值。对公司的管理部门而言,怎样才能在纷乱的汽车资讯中进行迅速地搜索、归类,并将有用的资讯发掘出来,协助资讯工作者迅速地找到与汽车资讯有关的资讯;是当前汽车控制和实现数字化管理所必须面对的重大问题。

1.2  目的和意义

对于车辆正确的管理,进行信息化的手段管理是企业向智慧企业发展的重要途径。调查研究发现,原来的企业进出车辆管理都是通过手动书写录入的方式进行,效率不高,费时费力耗费了大量的人力物力,在信息化的时代,基于计算机的技术来进行企业的信息化管理,可以提升企业管理的效率,降低物业人员的工作量。

因此,对以上工作问题的总结和分析是对时代车辆进出管理管理来开发的,是非常有意义、有价值的。

1.3  国内外研究现状

1.3.1  国内研究现状

本文主要介绍了一个以网络为基础的、以计算机为核心的、以网络为核心的信息管理体系。近几年来,伴随著网路科技的进步,网路上的车辆资讯资讯也越来越多。中外的学者也在不断地对汽车管理体系进行着探索。

在国内,目前主要是以企业车辆管理系统的应用为主,应用范围涉及物流、出租车、公交等领域。国内学者们对企业车辆管理系统的研究也日益深入。例如,有学者提出了基于RFID的车辆管理系统,通过RFID技术可以实现对车辆的实时跟踪和管理。还有学者提出了基于物联网的车辆管理系统,通过物联网技术可以实现对车辆的精准管理和远程监控。例如,张继国等人在《基于 Web 的汽车管理信息系统的设计与实现》一文中,描述了一个基于 Web 的汽车管理信息系统的设计和实现,该系统包括车辆管理、保险管理、加油管理、维修管理等模块,具有较高的可操作性和可扩展性。另外,朱铮等人在《基于 J2EE 的汽车管理信息系统的设计与实现》中,提出了一个基于 J2EE 技术的汽车管理信息系统的设计方案,并对系统中的车辆信息管理、保险信息管理、加油信息管理等进行了详细的设计和实现。

1.3.2  国外研究现状

在国外,车辆管理系统已经广泛应用于企业和政府机构中,取得了显著的效果。例如,美国的车辆管理系统主要包括车辆调度管理、运输安全监控和车辆维护管理等模块,通过该系统可以实现对车辆的远程监控和管理,提高了车辆的使用效率和安全性。

另一方面,企业车辆管理系统的研究较为成熟,相关的文献也比较丰富。例如,Sulaiman 等人在《A Web-Based Vehicle Management System Using Wireless Technology》中,提出了一个基于无线技术的基于 Web 的车辆管理系统,能够实现车辆的实时追踪和信息管理。Zhang 等人在《Design and Implementation of Vehicle Management System Based on MVC Pattern》中,提出了一个基于 MVC 模式的车辆管理系统的设计方案,并对系统中的车辆信息管理、车辆保养管理、车辆维修管理等进行了详细的设计和实现。

第2章  相关技术

2.1  SSH框架技术

SSH框架主要是通过Struts+Spring+Hibernate框架共同整合的一个符合框架。解决了开发代码麻烦的弊端。并且他的分层结构十分的清晰,开发者能够很好的理清每个层次之间的关系。在编写一些解析代码的时候也可以快速的找到代码的所在位置。其中Spring框架主要的作用是解决了代码开发复杂的问题。Struts框架主要起到了分离的作用。结合了每个分离的结构。通过配置文件将这些代码联合在一起。可以通过SpingMvc的配置文件设置连接数据库的信息。最后是Hibernate框架他的作用是直接和数据库对接。执行一些数据库相关的sql语句。将数据库表和系统开发的实体形成映射。完成数据的插入和查询的功能。

2.2  MVC模式

MVC模式是web项目常用的模式:

1、MVC模式使得系统的开发具备了模块化的思想,降低了系统的耦合性,各个功能模块之间相互独立,互不影响,开发者只需要专注系统本身的业务逻辑即可。

2、在软件开发过程中,开发者往往会使用到同一个模型的情况,通过MVC模式可以降低程序开发的工作量,还可以提升代码的复用率[1]。

3、使用MVC模式开发系统,代码结构清晰,降低了开发者的开发难度节约了开发成本。

2.3  MySQL数据库

本软件由瑞典 MySQLAB公司研发和设计,它是一种以开放方式运行的关系数据库。这种资料库系统的使用十分普遍,在我国大型或中型的网路上都得到了普遍的运用,因为它具有体积小,运作速度快,成本低等优点;开源等特性,很多中小企业的网站都选择了 Maxwell数据库,以降低他们的经营费用。

后来MySQL被 Oracle公司重组,研发出MYSQL的企业版,因此此款软件需要收费。

2.4  Swagger框架

当前最流行的前后端分离技术栽Vue+Spring Boot。Vue是有着双向控制功能,它的前端视图都是基于JS渲染,借助后端生成页面传递数据,自动渲染页面。

前面的技术就是 HTML、CSS、JS等,后面的前面都要经过模板引擎进行控制;在一个前后端分离的年代,后端团队要对后端的分离进行工作,具体内容就是:控制层、服务层、数据访问层。在前端分离过程中,有一个控制层和视图层,它可以在后端的数据中,假冒 JSON已存在,而前端工程仍然可以进行运作[2]。前端和前端都采用了一个交互式的 API,这样做的优点就是可以相互隔离,并且可以放松耦合。可以在另一台服务器上进行部署。如果前端和前端分开,就有可能因为沟通不够快而产生问题,那么解决办法是:

1、首先制定Schema(计划提纲),试试更新最新API,降低集成风险。

2、早些年制定World计划文档,需要下载文档,可是文档每次变动部分内容,团队开发人员众多,协调费时费力。

3、前后端分离,后端更新内容,前端生成页面展示API,并且前端还可以测试API正常运行连接成功。前端测试后端接口使用Postman,后端提供接口需要实时更新最新的消息以及改动。

4、Swagger可以对接口进行管理,通过文档的形式让开发者可以一目了然的了解接口的信息,降低了前后端开发人员交流的成本。

2.5  JSON WEB TOKEN

传统项目使用session存在缺陷,放入到服务端,信息无法共享。Session类似Redis存放缓存内容。Session中的session id类似于token。现在大型项目都是基于token替代Session。

建立在常规托克验证基础上。当用户登陆时,服务的一方就会将 token传回,并且在服务器上保留 token。今后,当用户再次来到这里的时候,就必须要将 token带在身上,在服务端获得 token之后,在到数据库中获得 token,并对其进行校验。

前后端分离项目基于token实现用户登录。

验证账号密码,成功验证成功情况下。

生成对应token,采用uuid。

将该token缓存到Redis中,Redis key等同于token,value等同于userid。

最后返回token给客户端,客户端将token保存在cookie中。

查询情况下,客户端每次请求得时候在请求头中传递该token,服务器接收到token,从Redis中查找对应key,对应value user id。再根据userid查询用户信息返回给客户端。

Token的优点,能够隐藏参数的真实性,临时且唯一,缓存有效机制,保证安全性。使用token的情况必须依赖于服务端Redis。假设发生高并发情况,频繁借助token查询Redis,可能对服务端压力过大。

JWT(全称JSON WEB TOKEN)实际和token基本设计思想一样。

JWT是用来解决用户认证(前后端分离/微信小程序/app开发)。

JSON,数据交换格式,轻量级,跨语言,减少宽带,可读性高。

JWT由三部分组成,Header头部,Payload负载,Signature签名。

JWT的优点与传统的 token比较,因为 JWT不需将 token存储到服务器,而仅需在客户端对其进行再次加密。JWT的证书.当使用者登入时,伺服器会传回一个标记给使用者(伺服器不会储存)。今后,用户想要再进行一次访问,就必须将 token带在身上,在服务端获得 token之后,再进行 token的检查。

2.6  Element UI组件

一套基于Vue的一个UI框架,Element组件适用于Vue2.0,Vue3.0。

设计原则遵循一致性,易用性,效率性,可控性。事实上从桌面网页到手机小程序,组件库囊括布局、表单、表格、通知、导航、标签、弹出框等控件,满足用户应用场景多样化需求。

它完全支持主题偏好设置,凡是全局组件和配置视图版式布局,选用默认主题器实时编辑预览样式网页,同时,它还可以基于新的自定义样式生成一个完整的样式包,以便直接下载。

所有的国际化方案都会用到语言包,Element-UI未引入vue-i18n,不过它是可以很好地与vue-i18n兼容的。

详细文档指南可以让初学者快速上手,安装Element UI,借助Vue脚手架创建项。在Vue脚手架项目中安装Element UI。

友好的文档和演示,提到安装两种模式(NPM和CDN)完全引入和局部引入,成本低利于维护,同时广泛支持各类语言包。

前端对于工程化的要求越来越高,为了保证大家代码风格的一致性,通过统一的规则进行代码的编写和注释的编写,借助了webpack并配置了Hot Reload,利用模块化开发的思想构建,部署公共模块的组件依赖,持续集成。

2.7  Vue.js框架

原生API和函数库以及框架三者之间的区别。原生API,浏览器/平台已实现的,咱们可直接使用的原生函数。函数库(library),基于原生API基础上,封装出更多的接口服务,为外部所使用。为了解决原生API和函数库存在代码繁琐的问题,从而提出框架(framework)概念。前人将多次成功项目的经验总结起来,形成的半成品项目,优势是后人继续开发即可,项目整体代码和做事的步骤极简化,不再需要大量重复手工劳动。存在不足,需要改变原有的处理问题的方法,像Vue一样JS没有搜索方法,页面双向绑定数据可以呈现在它想显示的区域。

渐进式虽然提供了很多的组成部分,但不强迫必须全部使用。相比AngularJS和React要求严格,必须打包全套使用。适用于以数据操作为主的项目(WEB、APP)。增删改查,多数应用都是以数据操作为主的。vue.js可以通过两种方式安装,直接下载并使用script引入vue.js文件,或者使用Vue-CLI脚手架工具。

Vue.js声明式模板语法被允许渲染数据进DOM的系统,响应式布局,不再和HTML直接交互。其易用,灵活,高效的特点,对于已经学会了HTML、CSS、JavaScript的开发者而言,Vue-CLI脚手架是一个项目创建工具,在命令行中运行。脚手架项目:Vue+Webpack+Babel+Node/Express本身就是一个服务器端应用。

2.8  JSP

JSP技术利用 Java程序设计出类似于 XML的标签和脚本[3],并对这些标签和脚本进行了包装,从而生成一个动态的 Web页面。Web页面也可以使用标签和脚本来访问出现在服务器上的应用程序逻辑。JSP将 Web页面的逻辑从 Web页面的设计、展示中剥离出来,使得 Web页面的可复用性得到了极大的提高。

当一个 Web服务器收到一个 JSP页面的要求时,它会先运行它的一个部分,并把运行的结果和 JSP文档内的 HTML代码一并送回用户。这个插件可以对数据库进行操作,对网页进行重新定向,等等,从而达到创建一个动态网页所需的功能。和 Servlet类似, JSP也在服务器上运行,并且一般会向客户机发送一段 HTML文字,这样客户机就可以通过浏览器进行浏览。一个 JSP网页包含了一个 HTML以及一个 Java代码。当一个网页收到客户机的要求时,该伺服器会处理那些 Java程式码,并将结果的 HTML网页传回至客户机的浏览器。Servlet是 JSP的技术基石,它与 JSP紧密结合,共同实现了大规模网络应用的发展。JSP拥有 Java技术易于使用、充分面向对象、与平台无关、安全性高、以 Internet为主的特性。JSP技术优势分析:

1、一个程序,多个程序同时执行。您不必对您的程序进行修改,只对您的系统进行修改。

2、多个平台对该体系的支撑。它几乎可以在任何一个平台上,在任何一个环境下,对任何一个环境进行开发、配置和扩充。相对于 ASP/. net而言,其限制很明显。

3、可扩展性强。从使用一个小型 Jar程序来执行 Servlet/JSP,到使用多个服务器来完成聚类、负荷平衡,再到使用多个应用程序来完成交易、消息等;Java从一部服务器发展到一部多部服务器,展现出了强大的生命力。

4、提供多种、强有力的技术支撑。Java有很多很好的开发工具,很多都是可以自由获得的,很多都能在不同的平台上平稳地工作。

5、对服务端构件的支撑。Web应用对服务端的支撑能力有很高的要求,因此,为了提高 Web应用的效率,必须借助其它的软件和技术,来设计具有较高复杂度的 Web应用程序。JSP能够利用已有的 Java BEANS构件来完成一个复杂的商业任务。

一个内部物件描述:这个要求将会包括一个 GET/POST要求中的参数。反应页面返回客户机的回应。页面上下文页面的属性在此处被管理。与要求相关的对话。应用程序 servlet所执行的操作。输出用于传递一个响应的输出数据流。概要程式码片段设定物件。页面自己的 JSP页面。异常指向有问题的页面,没有捕获的异常。

第3章  需求分析

3.1  可行性分析

3.1.1  经济可行性

系统对于硬件环境要求不高,只需一台计算机就可以提高信息管理的效率,采纳的是面向对象这一思路,搭建一个信息管理平台,同时可对信息进行增删改查等功能满足用户需求。社会各界对于该项问题的相关开发研究也比较多,以及现在计算机价格低廉,本系统也不具有交易作用,后续成本费用也不高,因此这项研究在资金方面具备可行性。

3.1.2  技术可行性

随着该领域拥有逐渐成熟的Web开发技术,包括了SSH框架技术、MVC模式、数据库技术等,构建完善的车辆信息管理系统,采用的系统开发技术都是市面上成熟的技术,因此,本系统的开发不会有技术方面的阻碍。

3.2  功能模块需求分析

1、车辆信息管理

车辆信息管理可添加和删除车辆信息。用户在车辆详情界面可查看车辆详细信息,并可查看评论信息。

2、驾驶员信息管理

在该模块中定义了对驾驶员信息的管理,其功能包括驾驶员信息的添加、查询、修改、删除等操作。

3、系统管理

系统管理包括了角色管理、菜单管理、用户管理,角色管理是对角色信息的新增、删除、修改和查询以及角色的权限分配。菜单管理是对菜单信息的新增、删除、修改和查询以及给角色分配菜单。用户管理是对用户信息的新增、删除、修改和查询。

4、出车信息管理

在该模块中定义了对出车情况的管理,其功能包括出车情况的添加、查询、修改、删除等操作。

3.3  非功能需求分析

3.3.1  可移植性需求

具体来说,该系统是一个面向企业的应用系统,由于各家企业都有自己的内部系统,所以如果这些机构用户想要将该系统中的企业车辆信息管理功能模块给独立开来并且集成到自家内部系统中去,这就要求该系统有非常好的低耦合且可移植性。

3.3.2  可扩展性需求

系统应具有良好的可扩展性,当业务增加、数据量增长以及应用需求变化时,平台的软硬件都能做到平滑扩展,以适应功能和容量的要求。

基础架构由传统模式向互联网模式转变。为了达到分布式+平台化的设计目标,提供一套“框架+工具”。

框架是指集成和沉淀所需各种组件的分布式开发框架,工具是指的是运行环境管控工具。

分布式,解决运行效率问题

将传统的系统移植到分布式架构上,提高应用的水平弹性扩展能力,并可通过集成第三方IaaS方案获得可向资源池部署的能力。

平台化,解决开发效率问题

融合多种分布式开发框架,内置各种开发引擎,通过数据服务封装使得数据与服务分离,降低开发门槛,支持应用的快速上线。

可视化,解决问题分析问题

提供可视化运维。包括服务资源的管控,能力的调用。便于运维人员及时发现问题,响应问题。

3.3.3  可维护性需求

系统应具备先进、简单易用、风格统一的人机界面,具备可视化操作和图形化展示功能,以及完善的操作帮助和提示。该系统的验证、打包、发布要通过GitLab CI/CD工具来实现的,通过.gitlab-ci.yml配置文件进行系统的构建,就可以自动的启动服务。Gitlab CI/CD是持续集成框架,降低了系统部署的工作量。

其次,系统中具有完整的日志记录,包括对GIN框架自带的接口调用记录,还有使用logrus库记录的用户操作日志等,数据可追溯。

3.3.4  性能需求

1、要求数据传输网络通畅,可控,可靠,扩展性好。需要使用性能稳定的服务器、安全可靠的操作系统和大规模的数据库,以确保系统具有良好的性能,并具有可扩展性。

2、系统运行稳定,可靠,具有实际应用价值,能达到客户要求。友好的人机接口,方便的输出和输入,快捷的图形产生,方便的检索和查询。

按照业务的处理方式,将业务分成了交互类业务、查询类业务和统计分析类业务,并对它们进行了相应的分类,并对它们提出了相应的响应时间要求,其中包含了峰值响应时间和平均响应时间。

3、互动类业务:在日常工作中,对本系统所做的一些工作,比如对某项数据的输入、更改或删除。反应的平均数:1-1.5秒。最大反应周期:2-3秒.

4、如查询信息,查询统计报告等。因为查询的复杂程度和数据的规模都会对查询服务产生影响,所以查询服务的选择要视实际情况而定,这里提供三个参考的区间:1-3秒的简单查询的平均响应时间。一个复杂的询问的平均反应是:5-10秒。限制 data query:在最大样本容量下,data query用不到30秒。

3.3.5  系统运行环境需求

操作系统:服务器端以及数据库,可以兼容不同Linux发行版或Windows不同版本;

浏览器:可兼容主流浏览器(IE10以上、谷歌浏览器65以上)。

3.3.6  安全性需求

物理安全:保证物理环境,网络设备,数据介质和其他物理实体的安全,避免自然灾害,避免不良环境,避免电力供应和设备失效;因人因错误的运作而导致的损害。

系统安全:对操作系统,网络通讯系统,以及应用程序进行安全保护,防止非法入侵,恶意攻击,IP地址欺诈,以及其他的一些活动。

信息安全:保证数据的收集、获取和处理;保密性,完整性,以及在应用和传送上的有效性;具有非抵赖和可控制的特点,避免了数据的丢失,破坏,泄露。

安全管理:安全风险分析和安全评估,安全证书和密钥管理,以及数据备份等安全技术手段[4];系统,如:安保监督和稽核,组织和人事的管理。

第4章  系统设计

4.1  系统设计原则

企业车辆管理系统的实施需要遵循以下的原则。

实用性原则:

在互联网不断发展的前提下,要满足用户对于企业车辆管理的需求,就需要遵循实用性的原则,以用户为中心,设计出来的系统,要与用户的实际情况相吻合,并将经济投入最小化作为切实的目标,本文依据用户的需求进行系统的设计与实现系统的设计目标就是实现利益的最大化[5],通过合适以及实用的功能来满足用户的需求,并不一定要开发多么复杂的功能,适合用户需求的才是最佳的系统。

在进行系统的设计与实现时,需要把握系统的重点功能,在于企业车辆管理人员进行积极的交流之后,发现本文设计的需求当中只有20%的功能是经常被使用到的,因此需要对这20%的功能投入重点的经历来进行开发,系统的设计与实现需要针对主要功能进行关注。

稳定性的原则:

系统的不稳定时,最严重的会导致数据的丢失,数据是一个信息化系统的最重要组成部分,数据的丢失直接影响了系统的运行,造成系统无法使用,通过服务器的硬件和软件的相辅相成作用来保护系统的稳定运行,是管理人员需要重点关注的问题,管理人员需要通过软硬件的选择来做好整体的规划,设计出合理的稳定的系统框架,来确保系统的稳定运行并做好应急的预案,确保系统稳定运行。

可扩展性的原则:

无论是什么样的系统在设计之初都需要对用户的需求进行充分的调研,为确保系统后续的可扩展性打下良好的基础[6],在系统设计时,要预见客户可能变化的需求,当用户的需求以及业务发生变化时,系统的设计需要足以支撑用户需求的变化,如果无法做到这一点,则说明了系统结构设计上存在缺陷,不满足可扩展性的要求,因此需要依据用户实际的需求来设计系统的结构满足系统的可扩展性需求。

舒适体验原则:

企业车辆管理系统是为企业的日常运作提供管理服务,在这个过程当中需要考虑到用户的体验系统的实现,细节是用户不关注的问题,用户最关注的问题是系统的操作舒适性,以及界面的便捷性,在系统设计时需要对界面进行着重的设计,让系统的操作更加的流畅,使系统更加的实用简洁的画面,让用户的体验感提升得到用户的好感,通过实际的需求来对用户的具体需求进行实现,提升用户使用系统的体验感。

维护和经济性原则:

在系统设计开始就需要考虑后期的运维事宜,让系统尽量的保持灵活性,可以降低后期运维的成本,又能提升系统的运行效率,当系统的用户越来越多时,系统就可能会因为并发输的提升而导致响应速度的降低。因此在系统设计时需要考虑到维护的成本,用最小的经济投入来实现最大化的系统运行效率。

4.2  系统架构设计

此次企业车辆管理系统的B/S架构组建设计图如图4.1所示。

4.1  系统架构设计图

根据图4.1所示,企业车辆管理系统大体架构分为表示层、业务逻辑层和数据存储层。具体来说,这三个层面的架构内容分别为:

表示层:表示层是最终展示业务功能的界面,直接与用户打交道,因此界面的舒适性需要达到用户的需求。系统的实现细节是用户不关注的问题,用户最关注的问题是系统的操作舒适性,以及界面的便捷性,在系统设计时需要对界面进行着重的设计,让系统的操作更加的流畅,通过合理的页面布局提升用户的体验感,让用户对系统有更加有好的认识,系统的页面设计以用户的需求为中心,让用户达到舒适体验的原则[7]。

业务逻辑层:业务逻辑层主要是处理系统的业务逻辑。

数据存储层:数据存储层提供了数据的存储及持久化。

4.3  系统功能模块结构设计

如图4.2所示为系统的功能模块图,企业车辆管理系统整体结构中,通过前后端分离的思想进行系统的开发,基于SSH框架、MVC模式等技术进行系统的设计与实现。

4.2  系统功能模块图

4.4  数据库的分析与设计

4.4.1  数据库的概念结构设计

在进行概念设计的时候,人们会把一个抽象的概念变成一个可以直接运用的信息,然后把这个信息变成一个可以被理解的世界,即把这个真实中比较抽象的东西用一个信息来表达出来。它不需要依靠任何一种电脑的体系或概念组的架构,而只需要把它们完全转化成一个电脑上特定的数据库管理系统就可以了。在实践中,我们可以将概念化的模型看作是真实和计算机之间的中介。

实体 (entity)

现实中客观存在的事物称之为实体,也就是现实中的人事物以概念或联系的形式构成实体,也就是一个学生一门课程、一个客户、供应商、一本书均是实体[8]。   

联系 (relationship)

实体内部的联系也就是实体间各个属性间存在的关系。

1、管理员实体E-R属性图如图4.3所示。

4.3  管理员实体属性图

2、公告实体E-R属性图如图4.4所示:

4.4  公告实体属性图

3、车辆实体E-R属性图如图4.5所示:

4.5  车辆实体属性图

4、用户实体E-R属性图如图4.6所示:

4.6  用户实体属性图

4.4.2  数据库的逻辑结构设计

表4-1  用户信息表

字段

类型

是否为空

备注

User_id

Int(11)

主键

User_name

Varchar(20)

password

Varchar(50)

User_address

Varchar(255)

User_type

Varchar(10)

Telephone

Varchar(20)

表4-2  角色信息表

字段

类型

是否为空

备注

id

Int(11)

主键

name

Varchar(255)

角色名

code

Varchar(255)

角色code

create_time

datetime

创建时间

update_time

datetime

更新时间

表4-3  用户角色关联表

字段

类型

是否为空

备注

id

Int(11)

主键

user_id

Int(11)

用户id

role_id

Int(11)

角色id

create_time

datetime

创建时间

update_time

datetime

更新时间

表4-4  菜单信息表

字段

类型

是否为空

备注

id

Int(11)

主键

name

Varchar(255)

菜单名

url

Varchar(255)

菜单路径

type

Varchar(255)

类型

parent_id

Int(11)

父节点菜单

create_time

datetime

创建时间

update_time

datetime

更新时间

表4-5  车辆信息表

字段

类型

是否为空

备注

id

Int(11)

主键

user_id

Int(11)

用户id

user_name

Varchar(255)

用户名

car_number

Varchar(255)

车牌号

car_type

Varchar(255)

车辆类型

car_proTime

double

 出厂日期

create_time

datetime

创建时间

update_time

datetime

更新时间

表4-6  驾驶员信息表

字段

类型

是否为空

备注

id

Int(11)

主键

user_name

Varchar(255)

用户名

name

Varchar(50)

姓名

sex

Varchar(50)

性别

age

Varchar(50)

年龄

tel

Varchar(50)

电话

address

Varchar(50)

地址

card

Varchar(50)

身份证号

表4-7  出车信息表

字段

类型

是否为空

备注

id

Int(11)

主键

che_id

Int(11)

车辆信息

kaichushijian

Varchar(50)

开出时间

huilaishijian

Varchar(50)

回来时间

shiyou

Varchar(50)

事由

4.4.3  数据库管理与优化

随着系统的不断使用,系统的用户量越来越大,导致了数据量也不断的增多,这对于数据库来说是一个挑战,数据量的不断增多会影响到数据库的性能,提升了数据库的响应时间,降低了用户的体验感。因此需要对数据库进行管理与优化。

1、信息备份

数据备份主要用于预防由于发生了一些特殊的情况而造成的数据损失,可以采用自动备份的方式来实现数据的备份,使用备份软件来实现自动化备份。可以用数据备份的方法对数据库中的数据进行还原,从而防止了系统出现故障的危险。

2、事务日志备份

数据库服务器除了数据持久化功能外,还会进行日志备份,对数据库的事务进行备份。日志备份可以定时进行,这样的备份周期可以提升数据的安全性。如果周期拉长,数据的完整性就缺乏保障[9]。周期太短,会增加服务器的压力。

3、数据库口令变更

数据库的密码需要定期的更改,如果数据库的口令一直不变则,降低了黑客入侵的难度,造成了数据库的安全性问题,把数据库的密码改变当作一项对数据库的数据进行维护的标准,因为数据库是一个系统的核心,数据的安全是保证一个系统能够平稳运转的重要依据,所以必须重视对数据库的安全性进行管理。

优化数据库访问速度的方式如下:

1、及时归档和保存信息表

当数据库的数据不断增多时,会降低数据库的反应速度,对于信息化系统来说,系统的响应时间有一定的性能要求,主要是对数据库的交互响应,在数据库数据不断增多时,需要通过及时的归档的方式来降低数据库的压力。

2、提取报表数据

通过报表的方式来提升数据的整体性,由于数据量的不断增多,会影响到数据库的响应速度,通过流程的规划,对系统进行合理的设置,来对数据的资源进行整合[10]。

3、根据需要创建索引

建立数据库的索引是数据库优化的主要手段,当数据库的数据不断增多时,通过建立数据库的索引可以快速的找到用户的查询数据,降低了数据库的交互操作流程,提升了数据库的性能,也减少了对应的系统工作。

4、设置缓存机制

缓存机制也是优化数据库的常用手段,当数据不断增多时,系统的反应速度会降低,这时候将常用的数据保存到缓存当中,通过缓存来实现数据库的管理与维护,可以提升数据访问的速度,也能够降低数据库的压力,进而达到了优化数据库的效果[11]。

第5章  系统实现

系统登陆运行效果图如图5.1所示:

5.1  系统登陆页面设计

登陆成功后进入系统主页,程序运行效果图如图5.2所示:

5.2  系统主页面

车辆信息添加运行效果图如下图5.3所示

5.3  车辆信息添加

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2211952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python基础之转义字符

字符串转义 转义是指在字符前加一个 \ \ n 则表示原来的字符n不代表字符n 赋予了一个新的含义 变成了一个换行符 print(wu\nzj\njing) \n 会解释为一个换行符 s "wu\"zj" 双引号是用来创建一个字符串的效果 加上\后就变成了一个字符双引号 它就是一个…

如何解决 Open /etc/postfix/main.cf: Permission denied ?

最近我的 Postfix 邮件系统无法发送电子邮件,报错内容:Open /etc/postfix/main.cf: Permission denied 经过一番调查,我能够解决这个问题。 日志文件中发现的错误如下: Jun 27 12:51:02 tecadmin postfix/postfix-script[11764]…

AI大模型开发架构设计(11)——AI 大模型与提示词工程助力职场典型案例场景实战

文章目录 AI 大模型与提示词工程助力职场典型案例场景实战1 AI大模型全局架构实战剖析AI大模型常见术语AI 大模型全局架构 2 Prompt Engineering 整体应用场景剖析Prompt 提示词的三个层次Prompt 提示词的经典模板如何让 Prompt 提示词做的更好?如何让 Prompt 提示词自动优化改…

ResNet模型

使用pytoch实现 1.卷积神经网络 conv2d的参数很简单 conv2d(input_channels, output_channels,kernel_size, stride, padding) 参数分别是输入通道,输出通道,卷积核大小,移动步长,填充数量。 输入通道是特征图的深度&#xff0c…

Android上的AES加密

基础算法说明 https://www.youtube.com/watch?vlnKPoWZnNNM 虽然这个视频讲的非常详细,但是涉及到具体底层算法,大致流程 1. 将数据转成HEX或者byte array 2.将数据分层一块块等大小的数据 3.将数据和key 进行一次混合,加密之后的输出&…

(vue)el-tabs标签页展示el-table动态表头表格

&#xff08;vue&#xff09;el-tabs标签页展示el-table动态表头表格 效果: 代码 <el-tabs v-if"showStatistics" type"border-card"><el-tab-panev-for"(item, index) in statisticsTable":key"index":label"item.pr…

C++游戏开发指南(新改)

目录 1. 引言 2. C的基础知识 2.1 面向对象编程与游戏开发 2.2 指针与内存管理 2.3 C和其他游戏开发语言的比较 3. 游戏引擎的选择 3.1 Unreal Engine 3.2 Unity 3.3 游戏引擎对比表 4. 游戏架构设计 4.1 ECS架构 4.2 游戏循环 5. C中的图形编程基础 5.1 DirectX…

Panasonic Programming Contest 2024(AtCoder Beginner Contest 375)题解

A - Seats 思路&#xff1a;从前往后扫&#xff0c;判断有多少个.的左右各有一个# #include<bits/stdc.h> using namespace std; #define int long longint n; string s;signed main() {cin>>n;cin>>s;int cnt0;if(s.size()<3){cout<<0<<&quo…

python中双引号和单引号的区别是什么

python3中的单引号‘’和双引号“”的作用一样。 3个单引号的作用&#xff1a; 1、表示注释 #3个单引号表示注释多行gf_of_archerzon "Wang" print("archerzon的女盆友是",gf_of_archerzon) print("archerzon的女盆友是%s"%gf_of_archerzon)2…

PolarCTF靶场[web]file、ezphp WP

[WEB]file 知识点&#xff1a;文件上传漏洞 工具&#xff1a;Burp Suite、dirsearch 方法一&#xff1a; 根据页面提示&#xff0c;先用dirsearch工具扫一扫 访问/upload.php&#xff0c;发现一个上传区 在访问/uploaded/,再点击Parent Directory&#xff0c;发现链接到首页…

NVIDIA GPGPU的通信架构解析

NVIDIA GPGPU- 通信架构 写在前面 在本部分&#xff0c;我们将深入探讨NVLink、NCCL、NVSwitch和GPGPU之间的紧密联系。重点关注通信系统及其与计算的耦合性&#xff0c;以揭示Nvlink & NVSwitch System在支持NVIDIA GPGPU大规模计算和超大算力方面的重要作用。为了更好地…

新生入门季 | 学习生物信息分析,如何解决个人电脑算力不足的问题?

随着生物信息学在科研和教育中的快速普及&#xff0c;越来越多的新生开始接触基因组测序、RNA分析等复杂计算任务。然而&#xff0c;在面对这些大规模数据时&#xff0c;个人电脑的算力往往显得捉襟见肘。你是否也在为自己的笔记本性能不足而苦恼&#xff1f; 这篇文章将为你提…

【读书笔记-《30天自制操作系统》-27】Day28

本篇的内容不少&#xff0c;主要围绕着文件操作与文字显示展开。 1. alloca函数 在开发文件操作与文字显示之前&#xff0c;需要先做一些准备&#xff0c;引入alloca函数。首先看下面的代码&#xff1a; #include <stdio.h> #include "apilib.h"#define MA…

美畅物联丨剖析 GB/T 28181 与 GB 35114:视频汇聚领域的关键协议

我们在使用畅联云平台进行视频汇聚时&#xff0c;经常会用的GB/T 28181协议&#xff0c;前面我们写了关于GB/T 28181的相关介绍&#xff0c;​ 详见《畅联云平台&#xff5c;关于GB28181你了解多少&#xff1f;》。 ​最近也有朋友向我们咨询GB 35114协议与GB/T 28181有什么不同…

基于STM32的智能运输机器人设计

引言 本项目设计了一个基于STM32的智能运输机器人&#xff0c;能够自动识别路径、避开障碍物&#xff0c;并根据用户的指令将物品运输到指定地点。该机器人集成了超声波传感器、红外传感器、无线通信模块等&#xff0c;通过STM32对电机的控制&#xff0c;实现平稳、智能的运输…

【深度学习】RNN的简单实现

目录 1.RNNCell 2.RNN 3.RNN_Embedding 1.RNNCell import torchinput_size 4 hidden_size 4 batch_size 1idx2char [e, h, l, o] x_data [1, 0, 2, 2, 3] # 输入&#xff1a;hello y_data [3, 1, 2, 3, 2] # 期待&#xff1a;ohlol# 独热向量 one_hot_lookup [[1, …

滑雪——记忆化搜索

题目 代码 //#pragma GCC optimize(3)#include <bits/stdc.h> const int N 310; using namespace std; int dx[4] {-1, 0, 1, 0}, dy[4] {0, 1, 0, -1}; int ans; int g[N][N]; int r, c; int f[N][N]; int dfs(int x, int y) {if(~f[x][y]) return f[x][y];f[x][y] …

TikTok直播带货话术分享,轻松实现销量翻倍

随着TikTok直播带货的不断壮大&#xff0c;越来越多的国内用户开始尝试使用英语进行直播带货。这不仅能够吸引国际观众&#xff0c;还能够扩大市场和提升品牌影响力。 TikTok直播通用带货话术 1. 开场白 开场时&#xff0c;主播可以用热情的语言吸引观众的注意力&#xff1a;…

闭着眼学机器学习——支持向量机分类

引言&#xff1a; 在正文开始之前&#xff0c;首先给大家介绍一个不错的人工智能学习教程&#xff1a;https://www.captainbed.cn/bbs。其中包含了机器学习、深度学习、强化学习等系列教程&#xff0c;感兴趣的读者可以自行查阅。 1. 算法介绍 支持向量机(Support Vector Mach…

AI 能否替代程序员?且听我来一唠!

关于 AI 替代程序员这事儿&#xff0c;咱得仔细唠唠。随着 AI 技术的飞速发展&#xff0c;越来越多人担心程序员会被 AI 取代。程序员会不会失业呢&#xff1f;答案是&#xff1a;没那么简单&#xff01; 首先&#xff0c;AI 确实已经可以干很多程序员的活儿了&#xff0c;比如…