基于python的新能源汽车充电管理系统的设计与实现
目录
摘 要
Abstract
第一章 绪 论
1.1 研究背景及意义
1.2 国内外研究现状
1.3 论文组织结构
第二章 关键技术
2.1 MySQL简介
2.2 Python
2.3 Django框架
2.4 Pycharm简介
2.5 B/S模式
第三章 新能源汽车充电管理系统分析
3.1 系统可行性分析
3.1.1 技术可行性
3.1.2 经济可行性
3.1.3 社会可行性
3.1.4 操作可行性
3.2 系统功能分析
3.2.1 功能性分析
3.2.2 非功能性分析
3.3 系统用例分析
3.4 系统总体流程设计
3.4.1 数据开发流程
3.4.2 用户登录流程
3.4.3 系统操作流程
3.4.4 添加信息流程
3.4.5 修改信息流程
3.4.6 删除信息流程
第四章 新能源汽车充电管理系统总体设计
4.1 系统架构设计
4.2 系统模块设计
4.3 数据库设计
4.3.1 数据库概念结构设计
4.3.2 数据库逻辑结构设计
第五章 新能源汽车充电管理系统详细设计与实现
5.1 前端首页模块
5.2 用户注册模块
5.3 登录模块
5.4 前端注册用户功能模块
5.4.1 充电资讯模块
5.4.2 充电桩信息模块
5.4.3 我的模块
5.5 后端管理员功能模块
5.5.1 系统用户模块
5.5.2 充电桩分类管理模块
5.5.3 充电信息管理模块
5.5.4 充电费用管理模块
5.5.5 用户积分管理模块
5.5.6 报修信息管理模块
第六章 系统测试
6.1 系统测试的目的
6.2 测试用例
6.2.1 长租测试
6.2.2 创建数据测试
6.2.3 修改数据测试
6.2.4 查询数据测试
6.3 测试结果
结 论
参考文献
致 谢
摘要
本系统旨在设计并实现一个基于Python的新能源汽车充电管理平台,旨在为用户提供便捷的充电服务与信息管理,同时为管理员提供高效的后台管理功能。平台分为注册用户与管理员两个主要角色,用户可以通过平台查看充电桩信息、进行充电操作、查看充电历史、支付费用并管理积分等;管理员则可通过后台对充电桩进行分类与信息管理、用户数据进行管理、处理报修请求、调整充电费用等。系统的设计基于Python语言的强大功能和灵活性,结合了数据库技术,确保平台数据的稳定性与高效性。此外,平台还注重适应不同用户需求,提供了针对老年用户的适老化设计,使得系统的使用更加人性化。
通过本系统的实现,能够有效地提高充电桩的管理效率,优化用户充电体验,减少信息不对称现象,并提供透明的收费体系。充电桩管理模块可以实时更新各个充电站的状态与位置,使用户能够更快捷地找到空闲充电桩。管理员可以通过后台系统对用户进行管理、充电桩进行维护及调度,从而实现对系统的全面监控和数据管理。平台还通过智能化的调度系统,实现了充电桩资源的合理配置,减少了用户等待时间,提升了服务效率。综上所述,基于Python开发的新能源汽车充电管理系统能够有效提升充电服务的智能化水平,推动新能源汽车行业的发展,满足用户日益增长的充电需求。
关键词:新能源汽车充电管理系统;Django框架;Web技术;Python语言
This system aims to design and implement a new energy vehicle charging management platform based on Python, which aims to provide users with convenient charging services and information management, and provide administrators with efficient background management functions. The platform is divided into two main roles : registered users and administrators. Users can view charging pile information, carry out charging operation, view charging history, pay fees and manage points through the platform. Administrators can classify and manage charging piles, manage user data, process repair requests, and adjust charging costs through the background. The design of the system is based on the powerful function and flexibility of Python language, combined with database technology to ensure the stability and efficiency of platform data. In addition, the platform also focuses on adapting to the needs of different users, providing an aging design for elderly users, making the use of the system more humane.
Through the implementation of this system, it can effectively improve the management efficiency of charging piles, optimize the user charging experience, reduce information asymmetry, and provide a transparent charging system. The charging pile management module can update the status and location of each charging station in real time, so that users can find idle charging piles more quickly. The administrator can manage the users, maintain and schedule the charging piles through the background system, so as to realize the comprehensive monitoring and data management of the system. The platform also realizes the rational allocation of charging pile resources through the intelligent scheduling system, reduces the waiting time of users and improves the service efficiency. In summary, the new energy vehicle charging management system developed based on Python can effectively improve the intelligent level of charging services, promote the development of the new energy vehicle industry, and meet the increasing charging needs of users.
Keywords:new energy vehicle charging management system ; django framework ; web technology ; python language
第一章绪论
1.1研究背景及意义
随着新能源汽车的普及,充电基础设施的建设与管理成为了行业发展的重要组成部分。充电桩的智能化调度与故障诊断技术对于提升充电系统的效率和安全性至关重要。近年来,关于新能源汽车充电系统的研究不断深入,提出了多种智能化调度与故障排除的解决方案。充电桩的故障诊断与维护技术的提升,不仅有助于保障用户的正常充电需求,也能有效减少系统的维护成本[1]。与此同时,动力电池的安全管理问题同样受到关注,过充电等问题会影响电池的寿命及充电系统的稳定性,因此合理的充电策略和安全管理措施是提升充电服务质量的关键[2]。
在充电桩调度方面,智能调度系统的研究取得了显著进展,能够根据用户需求和充电桩状态进行优化资源分配,降低用户等待时间[3]。此外,升压充电系统的控制技术也逐渐成为研究热点,通过模型预测控制技术有效提高了充电系统的性能和稳定性[4]。在节能设计方面,越来越多的研究表明,优化充电系统的能效和降低能源消耗对于整个电动汽车产业链的可持续发展具有重要意义[5]。此外,充电系统的维护与故障排除技术也是保障系统稳定运行的核心内容,相关研究为提升充电桩的维修效率和减少故障发生提供了技术支持[6]。随着新能源汽车技术的进步,底盘结构及相关故障诊断技术的提升,对充电系统的安全性和可靠性提供了进一步保障[7]。这些研究成果表明,新能源汽车充电管理系统的发展不仅关乎技术的提升,也直接影响到行业的健康发展和用户体验[8]。
1.2国内外研究现状
在国外,新能源汽车充电管理系统的研究与应用逐渐得到广泛关注。许多国家已经建设了完善的充电基础设施,致力于提升充电服务的效率与安全性。以美国为例,其充电网络的建设不仅强调充电桩的高效部署,还注重充电过程的智能调度和用户体验的优化。一些充电管理平台已实现充电桩的实时监控与状态更新,使得用户能够快速找到空闲充电桩,减少了等待时间。
此外,国外的充电管理系统还在提升充电设施的安全性和稳定性方面有所突破。例如,在一些欧洲国家,充电桩的设计和管理规范日趋完善,特别是在充电桩的维护和故障预警机制方面,能够减少故障发生率并保证充电过程的安全。这些系统通常会结合电池性能监测、充电桩状态检测等手段,实时对充电设施进行状态监控,以避免过度充电等问题,延长电池使用寿命并确保用户的安全。这些研究成果为我国新能源汽车充电管理系统的设计和实施提供了有力的参考依据。
1.3论文组织结构
本论文共分为七个主要章节,具体结构如下:
1. 绪论:介绍研究背景与意义,回顾国内外研究现状,并概述论文的组织结构。
2. 相关技术介绍:详细介绍与本研究相关的技术,包括Python语言、B/S框架、Django框架和MySQL数据库。
3. 需求分析:对系统的功能需求和非功能需求进行分析,明确用户和管理员的需求,并进行可行性分析,包括技术、操作和经济可行性。
4. 系统设计:涵盖系统架构设计、系统模块设计,并进行数据库的概念设计与表设计。
5. 系统实现:具体描述各个功能模块的实现过程,展示系统如何根据需求进行开发。
6. 系统测试:阐述测试的目的,分析测试结果并得出结论,以验证系统的稳定性和功能完整性。
7. 总结:总结研究的主要成果和贡献,指出存在的不足及未来的研究方向。
第二章关键技术
2.1MySQL简介
MySQL是一个关系型数据库管理系统(RDBMS),由瑞典的MySQL AB公司开发,现在属于Oracle公司旗下产品。它使用结构化查询语言(SQL)进行数据库管理。MySQL是最流行的关系型数据库管理系统之一,尤其在WEB应用方面表现出色。
MySQL的主要特点包括:
1.关系型数据库:它使用表格来存储数据,每个表格都有行和列,行代表记录,列代表字段。这种结构使得数据的管理和查询变得非常高效。
2.SQL语言:MySQL使用SQL语言进行数据操作,这是一种非常强大且通用的语言,可以用于创建、修改、查询和删除数据库中的数据。
3.开源和免费:MySQL是开源的,意味着任何人都可以查看、修改和分发其源代码。此外,社区版是免费的,适合中小型网站的开发。
4.高效和稳定:MySQL的设计注重性能和稳定性,即使在处理大量数据时也能保持高效的性能。
5.支持多种平台:MySQL可以在多种操作系统上运行,包括Windows、Linux、Mac OS等。
6.可扩展性:MySQL支持各种扩展功能,如复制、分区、集群等,使得数据库可以适应不同的应用场景。
总的来说,MySQL是一个功能强大、易于使用且高度灵活的数据库管理系统,广泛应用于各种类型的网站和应用中。
2.2Python
Python是一种相对于编译型语言存在的、一种独立于机器,面向过程或对象的语言,Python表达方式简练、明了,没有冗余或多余的内容,容易理解。在通过使用统计分析方法来提取有用信息并形成结论,以支持决策制定的过程中Python都展现出了其特别的优势。Python有一个规模很大的数据处理库,这些库提供了功能性很强的数据元素的集合和数据分析手段,可以方便地对平台产生的海量数据进行处理、清洗和转换。Python具有多种相对前卫的推演和计算方式,这些方式提供了很多的图表类型和可视化效果,让用户可以简单易懂的了解数据信息。Python可以结合无界数据集设计的数据处理引擎,实现对直播平台数据的实时采集、处理和分析,从而为用户提供及时、准确的数据支持。
2.3Django框架
Django是一个使用Python编写的开源Web应用框架,可以快速开发安全和可维护的网站。它遵循MVC设计模式,并内置了许多功能,如认证、URL路由、模板引擎、对象关系映射(ORM)等,使得开发者能够更专注于业务逻辑的实现,而无需花费大量时间在底层代码的开发上。
在开发基于Python的新能源汽车充电管理系统时,Django框架的优势尤为明显。首先,Django的ORM系统可以方便地处理数据库相关的操作,使得开发者无需关心底层的SQL语句编写,提高了开发效率。其次,Django的模板引擎可以实现快速的页面渲染,使得前端页面能够实时展示数据处理的结果。此外,Django还提供了丰富的第三方插件和库,如Django Rest Framework、Django Channels等,可以方便地扩展系统的功能。
2.4Pycharm简介
PyCharm是由JetBrains公司开发的专业Python集成开发环境(IDE),旨在提供全面的开发支持和工具,以提高Python项目的开发效率。它拥有强大的代码编辑器、调试器、测试框架支持和项目管理功能,可以帮助开发人员更快地编写正确的代码、进行代码调试和问题排查,并方便地进行单元测试和集成测试。此外,PyCharm还集成了常用的版本控制系统,支持团队协作和代码版本管理。总之,PyCharm是一款功能丰富、用户友好的Python开发工具,无论是初学者还是经验丰富的开发人员都能从中受益。
2.5B/S模式
B/S模式,全称为Browser/Server(浏览器/服务器模式),也被称为B/S结构,是WEB兴起后的一种网络结构模式。
B/S模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。在这种模式中,客户机上只需要安装一个浏览器,如Chrome、Safari、Microsoft Edge、Netscape Navigator或Internet Explorer等,而服务器则安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server同数据库进行数据交互。
此外,B/S模式是一种基于浏览器和服务器的应用程序架构,也被称为Web应用程序开发模式。该模式将应用程序的业务逻辑和数据处理都放在服务器端完成,而客户端只需要通过浏览器来访问服务器。这种模式实现了跨平台、跨操作系统和分布式计算等特点,主要依赖于Web技术,如HTML、CSS、PythonScript等,以及Web服务器、数据库等后端技术。
与传统的C/S(Client/Server)开发模式相比,B/S开发模式可以减少客户端的安装和维护工作,提高了应用程序的可移植性和易用性,适合于大规模企业级应用的开发。
第三章新能源汽车充电管理系统分析
3.1系统可行性分析
3.1.1技术可行性
现代软件开发技术已经相当成熟,提供了丰富的工具和框架,可以应对各种复杂的业务需求。采用Python等成熟、稳定的语言进行开发,利用其面向对象、跨平台等特性,实现系统的模块化、可扩展性和可维护性。利用Django等现代框架,简化开发过程,提高开发效率。对于数据库的选择,使用MySQL等关系型数据库,以满足数据存储和查询的需求。因此,从技术层面来看,开发新能源汽车充电管理系统是完全可行的。
3.1.2经济可行性
系统的开发成本相对较低,可以利用开源框架和工具,降低开发成本。其次,系统的运行和维护成本也相对较低,可以采用Python等技术,实现系统的自动化部署和维护。因此,从经济层面来看,开发新能源汽车充电管理系统也是可行的。
3.1.3社会可行性
随着新能源汽车市场的不断扩大,充电基础设施的建设与优化已成为社会发展的必要环节。通过提升充电管理系统的效率与智能化水平,不仅能更好地满足日益增长的充电需求,还能推动绿色出行的普及,促进社会环境的可持续发展。
3.1.4操作可行性
系统的操作界面设计简洁明了,易于用户理解和操作。系统提供了详尽的操作指南和帮助文档,使得用户能够快速上手并熟练使用系统。系统还具备良好的容错性和错误提示功能,当用户操作失误时,能够及时给出提示信息,引导用户进行正确的操作。因此,从操作层面来看,新能源汽车充电管理系统同样具备可行性。
3.2系统功能分析
3.2.1功能性分析
新能源汽车充电管理系统我划分为了前端模块和后端模块两大部分。
前端注册用户模块:
- 注册登陆:用户可以通过注册功能创建一个新账户,输入必要的信息如用户名、密码、邮箱等。注册时需要上传头像,登陆时才能进行人脸识别。系统会提供忘记密码和密码重置的选项,以帮助用户恢复账户访问权限。
- 首页:用户在登录后会看到充电平台的首页,展示实时的充电相关资讯,提供最新的行业动态与充电桩位置更新,帮助用户了解市场变化。
- 充电桩信息:用户可以查看充电桩的详细信息,包括充电桩的实时状态、位置、支持的充电类型等,帮助用户选择最合适的充电桩进行充电。通过系统提供的信息,用户能够更方便地找到空闲充电桩并规划充电行程。
- 充电资讯:此栏目展示平台发布的最新公告、公司动态、关于平台的相关介绍以及联系方式等,方便用户获取相关信息。
- 我的账户:用户可以修改账户密码或更新个人资料,确保信息的准确性与安全性。
- 我的:
- 充电信息:用户可以通过此功能开始充电操作,查看充电桩的当前状态并在充电过程中进行报修申请。
- 充电费用:用户可查看充电费用,并通过平台完成在线支付,确保支付便捷高效。
- 用户积分:用户可通过完成充电操作获得积分,积分可以用于兑换平台提供的优惠或服务。
- 报修信息:若充电桩出现故障或其他问题,用户可提交报修请求,平台管理员会及时处理。
- 收藏:用户可以收藏自己常用的充电桩,方便日后快速定位并使用。
- 基本信息:修改密码资料 用户可以随时修改个人信息,如密码或个人资料,确保账户信息的安全性和准确性。
后端管理员模块:
- 登录:管理员通过输入用户名和密码进入后端管理系统,也可通过人脸识别进行登陆,系统提供安全验证以确保只有授权的管理员可以访问。
- 后台首页:管理员可以通过首页快速查看系统的整体运行状态,掌握各项数据的实时动态,确保平台的正常运作。
- 系统用户:在此功能中,管理员可以管理系统内的所有用户,包括管理员和注册用户,能够添加、删除或修改用户信息。
- 充电桩分类管理: 管理员可以查看充电桩的分类信息,进行充电桩类别的添加与修改,帮助用户更加便捷地选择合适的充电桩。
- 充电桩信息管理: 管理员可以管理充电桩的具体信息,包括列表展示所有充电桩的状态、位置、类型等,能根据需求进行添加与更新。
- 充电信息管理: 管理员可查看每个充电桩的充电记录,包括使用情况、用户信息及费用,能够及时了解充电桩的使用状态。
- 充电费用管理: 管理员可以设定与管理不同类型的充电费用,确保费用的正确性与透明度,同时也能查看用户的支付记录。
- 用户积分管理: 管理员可管理平台内所有用户的积分,进行积分的添加、扣除与记录,确保用户的积分数据准确无误。
- 保修信息管理: 该模块允许管理员查看用户提交的充电桩故障报修信息,跟踪维修进度,及时处理故障问题。
- 系统管理: 管理员可以上传或更新平台首页的轮播图,确保平台展示的内容具有时效性和吸引力。
- 公共信息管理: 管理员可以发布和管理网站公告信息、公司动态、联系方式等内容,向用户传达重要信息。
- 资源管理: 包括管理平台的充电资讯与分类信息,管理员可以增加或删除资讯内容,确保平台信息的丰富性与及时性。
3.2.2非功能性分析
新能源汽车充电管理系统的非功能性需求比如新能源汽车充电管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等,具体可以表示在如下3-1表格中:
表3-1新能源汽车充电管理系统非功能需求表
安全性 | 主要指新能源汽车充电管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指新能源汽车充电管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响新能源汽车充电管理系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着新能源汽车充电管理系统的页面展示内容进行操作,就可以了。 |
可维护性 | 新能源汽车充电管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
3.3系统用例分析
新能源汽车充电管理系统的完整UML用例图分别是图3-1、3-2、。
注册用户角色用例如图3-1所示。
图 3-1新能源汽车充电管理系统注册用户角色用例图
管理员角色用例如图3-2所示。
图 3-2新能源汽车充电管理系统管理员角色用例图
3.4系统总体流程设计
3.4.1数据开发流程
系统开发流程的主要步骤,从需求分析到系统完成的全过程。流程包括需求分析、总体设计(结构、功能、数据)、详细设计(模块、编码)、模块整合与调用,以及测试、扩展和完善,最终完成系统的开发。本系统的开发流程如图3-4所示
图 3-4系统开发流程图
3.4.2用户登录流程
用户输入用户名和密码后,系统先检查输入是否为空,再验证用户名是否存在,若存在则通过用户名获取密码并校验。若密码正确则登录成功,否则提示密码错误。若用户名不存在或无法登录,提示用户操作无效。如图3-5所示。
图 3-5登录流程图
3.4.3系统操作流程
用户首先进入系统登录界面,输入用户名和密码后,系统验证信息是否正确。若验证失败,返回登录界面重新输入,若验证成功,则进入功能界面,执行相应功能处理后结束操作流程。操作流程如图3-6所示。
图 3-6 系统操作流程图
3.4.4添加信息流程
管理员可以添加信息,用户添加可以自己权限内的信息,输入信息后,要想利用这个软件来进行系统的安全管理,首先需要登录到该软件中。添加信息流程如图3-7所示。
图 3-7 添加信息流程图
3.4.5修改信息流程
用户首先选择需要修改的记录,输入修改后的数据,系统判断输入数据是否合法。若数据不合法,提示重新输入,若数据合法,则将修改后的数据写入数据库,完成操作后流程结束。修改信息流程图如图3-8所示。
图 3-8 修改信息流程图
3.4.6删除信息流程
用户选择需要删除的记录后,系统判断是否确认删除。若未确认,返回选择环节,若确认删除,则更新数据库,删除对应记录,完成操作后流程结束。删除信息流程图如图3-9所示。
图 3-9删除信息流程图
第四章新能源汽车充电管理系统总体设计
本章主要讨论的内容包括新能源汽车充电管理系统的功能模块设计、数据库系统设计。
4.1系统架构设计
本新能源汽车充电管理系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图 4-1新能源汽车充电管理系统架构设计图
表现层(UI):也称为用户界面层,它负责与用户进行直接的交互。一个优秀的UI设计能够显著提升用户的体验,确保用户在使用新能源汽车充电管理系统时感到舒适和便捷。为了确保良好的兼容性,UI界面设计需要适应不同版本的平台和各种屏幕尺寸的分辨率。此外,UI交互功能必须合理设计,确保用户的操作能够得到相应的反馈和结果,这要求表现层与业务逻辑层之间保持良好的通信和协同工作。
业务逻辑层(BLL):这一层主要处理新能源汽车充电管理系统的数据和业务逻辑。当用户通过表现层提交数据时,业务逻辑层会接收这些数据,进行处理,并将结果传递给数据层进行存储或查询。同时,当系统需要从数据层读取数据时,业务逻辑层会处理这些数据,并将其传递给表现层进行展示。
数据层(DL):虽然本新能源汽车充电管理系统的数据存储在服务端的MySQL数据库中,但数据层仍然作为一个独立的部分存在。它的主要功能是存储和管理新能源汽车充电管理系统的数据。数据层与MySQL数据库进行交互,执行数据的增、删、改、查等操作,确保数据的完整性和安全性。
这三个层次相互独立但又紧密协作,共同构成了新能源汽车充电管理系统的完整架构。通过合理的分层设计,可以提高系统的可维护性、可扩展性和可重用性,为用户提供更好的服务和体验。
4.2系统模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本新能源汽车充电管理系统中的用例。那么接下来就要开始对本新能源汽车充电管理系统的架构、主要功能和数据库开始进行设计。新能源汽车充电管理系统根据前面章节的需求分析得出,新能源汽车充电管理系统的功能模块图如下图所示。
图 4-2新能源汽车充电管理系统功能模块图
4.3数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
4.3.1数据库概念结构设计
下面是整个新能源汽车充电管理系统中主要的数据库表总E-R实体关系图。
图 4-3新能源汽车充电管理系统总E-R关系图
4.3.2数据库逻辑结构设计
通过上一小节中新能源汽车充电管理系统中总E-R关系图上得出一共需要创建多个数据表。在此主要罗列几个主要的数据库表结构设计。
表 4-1-access_token(登陆访问时长)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | token_id | int | 是 | 是 | 临时访问牌ID | |
2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
3 | info | text | 65535 | 否 | 否 | 信息 |
4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
5 | create_time | timestamp | 是 | 否 | 创建时间 | |
6 | update_time | timestamp | 是 | 否 | 更新时间 | |
7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-article(文章)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | article_id | mediumint | 是 | 是 | 文章id | |
2 | title | varchar | 125 | 是 | 是 | 标题 |
3 | type | varchar | 64 | 是 | 否 | 文章分类 |
4 | hits | int | 是 | 否 | 点击数 | |
5 | praise_len | int | 是 | 否 | 点赞数 | |
6 | create_time | timestamp | 是 | 否 | 创建时间 | |
7 | update_time | timestamp | 是 | 否 | 更新时间 | |
8 | source | varchar | 255 | 否 | 否 | 来源 |
9 | url | varchar | 255 | 否 | 否 | 来源地址 |
10 | tag | varchar | 255 | 否 | 否 | 标签 |
11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
12 | img | varchar | 255 | 否 | 否 | 封面图 |
13 | description | text | 65535 | 否 | 否 | 文章描述 |
表 4-3-article_type(文章分类)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | type_id | smallint | 是 | 是 | 分类ID | |
2 | display | smallint | 是 | 否 | 显示顺序 | |
3 | name | varchar | 16 | 是 | 否 | 分类名称 |
4 | father_id | smallint | 是 | 否 | 上级分类ID | |
5 | description | varchar | 255 | 否 | 否 | 描述 |
6 | icon | text | 65535 | 否 | 否 | 分类图标 |
7 | url | varchar | 255 | 否 | 否 | 外链地址 |
8 | create_time | timestamp | 是 | 否 | 创建时间 | |
9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-auth(用户权限管理)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | auth_id | int | 是 | 是 | 授权ID | |
2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
4 | table_name | varchar | 64 | 否 | 否 | 表名 |
5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
6 | path | varchar | 255 | 否 | 否 | 路由路径 |
7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
9 | position | varchar | 32 | 否 | 否 | 位置 |
10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
11 | add | tinyint | 是 | 否 | 是否可增加 | |
12 | del | tinyint | 是 | 否 | 是否可删除 | |
13 | set | tinyint | 是 | 否 | 是否可修改 | |
14 | get | tinyint | 是 | 否 | 是否可查看 | |
15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
20 | option | text | 65535 | 否 | 否 | 配置 |
21 | create_time | timestamp | 是 | 否 | 创建时间 | |
22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-charging_fee(充电费用)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | charging_fee_id | int | 是 | 是 | 充电费用ID | |
2 | charging_station_number | varchar | 64 | 否 | 否 | 充电桩编号 |
3 | name_of_charging_station | varchar | 64 | 否 | 否 | 充电桩名称 |
4 | type_of_charging_station | varchar | 64 | 否 | 否 | 充电桩类型 |
5 | charging_station_location | varchar | 64 | 否 | 否 | 充电桩位置 |
6 | charging_price | double | 否 | 否 | 充电价格 | |
7 | registered_user | int | 否 | 否 | 注册用户 | |
8 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
9 | license_plate_number | varchar | 64 | 否 | 否 | 车牌号码 |
10 | charging_time | datetime | 否 | 否 | 充电时间 | |
11 | end_time | datetime | 否 | 否 | 结束时间 | |
12 | charging_duration | double | 否 | 否 | 充电时长 | |
13 | charging_capacity | varchar | 64 | 否 | 否 | 充电电量 |
14 | charging_fee | varchar | 64 | 否 | 否 | 充电费用 |
15 | cost_details | text | 65535 | 否 | 否 | 费用明细 |
16 | pay_state | varchar | 16 | 是 | 否 | 支付状态 |
17 | pay_type | varchar | 16 | 否 | 否 | 支付类型: 微信、支付宝、网银 |
18 | create_time | datetime | 是 | 否 | 创建时间 | |
19 | update_time | timestamp | 是 | 否 | 更新时间 | |
20 | source_table | varchar | 255 | 否 | 否 | 来源表 |
21 | source_id | int | 否 | 否 | 来源ID | |
22 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-6-charging_information(充电信息)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | charging_information_id | int | 是 | 是 | 充电信息ID | |
2 | charging_station_number | varchar | 64 | 否 | 否 | 充电桩编号 |
3 | name_of_charging_station | varchar | 64 | 否 | 否 | 充电桩名称 |
4 | type_of_charging_station | varchar | 64 | 否 | 否 | 充电桩类型 |
5 | charging_station_location | varchar | 64 | 否 | 否 | 充电桩位置 |
6 | charging_price | double | 否 | 否 | 充电价格 | |
7 | registered_user | int | 否 | 否 | 注册用户 | |
8 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
9 | license_plate_number | varchar | 64 | 否 | 否 | 车牌号码 |
10 | charging_time | datetime | 否 | 否 | 充电时间 | |
11 | charging_instructions | text | 65535 | 否 | 否 | 充电说明 |
12 | charging_fee_limit_times | int | 是 | 否 | 充电费用限制次数 | |
13 | create_time | datetime | 是 | 否 | 创建时间 | |
14 | update_time | timestamp | 是 | 否 | 更新时间 | |
15 | source_table | varchar | 255 | 否 | 否 | 来源表 |
16 | source_id | int | 否 | 否 | 来源ID | |
17 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-7-charging_station_information(充电桩信息)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | charging_station_information_id | int | 是 | 是 | 充电桩信息ID | |
2 | charging_station_number | varchar | 64 | 是 | 是 | 充电桩编号 |
3 | name_of_charging_station | varchar | 64 | 否 | 否 | 充电桩名称 |
4 | type_of_charging_station | varchar | 64 | 否 | 否 | 充电桩类型 |
5 | charging_station_location | varchar | 64 | 否 | 否 | 充电桩位置 |
6 | charging_station_status | varchar | 64 | 否 | 否 | 充电桩状态 |
7 | charging_pile_picture | varchar | 255 | 否 | 否 | 充电桩图片 |
8 | charging_price | double | 否 | 否 | 充电价格 | |
9 | fee_standards | text | 65535 | 否 | 否 | 收费标准 |
10 | charging_protocol | text | 65535 | 否 | 否 | 充电协议 |
11 | electric_pile_details | longtext | 4294967295 | 否 | 否 | 电桩详情 |
12 | hits | int | 是 | 否 | 点击数 | |
13 | praise_len | int | 是 | 否 | 点赞数 | |
14 | collect_len | int | 是 | 否 | 收藏数 | |
15 | comment_len | int | 是 | 否 | 评论数 | |
16 | charging_information_limit_times | int | 是 | 否 | 充电限制次数 | |
17 | repair_information_limit_times | int | 是 | 否 | 报修限制次数 | |
18 | create_time | datetime | 是 | 否 | 创建时间 | |
19 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-8-classification_of_charging_stations(充电桩分类)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | classification_of_charging_stations_id | int | 是 | 是 | 充电桩分类ID | |
2 | type_of_charging_station | varchar | 64 | 是 | 是 | 充电桩类型 |
3 | create_time | datetime | 是 | 否 | 创建时间 | |
4 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-9-code_token(验证码)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | code_token_id | int | 是 | 是 | 验证码ID | |
2 | token | varchar | 255 | 否 | 否 | 令牌 |
3 | code | varchar | 255 | 否 | 否 | 验证码 |
4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
5 | create_time | timestamp | 是 | 否 | 创建时间 | |
6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-10-collect(收藏)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | collect_id | int | 是 | 是 | 收藏ID | |
2 | user_id | int | 是 | 是 | 收藏人ID | |
3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
5 | source_id | int | 是 | 否 | 来源ID | |
6 | title | varchar | 255 | 否 | 否 | 标题 |
7 | img | varchar | 255 | 否 | 否 | 封面 |
8 | create_time | timestamp | 是 | 否 | 创建时间 | |
9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-11-comment(评论)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | comment_id | int | 是 | 是 | 评论ID | |
2 | user_id | int | 是 | 是 | 评论人ID | |
3 | reply_to_id | int | 是 | 否 | 回复评论ID | |
4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
7 | create_time | timestamp | 是 | 否 | 创建时间 | |
8 | update_time | timestamp | 是 | 否 | 更新时间 | |
9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
11 | source_id | int | 是 | 否 | 来源ID |
表 4-12-hits(用户点击)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | hits_id | int | 是 | 是 | 点赞ID | |
2 | user_id | int | 是 | 否 | 点赞人 | |
3 | create_time | timestamp | 是 | 否 | 创建时间 | |
4 | update_time | timestamp | 是 | 否 | 更新时间 | |
5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
7 | source_id | int | 是 | 否 | 来源ID |
表 4-13-notice(公告)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | notice_id | mediumint | 是 | 是 | 公告ID | |
2 | title | varchar | 125 | 是 | 否 | 标题 |
3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
4 | create_time | timestamp | 是 | 否 | 创建时间 | |
5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-14-praise(点赞)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | praise_id | int | 是 | 是 | 点赞ID | |
2 | user_id | int | 是 | 是 | 点赞人 | |
3 | create_time | timestamp | 是 | 否 | 创建时间 | |
4 | update_time | timestamp | 是 | 否 | 更新时间 | |
5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
7 | source_id | int | 是 | 否 | 来源ID | |
8 | status | tinyint | 是 | 否 | 点赞状态:1为点赞,0已取消 |
表 4-15-registered_user(注册用户)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | registered_user_id | int | 是 | 是 | 注册用户ID | |
2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
3 | user_gender | varchar | 64 | 否 | 否 | 用户性别 |
4 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
5 | user_id | int | 是 | 否 | 用户ID | |
6 | create_time | datetime | 是 | 否 | 创建时间 | |
7 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-16-repair_information(报修信息)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | repair_information_id | int | 是 | 是 | 报修信息ID | |
2 | charging_station_number | varchar | 64 | 否 | 否 | 充电桩编号 |
3 | name_of_charging_station | varchar | 64 | 否 | 否 | 充电桩名称 |
4 | type_of_charging_station | varchar | 64 | 否 | 否 | 充电桩类型 |
5 | charging_station_location | varchar | 64 | 否 | 否 | 充电桩位置 |
6 | registered_user | int | 否 | 否 | 注册用户 | |
7 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
8 | repair_title | varchar | 64 | 否 | 否 | 报修标题 |
9 | repair_time | datetime | 否 | 否 | 报修时间 | |
10 | reported_repair_content | text | 65535 | 否 | 否 | 报修内容 |
11 | repair_status | varchar | 64 | 否 | 否 | 报修状态 |
12 | reply_message | text | 65535 | 否 | 否 | 回复信息 |
13 | create_time | datetime | 是 | 否 | 创建时间 | |
14 | update_time | timestamp | 是 | 否 | 更新时间 | |
15 | source_table | varchar | 255 | 否 | 否 | 来源表 |
16 | source_id | int | 否 | 否 | 来源ID | |
17 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-17-schedule(日程管理)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | schedule_id | smallint | 是 | 是 | 日程ID | |
2 | content | varchar | 255 | 否 | 否 | 日程内容 |
3 | scheduled_time | datetime | 否 | 否 | 计划时间 | |
4 | user_id | int | 是 | 否 | 用户ID | |
5 | create_time | datetime | 否 | 否 | 创建时间 | |
6 | update_time | datetime | 否 | 否 | 更新时间 |
表 4-18-score(评分)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | score_id | int | 是 | 是 | 评分ID | |
2 | user_id | int | 是 | 否 | 评分人 | |
3 | nickname | varchar | 64 | 否 | 否 | 昵称 |
4 | score_num | double | 是 | 否 | 评分 | |
5 | create_time | timestamp | 是 | 否 | 创建时间 | |
6 | update_time | timestamp | 是 | 否 | 更新时间 | |
7 | source_table | varchar | 255 | 否 | 否 | 来源表 |
8 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
9 | source_id | int | 是 | 否 | 来源ID |
表 4-19-slides(轮播图)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | slides_id | int | 是 | 是 | 轮播图ID | |
2 | title | varchar | 64 | 否 | 否 | 标题 |
3 | content | varchar | 255 | 否 | 否 | 内容 |
4 | url | varchar | 255 | 否 | 否 | 链接 |
5 | img | varchar | 255 | 否 | 否 | 轮播图 |
6 | hits | int | 是 | 否 | 点击量 | |
7 | create_time | timestamp | 是 | 否 | 创建时间 | |
8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-20-upload(文件上传)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | upload_id | int | 是 | 是 | 上传ID | |
2 | name | varchar | 64 | 否 | 否 | 文件名 |
3 | path | varchar | 255 | 否 | 否 | 访问路径 |
4 | file | varchar | 255 | 否 | 否 | 文件路径 |
5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
6 | father_id | int | 否 | 否 | 父级ID | |
7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-21-user(用户账户)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | user_id | int | 是 | 是 | 用户ID | |
2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
7 | username | varchar | 16 | 是 | 否 | 用户名 |
8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
9 | password | varchar | 64 | 是 | 否 | 密码 |
10 | varchar | 64 | 否 | 否 | 邮箱 | |
11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-22-user_group(用户组)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | group_id | mediumint | 是 | 是 | 用户组ID | |
2 | display | smallint | 是 | 否 | 显示顺序 | |
3 | name | varchar | 16 | 是 | 否 | 名称 |
4 | description | varchar | 255 | 否 | 否 | 描述 |
5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
7 | source_id | int | 是 | 否 | 来源ID | |
8 | register | smallint | 否 | 否 | 注册位置 | |
9 | create_time | timestamp | 是 | 否 | 创建时间 | |
10 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-23-user_points(用户积分)
编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
1 | user_points_id | int | 是 | 是 | 用户积分ID | |
2 | registered_user | int | 否 | 否 | 注册用户 | |
3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
4 | points_account | varchar | 64 | 是 | 是 | 积分账号 |
5 | points_balance | double | 否 | 否 | 积分余额 | |
6 | obtain_records | text | 65535 | 否 | 否 | 获得记录 |
7 | records_of_consumption | text | 65535 | 否 | 否 | 消费记录 |
8 | create_time | datetime | 是 | 否 | 创建时间 | |
9 | update_time | timestamp | 是 | 否 | 更新时间 |
第五章新能源汽车充电管理系统详细设计与实现
新能源汽车充电管理系统的详细设计与实现主要是根据前面的新能源汽车充电管理系统的需求分析和新能源汽车充电管理系统的总体设计来设计页面并实现业务逻辑。主要从新能源汽车充电管理系统界面实现、业务逻辑实现这两部分进行介绍。
5.1前端首页模块
首页是用户进入平台后首先看到的页面,它设计得直观且易于导航。页面上会展示充电资讯推荐、充电桩信息推荐、公告信息推荐,根据用户的浏览历史和偏好推荐相关充电信息和文章。整个首页旨在为用户提供丰富的内容和资源,增强用户体验。前端首页模块展示如下图所示。
图 5-1前端首页模块图
5.2用户注册模块
不是新能源汽车充电管理系统中正式用户的是可以在线进行注册的,当填写上自己的账号+设置密码+确认密码+昵称+邮箱+手机号+身份+用户姓名+用户性别等信息后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。在注册时,需要上传头像,登陆时才能进行人脸识别。其用户注册模块展示如下图所示。
图 5-2注册模块图
5.3登录模块
新能源汽车充电管理系统中的前台上注册后的用户是可以通过自己的用户名+密码进行登录的,或可通过人脸识别进行登陆,当用户输入完整的自己的用户名+密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的用户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到新能源汽车充电管理系统的首页中,否则将会提示相应错误信息,登录模块如下图所示。
图 5-3登录模块图
5.4前端注册用户功能模块
5.4.1充电资讯模块
此栏目展示平台发布的最新公告、公司动态、关于平台的相关介绍以及联系方式等,方便用户获取相关信息。充电资讯详情模块如下图所示。
图 5-4充电资讯详情模块图
5.4.2充电桩信息模块
用户可以查看充电桩的详细信息,包括充电桩的实时状态、位置、支持的充电类型等,帮助用户选择最合适的充电桩进行充电。通过系统提供的信息,用户能够更方便地找到空闲充电桩并规划充电行程。充电桩信息列表模块如下图所示。
图 5-5充电桩信息列表模块图
提交充电信息模块如下图所示。
图 5-6提交充电信息模块图
提交报修信息模块如下图所示。
图 5-7提交报修信息模块图
5.4.3我的模块
注册用户可以启动充电操作并实时查看充电桩状态,遇到问题时还能方便地提交报修申请,管理员会及时处理;此外,用户还可以查看充电费用并通过平台完成在线支付,享受积分兑换、收藏常用充电桩以及随时修改个人资料和密码的功能,确保账户信息安全和充电体验优化。我的模块如下图所示。
图 5-8我的模块图
5.5后端管理员功能模块
5.5.1系统用户模块
系统用户管理功能允许管理员对系统中的用户进行全面管理。管理员可以添加用户、修改用户信息、设定用户角色以及处理用户账号的停用或删除。这一功能确保了系统用户信息的准确性和安全性,也方便管理员根据实际需要调整用户权限。用户管理流程图如下所示。
图 5-9用户管理流程图
系统用户模块如下图所示。
图 5-0系统用户模块图
5.5.2充电桩分类管理模块
管理员可以查看充电桩的分类信息,进行充电桩类别的添加与修改,帮助用户更加便捷地选择合适的充电桩。充电桩分类管理模块如下图所示。
图 5-11充电桩分类管理添加模块图
5.5.3充电信息管理模块
管理员可通过此功能查看各充电桩的充电记录,包括每个充电桩的使用情况、用户信息、充电费用等。管理员能及时掌握充电桩的使用频率、问题和收入等关键数据,优化运营和服务。充电信息管理模块如下图所示。
图 5-12充电信息管理模块图
5.5.4充电费用管理模块
通过此功能,管理员可以设定并管理不同类型充电桩的费用标准,确保费用透明、合规。管理员也可以查看用户的支付记录,确保费用结算的准确无误。充电费用管理模块如下图所示。
图 5-13充电费用管理模块图
5.5.5用户积分管理模块
管理员可管理平台内所有用户的积分,进行积分的添加、扣除与记录,确保用户的积分数据准确无误。用户积分管理添加模块如下图所示。
图 5-14用户积分管理添加模块图
5.5.6报修信息管理模块
管理员可以查看并跟踪用户提交的充电桩故障报修信息,及时安排维修工作,确保充电设施的及时修复与正常运行,提升用户的使用体验和满意度。报修信息管理模块如下图所示。
图 5-15报修信息管理模块图
第六章系统测试
在系统开发的流程中,前台、后台以及数据库的建设只是整个项目的基础构建部分,完成了这些仅仅意味着系统框架的搭建告一段落。然而,一个系统的真正成熟与稳定,关键在于其是否能经受住严格的测试。测试是系统开发流程中不可或缺的一环,它对于确保系统质量至关重要。
6.1系统测试的目的
一个系统测试的目的就是检验系统在真正的工作环境和条件下是不是能够正常运行,各种功能能不能符合设计的要求,通过测试发现系统当中存在的一些潜在的错误,然后对系统进行改进,使得系统最终以完美的形式展现给用户,提高用户使用过程中的体验度,真正达到项目的实际使用目的。
6.2测试用例
6.2.1用户添加测试
表6-1用户添加测试用例
测试用例编号 | YL_03 | |
测试用例名称 | 系统使用者进行提交用户信息 | |
测试用例描述 | 使用者输入用户信息 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
输入完整的用户信息内容 | 点击“提交”,并进入系统 | 预期结果 |
不输入用户信息内容 | 提示“请输入完整” | 预期结果 |
6.2.2创建数据测试
在系统中,创建功能也是基础功能之一,因此创建功能的测试很有代表性。在此章节主要列举在创建时各种情况下系统结果的测试。由于系统涉及创建功能操作过多,因此将多处统称创建功能。
创建数据用例如表6-2 所示。
表6-2创建数据测试用例
测试用例编号 | YL_05 | |
测试用例名称 | 系统使用者进行创建数据 | |
测试用例描述 | 使用者输入要创建的数据 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
输入完整并且格式正确的数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
核心位置数据但非必要位置不输入数据 | 提示“创建成功”,并显示所有数据 | 预期结果 |
核心数据位置不输入数据 | 提示“创建失败” | 预期结果 |
6.2.3修改数据测试
在系统中,修改功能是系统主要实现功能,因此修改功能的测试很有代表性。在此章节主要列举在修改时各种情况下系统结果的测试。由于系统涉及修改功能操作过多,因此将多处数据表记录修改和状态修改统称修改功能。
修改数据用例如表6-3所示。
表6-3修改数据测试用例
测试用例编号 | YL_06 | |
测试用例名称 | 系统使用者进行修改数据 | |
测试用例描述 | 使用者对可修改的数据项进行修改 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
将现有数据修改成正确的数据 | 提示“修改成功”,并显示所有数据 | 预期结果 |
将现有数据修改成错误的数据 | 提示“修改失败” | 预期结果 |
6.2.4查询数据测试
在系统中,查询功能是使用系统使用最多也是最基础的功能,因此查询功能的测试很有代表性。在此章节主要列举在查询时各种情况下系统结果的测试。
查询数据用例如表6-4所示。
表6-4查询数据测试用例
测试用例编号 | YL_05 | |
测试用例名称 | 系统使用者进行查询数据 | |
测试用例描述 | 全部查询以及输入关键词查询 | |
系统入口 | 浏览器 | |
步骤 | 预期结果 | 实际结果 |
界面自动查询全部 | 显示对应所有记录 | 预期结果 |
输入已存在且能匹配成功的关键字 | 显示所查询到的数据 | 预期结果 |
输入不存在的关键字 | 显示数据界面为空 | 预期结果 |
6.3测试结果
在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。
在新能源汽车充电管理系统的设计中,用户的便捷性和平台的高效运营是核心考量。平台通过直观易用的功能模块,简化了用户的充电流程,确保他们能够快速启动充电、查看费用、进行支付,并在出现故障时及时获得帮助。用户还能通过积分系统获得奖励,提升了整体使用体验。管理员则通过后台管理系统,全面监控充电桩的运行状态和用户活动,及时处理报修、费用管理和积分事务,确保平台平稳运行。
这一系统的设计注重对各项功能的合理整合,确保平台操作简便、数据管理高效。管理员能够轻松掌握每个充电桩的运行状态、维修情况和费用结算,并能快速响应用户的需求和问题,提升用户满意度。对于用户而言,平台提供了方便的充电选择和个性化功能,如充电桩收藏和快速支付,进一步增强了平台的吸引力。
通过这种方式,系统不仅能够确保充电服务的可靠性,还提升了用户的使用体验和平台的管理效率。这些设计和功能的实现,保障了新能源汽车充电服务的稳定性,推动了充电设施的广泛应用,也加强了用户对平台的信任与依赖。
- 张宏伟,吕元锋,李淑廷. 新能源汽车故障诊断与案例分析 [J]. 汽车维修技师, 2025, (04): 35-36.
- 刘国,侯志华,漆龙. 新能源汽车动力电池过充电分析与安全管理研究 [J]. 专用汽车, 2025, (02): 84-87.
- 胡晓晓,杨时川. 新能源汽车充电基础设施智能调度研究 [J]. 汽车知识, 2025, 25 (02): 7-10.
- 贾超,蒋晓明,刘晓光. 模型预测控制的新能源汽车升压充电系统控制研究 [J]. 机电工程技术, 2025, 54 (01): 123-127+134.
- 郑世欣. 新能源电动汽车充电系统节能设计要点探讨 [J]. 电器工业, 2024, (12): 29-31+53.
- 林楚怡,邓金华,罗迪. 新能源汽车充电系统维护与故障排除技术探析 [J]. 汽车测试报告, 2024, (20): 53-55.
- 黄河. 新能源汽车底盘结构与故障诊断技术分析 [J]. 内燃机与配件, 2024, (20): 63-65.
- 郭磊. 新能源汽车充电系统原理与检修的探索 [J]. 汽车维修技师, 2024, (18): 55-56.
- 段剑利. 基于区块链技术的新能源汽车充电桩安全认证与管理系统研究 [J]. 长江信息通信, 2024, 37 (02): 151-153.
- 马林,马文锦. 基于智能网络的新能源电动汽车充电桩管理系统设计研究 [J]. 汽车测试报告, 2023, (16): 140-142.
- 王爱兵. 新能源汽车技术研究[M]. 陕西科学技术出版社: 202305. 145.
- 袁圆,安然,孙奇. 汽车新能源实验中心运行管理系统设计与实现 [J]. 电脑编程技巧与维护, 2023, (02): 78-81.
- 瑞佩尔. 电动汽车充电装置结构原理与维修[M]. 化学工业出版社: 202209. 169.
- 李雪利. 新能源汽车充电桩热管理系统控制器研发[D]. 天津工业大学, 2022.
- 汪立亮. 电动汽车电气系统原理与检修[M]. 化学工业出版社: 202007. 258.
- 王朝晖. 新能源电动汽车信息管理系统的设计与实现[D]. 北京邮电大学, 2020.
- 周振振. 新能源汽车售后质量管理系统设计与实现[D]. 南昌大学, 2020.
- Shi R ,Ji L ,Liu H , et al. Sustainable Transition in Transport Energy Consumption: The Charging/Discharging Infrastructure and Self-Containing Transport Energy System of New Energy Vehicles [J]. Sustainability, 2025, 17 (4): 1735-1735.
- Choi Y ,Bhakta S . Optimal sizing of grid-tied hybrid solar tracking photovoltaic/hydrogen fuel cell energy systems for electric vehicle charging stations in South Korea: A techno-economic study [J]. Journal of Cleaner Production, 2025, 486 144511-144511.
- Shoja M Z ,Oskouei B A ,Heris N M . Risk-based optimal management of a multi-energy community integrated with P2X-based vector-bridging systems considering natural gas/hydrogen refueling and electric vehicle charging stations [J]. Renewable Energy Focus, 2025, 53 100680-100680.
致 谢
新能源汽车充电管理系统设计与实现工作已结束,虽然过程中充满挑战,但内心充满自豪和满足。感谢大学四年间教导我的所有老师,他们的专业知识与人生智慧让我成长为能独立完成系统的学生。特别感谢指导老师,他耐心解答疑惑,引导我解决问题,提升自主解决能力。室友和同学们的宝贵建议和支持也让我取得长足进步。未来,我将继续努力追求卓越,不辜负所学所悟和老师期望。坚信坚定信念和不懈努力,未来定能取得更辉煌成就。期待更美好未来!
此外,新能源汽车充电管理系统设计与实现不仅是技术挑战,挫折和困难是成长的垫脚石,让我更深入理解问题,精确找到解决方案。每次解决问题,都感到满足和自豪。
对于未来,我充满期待和信心。无论道路多崎岖,只要保持坚定信念,持续努力,定能取得更大成就。期待将知识和技能运用到实际中,为社会做出更大贡献。
最后,感谢所有帮助和支持我的人。你们的教诲、鼓励和支持让我有今天的成就。我会继续努力,不辜负期望,为实现更美好的未来而奋斗。
代码如下:
数据库配置文件在app文件下的settings.py代码如下
WSGI_APPLICATION = "app.wsgi.application"
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "project93355",
"USER": "root",
"PASSWORD": "root",
"HOST": "127.0.0.1",
"PORT": "3306",
}
}
Md5加密引入代码如下:
from hashlib import md5
def md5hash(key):
input_name = md5()
input_name.update(key.encode("utf-8"))
return input_name.hexdigest()
登录代码如下:
def Login(self, ctx):
print("===================登录=====================")
ret = {
"error": {
"code": 70000,
"message": "账户不存在",
}
}
body = ctx.body
password = md5hash(body["password"]) or ""
obj = service_select("user").Get_obj(
{"username": body["username"]}, {"like": False}
)
if obj:
user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})
if user_group and user_group['source_table'] != '':
user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']}, {"like": False})
if user_obj['examine_state'] == '未通过':
ret = {
"error": {
"code": 70000,
"message": "账户未通过审核",
}
}
return ret
if user_obj['examine_state'] == '未审核':
ret = {
"error": {
"code": 70000,
"message": "账户未审核",
}
}
return ret
if obj["state"] == 1:
if obj["password"] == password:
timeout = timezone.now()
timestamp = int(time.mktime(timeout.timetuple())) * 1000
token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))
ctx.request.session[token] = obj["user_id"]
service_select("access_token").Add(
{"token": token, "user_id": obj["user_id"]}
)
obj["token"] = token
ret = {
"result": {"obj": obj}
}
else:
ret = {
"error": {
"code": 70000,
"message": "密码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "用户账户不可用,请联系管理员",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
注册代码如下:
def Register(self, ctx):
print("===================注册=====================")
userService = service_select("user")
body = ctx.body
if "username" not in body and body["username"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名不能为空",
}
}, ensure_ascii=False))
if "user_group" not in body and body["user_group"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户组不能为空",
}
}, ensure_ascii=False))
if "password" not in body and body["password"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "密码不能为空",
}
}, ensure_ascii=False))
post_param = body
post_param['nickname'] = body["nickname"] or ""
post_param['password'] = md5hash(body["password"])
obj = userService.Get_obj({"username": post_param['username']}, {"like": False})
if obj:
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名已存在",
}
}, ensure_ascii=False))
ret = {
"error": {
"code": 70000,
"message": "注册失败",
}
}
bl = userService.Add(post_param)
if bl:
ret = {
"result": {
"bl": True,
"message": "注册成功"
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
找回密码代码如下:
def Forget_password(self, ctx):
print("===================修改密码=====================")
ret = {
"error": {
"code": 70000,
"message": "用户信息不能没有"
}
}
body = ctx.body
if not body["code"]:
return {
"error": {
"code": 70000,
"message": "验证码不存在或者错误"
}
}
obj = service_select("user").Get_obj(
{"username": body["username"]}, {"like": False}
)
if not obj:
return {
"error": {
"code": 70000,
"message": "用户名不存在或者错误"
}
}
password = md5hash(body["password"])
if not password:
return {
"error": {
"code": 70000,
"message": "密码不存在或者错误"
}
}
bl = service_select("user").Set({"user_id": obj["user_id"]}, {"password": password})
if bl:
ret = {"result": {"bl": True, "message": "修改成功"}}
else:
ret = {
"error": {
"code": 70000,
"message": "修改失败",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
修改密码代码如下:
def Change_password(self, ctx):
print("===================修改密码=====================")
ret = {
"error": {
"code": 70000,
"message": "账号未登录",
}
}
request = ctx.request
headers = request.headers
if ("x-auth-token" in headers) and headers["x-auth-token"]:
token = headers["x-auth-token"]
user_id = tokenGetUserId(token, request)
userService = service_select("user")
body = ctx.body
password = md5hash(body["o_password"])
obj = userService.Get_obj({"user_id": user_id, "password": password}, {"like": False})
if obj:
password = md5hash(body["password"])
bl = userService.Set({"user_id": user_id}, {"password": password})
if bl:
ret = {"result": {"bl": True, "message": "修改成功"}}
else:
ret = {
"error": {
"code": 70000,
"message": "修改失败",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "密码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "账户未登录",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
增删查改代码如下:
增
def Add(self, ctx):
body = ctx.body
unique = self.config.get("unique")
obj = None
if unique:
qy = {}
for i in range(len(unique)):
key = unique[i]
qy[key] = body.get(key)
obj = self.service.Get_obj(qy)
if not obj:
error = self.Add_before(ctx)
if error["code"]:
return {"error": error}
error = self.Events("add_before", ctx, None)
if error["code"]:
return {"error": error}
result = self.service.Add(body, self.config)
if self.service.error:
return {"error": self.service.error}
res = self.Add_after(ctx, result)
if res:
result = res
res = self.Events("add_after", ctx, result)
if res:
result = res
return {"result": result}
else:
return {"error": {"code": 10000, "message": "已存在"}}
删
def Del(self, ctx):
if len(ctx.query) == 0:
errorMsg = {"code": 30000, "message": "删除条件不能为空!"}
return errorMsg
result = self.service.Del(ctx.query, self.config)
if self.service.error:
return {"error": self.service.error}
return {"result": result}
改
def Set(self, ctx):
error = self.Set_before(ctx)
if error["code"]:
return {"error": error}
error = self.Events("set_before", ctx, None)
if error["code"]:
return {"error": error}
query = ctx.query
if 'page' in query.keys():
del ctx.query['page']
if 'size' in query.keys():
del ctx.query['size']
if 'orderby' in query.keys():
del ctx.query['orderby']
result = self.service.Set(ctx.query, ctx.body, self.config)
if self.service.error:
return {"error": self.service.error}
res = self.Set_after(ctx, result)
if res:
result = res
res = self.Events("set_after", ctx, result)
if res:
result = res
return {"result": result}
查多条数据:
def Get_list(self, ctx):
query = dict(ctx.query)
config_plus = {}
if "field" in query:
field = query.pop("field")
config_plus["field"] = field
if "page" in query:
config_plus["page"] = query.pop("page")
if "size" in query:
config_plus["size"] = query.pop("size")
if "orderby" in query:
config_plus["orderby"] = query.pop("orderby")
if "like" in query:
config_plus["like"] = query.pop("like")
if "groupby" in query:
config_plus["groupby"] = query.pop("groupby")
count = self.service.Count(query)
lst = []
if self.service.error:
return {"error": self.service.error}
elif count:
lst = self.service.Get_list(query,
obj_update(self.config, config_plus))
if self.service.error:
return {"error": self.service.error}
self.interact_list(ctx, lst)
return {"result": {"list": lst, "count": count}}
查一条数据:
def Get_obj(self, ctx):
query = dict(ctx.query)
config_plus = {}
if "field" in query:
field = query.pop("field")
config_plus["field"] = field
obj = self.service.Get_obj(query, obj_update(self.config, config_plus))
if self.service.error:
return {"error": self.service.error}
if obj:
self.interact_obj(ctx, obj)
return {"result": {"obj": obj}}
请关注点赞+私信博主,免费领取项目源码