(1)研究背景及意义
投票行为作为个人意愿和诉求的表现,一直存在人们的生活和生产实践中。其表现形式多种多样,具体实践包括举手表决、纸质投票、电话投票、邮递投票、电子投票等。随着网络的发展,电子在线投票系统凭借其高效、无接触的优点成为投票行为的首选方式,投票者通过网络登入系统,完成投票活动。
首个电子投票方案由Chaum于1981年,其提出了一种基于公钥密码的投票系统。在1983年,Chaum基于盲签名方案设计了一套新的投票方案,在1992年,电子投票协议FOO开始出现,其优化了盲签名技术,使得电子投票协议落地成为可能。1995年Sako和Kilian提出了基于混淆匿名信道的投票方案,该方案讨论了投票者和投票机构的关系,由于该方案假设投票者和投票中心存在不可泄露的隐私通道,所以这个方案被专家学者认为实用性很差。2005年,Juels和Jakobsson通过一个复杂的投票协议保证了一个可靠的传输通道,使得投票者有能力产生一张无法被顶替的选票。1997年Cramer R等人首次提出了基于ELGamal的同态电子投票系统,将大量选票同时进行计算,将具体的投票细节隐藏起来。2001年Olivier等学者提出了基于Paillier加密同态性的电子投票方案,该方案实用性强,复杂度低,便于应用。之后随着多方计算的不断深入探究,2001年Fischlin加密方案提出了一个多方计算的投票系统,使得整个投票系统黑盒化。
在企业的建设工作中,需要能够对员工进行问卷调查或者投票评选等,传统的投票方式常使用纸质的方式来收集意见,不仅耗费大量不必要的人力、物力和财力而且投票的结果统计工作量大,过程繁琐,效率低下。随着互联网技术的不断发展,公民意识增强和现实考核方式多样化等多方面因素共同作用下,新型模式不断产生,2016年深圳市政府率先开发“微信投票系统”,试图从票决技术层面提高公众的社区事务参与度。在软硬件同步不断发展的社会背景下,各大企业为了提高自身的竞争力,纷纷开始了信息化建设工作。
当前存在各种版本的投票管理系统,尽管这些投票管理具有不同的特点,被应用在不同的领域并取得了一定的成效。但是仍然存在一些弊端使之没办法完美的契合企业的使用需求。譬如:很多投票管理系统技术落后,仍然使用传统的C/S架构,使用起来极不方便。再如:很多投票管理系统功能单一,只能够满足基本的投票、统计功能,系统本身的安全性和保密性级别低,极易被篡改或泄露。
在上述的背景下,本课题致力于设计与实现一个基于SSM框架的在线投票系统,该系统前端使用HTML语言结合JS进行界面静态设计和动态交互,后端使用JAVA语言结合SSM框架来接收前端请求并且对数据库中的数据进行处理。通过该在线投票系统能够完成发起投票、投票、投票结果统计等与投票相关的事项。通过线上的投票更快速、方便、准确的获取员工的投票意愿,此外,也能够借助在线投票系统完成企业员工的基本信息管理,人员的考核管理等,为企业节省更多的管理成本,提升企业的管理效率,使企业具有更强的竞争力。
(2)总体方案
在线投票系统主要是由系统管理模块、投票结果统计模块、投票管理模块三部分组成,具体的功能模块设计方案如下图所示。
1)用户管理:实现对系统用户的有效管理,完成系统用户的注册、删除和资料修改等工作。本系统为方便大家投票,投票活动采用不记名方式进行,系统管理员能够登录系统后台,拥有数据上传下载等权限,需要严格控制。
2)投票模块。在线投票模块,是本系统的主要功能模块,按照投票工作的要求,完成相应的投票、计票和统票功能。支持多选及单选,设定每次为单个/多个选手投票;投票结果统计,直观的显示投票结果。主要包括投票信息展示、投票选择列表等页面内容。
3)投票结果统计模块,用于实时记录每位投票选项的当前得票数,包括编号、信息和票数等信息。
4)角色管理模块:可以为本系统设置使用角色,并设置各个角色的权限。可自定义角色的名称、数据权限、各个板块的使用/管理权限。角色分为默认角色(即系统自带角色)和自定义角色(即管理员自行添加的角色)。默认角色有默认的权限,不可删除/修改,自定义角色可以自定义权限。
5)发起投票模块:系统可以根据需要授权用户发起投票,在发起投票时需要先编辑需要投票的具体信息,投票时间等信息。
(3)关键技术
数据库:MySQL数据库,MySQL是一种非结构化语言,语言简单、易于学习、功能强大、信息量大。使用 MySQL数据库可以方便地进行大量的数据查询,而 MySQL数据库不需要用户了解它的存储方式,也不需要了解它的存储方式。所以,MySQL数据库是完全不同于其他数据的结构。本系统中使用MySQL数据库来进行表的设计工作,需要用到的SQL语言也较为简单,能够在开发工作中边学习边使用。
编程语言(后端):JAVA语言,JAVA具有很高的移植性,可以适用于各种操作系统,即一次开发,多次部署。加上JAVA是一种面向对象的开发语言,和面向过程相对比,可以将现实世界的各种事物用代码简练的写出来,很方便的进行开发。虽然JAVA和C+语言很相似,但是JAVA的封装较多,开发人员直接调用就可以,不用重复的写同一种代码。而且和C++相对比,JAVA还支持多线程,在使用的时候,JAVA的处理效率也比较高。在安全方面,JAVA有很好的安全控制,例如aop还有线程锁等等,都可以很好的提升应用的安全性。
编程语言(前端):HTML语言, 使用HTML构建的网页对于网站用户来说,它可以保证网站在离线的情况下web页面仍然可以正常使用,也可以保证用户的刷新页面工作和其他正在执行的任务之间互相独立,互不干扰。
架构:B/S结构,B/S结构是把程序完整放置到计算机网络的服务器上,通过计算机互联网给用户提供远程的网络服务,在 B/S结构下,用户可以在任何地方访问、使用网站功能,不受时间、地域限制。B/S结构主要包括三层:数据层、控制逻辑层和视图层。数据层主要是处理数据库中的表数据,控制逻辑层主要负责处理来自前端界面的请求,根据请求内容处理数据库中的表数据,并将处理结果返回前端,视图层主要是用户通过界面操作发送请求。
(4)参考文献
[1]张凯. 基于区块链的电子在线投票系统关键技术研究与实现[D].重庆大学,2020.
[2]李大印.基于复杂规则的在线投票考核系统实现[J].电脑编程技巧与维护,2020(04):41-43+58.
[3]刘超. 基于Spring Boot+Mybatis的在线投票管理系统的设计与实现[D].吉林大学,2018.
[4]吴三柱.在线投票系统中防刷票技术研究[J].价值工程,2018,37(22):203-204.
[5]张黎黎,杨龙频,李岳峰.浅议卫生标准在线投票系统开发与应用——基于在线投票系统文献分析[J].中国卫生信息管理杂志,2018,15(03):266-269.
[6]刘庆华.业主在线投票系统的设计与实现[J].软件,2017,38(03):48-52.
[7]曹华山.SSM框架在Web应用开发中的设计与实现[J].无线互联科技,2021,18(11):108-109.
[8]邱丹萍.Web开发中SSM框架的分析[J].电脑知识与技术,2020,16(17):81-82.
[9]宋旸.使用JAVA语言开发Web应用软件的知识探讨[J].中国设备工程,2022(14):121-123.
[10]何芳.JAVA平台及应用JAVA技术的安全问题分析[J].科技资讯,2021,19(35):10-12.
[11]焦宇,李民,王欢,余开朝.基于MySQL性能调优的推荐系统优化设计[J].软件导刊,2022,21(09):108-112.
[12]王淼.MySQL查询优化与研究[J].信息记录材料,2022,23(05):227-229.
[13]Zmaranda Doina R.,Moisi Cristian I.,Győrödi Cornelia A.,Győrödi Robert Ş.,Bandici Livia. An Analysis of the Performance and Configuration Features of MySQL Document Store and Elasticsearch as an Alternative Backend in a Data Replication Solution[J]. Applied Sciences,2021,11(24).
[14]Zheng Hongying. A Study on the Design of English Speaking Examination System Based on SSM Framework[J]. Journal of Sensors,2022,2022. [1]Farkas Izabella Ingrid,Szabados Kristóf,Kovács Attila. Improving productivity in large scale testing at the compiler level by changing the intermediate language from C++ to JAVA[J]. Acta Universitatis Sapientiae, Informatica,2021,13(1).
[15]Ciomek Krzysztof,Kadziński Miłosz. Polyrun: A Java library for sampling from the bounded convex polytopes[J]. SoftwareX,2021,13.
|