目 录
摘 要 I
Abstract II
引 言 1
1 相关技术 3
1.1 ThinkPHP框架 3
1.2 MySQL数据库 3
1.3 Vue框架 3
1.4 Bootstrap 3
1.5 Highcharts 3
1.6 本章小结 4
2 系统分析 5
2.1 功能需求 5
2.2 用例分析 6
2.3 非功能需求 8
2.4 本章小结 8
3 系统设计 9
3.1 系统总体设计 9
3.2 系统详细设计 11
3.2.1 数据库设计 11
3.2.2 功能模块设计 16
3.3 本章小结 18
4 系统实现 19
4.1 开发环境 19
4.2 开发规范 19
4.3 数据模型 19
4.4 数据库实现 19
4.5 核心功能实现 20
4.5.1 数据分析实现 20
4.5.2 路段信息管理实现 21
4.5.3 规划功能实现 22
4.6 本章小结 24
5 系统测试 25
5.1 测试目的 25
5.2 测试计划 25
5.3 测试用例 25
5.3.1 查询路段信息功能 25
5.3.2 查询道路信息操作记录功能 26
5.3.3 规划功能测试 26
5.4 压力测试 27
5.5 本章小结 28
结 论 29
致 谢 30
参考文献 31
摘 要
随着科技的发展,环境问题俨然成为最受关注的问题之一,我国正在贯彻“资源节约型,环境友好型”的发展战略,除我国外,世界各国都在为节约能源做出了相应的政策。其中新能源汽车扶持政策也是各国都重点实施的。不管是以前的耗油汽车还是政府重点扶持的新能源汽车,都需要注意节约能源这一点。故设计基于PHP的动态规划汽车能耗优化系统。
本文主要介绍了汽车能耗优化的研发背景、重点解决问题。通过对汽车能耗优化的分析研究,设计、实现汽车能耗优化。本文主要运用了ThinkPHP框架技术作为汽车能耗优化系统的后端框架,采用MySQL数据库作为后台数据库。所设计开发的能耗优化系统的角色可划分为用户和管理员,本项目将系统划分为以下几个模块:规划模块、系统信息管理模块、统计分析模块、系统操作信息管理模块。通过本系统查询在速度为多少的情况下能耗最小,具有方便、快捷的优点,在很大程度上减少了能源消耗。
本系统管理员角色前端使用Bootstrap模板,用户角色使用Vue框架,前后端分离。系统自适应能力较强。通过编码实现、系统测试,实现各个功能模块都可以达到使用顺畅,不报错的目的。
关键词:ThinkPHP框架; 能耗; 信息管理
Abstract
With the development of science and technology, environmental issues have become one of the most concerned issues. China is implementing the development strategy of “resource-saving and environment-friendly”. In addition to our foreign countries, countries around the world are making corresponding efforts to save energy policy. Among them, the support policy for new energy vehicles is also implemented by all countries. Whether it is a previous fuel-consuming vehicle or a new energy vehicle supported by the government, we must pay attention to energy conservation. Therefore, a dynamic energy optimization system for automobile based on PHP is designed.
This article mainly introduces the research and development background of automobile energy consumption optimization and focuses on solving problems. Through the analysis and research on the optimization of automobile energy consumption, design and realize the optimization of automobile energy consumption. This article mainly uses the ThinkPHP framework technology as the back-end framework of the automobile energy consumption optimization system, and uses the MySQL database as the back-end database. The role of the energy consumption optimization system designed and developed can be divided into users and administrators. This project divides the system into the following modules: Planning module, system information management module, statistical analysis module, system operation information management module. Through this system, it is inquired that the energy consumption is the smallest under the condition of speed, which has the advantages of convenience and speed, and reduces the energy consumption to a large extent.
The front end of this system administrator role uses Bootstrap template, the user role uses Vue framework, and the front and back ends are separated. The system has strong adaptability. Through coding implementation and system testing, the functions of each module of the system can be realized, which can meet normal use.
Keywords:ThinkPHP framework; Energy consumption; Information management
引 言
随着科技的发展,现代生活越来越科技化、智能化,但科技发展不代表可以随意浪费能源。虽然中国将新能源汽车产业列为战略性新兴产业[1],但是这并没有从根本上解决能源的不必要浪费的问题,在汽车驾驶的一段路程当中,司机在驾驶过程中会有过度加速导致的急停,快速起步等行为,所以在时间允许的情况下,尽可能的减少能源损耗,保持匀速行驶是节省能源的关键。驾驶员在行驶过程中很少会关注驾驶之外的事情,然而生活中各种导航软件大多只是规划了路线,没有一个软件可以提示驾驶员,在时速为多少时路程能耗最少,为解决这一问题,为驾驶员提供速度信息,设计基于PHP的动态规划汽车能耗优化系统。
能耗优化系统使用PHP语言,使用ThinkPHP5.1框架,管理员角色前端使用Bootstrap技术。用户角色使用Vue框架,前后端分离,便于开发。数据库使用MySQL。数据可视化分析使用Highcharts,数据可视化的应用减少了大量的工作量,创造更大价值[2]。文章结构如下:
第1章,介绍项目的相关技术,说明能耗优化系统的核心架构ThinkPHP框架技术,介绍数据库MySQL数据库,能耗优化系统管理员前端使用Bootstrap技术、用户端使用Vue框架,使用Highcharts技术分析数据信息。
第2章,对能耗优化系统进行系统分析。基于PHP的动态规划汽车能耗优化系统管理员和用户两大角色将分为几个模块进行分析。
第3章,介绍能耗优化系统设计,分为总体设计和详细设计。按照角色划分,将能耗优化系统总体分为管理员角色和用户角色,按照模块划分系统共有规划模块、系统信息管理模块、统计分析模块、系统操作信息管理模块四大主要模块。详细设计中通过展示项目中用到的主要数据表数据库设计;介绍详细功能设计并展示设计功能用例图。
第4章,介绍能耗优化系统实现部分,该部分由四大部分组成其中包括开发环境、开发规范、核心功能实现、数据库实现。核心功能实现部分分角色和模块详细介绍包括规划模块、路段信息管理模块、统计分析模块在内的核心功能。对对应功能的界面和对应功能的相关代码的进行展示。
第5章,介绍本项目的系统测试内容。在系统的单元测试部分,需测试本项目的路段信息管理、规划、信息审核管理在内的核心功能,单元测试结束后,写明测试结果。压力测试,向系统发送较多的请求,查看系统吞吐量、响应时间等信息,写出测试结果报告。
结论,对能耗系统总体的完成情况、能耗系统的应用价值、还需要解决的问题进行总结。对系统进行整体评价,并说明系统的优点和未完善的缺点。展望该项目的后续可发展前景。
1 相关技术
1.1 ThinkPHP框架
本系统使用的是PHP语言,PHP语言已成为Web应用开发的最常用语言[3]。ThinkPHP框架是一种具有快速性,兼容性强的特点,简单的轻量级国内PHP开发框架[4]。ThinkPHP框架拥有非常好的可移植性,该框架还支持多种数据库[5]。
1.2 MySQL数据库
MySQL数据库具有快速的性能[6]。该数据库支持非常多的操作系统,能够工作在不同的操作系统上。因为MySQL数据库的服务器与PHP 都具有良好的跨平台的特点,所以开发软件时经常将这两者结合起来 [7]。
1.3 Vue框架
基于MVVM前端框架Vue.js,搭建了提高协同效率和知识汇集的在线设计开发平台系统[8],更好地服务工作人员。Vue是一款模块化、组件化的渐进式JavaScript框架,可以创建可维护性和可测试性更强的代码库,可以在现有的服务端应用中加入Vue组件,带来更丰富的交互体验[9]。
在有HTML、CSS 、JavaScript的知识基础上,可以快速上手。随着Web3.0时代的到来,前端工程化开发的形式逐渐兴起,前后端分离开发的模式更是使得MVVM模型大有用武之地[10-11]。
1.4 Bootstrap
Bootstrap是以Java脚本等技术为基础的开发结构,由美国推特的设计师马克•奥特和杰特Thortan开发,使网络开发更加快速,Bootstrap提供了美观的前端代码编写规范[12]。这些规范是由动态CSS语言less编写的,该框架一上市,就成为最流行的开放源项目,NASA的MSNBC突发新闻使用了这个程序。特别是Bootstrap提供的响应式开发功能,能够自适应于不同大小的应用程序。颇受业界的欢迎,Bootstrap 拥有庞大的用户基础和实践基地[13]。
1.5 Highcharts
Highcharts 是一个无需服务器端其它支持[14],就能够很简单便捷的添加有交互性的多种图表类型。Highcharts可以在大多数的Web开发中使用,支持多种语言[15]。Highcharts 的数据可以实现数据图表的动态更新。
通过导入所需图表的JS文件,文件中调取所需展示的某组数据,即可展示出这些数据之间的关系以及他们的变化趋势[16]。该技术不仅仅在视觉上增加了用户体验度,在后台的管理上也有效的减少了工作时间。使数据更加直观,方便查看[17]。
能耗优化系统中,管理员角色和用户角色中的数据统计部分使用图表分析。管理员可以在本系统中以图形的形式观察系统当中的一些数据,这些数据在展示的时候会更加智能,可以展示所需要对比的细节。大大降低工作复杂度提高工作效率。
1.6 本章小结
本章主要介绍了能耗优化系统中使用的ThinkPHP 5.1框架、Bootstrap技术、Vue框架等相关技术,以及存储数据使用的MySQL数据库、项目所用数据处理的数据可视化Highcharts技术等进行了说明。详细了每个技术或框架的特点。
2 系统分析
2.1 功能需求
能耗优化系统共分为两大角色:管理员角色和用户角色。共有规划模块、系统信息管理模块、统计分析模块、系统操作信息管理模块四大主要模块。包括对路段信息进行操作、广告信息进行操作、公告信息进行操作、信息审核进行操作、会员信息进行操作、操作信息进行操作等功能。
路段规划。用户在相应输入框添加起始点、目的地信息,点击规划按钮,通过后台计算将返回在的速度为多少下驾驶多少千米信息。能耗消耗最少的信息显示到界面,并在地图上绘制出行驶路线,在地图下方会显示具体行驶方法。
用户信息审核管理。在用户信息管理中的信息列表中可以看到用户提交的包括用户名、汽车品牌、汽车型号、审核状态等信息。管理员可以对待审核信息进行审核,进入审核页面可以看到用户详细信息,根据所提交内容进行审核,管理员需要选择审核成功还是选择失败,并填入审核结果理由,点击保存完成用户信息审核。
路段信息管理。在路段信息管理中包括路段信息的进行操作。在道路信息录入页中,对包括起点名称、目的地名称、总距离、详细路段信息、最高限速、距离等信息进行添加。在道路信息列表页中可以浏览路段的起点名称、目的地名称、全程总距离等信息,也可通过输入目的地名称或起点名称快速查看相关信息。点击删除按钮可以将该条数据删除,点击查看详情页可以对包括起点名称、目的地名称、总距离、详细路段信息、最高限速、距离等信息进行查看并修改。
会员信息管理。会员信息管理有会员等级信息、会员申请审核管理。会员等级信息对用户的会员等级信息进行记录存储。会员申请审核管理,对用户申请的会员资格进行审核,选择通过审核或者没有通过审核并。
道路信息操作记录。道路信息操作记录用于存储管理员对道路信息的操作记录,超级管理员权限下才可以查看。在道路信息操作记录列表可以查看到操作人名称、所操作的道路信息的起始点、所操作的道路信息的起目的地、操作类型、操作时间等信息。同时可以通过操作人名称、操作类型进行快速查询相关信息。
个人信息审核记录。个人信息审核记录用于储存管理员对个人信息的审核记录,超级管理员权限下在个人信息的审核记录列表中可以查看到审核人名称、申请人名称、审核状态、审核结果原因等信息。
会员审核记录。会员信息审核记录用于存储管理员对申请会员的审核记录,超级管理员权限下才可以查看。在会员申请审核记录中可以查看申请人名称、申请时间、审核时间、审核人名称等信息。
会员制度管理。管理员可以对会员制度信息进行操作。在会员制度录入中包括录入会员等级、会员福利、规划次数等信息。点击删除按钮会对该条数据进行删除。点击编辑即可以对会员制度进行修改。
广告信息管理。广告信息由管理员创建,管理员可以对广告信息进行操作。在广告信息列表中可以查看广告语、添加人姓名、添加时间、审核状态等信息。在本列表中点击查看按钮可以对广告信息进行编辑,具有超管权限的人点击审核通过才可以展示在系统的界面。
2.2 用例分析
通过用例分析分析汽车能耗优化系统的功能性需求,确定整体需求,对系统进行规划分析,设计合理的开发步骤,完成系统的整体设计最终取得客观性成果。
汽车能耗优化系统分为用户和管理员两个角色。用户可以通过输入起始点和目的地对线路时速进行规划、可以查看属于该用户的规划记录并可以删除规划记录、用户可以完善自己的信息、查看统计信息等。管理员分为超级管理员权限和普通管理员权限,其中对修改密码日志、公告信息审核,查看路段信息的修改记录、广告审核等只有超级管理员可以进行查看或操作。能耗优化系统总用例图如2.1所示。
图2.1 能耗优化系统总用例图
能耗优化系统管理员有路段信息管理、路段信息修改日志、修改密码日志、会员制度管理、统计分析、会员审核管理、审核记录管理、用户信息审核管理、公告信息管理、广告信息管理、查看规划记录等功能。
管理员可以对路段信息进行操作,管理员对路段进行的操作会被记录下来,超级管理员可以在道路信息修改日志中查看到所有对路段操作的相关信息。管理员可以对会员制度信息进行操作,会员制度信息用户可以在会员制度信息页中进行查看,不同的会员等级可以获得不同的规划次数。具有超级管理员权限的人员可以在会员审核记录页面中查看所有会员审核相关信息。具有超管权限的人员可以在用户信息审核记录中查看到所有用户审核相关信息。管理员创建广告信息后由超级管理审核后,广告标语发布到用户端主页面。管理员发布公告信息后,由具有超管权限的人员进行审核后,公告发布到用户端。管理员总用例图如2.2所示。
图2.2 能耗优化系统管理员用例图
能耗优化系统用户有规划、修改个人信息、申请会员、查看规划记录、查看系统图表等功能。用户可以在规划功能中输入起始点、目的地,在后台对线路信息进行计算,将计算结果返回到面板,告诉用户在速度为多少时能耗最少,并将路线绘制在地图上。查看规划记录,用户可以对自己的规划记录进行查看、删除。用户可以申请会员,根据会员等级获得比普通用户多的相应规划次数。用户可以查看自己在一个月内规划的总公里数、每周行程公里数的折线图。能耗优化系统用户总用例图如2.3所示。
图2.3 能耗优化系统用户总用例图
2.3 非功能需求
随着科技的发展市面上的各种类型的软件越来越多,要想获得更多的用户就要操作简单,容易上手。能耗优化系统没有复杂的功能设置,用户只有核心功能规划、个人中心两大模块。在规划功能中用户只要在界面输入起始点和目的地就可以规划行驶速度并将线路通过百度地图接口返回到地图上。同时模块清晰便于管理员操作,可以在左侧菜单栏快速找到想要修改的信息。项目可扩展性强,项目用户端使用前后端分离技术,便于后续的小程序、APP开发。
2.4 本章小结
本章介绍的是能耗优化系统的需求分析,包含了能耗优化系统的功能需求、非功能需求、用例分析三大部分。详细介绍了需要实现的能耗优化系统功能,以及每个功能的实现方式。通过介绍需要实现的系统功能以及每个功能的实现方式,对下一步的分析有了进一步的规划。
3 系统设计
3.1 系统总体设计
能耗优化系统整体采用了B/S架构,硬件要求低[18]。基本架构以及流程如图3.1所示。
图3.1 能耗优化系统整体架构图
能耗优化系统大概分为表示层、应用层、数据库三层[19]。表示层既用户的操作界面,在能耗优化系统中用户的前端使用Vue.js,且用户端使用前后端分离技术,便于将来的APP或其他类型的开发,前后端交互操作利用Ajax技术实现[20]。管理员管理后台使用前端使用Bootstrap模板,界面简洁清晰,容易操作。使用者可以点击功能按钮进行操作,将请求通过Ajax传递给应用层 [21]。数据库层负责数据的存储和检索,数据库层根据请求处理操作,和自己的业务逻辑规则将数据返回到表示层。
基于PHP的动态规划汽车能耗优化系统拥有两个角色,用户角色包括规划功能、个人信息管理、规划信息操作、统计分析等功能点。管理员包括路段信息操作、广告信息操作、公告信息操作、会员信息操作、信息审核操作、操作信息操作、统计分析等功能点。系统功能结构图如图3.2所示。
图3.2 能耗优化系统功能结构图
用户的规划功能,本项目的核心功能之一,在页面输入起始点、目的地点击规划,将信息返到后端进行规划计算后,将返回的规划信息返回到页面,并将路线返回到地图上,用户获取行驶路线和在速度为多时驾驶,该行程能耗最小。
用户的规划信息管理,用户点击查看规划记录可以查询到属于该用户账号规划过的信息,点击查看详细信息可以看到路线、距离、规划时间、应该行驶的时速等信息,并可以对规划路线信息进行删除。
管理员的路段信息操作,路段信息操作是基于PHP的动态规划汽车能耗优化系统的核心功能之一,输入开始地点、结束地点、路程总距离、详细信息的路段名称、详细信息的最高限速、详细信息的路段距离,点击提交保存。管理员能对路段信息列表中的所有信息进行修改,通过路段信息列表中的查看详情进入路段信息修改页,修改完成后,将数据保存提交,修改完的路段信息将显示在路段信息列表中。
管理员的广告信息管理,输入广告语,点击提交保存按钮,广告语、广告创建时间、审核状态、创建人用户名等信息会显示在广告信息列表中。点击查看详情可以对广告语进行修改,修改完信息后,将数据保存提交,修改完的信息将显示在广告信息列表中。
管理员的公告信息管理,输入公告标题,公告内容为富文本,包含对文字段落样式进行编辑、上传图片等功能。点击提交保存按钮,公告标题、公告创建时间、审核状态、创建人用户名等信息会显示在工信息列表中。点击查看详情可以对公告标题和内容进行修改,修改完信息后,将数据保存提交。修改完的信息将显示在公告信息列表中。
管理员会员信息管理,输入会员等级、规划次数点击提交保存按钮,会员等级、规划次数、创建时间、审核状态、创建人用户名等信息会显示在会员制度信息列表中。点击查看详情可以对会员制度信息进行修改,修改完信息后,点击提交保存按钮。修改完的信息将显示在会员制度信息列表中。管理员还可以查看会员信息,会员信息列表中会展示会员名称、会员等级、规划次数、最后一次申请会员时间等信息。
管理员操作记录操作,具有超管的人员可以在这些页面进行查看会员申请、个人信息、路段信息等,在审核记录列表中可以查看包括审核人、审核时间、申请人、审核状态等信息。
管理员统计分析,管理员可以查看到用户的日访问量、周访问量、总访问量、以及所有用户总规划次数、会员总数、总用户量、录入的路段总数、申请会员待审总数等信息。
3.2 系统详细设计
3.2.1 数据库设计
根据需求分析和能耗优化系统的功能需求,对项目数据库进行了数据库进行了设计,根据映射信息数据需求概念得到E-R图模型,设计绘制出的实体类关系图如图3.3所示。
图3.3能耗优化系统实体关系图
分析项目的逻辑结构,可以设计出能耗优化系统共有20个实体类,其中有8个一对多关系,有7个一对一关系,如此,得到了20张数据表。包括会员申请审核记录表、个人资料审核记录表、车辆信息表、登录记录表、用户信息操作记录表、路段信息表、路段详细信息表、修改密码日志表、规划记录表、详细规划记录信息表、用户表、会员表、会员等级表、会员制度修改信息记录表。主要数据表详情如表3.1所示。
表3.1 数据库列表
序号 表名 描述
1 dt_audit_advert 广告审核表
2 dt_audit_announcement 公告审核表
3 dt_auditapply 会员申请审核记录表
4 dt_auditrecords 个人资料审核记录表
5 dt_manage_message 路段信息操作记录表
6 dt_message 路段信息表
7 dt_message_detail 路段详细信息表
8 dt_record 规划记录表
9 dt_record_detail 详细规划记录信息表
10 dt_admin 管理员表
11 dt_pass_log 修改密码日志表
12 dt_vip_log 会员制度修改信息记录表
广告审核表(dt_audit_advert)是用来存储广告审核记录的,其中信息包括审核ID、广告ID申请用户名称、申请时间、审核人名称、审核状态。广告审核表以审核ID作为唯一主键约束。包括审核ID、广告ID申请用户名称、申请时间、审核人名称、审核状态都不为空,如表3.2所示。
表3.2 广告审核表
列名 数据类型 约束条件 描述
id INT(11) PRIMARY KEY 审核ID
name VARCHAR(45) NOT NULL 申请人名称
time CHAR(10) NOT NULL 申请时间
advertId INT(11) NOT NULL 广告ID
audit_time CHAR(10) NOT NULL 审核时间
admin_name VARCHAR(45) NOT NULL 审核人名称
status INT(11) NOT NULL 审核状态(1.待审核2.审核成功3.审核失败)
公告审核表(dt_audit_announcement)是用来存储公告审核记录的,其中信息包括审核ID、广告ID申请用户名称、申请时间、审核人名称、审核状态。广告审核表以审核ID作为唯一主键约束。包括审核ID、广告ID申请用户名称、申请时间、审核人名称、审核状态都不为空,如表3.3所示。
表3.3 公告审核记录表
列名 数据类型 约束条件 描述
id INT(11) PRIMARY KEY 审核ID
name VARCHAR(45) NOT NULL 申请人名称
time CHAR(10) NOT NULL 申请时间
announcementId INT(11) NOT NULL 公告Id
audit_time CHAR(10) NOT NULL 审核时间
admin_name VARCHAR(45) NOT NULL 审核人名称
status INT(11) NOT NULL 审核状态(1.待审核2.审核成功3.审核失败)
个人资料审核记录表(dt_auditrecords)是用来存储个人资料审核记录的,其中信息包括审核ID、申请用户名称、申请时间、审核人名称、审核时间、审核状态(1.待审核2.审核成功3.审核失败)。个人资料审核记录表以审核ID作为唯一主键约束。包括审核ID、申请用户名称、申请时间、审核人名称、审核时间、审核状态(1.待审核2.审核成功3.审核失败)都不为空,如表3.4所示。
表3.4 个人资料审核记录表
列名 数据类型 约束条件 描述
id INT(11) PRIMARY KEY 审核ID
name VARCHAR(45) NOT NULL 申请人名称
time CHAR(10) NOT NULL 申请时间
audit_time CHAR(10) NOT NULL 审核时间
admin_name VARCHAR(45) NOT NULL 审核人名称
status INT(11) NOT NULL 审核状态(1.待审核2.审核成功3.审核失败)
路段信息操作记录表(dt_manage_message)是用来存储管理员对路段信息的操作记录的,其中信息包括记录ID、操作时间、管理员ID、操作类型、路段信息ID。路段信息操作记录表以记录ID作为唯一主键约束。包括记录ID、操作时间、管理员ID、操作类型都不为空,如表3.5所示。
表3.5 用户信息操作记录表
列名 数据类型 约束条件 描述
id INT(11) PRIMARY KEY 记录ID
messageId INT(11) NOT NULL 路段信息ID
time CHAR(10) NOT NULL 操作时间
type INT(11) NOT NULL 操作类型(1.添加2.删除3.修改)
adminId INT(11) NOT NULL 管理员ID
路段信息表(dt_message)是用来存储路段信息的,其中信息包括路段信息ID、操作时间、管理员ID、起点、目的地、总距离。路段信息表以路段信息ID作为唯一主键约束。包括段信息ID、操作时间、管理员ID、起点、目的地、总距离都不为空,如表3.6所示。
表3.6 路段信息操作记录表
列名 数据类型 约束条件 描述
messageId INT(11) PRIMARY KEY 路段信息ID
time CHAR(10) NOT NULL 操作时间
adminId INT(11) NOT NULL 管理员ID
start VARCHAR(45) NOT NULL 起点
end VARCHAR(45) NOT NULL 目的地
distanceTotal DECIMAL(10,3) NOT NULL 总距离
路段详细信息表(dt_message_detail)是用来存储路段详细信息的,其中信息包括详细信息ID、路段信息ID、路段名称、速度、距离。路段详细信息表以详细信息ID作为唯一主键约束。包括段详细信息ID、路段信息ID、路段名称、速度、距离都不为空,如表3.7所示。
表3.7用户信息操作记录表
列名 数据类型 约束条件 描述
detailId INT(11) PRIMARY KEY 详细信息ID
messageId INT(11) NOT NULL 路段信息ID
speed INT(11) NOT NULL 速度
roadName VARCHAR(45) NOT NULL 路段名称
distance DECIMAL(10,3) NOT NULL 距离
规划记录表(dt_record)是用来存储规划记录信息的,其中信息包括记录信息ID、规划时间、用户ID、起点、目的地、总距离。规划记录表以路段信息ID作为唯一主键约束。如表3.8所示。
表3.8 规划记录表
列名 数据类型 约束条件 描述
recordId INT(11) PRIMARY KEY 记录信息ID
time CHAR(10) NOT NULL 操作时间
userId INT(11) NOT NULL 用户ID
start VARCHAR(45) NOT NULL 起点
end VARCHAR(45) NOT NULL 目的地
totalKm DECIMAL(10,3) NOT NULL 总距离
详细规划记录信息表(dt_record_detail)是用来存储路用户规划详细规划记录信息的,其中信息包括详细信息ID、记录ID、路段名称、速度、距离。路段详细信息表以详细信息ID作为唯一主键约束。包括段详细信息ID、记录ID、路段名称、速度、距离都不为空,如表3.9所示。
表3.9 详细规划记录信息操作记录表
列名 数据类型 约束条件 描述
id INT(11) PRIMARY KEY 详细信息ID
recordId INT(11) NOT NULL 记录ID
speed INT(11) NOT NULL 速度
roadName VARCHAR(45) NOT NULL 路段名称
distance_detail DECIMAL(10,3) NOT NULL 距离
管理员表(dt_admin)是用来存储管理员信息的,其中信息包括管理员ID、管理员名称、登录密码。管理员表以管理员ID作为唯一主键约束。表内管理员ID、管理员名称、登录密码均不能为空,如表3.10所示。
表3.10 管理员表
列名 数据类型 约束条件 描述
adminId INT(11) PRIMARY KEY 管理员ID
admin_name VARCHAR(45) NOT NULL 管理员名称
password VARCHAR(45) NOT NULL 登录密码
会员申请记录表(dt_apply)是用来存储会员申请记录的,其中信息包括申请ID、申请用户名称、申请时间、会员等级、可规划次数。会员申请记录表以申请ID作为唯一主键约束。包括申请ID、申请用户名称、申请时间、会员等级、可规划次数都不为空,如表3.11所示。
表3.11 会员申请记录表
列名 数据类型 约束条件 描述
applyId INT(11) PRIMARY KEY 申请ID
name VARCHAR(45) NOT NULL 申请人名称
time CHAR(10) NOT NULL 申请时间
level INT(11) NOT NULL 会员等级
conut INT(11) NOT NULL 可规划次数
修改密码日志表(dt_pass_log)是用来存储管理员和用户修改密码记录的,其中信息包括修改密码ID、原密码、新密码、修改人ID、类型(管理员、用户)、修改时间。修改密码日志表、表以修改密码ID作为唯一主键约束。包括修改密码ID、原密码、新密码、修改人ID、类型(管理员、用户)、修改时间都不为空,如表3.12所示。
表3.12 修改密码日志表
列名 数据类型 约束条件 描述
id INT(11) PRIMARY KEY 修改密码ID
old_pass VARCHAR(45) NOT NULL 原密码
new_pass VARCHAR(45) NOT NULL 新密码
time CHAR(10) NOT NULL 修改时间
userId INT(11) NOT NULL 修改人ID
type INT(11) NOT NULL 类型(1.管理员2.用户)
会员制度修改信息记录表(dt_vip_log)是用来存储管理员会员制度修改信息记录的,其中信息包括修改制度ID、修改人名称、修改的制度的ID、修改时间、操作类型。会员制度修改信息记录表以修改密码ID作为唯一主键约束。包括修改制度ID、修改人名称、修改的制度的ID、修改时间、操作类型都不为空,如表3.13所示。
表3.13 会员制度修改信息记录表
列名 数据类型 约束条件 描述
id INT(11) PRIMARY KEY 修改制度ID
admin_name VARCHAR(45) NOT NULL 修改人名称
vip_levelId INT(11) NOT NULL 修改的制度的ID
time CHAR(10) NOT NULL 修改时间
type INT(11) NOT NULL 操作类型(1.添加2.修改3.删除)
3.2.2 功能模块设计
路段信息管理。管理员登录后台,选择左侧菜单栏中的路段信息管理,在路段信息录入中输入起始点、目的地、路程总距离、详细信息中的路段名称、最高限速、路段距离等信息以后,点击保存提交若成功路段信息将添加到数据库中,若失败返回路段信息录入界面。点击列表中的查看详情,可以对路段信息进行修改,点击保存提交若成功将更新数据库中的路段信息,若失败返回路段信息修改界面。点击列表中的删除按钮,若成功将更新数据库中的路段信息,返回失败消息。如图3.4所示。
图3.4路段信息操作流程图
广告信息操作。管理员登录后台,选择左侧菜单栏中的广告信息管理,在广告信息录入中输入广告标语后,点击保存提交若成功,广告标语、添加标语人、添加广告标语时间等信息将添加到数据库中,若失败返回广告信息录入界面。点击列表中的查看详情,可以对广告信息进行修改,点击保存提交若成功将更新数据库中的广告信息,若失败返回广告信息修改界面。点击列表中的删除按钮,若成功将更新数据库中的广告信息,返回失败消息。如图3.5所示。
图3.5广告操作流程图
公告信息操作。管理员登录后台,选择左侧菜单栏中的公告信息管理,在公告信息录入中输入公告标题、公告内容后,点击保存提交若成功公告标题、公告内容、公告创建人、创建时间等信息将添加到数据库中,若失败返回公告信息录入界面。点击列表中的查看详情,可以对公告信息进行修改,点击保存提交若成功将更新数据库中的公告信息,若失败返回广告信息修改界面。点击列表中的删除按钮,若成功将更新数据库中的公告信息,返回失败消息。如图3.6所示。
图3.6公告操作流程图
3.3 本章小结
本章主要介绍了能耗优化系统的总体设计和详细设,在详细设计中主要介绍了数据库的设计,将字段名、字段类型、约束类型、描述等一一进行了介绍。通过组织架构图、E-R图更加清晰明了的展示了项目的功能需求和数据表结构。
4 系统实现
4.1 开发环境
能耗优化系统使用ThinkPHP框架,分别使用Bootstrap技术和Vue框架完成管理后台和用户的前端框架的搭建,使用PHP语言进行代码编写。数据存储操作选用MySQL对系统的数据进行存储。
4.2 开发规范
能耗优化系统遵循ThinkPHP 5开发规范,所有应用文件都建在application目录下,controller文件夹放控制器的文件命名为XX.php,控制器名称首字母需要大写。View文件夹放的视图文件命名为XX.html。View文件夹下的小文件对应控制器的名称,XX.html文件对应控制器下的方法。
4.3 数据模型
动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。这就是动态规划法的基本思路。具体的动态规划算法多种多样,但它们具有相同的填表格式。模型示意图如图4.1所示
图4.1模型示意图
4.4 数据库实现
在第三章数据库设计中已介绍,能耗优化系统共使用管理员表、广告表、公告表、会员申请记录表、广告审核表、公告审核表、会员申请审核记录表、个人资料审核记录表、车辆信息表、登录记录表、用户信息操作记录表、路段信息表、路段详细信息表、修改密码日志表、规划记录表、详细规划记录信息表、用户表、会员表、会员等级表、会员制度修改信息记录表等20张表。如图4.2所示。
图4.2 能耗优化系统数据表
4.5 核心功能实现
4.5.1 数据分析实现
能耗优化系统分管理员角色界面采用简单的白色、绿色、黑色搭配,简洁又不失活力,登录后进入主页面。主页为数据分析页,其中包含用户总量、用户信息待审核量、总访问量、总规划次数、总会员数、路段信息总数、日访问折线图、周访问折线图等数据可视化图表,管理员可以直接观看到数据对比,掌握数据变化情况。如图4.3所示。
图4.3 能耗优化系统管理员主页
管理员进入点击主页,此时通过url访问控制器中对应方法,来对数据库进行操作,再将获得数据渲染到前端页面引用的Highcharts.js模板上,从而展现数据可视化图表。日访问量图表实现代码如下。
w
e
e
k
d
a
t
a
t
i
m
e
=
d
b
(
′
l
o
g
′
)
−
>
w
h
e
r
e
(
′
t
y
p
e
′
,
2
)
−
>
w
h
e
r
e
T
i
m
e
(
′
t
i
m
e
′
,
′
b
e
t
w
e
e
n
′
,
[
week_data_time = db('log')->where('type', 2) ->whereTime('time', 'between', [
weekdatatime=db(′log′)−>where(′type′,2)−>whereTime(′time′,′between′,[week_begin_time,
w
e
e
k
e
n
d
t
i
m
e
]
)
−
>
c
o
l
u
m
n
(
′
t
i
m
e
′
)
;
f
o
r
e
a
c
h
(
week_end_time])->column('time'); foreach (
weekendtime])−>column(′time′);foreach(today_data_time as KaTeX parse error: Expected '}', got 'EOF' at end of input: … if (today_v <= $today_4_h_time) {
KaTeX parse error: Expected 'EOF', got '}' at position 25: …+; }̲ elseif (today_v <= $today_8_h_time) {
KaTeX parse error: Expected 'EOF', got '}' at position 25: …+; }̲ elseif (today_v <= $today_12_h_time) {
KaTeX parse error: Expected 'EOF', got '}' at position 26: …+; }̲ elseif (today_v <= $today_16_h_time) {
KaTeX parse error: Expected 'EOF', got '}' at position 27: …+; }̲ elseif (today_v <= $today_20_h_time) {
$count16_20++;
} else { $count20_24++; }}
4.5.2 路段信息管理实现
点击右侧道路信息管理下的路段信息列表系统就会获取系统当中的路段信息,并将信息显示到页面上,点击列表中的查看详情可以查看详细信息并对其进行修改。点击删除按钮系统会提示删除成功,则完成信息的删除。点击路段信息录入可以对信息进行录入。实现效果如图4.4、4.5所示。
图4.4 能耗优化系统路段信息列表
图4.5 能耗优化系统路段信息录入
将起点、目的地、路段总距离、路段详细信息填写到对应输入框,提交的数据通过Ajax将数据传到后端控制器,通过获取数据对数据库进行操作,将信息添加到数据表中。实现代码如下。
$data = [
‘start’ => $input[‘start’],
‘end’ => $input[‘end’],
‘distanceTotal’ => $input[‘distanceTotal’],
‘adminId’ => session(‘adminId’),
‘time’ => time()
];
g
e
t
N
e
w
U
i
d
=
D
b
:
:
n
a
m
e
(
′
m
e
s
s
a
g
e
′
)
−
>
i
n
s
e
r
t
G
e
t
I
d
(
getNewUid = Db::name('message')->insertGetId(
getNewUid=Db::name(′message′)−>insertGetId(data);
foreach ($road as $k => $v) {
$row = [
‘messageId’ => $getNewUid,
‘roadName’ => $v[‘roadName’],
‘speed’ => $v[‘speed’],
‘distance’ =>
v
[
′
d
i
s
t
a
n
c
e
′
]
,
]
;
D
b
:
:
n
a
m
e
(
′
m
e
s
s
a
g
e
d
e
t
a
i
l
′
)
−
>
i
n
s
e
r
t
(
v['distance'], ]; Db::name('message_detail')->insert(
v[′distance′],];Db::name(′messagedetail′)−>insert(row); } // 将修改记录保存到manage_message表中
$manage = [
‘messageId’ =>
g
e
t
N
e
w
U
i
d
,
′
a
d
m
i
n
I
d
′
=
>
s
e
s
s
i
o
n
(
′
a
d
m
i
n
I
d
′
)
,
′
t
i
m
e
′
=
>
t
i
m
e
(
)
,
′
t
y
p
e
′
=
>
1
,
]
;
D
b
:
:
n
a
m
e
(
′
m
a
n
a
g
e
m
e
s
s
a
g
e
′
)
−
>
i
n
s
e
r
t
(
getNewUid, 'adminId' => session('adminId'), 'time' => time(), 'type' => 1, ]; Db::name('manage_message')->insert(
getNewUid,′adminId′=>session(′adminId′),′time′=>time(),′type′=>1,];Db::name(′managemessage′)−>insert(manage);
4.5.3 规划功能实现
规划功能是本项目的核心功能,用户在页面输入起点和目的地,点击规划按钮,可以在界面看到在时速为多少时能耗,并将行驶线路返回到地图上。如图4.6、4.7所示。
图4.6 能耗优化系统规划前
图4.7 能耗优化系统规划后
用户在页面输入起点、目的地,点击提交按钮,数据通过Ajax传给控制器,控制器通过获取数据对数据库信息进行操作,并将信息渲染到前端页面。实现次功能是将动态规划的数学思想与百度地图相结合。本项目延用动态规划思想的优点,将某路段化简为多个路段的结合,系统会将每次规划的结果存入数据库,路段在规划的时候会采用这些路段的最优解,达到快速规划的效果。最终将返回数据传给百度地图API接口,从而将规划路线图绘制到地图上。实现代码如下。
// 实现规划功能
for ($j = 0; $j < 1; $j–) {
$mi =
m
i
+
1
;
i
f
(
mi + 1; if (
mi+1;if(key + 1 != KaTeX parse error: Expected '}', got 'EOF' at end of input: … for (i = $key + 1; $i < $len; KaTeX parse error: Expected '}', got 'EOF' at end of input: … if (min >=
m
e
s
s
a
g
e
[
message[
message[i][‘speed’]) { //将第一个默认为最小的值和数组中的所有值比较
$min =
m
e
s
s
a
g
e
[
message[
message[i][‘speed’];
$key = $i;
$name =
m
e
s
s
a
g
e
[
message[
message[i][‘roadName’];
}
}
$data[] = [
‘min’ => $min,
‘name’ => $name,
‘key’ => $key,
];
$min = $message[0]; //默认情况下数组的第一个值是最小的
// 查询出最小速度之前的所有数据
$distance = Db::name(‘message_detail’)
->where(‘messageId’,
m
e
s
s
a
g
e
I
d
[
′
m
e
s
s
a
g
e
I
d
′
]
)
−
>
l
i
m
i
t
(
messageId['messageId']) ->limit(
messageId[′messageId′])−>limit(key + 1)
->select();
// 对数组进行截取
m
e
s
s
a
g
e
[
0
]
=
a
r
r
a
y
d
i
f
f
k
e
y
(
message[0] = array_diff_key(
message[0]=arraydiffkey(message, $distance);
$distance_total = 0;
d
i
s
t
a
n
c
e
t
o
t
a
l
s
=
0
;
f
o
r
e
a
c
h
(
distance_totals = 0; foreach (
distancetotals=0;foreach(arr as $k => $v) {
$flag = [
‘recordId’ => $getNewUid,
‘roadName’ => $v[‘name’],
‘distance_detail’ => $v[‘distance’],
‘speed’ => 0000,
];
Db::name(‘record_detail’)->where(array(‘id’ =>
g
e
t
N
e
w
U
i
d
)
)
−
>
i
n
s
e
r
t
(
getNewUid))->insert(
getNewUid))−>insert(flag);
}
return AjaxReturn(‘10000’, [
‘list’ => $arr,
‘start’ => $start,
‘end’ => $end,
], ‘’);
}
4.6 本章小结
本章主要介绍了开发环境使用、开发规范、数据库设计以及数据分析、路段信息管理、规划核心功能的实现和实现代码。介绍了项目的开发环境PhpStorm、HBuilderX,前端使用Bootstrap模板、Vue.js,数据库使用MySQL数据库。并且详细介绍了系统的核心功能。
5 系统测试
5.1 测试目的
每一个项目的完成测试都是必不可少的环节[22],测试是为了提高软件的开发质量,同时也是为了提高项目的稳定性、实用性,给用户带来更好的用户体验,就要在生产环节将项目的漏洞修复和完善好[23]。能耗优化系统也避免不了会有各种各样的漏洞,故能耗优化系统也需要进行测试。
5.2 测试计划
功能测试也就是黑盒测试[24]。详细测试软件执行的内部过程是否完全按照项目需求正常运行[25]。在本次能耗优化系统的测试计划中,按照项目需求测试了系统中的所有功能,系统可以正常运行,最终测试目的是要达到系统功能可以正常使用,不会提示错误。查询路段信息功能、查询道路信息操作记录功能、规划功能为例,如表5.1所示。
表5.1 测试计划安排表
功能 测试内容 完成标准
查询路段信息功能 通过系统前端界面,测试查询路段信息功能,是否可以正常的进行。 可以正常输入查询条件,不会提示错误,并且可以正常显示查询结果。
查询道路信息操作记录功能 通过系统前端界面,测试查询道路信息操作记录功能是否可以正常的进行。 可以正常输入查询条件,不会提示错误,并且可以正常显示查询结果。
规划功能 通过系统前端界面,测试规划功能是否可以正常的进行。 可以正常输入规划条件,并且可以正常显示规划结果。
5.3 测试用例
5.3.1 查询路段信息功能
管理员登录能耗优化系统,进入首页后,点击左侧菜单栏的路段信息管理,点击下拉框,进入路段信息列表,不输入直接点击查询按钮,所有路段信息都是显示在路段信息列表中,输入起点,点击查询可以查询到符合条件的信息,删除起点输入框内容。在目的地查询框输入要查询的信息后,点击查询,可以查询到符合条件的信息。起点和目的地输入框内同时输入信息,查询失败,不能查询到相关信息。
测试该功能时,计划在路段信息列表上方依次输入可查询的信息进行查询,查看路段信息列表中展示的信息是否是符合查询条件,写出预期成果,记录实际取得结果,将取得的真实结果与预期结果做比较,看是否与之相符。查询路段信息功能的结果如表5.2所示。
表5.2 能耗优化系统查询路段信息功能测试表
编号 测试方法 预期结果 实际结果
1 直接点击查询按钮。 在路段信息列表中展示出全部的路段。 路段信息列表中展示全部信息。
2 输入起点。 路段信息列表中展示与该起点有关的全部信息。 路段信息列表中展示与该起点有关的全部信息。
3 输入目的地。 路段信息列表中展示与该目的地有关的全部信息。 路段信息列表中展示与该目的地有关的全部信息。
4 同时输入起点、目的地。 查询失败。 查询失败。
5.3.2 查询道路信息操作记录功能
管理员登录能耗优化系统,进入首页后,点击菜单栏按钮,进入路段信息操作页面,点击操作类型下拉框选择删除、录入、添加中的一个,点击查询按钮可以查询到符合条件的操作记录信息。什么都不输入的情况下,点击查询按钮,所有信息都会显示在列表中。同时输入操作人名称、操作类型,点击查询按钮,查询失败。
测试该功能时,计划在路段信息操作列表上方依次输入可查询的信息进行查询,查看路段信息列表中展示的信息是否是符合查询条件,写出预期成果,记录实际取得结果,将取得的真实结果与预期结果做比较,看是否与之相符。查询路段操作信息记录功能的结果如表5.3所示。
表5.3 能耗优化系统查询路段操作信息记录测试表
编号 测试方法 预期结果 实际结果
1 直接点击查询按钮。 在查询路段操作信息记录列表中展示出全部的操作信息记录。 在查询路段操作信息记录列表中展示出全部的操作信息记录。
2 输入操作人名称。 查询成功,路段操作信息记录列表中展示出全部的该操作人操作信息记录。 路段操作信息记录列表中展示出全部的该操作人操作信息记录。
3 输入操作类型。 查询成功,路段操作信息记录列表中展示出全部的该操做类型的操作信息记录。 路段操作信息记录列表中展示出全部的该操做类型的操作信息记录。
4 同时输入操作人名称和操作类型 查询失败 查询失败
5.3.3 规划功能测试
用户登录能耗优化系统,选择规划,输入起点、目的地,点击规划按钮,建议在速度为多少时能耗最少的提示字样会显示输入框下方。在地图中确定起点,规划路线将显示在地图上。在不输入起点、目的地信息或只输入其中一个的情况下规划失败。
在测试该功能时,计划在规划界面中依次输入的信息后进行规划,写出预期成果,将取得的真实成果与预期成果做比较,看是否与之相符。测试查询团游功能结果如表5.4所示。
表5.4 能耗优化系统规划功能测试表
编号 测试方法 预期结果 实际结果
1 直接点击规划。 规划失败。 规划失败。
2 只输入起点。 规划失败。 规划失败。
3 只输入目的地。 规划失败。 规划失败。
4 同时输入始点、目的地。 规划成功,信息显示在页面,路线显示在地图。 规划成功,信息显示在页面,路线显示在地图。
5.4 压力测试
本系统采用Apache组织开发的Apache JMeter作为能耗优化系统进行压力测试。解压Apache JMeter后配置环境变量,打开bin文件夹中的jmeter.bat进入测试程序界面。第一步新建线程集合设置每一个线程数为500,将循环的时间和次数设置为1;建立新的请求,将请求设置为HTTP请求,服务器名称为localhost、端口号为8080;HTTP请求方法为post方法,路径为能耗优化系统路径:http://dong.dev.com/admin/login/login、内容编码为utf-8、提交数据格式为json。如图5.1所示。
图5.1 能耗优化系统压力测试环境
在本次压力测试中共发送了500个请求,由于服务器性能的问题以及浏览器性能问题,平均响应时间偏高,仍需要进一步改善。吞吐量1967.5/min,根据测试,可得出能耗优化系统的资源得到了充分的利用。压力测试结果如图5.2所示。
图5.2 能耗优化系统压力测试图形显示结果
5.5 本章小结
本章主要对能耗优化系统进行测试,制定测试计划,完成查询路段信息功能、查询路段信息操作记录功能、规划功能的测试,并对能耗优化系统进行压力测试。保证能耗优化系统的正常运行。
结 论
如今已经是信息化时代,人们对便捷的生活需要越来越高。同时更加提倡节能环保,节约环保可以表现在各个方面。本系统就是针对节能环保的观点,在导航功能的基础上,添加提醒用户在时速为多少时能耗最少这一个性功能。本分首先对能耗优化系统的开发背景及意义进行分析,对能耗优化系统需要解决的问题进行分析。最后对能耗优化系统设计和实现方法进行说明。目前能耗优化系统已经全部完成,基本满足用户使用和管理员管理。
本文的能耗优化系统在设计时充分考虑了扩展性、实用性和可维护性。采用前后端分离的用户端便于后续的开发。所采用的ThinkPHP框架具有很好的跨平台性。实际应用效果体现了本系统设计的合理性与有效性。
能耗优化系统的设计与实现可以与导航相结合,可以帮助减少一些能源消耗。由于时间和实际能力问题,本系统还有许多的不足之处。比如用户的体验度还可以更高,规划方式也有待改进。
致 谢
学习就是就是一个不断进步的过程,经过不断的学习和老师的悉心指导,我终于完成了我的毕业设计项目的制作。从选题开始,每一步都在尝试新的挑战,尝试接触新的知识,在大学四年的学习生活中,本项目是我所做过的使用的技术最多的。从学习项目前后端分离,到学习调用用百度地图,都是在不断的解锁新的知识点。在不断的进步中感受着知识带来的喜悦。
在这里,首先要感谢的是计算机与科学技术专业老师们的谆谆教导,一步步的将我们引向一个更好的自己。在此特别感谢我的指导老师陈思老师和董超老师。从毕业设计的选题开始,老师们就对选题方向给了建设性的意见和建议。到开题报告、论文撰写给了我许多改善意见,再到整个项目的设计和完成过程中,又教会了我许多知识点,避免我走了很多弯路,从而促使我完成了毕业设计项目和论文。再次诚挚感谢陈思老师和董超老师对我付出的心血和精力。同时感谢这四年同学们对我的不管在学习上还是生活上的帮助。
参考文献
[1]刘斌,刘可歆,石红,方海峰,周玮.2021—2035年中国新能源乘用车市场预测——基于离散选择模型的分析[J].中国经贸导刊(中),2020(05):44-49
[2]胡雯清,郝方方.大数据时代企业财务数据可视化的应用现状与未来趋势分析[J].中国市场,2020(15):187+195
[3]Amine Moutaouakkil,Samir Mbarki. Generating a PHP Metamodel using Xtext Framework[J]. Procedia Computer Science,2020,170
[4]Liu Ye,Sun Zhiyong, Chen JiaHui. A Film Criticism Website Based on “ThinkPHP”[J]. International Journal of Advanced Pervasive and Ubiquitous Computing (IJAPUC),2017,9(1)
[5]万全. 基于ThinkPHP框架的团购网站的设计与实现[D].首都经济贸易大学,2018
[6]马海苓. 基于PHP和MYSQL技术的网络教学平台系统的设计与实现[D].齐鲁工业大学,2016
[7]Yan Zhang.Web System Architecture Design[J].Journal of Communication and Computer,USA,2005,12(7):342-351
[8]王璐,崔保磊,潘红霞,赵莉,田宇.基于Vue.js的在线设计开放平台研究与实现[J].信息技术与信息化,2019(11):168-170
[9]吕英华.渐进式JavaScript框架Vue.js的全家桶应用[J].电子技术与软件工程,2019(22):39-40
[10]毛炎. 基于Vue.js框架的Web方言地图的设计与开发[D].武汉大学,2018
[11]潘彦. 前端组件化与后端接口自动化构建工具研究[D].北京邮电大学,2018
[12]闫海玉. 基于Bootstrap技术的培训机构综合业务管理系统的设计与实现[D].山东大学,2019
[13]花宁宁,韩家忠,田洪根.基于B/S架构的实验室仪器管理系统的设计与实现[J].山东化工,2020,49(06):213-215
[14]王虎.基于AJAX+Highcharts技术的脱硝催化剂大数据可视化平台开发实例[J].工业控制计算机,2019,32(02):123-124+148
[15]Jin Wang,Min Chen,Guonian Lü,Songshan Yue,Yongning Wen,Zhenxu Lan,Shuo Zhang. A data sharing method in the open Web environment: Data sharing in hydrology[J]. Journal of Hydrology,2020,587
[16]杨士卿.《动态网页设计》课程Highcharts数据可视化教学设计[J].电脑知识与技术,2018,14(14):165-167
[17]赵建勋.Highcharts在动态数据监测系统中的开发与应用[J].计算机与网络,2018,44(16):69-71
[18]原方亮. 基于Bootstrap的H5响应式网站开发技术研究[D].郑州大学,2018
[19]王建,罗政,张希,张梦琪,张科,马文成.Web项目前后端分离的设计与实现[J].软件工程,2020,23(04):22-24
[20]罗启强. 基于PHP+MySQL的高校教务管理系统的设计与实现[D].吉林大学,2016
[21]应昶. 基于PHP的考试培训系统设计与实现[D].浙江工业大学,2014
[22]韩韬.软件测试策略和测试方法的应用[J].信息记录材料,2018,19(11):97-98
[23]李建伟. 实时公交查询系统服务器端的设计与实现[D].北京邮电大学,2019
[24]范海燕.动态软件测试中的白盒测试和黑盒测试探讨[J].南方农机,2018,49(18):76
[25]程鲁川. 基于ThinkPHP框架的职工健康素养数据管理系统设计及实现[D].山东师范大学,2019