欢迎光临散文网 会员登陆 & 注册

【北京交通大学海滨学院毕业论文模板】基于Spring Boot的网络投票系统的设计与实现

2023-08-02 12:17 作者:趣毕业  | 我要投稿


摘    要

随着社会信息化的日益增强,人们对手机的需求也在不断增加,使得网络投票日趋流行。传统的手工投票方法大多是人工进行操作,效率低,使用不便,而在线投票则无需人工,基本实现了自动化,节约了大量的人力物力,大大提高了工作效率。基于对投票的实际情况进行调研之后,设计了一种基于微信小程序的在线投票系统。

本系统涉及Spring Boot、Uni-app框架等技术,Java作为系统的编程语言,JDK使用1.8.0_131,IDE为IntelliJ IDEA,在微信小程序前端界面的实现上,主要依靠 JavaScript、WXML、WXSS等技术,服务器基于EL_ADMIN成熟后台管理框架。小程序端和后台使用两个框架进行开发,便于后期的维护和扩充。本系统采用 MySQL作为数据库。在小程序端,使用者通过授权登录即可查看投票活动的详细信息并对选项进行投票。为了确保投票结果的公正,本系统还采用了验证码等功能来防止刷票行为。在后台管理系统中,管理员可以查看所有已发布活动的投票结果。在进行足够的需求分析后,系统设计实现了五个模块:创建投票、用户投票、投票管理、系统管理和数据统计。核心业务数据统计模块实现投票活动统计,查看投票用户,活动选项票数统计等功能,用户通过微信授权登录即可创建投票活动以及对活动选项的投票,基本满足了广大用户对在线投票的各类需求。

在线投票系统是针对当前的用户需求和社会发展需求而开发的,具有很好的实用价值。本系统具有功能齐全、使用简便、维护方便等特点。使用该在线投票系统,可以极大地简化工作程序,提高工作效率;从而使投票结果更具实用性、先进性、高效性。

关键词:微信小程序;在线投票系统;Spring Boot


ABSTRACT

With the increasing social informatization, people's demand for mobile phones is also increasing, making online voting more and more popular. Most of the traditional manual voting methods are operated manually, which is inefficient and inconvenient to use. However, online voting does not need manual work, which basically realizes automation, saves a lot of human and material resources and greatly improves the work efficiency. Based on the investigation of the actual situation of voting, an online voting management system based on WeChat applet is designed.

The system involves Spring Boot, Uni-app framework and other technologies. Java is the programming language of the system, and JDK uses 1.8.0_ 131. The IDE is IntelliJ idea. The implementation of WeChat applet front-end interface mainly relies on JavaScript, wxml, wxss and other technologies, and the server is based on El_ Admin is a mature background management framework. The applet end and background use two frameworks for development, which is convenient for later maintenance and expansion. The system uses MySQL as the database. On the applet side, users can view the details of voting activities and vote on options through authorized login. In order to ensure the fairness of voting results, the system also uses functions such as verification code to prevent ticket swiping. In the background management system, the administrator can view the voting results of all published activities. After sufficient demand analysis, the system design and implementation of five modules: create voting, user voting, voting management, system management and data statistics. The core business data statistics module realizes the functions of voting activity statistics, viewing voting users and counting the votes of activity options. Users can create voting activities and vote on activity options through WeChat authorized login, which basically meets the various needs of users for online voting.

Online voting system is developed for the current needs of users and social development, and has good practical value. The system has the characteristics of complete functions, simple use and convenient maintenance. The online voting system can greatly simplify the working procedures and improve the work efficiency, so that the voting results are more practical, progressiveness and efficient.

Key words:WeChat applet; Online voting system; Spring Boot

目    录

第1章  绪论

1.1  项目背景及意义

1.2  国内外研究现状

1.3  主要研究内容

1.4  论文组织结构

第2章  关键技术介绍

2.1  Spring Boot框架

2.2  Uni-app框架

2.3  Java开发语言

2.4  MySQL数据库

2.5  本章小结

第3章  系统需求分析

3.1  需求概述

3.2  功能需求分析

3.2.1  创建投票

3.2.2  用户投票

3.2.3  投票管理

3.2.4  系统管理

3.2.5  数据统计

3.3  本章小结

第4章  系统设计

4.1  体系架构设计

4.1.1  整体架构设计

4.1.2  逻辑架构设计

4.1.3  网络架构设计

4.1.4  功能架构设计

4.2  功能详细设计

4.2.1  创建投票

4.2.2  用户投票

4.2.3  投票管理

4.2.4  系统管理

4.2.5  数据统计

4.3  数据库设计

4.3.1  概念结构设计

4.3.2  逻辑结构设计

4.4  本章小结

第5章  系统实现

5.1  创建投票模块

5.2  用户投票模块

5.3  投票管理模块

5.4  系统管理模块

5.4.1  角色管理

5.4.2  系统日志

5.5  数据统计模块

5.6  本章小结

第6章  系统测试

6.1  测试原则

6.2  功能测试

6.2.1  创建投票功能测试

6.2.2  用户投票功能测试

6.2.3  投票管理功能测试

6.2.4  系统管理功能测试

6.2.5  数据统计功能测试

6.3  性能测试

6.4  本章小结

第7章  总结和展望

7.1  总结

7.2  展望

参考文献

致    谢

第1章  绪论

随着互联网的飞速发展,人们已经习惯了通过手机来表达自己的观点,这使得在线投票已经被广泛地运用到了很多领域。传统的投票方式已不能适应现代社会发展的需要。下面作者将对在线投票系统的项目背景及意义、国内外研究现状、主要研究内容以及论文组织结构进行论述。

1.1  项目背景及意义

随着计算机技术的飞速发展,特别是互联网的普及,使人们的日常生活中对信息的需求越来越大,因此,在线投票系统被广泛地运用于各种网络应用中。在生活中,我们时常接触一些投票行为,比如班级竞选班干,评选“校园十星”等。传统的人工投票模式,效率低下,投票繁琐,费时耗力,投票的公正性依然无法得到保障,最主要的问题是工作效率低下,数据统计有误,已经满足不了当今社会的发展需求。开发一款符合当下用户需求的在线投票系统小程序,实现对用户投票、统计投票结果的自动化管理,提高用户投票的效率,会极大地减少资源的浪费,能有效提高效率。

基于上述背景,利用互联网等现代信息技术,开发出一种适用于广大群众、操作简便、实用的在线投票系统,能够更快地提供更多的信息反馈。与传统的手工投票相比,在线投票的优点是非常明显地,用户在家里通过网络即可投出自己的一票,而统计人员则可以使用数据库,通过计算机迅速地得出投票结果。这样既能节约大量的时间,又能节约大量的人力物力。

综上所述,在线投票系统可以极大地简化工作程序,提高统计效率,满足当前的用户需求和社会发展的需求,并且随着互联网技术的不断发展,在线投票系统的作用也将会不断扩大。

1.2  国内外研究现状

二十一世纪,科学技术飞速发展,计算机科学也获得了前所未有的成就,互联网技术的发展与普及也越来越广泛。目前,国内外各高校、科研机构和个人对网络投票系统的研究已经取得了很大的进展。

在国内,网易、百度贴吧、天涯等大型社区论坛上,也都有了网络投票功能,这不但增强了论坛的实用性和互动性,而且对统计数据也有很大的帮助,比如百度,2007年百度就宣布自己的贴吧将向用户提供投票功能,让大家可以对自己喜欢的话题进行投票,收集大家的各种观点和意见。在广州市齐乐科技有限公司和Sun Vote公司中,已开发出较为成熟的投票系统,他们的产品可以正确地捕捉民意,为未来的发展规划与方法提供参考。在未来,网路投票将会是一种重要的评选手段,它不但能促进各媒体“仕途”的发展,还能为媒体公司的产品提供更多的商机。

自20世纪九十年代起,以因特网为代表的现代信息技术迅猛发展,特别是在美国,欧洲,日本,韩国等国家。对于各种各样的问题,各种网络投票,网友们都很熟悉。网上投票的结果在法律上得到认可,有些国家也有明确的立法,例如美国特拉华州,在2000年就通过了有关的法律,认可了网上投票的结果。早在1880年,伟大的发明家Tomas Edison发明了一种用于美国立法机关进行表决的电子投票记录器[1]。然而,由于当时的社会和市场状况,这一新型的电子投票记录器还未正式投入使用,最后也未能取得很好的效果。

现在国外的网上投票,最多的就是做一些具体的调查,比如在社交网站上做一个问卷调查,让网友们进行选择,或者通过电子邮件和网友们交流,这样的方式更简单,也更方便,因为大部分都是由网友自己选择。

1.3  主要研究内容

在线投票系统的目的是创建一个基于微信小程序的投票页面,使用户能直观的了解投票规则,随时随地都可以进行投票,并且管理员还可以通过计算机对有关投票的信息进行管理,大大提高了选票的统计效率,减少了人力、物力资源的浪费。

本设计内容包括创建投票、用户投票、投票管理、系统管理以及数据统计五个部分。创建投票中,用户可以自行创建投票活动,上传活动资料,添加选项,设置投票的规则,防止刷票功能。用户投票中用户通过微信授权登录即可对活动选项进行投票。投票管理中投票活动创建者可以对已发布的活动进行投票选项的添加、分享投票、暂停投票、删除投票以及查看总票数和总浏览量。系统管理中包括用户管理、普通用户管理、角色管理、菜单管理、字典管理和浏览系统日志,管理员登录后台管理系统可以对本系统中的用户、普通用户、角色以及菜单进行设置操作。数据统计中管理员可以通过登录后台管理系统查看所有已发布的活动情况,查看投票结果以及投票用户。

1.4  论文组织结构

本论文主要是对在线投票系统的设计与研究,并对其进行了编程和测试,从而实现用户通过微信小程序授权登录就可对活动选项进行投票。

全文共分七章,每一章的内容如下:

第1章  绪论:介绍了在线投票系统现在的背景和意义,以及在线投票的研究现状、主要内容以及本文的组织结构。

第2章  关键技术介绍:对基于微信小程序的在线投票系统所使用的技术进行了简单地介绍。

第3章  系统需求分析:重点分析了基于微信小程序的在线投票系统各个模块的需求,并结合用例图对其功能进行了详细地说明。

第4章  系统设计:根据第3章中系统的需求分析对本系统进行设计,并对其体系结构设计、功能详细设计、数据库设计等方面进行了详细地介绍。

第5章  系统实现:对在线投票系统的各个模块进行了详细地介绍,并给出了各模块的运行效果图。

第6章  系统测试:对系统的功能和性能进行了测试,并给出了在测试过程中使用的一些测试方法。

第7章  总结和展望:对本系统的最终实现的效果进行了总结,并对未来的研究工作进行了展望。


第2章  关键技术介绍

本系统采用 IntelliJ IDEA开发工具和微信开发者工具,利用 Java语言设计开发了基于微信小程序的在线投票系统。本章主要介绍了Spring Boot框架,Uni-app框架,MySQL数据库等开发所需的技术。

2.1  Spring Boot框架

Spring Boot是Pivotal团队为新Spring软件设计的一个全新的框架。Spring Boot是以 Spring4.0为基础的,它不但保留了Spring框架的优良功能,同时也简化了 Spring的构建和开发过程。另外, Spring Boot在很多方面都做得很好,比如把很多框架结合起来,从而避免了软件的不同版本之间的冲突[2]

Spring Boot框架有两个关键的战略:开箱即用和约定优于配置。开箱即用就是在开发期间,向 MAVEN项目的 pom文件中添加相关的依赖包,并且用对应的注释取代了冗长的 XML配置文件,从而管理对象的生命周期[3]。该特性使开发人员不必再进行复杂的配置工作,而是能将精力集中在业务逻辑上。约定优于配置,即 Spring Boot自身对目标结构进行配置,这样开发者就不用在配置和逻辑业务之间来回转换,而是将全部精力都放在了写逻辑业务上,从而大大提高了开发的效率[4]。这个功能在某种程度上降低了灵活性,增加了 BUG的位置,但它可以减少开发人员在代码编译、测试和打包等方面的自动化,同时也减少了 XML的配置[5]

2.2  Uni-app框架

Uni-app是一个使用 Vue.js开发跨平台应用的前端框架[6]。通过编写Vue.js的代码,开发者可以在不同的平台上同时部署,包括IOS、Android、Web和各个平台的小程序,确保它们能够正确运行并且获得良好的使用体验[7]。Uni-app组件规范和扩展API与微信小程序基本相同[8]

Uni-app作为比较新的前端框架,而且是中国人自主研发的开源项目,在跨端数量、拓展能力、性能体验、周边生态、学习成本、开发成本等六个关键指标上具有很强的竞争力,解决了现有跨平台框架存在的问题[9]。在小程序端,该框架比现有的同类框架要好很多,而且它的组件可直接使用,在学习时,仅需学习 Vue和 小程序的组件,而无需研究其它组件和框架。

2.3  Java开发语言

Java语言是一种典型的面向对象的静态编程语言,具有很强的实用性和易用性,它可以很好地实现面向对象理论,使编程人员能够很容易地进行复杂的编程[10]

Java语言的语法简单明了,容易掌握,而且是纯面对对象的语言。Java是一种随着时代的飞速发展而发展起来的计算机编程语言。它能为互联网应用和多媒体访问提供支持,从而促进互联网和企业级的 Web应用[11]

2.4  MySQL数据库

MySQL是一个安全、跨平台、高效的关系型数据库管理系统,它与PHP、Java等主流编程语言结合在一起[12]。MySQL使用非常方便,易于理解,功能强大,所以大多数用户选择使用它。而且随着技术的不断完善,MySQL将会带来更多的功能,更好的性能,以及更多的平台[13]

MySQL相对于其它关系型数据库具有自己的优越性。MySQL是 SQL数据库中最快速的一种。而且 MySQL数据库是一款完全免费的软件,用户不需要付费就能在网上下载 MySQL数据库[14]。基于以上作者选用MySQL数据库作为系统的数据库。

2.5  本章小结

本章主要介绍了本论文所研究的在线投票系统使用的主要技术框架,包括Uni-app框架、Spring Boot框架。在分析了以上技术框架后,明确了该系统主要采用Uni-app框架对微信小程序进行开发。


第3章  系统需求分析

系统需求分析是系统开发前期的铺垫工作,也是重要的基础工作之一,有效地进行分析,可以帮助我们避免或及早地排除早期的错误,从而降低开发成本,提高系统开发的成功率。本章主要讲述在线投票系统的需求,根据本系统的所划分的五大模块进行分析,分别为创建投票、用户投票、投票管理、系统管理、数据统计。

3.1  需求概述

本系统分别从各个业务功能上进行相关的概述。

(1)创建投票功能:本模块是微信授权用户对投票活动的创建,包括活动信息的上传,投票选项的添加、删除、排序和投票规则的设置。

(2)用户投票功能:包括投票选项的查看、用户进行投票和投票排行榜展示三个部分。游客通过微信授权登录即可进行投票。

(3)投票管理功能:本模块主要是活动的创建者对投票活动进行管理,包括添加投票选项、编辑活动、暂停活动、删除活动、分享活动以及历史记录查询,历史记录查询中用户可以查看自己创建的投票以及参与的投票。

(4)系统管理功能:由后台管理员负责管理,包括用户管理、普通用户、角色管理、菜单管理、字典管理和查看系统日志这六大功能。

(5)数据统计功能:该模块的主要功能是统计和浏览投票结果,包含了对投票结果和投票用户的查看,让管理者能够更直接地查看投票结果。

对上述五大功能进行详细阐述,绘制出各个功能的用例图,并结合文字说明,对各功能模块进行了需求分析,使得整个开发过程和思路更加明确。

3.2  功能需求分析

本系统的使用者有两种:普通用户和后台管理员。普通用户又可以分为:游客和微信授权用户,微信授权用户包括投票用户和活动创建者;功能上划分为五个模块,分别是:创建投票功能、用户投票功能、投票管理功能、系统管理功能以及数据统计功能。

3.2.1  创建投票

创建投票功能模块是本系统的一项基本业务,用户通过微信授权登录后即可自行创建投票活动、设置投票规则。

创建投票功能用例图如图3-1所示。

图3-1  创建投票功能用例图

3.2.2  用户投票

在用户投票中,包含投票选项展示、投票和查看排行榜,所有微信授权登录的用户可对投票活动中的选项进行投票,微信未授权登录的用户不能进行投票。

用户投票功能用例图如图3-2所示。

图3-2  用户投票功能用例图

3.2.3  投票管理

投票管理模块主要是活动的创建者对已创建发布的活动进行管理。包括新增投票项、编辑投票、暂停投票、删除投票、分享投票和历史记录查询。创建者可通过历史记录查询找到自己创建的活动进行管理。新增投票项功能中创建者可对投票选项单独进行更改。编辑投票功能中创建者可对活动的标题、时间、活动介绍、投票选项、投票规则等进行更改。暂停投票功能中创建者若选择暂停活动,则该活动将不能再进行投票。删除投票功能中创建者有权将自己发布的活动删除。分享投票功能中创建者可以将该活动转发给好友或者转发至朋友圈。历史记录查询功能用户可以查看自己创建的投票以及参与的投票。

投票管理功能用例图如图3-3所示。

图3-3  投票管理功能用例图

3.2.4  系统管理

系统管理功能主要是后台管理员对本系统用户的权限进行控制,其中包含六部分:用户管理、普通用户、角色管理、菜单管理、字典管理以及系统日志。用户管理中后台管理员可以对后台的管理员用户进行管理。普通用户中管理员可以对登录微信小程序的用户进行相关操作。角色管理规定了本系统的角色和每种角色所对应的权限。菜单管理可以对已存在的系统菜单进行更换图标等操作[15]。字典管理是对本系统涉及到的一些字段进行描述查看。系统日志是用来对使用者的操作和异常操作进行记录的。

系统管理功能用例图如图3-4所示。

图3-4  系统管理功能用例图

3.2.5  数据统计

为了更直观的查看投票结果,系统设置了数据统计功能,该功能是由后台管理人员对投票的全部结果和投票者进行浏览。

数据统计功能用例图如图3-5所示。

图3-5  数据统计功能用例图

3.3  本章小结

本章主要从在线投票系统的功能需求进行详细的分析,介绍了本系统初步具有的功能,从创建投票、用户投票、投票管理、系统管理和数据统计模块进行功能的需求分析,画出了系统五大功能模块的用例图。


第4章  系统设计

本章将对该系统进行详细的设计。通过流程图、时序图、文本说明等方法对系统进行了功能设计。体系架构设计与设计图相结合,从整体架构、逻辑架构、网络架构、功能架构四个方面进行了阐述。在此基础上,本文还将从概念结构和逻辑结构设计两个角度,分别用实体属性图、E-R图以及三线表加以说明。

4.1  体系架构设计

本节主要从整体架构、逻辑架构、网络架构、功能架构四个部分来说明在线投票系统体系架构的设计。

4.1.1  整体架构设计

本小节主要是描述在线投票系统的工作方式及工作流程,可为具体的开发工作提供参考。整体架构设计如图4-1所示。

图4-1  整体架构设计图

4.1.2  逻辑架构设计

在线投票系统的逻辑架构设计包含四部分:

使用者:后台管理员、创建者、微信授权用户、游客。

使用平台:PC端和微信小程序端。

功能应用:主要为用户通过微信授权登录进行投票、创建者创建投票活动并对活动进行管理。

运行环境:服务器,数据库。

逻辑架构设计如图4-2所示。

图4-2  逻辑架构设计图

4.1.3  网络架构设计

用户通过微信访问小程序,向服务器发送请求,服务器接收请求并做出响应,把用户需要的数据返回到小程序,再将用户在系统中运行的数据保存到数据库。只要有一部有微信的手机或电脑,就能进行操作

网络架构设计如图4-3所示


图4-3  网络架构设计图

4.1.4  功能架构设计

本节按照上一章的需求分析进行设计。该系统分为五个功能模块:创建投票功能、用户投票功能、投票管理功能、系统管理功能、数据统计功能。

基于微信小程序的在线投票系统的功能架构设计如图4-4所示。

图4-4  功能架构设计图

4.2  功能详细设计

本节主要描述各个功能实现流程的详细设计。在线投票系统在系统需求分析部分主要分为五大模块,分别为创建投票、用户投票、投票管理、系统管理、数据统计。下面将对该系统进行分析,得到具体的功能设计的操作流程。

4.2.1  创建投票

用户点击创建投票后,提示需要登录,登录成功后即可进行投票活动的创建。创建者在创建投票界面可以对活动的信息进行完善,添加投票选项,设置投票规则,当创建者点击发布按钮时,系统会将创建者输入的活动信息存储到数据库中,同时也会向创建者发送一个是否创建成功的提示,创建成功则跳转到发布成功界面。

创建投票功能时序图如图4-5所示。

图4-5  创建投票功能时序图

创建投票模块的业务流程图如图4-6所示。

图4-6  创建投票功能业务流程图

4.2.2  用户投票

用户进入小程序首页,点击活动,提示还未授权登录不能投票,授权登录后即可进入活动详情页面。对选项进行投票,将投票数据写入数据库,在活动详情页显示累加后的票数。

用户投票功能时序图如图4-7所示。

图4-7  用户投票功能时序图

用户投票模块的业务流程图如图4-8所示。

图4-8  用户投票功能业务流程图

4.2.3  投票管理

创建者可对自己创建的投票活动进行管理。创建者在小程序中“我的”界面可以找到创建的活动,进入活动浏览详情页面可对活动进行编辑、暂停、删除、查看投票数、新增投票项以及分享活动等操作,点击浏览活动可跳转至活动详情页面。

投票管理功能时序图如图4-9所示。

图4-9  投票管理功能时序图

投票管理模块的业务流程图如图4-10所示。

图4-10  投票管理功能业务流程图

4.2.4  系统管理

系统管理的主要作用是设置使用者的权限,使不同使用者在登录时所呈现的界面会有所不同。系统管理模块包括:用户管理、普通用户、角色管理、菜单管理、字典管理以及系统日志。管理员登录后台管理系统,可以在首页上查看运行日志。点击用户管理,即可对后台的管理员进行管理。普通用户中管理员可以对登录微信小程序的用户进行相关操作。角色管理为每个角色设定了相应的菜单权限。菜单管理可以改变现有的系统菜单中的图标。字典管理是指在这个系统中包含的部分字段的说明。

系统管理功能时序图如图4-11所示。

图4-11  系统管理功能时序图

系统管理模块的业务流程图如图4-12所示。

图4-12  系统管理功能业务流程图

4.2.5  数据统计

数据统计模块是后台管理人员使用的,可以直观地看到投票结果,只能显示数据,无法进行操作。

数据统计功能时序图如图4-13所示。

图4-13  数据统计功能时序图

数据统计模块的业务流程图如图4-14所示。

图4-14  数据统计功能业务流程图

4.3  数据库设计

本小节主要介绍了数据库的设计,根据对在线投票系统的分析,设计所需的数据表,并且通过数据的交互,找到各个表的相互关系,从而得到整个数据库的结构。下面将从数据库的概念结构设计和逻辑结构设计两个部分,结合实体属性图、E-R图和库表结构对数据库进行介绍。

4.3.1  概念结构设计

根据需求分析,在线投票系统设计到一下实体:投票活动实体、投票选项实体、投票用户实体、系统用户实体、数据字典实体、系统菜单实体、系统角色系统、系统日志实体、轮播图实体。

(1)投票活动信息表vote,该表可储存投票活动的基本信息,投票活动的基本信息包括活动编号id,创建者编号user_id,活动标题title,活动状态status,活动封面cover,活动描述description,开始时间start_time,结束时间end_time,是否匿名anonymity,访问量visits,创建者create_by,创建时间create_time,更新者update_by,更新时间update_time,每人次数限制quantity_type,是否开启验证码verification_code,是否显示票数display_quantity,是否开启投票结果result,按钮文案text。

投票活动信息表vote的实体属性图如图4-15所示。

图4-15  投票活动信息实体属性图

(2)投票选项信息表vote_option,该表可以存储投票选项的基本信息,投票选项基本信息包括主键id,所属投票活动编号vote_id,选项编号number,选项照片picture,选项名称name,选项内容content,票数quantity,创建者create_by,创建时间create_time,更新者update_by,更新时间update_time。

投票选项信息表vote_option的实体属性图如图4-16所示。

图4-16  投票选项信息实体属性图

(3)投票用户信息表vote_user,该表可以存储投票用户的基本信息投票用户的基本信息包括主键id,用户编号user_id,投票活动编号vote_id,选项编号option_id,投票时间vote_time,票数quantity,是否匿名anonymity。

投票用户信息表vote_user的实体属性图如图4-17所示。

图4-17  投票用户信息实体属性图

(4)系统用户信息表sys_user,该表可以存储系统用户的基本信息,系统用户的基本信息包括用户id,微信Openid,用户名Username,昵称Nick_Name,性别Gender,手机号码Phone,邮箱Email,头像地址Avatar_Name,头像真实路径Avatar_Path,密码Password,是否为管理员账号Is_Admin,状态Enable,创建者Create_By,更新者Update_By,更改密码的时间Pwd_Reset_Time,创建时间Create_Time,更新时间Update_Time,用户类别Type。

系统用户信息表sys_user的实体属性图如图4-18所示。

图4-18  系统用户信息实体属性图

(5)数据字典信息表sys_dict_detail,该表可以存储数据字典的详细信息,数据字典的详细信息包括编号detail_id,字典编号dict_id,字典标签label,字典值value,排序dict_port,创建者create_by,更新者update_by,创建时间create_time,更新时间update_time。

数据字典详情信息表sys_dict_detail的实体属性图如图4-19所示。

图4-19  数据字典信息实体属性图

(6)系统菜单信息表sys_menu,该表可以存储菜单的基本信息,菜单的基本信息包括菜单编号menu_id,上级菜单编号pid,子菜单数目sub_count,菜单类型type,菜单标题title,组件名称name,组件component,排序menu_sort,图标icon,链接地址path,是否外链i_frame,缓存cache,隐藏hidden,权限permission,创建者create_by,更新者update_by,创建时间create_time,更新时间create_time。

系统菜单信息表sys_menu的实体属性图如图4-20所示。

图4-20  系统菜单信息实体属性图

(7)系统角色信息表sys_role,该表可以存储系统角色的基本信息,系统角色的基本信息包括角色编号role_id,名称name,角色级别level,描述description,数据权限data_scope,创建者create_by,更新者update_by,创建时间create_time,更新时间update_time。

系统角色信息表sys_role的实体属性图如图4-21所示。

图4-21  系统角色信息实体属性图

(8)系统日志信息表sys_log,该表可以存储操作日志的基本信息,操作日志的基本信息包括编号log_id,行为描述description,日至类型log_type,请求方式method,请求IPrequest_ip,请求耗时time,用户名username,IP来源address,浏览器browser,创建时间create_time。

系统日志信息表sys_log的实体属性图如图4-22所示。

图4-22  系统日志信息实体属性图

(9)轮播图信息表vote_advert,该表可以存储轮播图的基本信息,轮播图的基本信息包括编号id,广告状态status,广告名称name,是否限时limited,排序sequence,投放开始时间start_time,投放结束时间end_time,图片编号file_id,创建者create_by,创建时间create_time,更新者update_by,更新时间update_time。

轮播图信息表vote_advert的实体属性图如图4-23所示。

图4-23  轮播图信息实体属性图

(10)数据库总体结构E-R模型图如图4-24所示。

图4-24  数据库总体E-R图

4.3.2  逻辑结构设计

数据库的逻辑结构设计主要是把E-R图转化为数据库所需的表,从而实现E-R模型向关系模型的转化具体表结构如下。

(1)投票活动信息表vote,用来存储投票活动的基本信息,其相应的字段信息如表4-1所示。

表4-1  投票活动信息表

(2)投票选项信息表vote_option,用来存储投票选项的基本信息,其相应字段信息如表4-2所示。

表4-2  投票选项信息表

(3)投票用户信息表vote_user,用来存储投票用户的基本信息,其相应字段信息如表4-3所示。

表4-3  投票用户信息表

(4)系统用户信息表sys_user,用来存储系统用户的基本信息, 其相应字段信息如表4-4所示。

表4-4  系统用户信息表

(5)数据字典信息表sys_dict_detail,用来存储数据字典的详细信息,其相应字段信息如表4-5所示。

表4-5  数据字典信息表

(6)系统菜单信息表sys_menu,用来存储菜单的基本信息,其相应字段信息如表4-6所示。

表4-6  系统菜单信息表

(7)系统角色信息表sys_role,用来存储系统角色的基本信息,其相应字段信息如表4-7所示。

表4-7  系统角色信息表

(8)系统日志信息表sys_log,用来存储操作日志的基本信息, 其相应字段信息如表4-8所示。

表4-8  系统日志信息表

(9)轮播图信息表vote_advert,用来存储轮播图的基本信息,其相应字段信息如表4-9所示。

表4-9 轮播图信息表

4.4  本章小结

本章通过大量的图和表,对在线投票系统的体系架构设计、功能详细设计和数据库设计进行了详细的说明。


第5章  系统实现

通过对在线投票系统的深入的分析和设计,本系统分为创建投票功能模块、用户投票功能模块、投票管理功能模块、系统管理功能模块以及数据统计功能模块,本章将详细地介绍各个功能模块的实现。

5.1  创建投票模块

创建投票模块当用户进入到小程序后,点击创建投票活动,提示需要微信授权登录,登录后就可以进行投票活动的创建,获取填写的活动及选项信息进行上传发布。创建投票的流程图如图5-1所示。

图5-1  创建投票模块流程图

该功能的核心代码如下:

@Override

@Transactional

public VoteDto findById(Long id) {

Vote vote = voteRepository.findById(id).orElseGet(Vote::new);

Long visits = vote.getVisits();

if(ObjectUtil.isNotNull(visits)){

voteRepository.updateVisitsById(id);

}else {

vote.setVisits(1L);

voteRepository.save(vote);

}

ValidationUtil.isNull(vote.getId(),"Vote","id",id);

return voteMapper.toDto(vote);

}

其主要界面如图5-2所示。

图5-2  创建投票界面

5.2  用户投票模块

用户投票模块当用户进入小程序首页,点击活动,进入活动详情页面。对选项进行投票,提示还未授权登录不能投票。授权登录后即可进行投票,将投票数据写入数据库,在活动详情页显示累加后的票数。用户投票的流程图如图5-3所示。

图5-3  用户投票模块流程图

该功能的核心代码如下:

@Override

@Transactional(rollbackFor = Exception.class)

public void vote(Long voteId, Boolean anonymity, Set<Long> optionIds, String uuid, String code) {

AtomicInteger n = new AtomicInteger(0);

Map<String, Object> overtime = voteRepository.overtime(voteId);

int integer = ((Number) overtime.get("overtime")).intValue();

if(integer==1){

throw new BadRequestException("投票活动已过期");

}

 

Long userId = SecurityUtils.getCurrentUserId();

List<VoteUser> voteUserList = voteUserRepository.findVoteUserByVoteIdAndUserId(voteId, userId);

Vote vote = voteRepository.findById(voteId).orElseGet(Vote::new);

ValidationUtil.isNull(vote.getId(), "Vote", "id", voteId);

}

其主要界面如图5-4所示。

图5-4  用户投票界面

5.3  投票管理模块

投票管理当投票活动创建者进入小程序,在我的页面点击创建的投票,即可对自己创建的投票活动进行管理,包括编辑投票活动、暂停投票活动、删除投票活动、新增投票选项、查看总投票数和总浏览量以及分享投票活动。投票管理的流程图如图5-5所示。

图5-5  投票管理模块流程图

该功能的核心代码如下:

@Override

@Transactional(rollbackFor = Exception.class)

public void update(Vote resources) {

List<Option> options = resources.getOptions();

Vote vote =       voteRepository.findById(resources.getId()).orElseGet(Vote::new); ValidationUtil.isNull( vote.getId(),"Vote","id",resources.getId()); vote.copy(resources);

resources.setOptions(null);

voteRepository.save(vote);

 

options.stream().map(option -> {

option.setVote(vote);

return option;

}).collect(Collectors.toList());

optionRepository.saveAll(options);

}

其主要界面如图5-6所示。

图5-6  投票管理界面

5.4  系统管理模块

系统管理模块分为五个部分。用户管理设定了使用者的权限,使得不同用户在登录时所呈现的界面也会有所不同;普通用户实现了对登录小程序的用户进行查看以及删除;角色管理规定了本系统每种角色所对应的权限;菜单管理可以改变现有的系统菜单中的图标;字典管理实现了对一些固定数据的维护;系统日志用于记录用户操作日志与异常日志

5.4.1  角色管理

角色管理是系统管理模块的业务核心,其功能是使不同用户在登录时所呈现的界面不同,在相同的菜单中,不同的角色会有不同的菜单权限。

角色管理的流程图如图5-7所示。

图5-7  角色管理模块流程图

该功能的核心代码如下:

@Override

@Transactional(rollbackFor = Exception.class)

public void create(Role resources) {

if (roleRepository.findByName(resources.getName()) != null) {

throw new EntityExistException(Role.class, "username", resources.getName());

}

roleRepository.save(resources);

}

@Override

public void updateMenu(Role resources, RoleDto roleDTO) {

Role role = roleMapper.toEntity(roleDTO);

List<User> users = userRepository.findByRoleId(role.getId());

// 更新菜单

role.setMenus(resources.getMenus());

delCaches(resources.getId(), users);

roleRepository.save(role);

}

其主要界面如图5-8所示。

图5-8  角色管理界面

5.4.2  系统日志

系统日志可以用来对用户的操作日志和异常日志进行记录,便于开发人员进行错误查找。系统日志的流程图如图5-9所示。

图5-9  系统日志流程图

该功能的核心代码如下:

@Override

public Object queryAll(LogQueryCriteria criteria, Pageable pageable) {

Page<Log> page = logRepository.findAll(((root, criteriaQuery, cb) -> QueryHelp.getPredicate(root, criteria, cb)), pageable);

String status = "ERROR";

if (status.equals(criteria.getLogType())) {

return PageUtil.toPage(page.map(logErrorMapper::toDto));

}

return page;

}

其主要界面如图5-10所示。

图5-10  系统日志界面

5.5  数据统计模块

数据统计模块用来直观地查看投票结果,只能显示数据,无法进行操作。数据统计的流程图如图5-11所示。

图5-11  数据统计模块流程图

该功能的核心代码如下:

@Override

public Map<String, Object> queryVoterRanking(Long voteId, Long optionId) {

HashMap<String, Object> ohm = new HashMap<>();

long ranking = 0;

List<Map<String, Object>> options = optionRepository.orderByQuantity(voteId);

for (Map<String, Object> option : options){

long id = ((Number) option.get("id")).longValue();

if(id == optionId){

ranking = ((Number) option.get("ranking")).longValue();

break;

}

}

}

其主要界面如图5-12所示。

图5-12  数据统计界面

5.6  本章小结

本章重点介绍了在线投票系统各功能模块的实现方法。以流程图及核心代码为基础,明确表达了该系统已完成的所有功能,并给出了最终效果图。

第6章  系统测试

本章主要对基于微信小程序的在线投票系统测试的内容和结果进行阐述。介绍了系统所要求的测试环境和方法,测试的重点是功能和系统性能。通过本章节,可以测试系统的功能是否达到使用要求。

6.1  测试原则

根据在线投票系统的开发需求,设计了一个操作简便,界面友好,可扩充性强的微信小程序项目。本系统主要面向微信用户和后台管理人员。在进行测试时,需要对各功能单独进行测试。对在线投票系统进行合理地测试,对于保证系统的实际使用至关重要。全面测试整个系统,发现关键问题,确保系统的整体运行正常。

6.2  功能测试

功能测试包含创建投票模块测试、用户投票模块测试、投票管理模块测试、系统管理模块测试以及数据统计模块测试,因而对系统各模块进行单独测试。

6.2.1  创建投票功能测试

以普通用户身份登录微信小程序后,进行投票活动的创建,并对各个模块下的各项功能进行测试,主要是测试投票活动信息和投票选项信息的增添、编辑和删除等功能。该模块各功能的测试用例表如表6-1所示。

表6-1  创建投票测试用例表

通过上述测试,活动信息以及选项信息显示正确并且符合预期的结果,该投票活动可以顺利发布并在首页显示,事实证明创建投票功能可以正常使用。

6.2.2  用户投票功能测试

以普通用户身份登录微信小程序后,对活动进行投票,并对各个模块下的各项功能进行测试,主要是测试能否查看选项信息、能否对选项进行投票、排行榜是否显示正确等功能。该模块各功能的测试用例表如表6-2所示。

表6-2  用户投票测试用例表

通过上述测试,选项信息的显示是正确的,而且用户可以进行投票,达到了预期的效果。结果显示用户投票功能是有效的。

6.2.3  投票管理功能测试

以投票活动创建者身份进行登录后,选择创建的活动,并对各个模块下的各项功能进行测试,主要是测试能否对投票活动进行增添、编辑、暂停、删除以及分享活动等功能。该模块各功能的测试用例表如表6-3所示。

表6-3  投票管理测试用例表

通过上述测试,投票管理功能模块中,各功能都可以使用,符合预期的结果,事实证明投票管理功能可以正常使用。

6.2.4  系统管理功能测试

使用管理员的账号和密码,验证后进行登录,选择系统管理,并对各个模块下的各项功能进行测试,主要是测试能否对系统的用户、角色、普通用户、菜单、

字典、系统日志进行管理操作等功能。该模块各个功能的测试用例表如表6-4所示。

表6-4  系统管理测试用例表

通过上述测试,对子功能的操作,各功能列表在观察页面中的显示都达到了预期的正确效果,并成功将信息存储到了系统。结果表明,该系统管理功能是正确的。

6.2.5  数据统计功能测试

使用管理员的账号登录后,选择投票管理下的数据统计,并对各个模块下的各项功能进行测试,主要是测试后台管理员能否可视化查看投票结果和投票用户数据。该模块的功能测试用例表如表6-5所示。

表6-5  数据统计测试用例表

通过上述测试,数据统计页中所显示的相应的投票活动所提供的图表信息都是正确的,与期望的结果一致,这表明了数据统计功能是正确的。

6.3  性能测试

利用Apache JMeter性能测试工具,对本系统的性能进行测试,并将实测数据与性能指标进行比较,以确定该系统达到标准。

(1)性能指标预测是检测系统性能的对比参考材料,性能指标如表6-6所示。

表6-6  性能指标

(2)测试工具:Apache JMeter。

(3)测试环境:使用Windows 10操作系统,使用Google Chrome浏览器。

(4)测试结果:本次测试结果如表6-7所示。

表6-7  测试结果表

测试结果表明,在线投票系统的性能达到了预期的效果,尽管存在着一些潜在的问题,但测试数据良好。如果可以改进数据库,那么系统的性能可能得到改善。

6.4  本章小结

本章首先对在线投票系统的各主要功能模块进行了具体的测试和分析,并采用相应的测试工具对其进行了性能测试。测试结果显示,系统各功能模块均符合设计要求。同时也表明,基于微信小程序的在线投票系统能够很好的满足使用者的基本需要。


第7章  总结和展望

本章重点对该系统的设计成果进行了总结,阐述了在开发中碰到的问题和有待改进的地方,并对其今后的发展趋势作了简短的说明。

7.1  总结

本论文对基于微信小程序的在线投票系统的设计与实现作了详尽的叙述与说明。在技术方面,对整个系统进行了整体的设计与实施,并就其测试原理和性能等问题进行了论述。本文的研究内容如下:

(1)该系统实现了创建投票、投票、投票结果统计等功能。创建者可以发布投票,而普通用户通过登录微信小程序即可对已发布的活动进行投票。

(2)该系统已在浏览器端完成了管理员登录、用户管理、角色管理、菜单管理和字典管理等系统的基本功能。

(3)根据投票管理里面的数据,管理员可以在数据统计界面中选择时间或者活动状态来选取结果,查看这段区间内的投票数据。

(4)管理员可以在后台管理系统中查看所有投票活动的结果,而且可以对小程序中的轮播图进行更改。

7.2  展望

本系统设计的功能虽然基本都实现了,但因为实际使用情况和本人的技术水平的原因,系统中的一些细节还有待进一步的研究和改进。

(1)系统在创建投票功能的设计上,现有功能是只能通过活动创建者来添加活动选项,造成创建者的工作量较大。后续希望用户可以进行自主报名,由活动创建者进行审核是否报名成功。

(2)在线投票系统的各项功能均已完成,但在具体使用方面还存在一些需要改进的地方,不同的投票活动其投票规则也不尽相同,所以面对不同的投票活动其投票规则的设置还需要完善。


参考文献

[1]

王雪莹.基于Web的安全电子投票系统[D].西安电子科技大学,2020.

[2]

邓笑.基于Spring Boot的校园轻博客系统的设计与实现[D].湖北:华中科技大学,2018.

[3]

Chen J, Pan H. Design of Man Hour Management Information System on Spring Boot Framework[J]. Journal of Physics: Conference Series, 2020, 1646(1):012136 (4pp).

[4]

Jian Chen, Chen Jian, Pan Hailan. Design of Man Hour Management Information System on Spring Boot Framework[J]. Journal of Physics: Conference Series,2020,1646(1).

[5]

Suryotrisongko H , Jayanto D P ,Tjahyanto A , Design and Development of BackendApplication for Public Complaint Systems Using Microservice Spring Boot[J],Procediacomputer Science, 2017,124:736-743.

[6]

谢志妮.基于Uni-app的微信小程序关键技术运用[J].电子技术与软件工程,2021(12):32-33.

[7]

Priyanka Tyagi. Pragmatic Flutter: Building Cross-Platform Mobile Apps for Android, iOS, Web & amp; Desktop[M]. CRC Press:2021-04-08.

[8]

张晓明.基于Uni-app和Android的学生手机管控系统的设计与实现[D].兰州大学,2020.

[9]

刘森.基于Uni-app的移动集团专线售前支撑系统的设计与实现[D].河南科技大学,2019.

[10]

王佳珺.基于Java的校园图书管理系统程序设计[J].电脑知识与技术,2022,18(08):60-61+64.DOI:10.14004/j.cnki.ckt.2022.0480.

[11]

Y.Shah.J. Shah,K.Kansara.Codc obfuscating a kotlin-bascd app with proguard 2018 SccondIntemational Conference on Advances in Flectronics[C]Computers and Communications(ICAECC),2018,12-18

[12]

林小凡.智能应用开发平台的设计与实现[D].西安电子科技大学,2021.

[13]

尉钦超,梁周宇,马奥迪,等.基于微信小程序的校园版闲鱼[J]. 科技创新与应用, 2021,11(23):4.

[14]

陈海涛.移动应用UI辅助开发系统的设计与实现[D].北京邮电大学,2021.

[15]

刘超.基于Spring Boot + Mybatis的在线投票管理系统的设计与实现[D].吉林大学,2018.


致    谢

光阴似箭,日月如梭,时光一瞬间就来到毕业的时刻。伴随着毕业论文的最后一个字落笔,我的学生生涯也即将从满眼好奇的入校到达淡淡失落的终点。回忆起大学生涯的一点一滴,从踏入校园那一刻的满心期待到即将离开时对校园、老师和同学们的离情别绪,从每天往返于教室、宿舍、食堂、图书馆的匆匆步履到大学生活中的五光十色,四年来的学习生活如剪影般一一重现,让我心生感慨,无限留恋,打心底里生出对校园、对老师、对同学朋友们的感恩与眷恋。

本学士学位论文的工作是在王建老师的悉心指导下完成的,王建老师严谨的治学态度和科学的工作方法给了我极大的帮助和影响。在此衷心感谢四年来王建老师对我的关心和指导。

王建老师悉心指导我完成了学士学位论文,在学习上和生活上都给予了我很大的关心和帮助,在此向王建老师表示衷心的谢意。

李乃祥、张炳轩、王玉潇三位老师对于我的学士学位论文提出了许多的宝贵意见,在此表示衷心的感谢。

在撰写学士学位论文期间,我的同学们对我学士学位论文中的研究工作给予了热情帮助,在此向他们表达我的感激之情。

最后,要感谢一直支持我的家人,在我学习和成长的过程中一路陪伴,给我继续前行的力量和勇气。








【北京交通大学海滨学院毕业论文模板】基于Spring Boot的网络投票系统的设计与实现的评论 (共 条)

分享到微博请遵守国家法律