企业职工投票小程序--毕设附源码45566

  

摘 要

随着企业信息化建设的不断推进,传统的职工投票方式逐渐无法满足现代企业对高效、便捷、数据准确性的需求。基于微信小程序的企业职工投票系统,利用微信小程序的普及性和便捷性,提供了一种全新的投票解决方案。该系统通过Node.js作为后端开发框架,结合数据库技术实现了对投票活动的高效管理。系统主要包括管理员、管理用户和员工用户三大角色,每个角色具有不同的操作权限。管理员通过后台管理系统对投票主题、投票活动、投票记录、统计数据等进行管理;管理用户则负责创建和管理投票活动,查看统计数据并进行记录查询;员工用户可以参与投票、查看企业资讯、公告以及投票结果,提供了一个用户友好的界面和流畅的使用体验。系统通过微信小程序与后端的联动,确保了数据的实时更新和投票结果的即时统计,同时具备了信息安全保障措施,确保投票数据的保密性和完整性。

本系统的设计与实现,能够有效提升企业内部投票活动的参与度和管理效率,为企业决策提供数据支持,具有较高的应用价值。

关键词:微信小程序,企业职工,投票系统,Node.js,系统设计

Abstract

With the continuous advancement of enterprise informatization construction, traditional employee voting methods are gradually unable to meet the modern enterprise's needs for efficiency, convenience, and data accuracy. The enterprise employee voting system based on WeChat mini program provides a new voting solution by utilizing the popularity and convenience of WeChat mini program. The system utilizes Node.js as the backend development framework and combines database technology to achieve efficient management of voting activities. The system mainly includes three roles: administrator, management user, and employee user, each with different operational permissions. Administrators manage voting topics, voting activities, voting records, statistical data, etc. through the backend management system; Managing users is responsible for creating and managing voting activities, viewing statistical data, and conducting record queries; Employee users can participate in voting, view company information, announcements, and voting results, providing a user-friendly interface and smooth user experience. The system ensures real-time updates of data and real-time statistics of voting results through the linkage between WeChat mini programs and the backend. At the same time, it has information security measures to ensure the confidentiality and integrity of voting data.

The design and implementation of this system can effectively enhance the participation and management efficiency of internal voting activities in enterprises, provide data support for enterprise decision-making, and have high application value.

Keywords: WeChat Mini Program, Enterprise Employees, Voting System, Node.js, systems design


目录

摘 要

第1章引言

1.1研究背景与意义

1.2国内外研究现状

1.3论文组成结构

第2章相关技术介绍

2.1Express介绍

2.2Node.js介绍

2.3MySQL数据库

2.4JavaScript 运行模式

2.5B/S框架

2.6微信开发者工具

2.7小程序框架介绍

第3章系统分析

3.1可行性分析

3.1.1技术可行性

3.1.2经济可行性

3.1.3操作可行性

3.2系统功能需求

3.3系统性能需求

3.4 系统流程分析

3.4.1系统开发流程

3.4.2用户登录流程

3.4.3系统操作流程

3.4.4添加信息流程

3.4.5修改信息流程

3.4.6删除信息流程

第4章系统设计

4.1系统体系结构

4.2总体结构设计

4.3数据库设计

4.3.1概念设计

4.3.2数据库表设计

第5章系统实现

5.1登录模块的实现

5.2 员工用户子系统模块的实现

5.2.1 用户首页模块

5.2.2 新闻资讯模块

5.2.3 投票记录模块

5.2.4 投票活动模块

5.3 管理用户子系统模块的实现

5.3.1 部门分类管理模块

5.3.2投票主题管理模块

5.3.3 投票活动管理模块

5.4 管理员子系统模块的实现

5.4.1部门分类管理界面

5.4.2系统用户界面

5.4.3投票记录管理界面

5.4.4投票统计管理界面

5.4.5系统管理界面

5.4.6网站公告管理界面

第6章系统测试

6.1 测试目的

6.2测试方法

6.3测试内容

6.4测试结果

结论

参考文献

致谢

第1章引言

1.1研究背景与意义

在现代企业的管理中,职工的意见和建议是推动企业持续发展的重要因素。企业决策不仅仅依赖于高层管理者的判断,更需要广泛吸纳来自员工的反馈和意见。传统的投票方式存在一定的局限性,如操作繁琐、时间和空间的限制,无法充分调动员工的参与积极性,也无法及时获取反馈数据。随着信息技术的不断发展,尤其是移动互联网和社交媒体的广泛应用,企业职工投票系统的建设逐渐成为提升员工参与度和决策透明度的重要手段。

微信小程序作为一种轻量级的应用,具备高用户渗透率和便捷性,成为企业在信息化建设中不可忽视的工具。通过微信小程序,员工可以随时随地参与投票,企业能够高效地收集员工意见,并实时统计投票结果,确保决策的公正性和透明度。Node.js作为一种高效的后端开发框架,能够处理高并发请求,确保系统在访问量较大时依然保持稳定运行。同时,Node.js支持多种数据库和服务的集成,使得系统的数据处理和管理更加便捷。

在企业职工投票系统的设计与实施过程中,不仅提高了投票活动的效率和准确性,还增强了企业内部信息流通的透明性,提升了员工对公司管理的信任感和参与感。通过系统化的投票管理,企业能够及时了解员工的需求和意见,做出更加科学合理的决策,从而推动企业文化建设和整体发展。

1.2国内外研究现状

随着企业管理模式的不断创新和信息技术的快速发展,职工投票系统逐渐成为提高员工参与感和决策透明度的重要工具。国内外关于企业职工投票系统的研究经历了从传统投票方式到信息化、数字化投票系统的转变。国外在企业职工投票系统的研究和应用上起步较早,许多发达国家的企业已经通过互联网技术为员工提供了更加便捷和高效的投票平台。例如,一些跨国公司通过电子投票系统实现了全球范围内员工意见的快速收集和反馈,这些系统通常具备多种功能,如投票统计、结果分析和意见反馈等,极大地提升了企业决策的透明度和员工的参与度。

在国内,随着信息化建设的推进,越来越多的企业开始尝试采用微信小程序等移动平台,结合互联网技术进行职工投票管理。尤其是在大型企业和国有企业中,职工投票系统逐渐成为日常管理的重要组成部分。这些系统不仅提高了投票活动的参与度,还有效减少了人工管理成本。国内的一些研究主要集中在投票系统的设计与实现、数据安全性和投票过程的透明度等方面。此外,随着员工对企业管理模式要求的不断提升,国内的研究也在不断深入,越来越多的学者开始关注如何通过技术手段提升投票结果的公正性和数据的有效性。

总体而言,虽然国内外的研究都在不断推进,技术的应用也在逐步完善,但在一些特定的行业和企业中,职工投票系统的普及程度和应用效果仍存在一定差异。未来,随着技术的不断发展和企业需求的多样化,职工投票系统的功能和应用场景将会更加丰富,为企业管理提供更加精准的决策依据。

1.3论文组成结构

论文将分层次经行编排,除去论文摘要致谢文献参考部分,正文部分还会对系统需求做出分析,以及阐述大体的设计和实现的功能,最后罗列部分调测记录,论文主要架构如下:

第一章:引言。第一章主要介绍了课题研究的背景和意义,系统开发的国内外研究现状和本文的组成结构。

第二章:开发工具及相关技术介绍。主要介绍系统开发所采用的工具和技术。

第三章:系统需求分析。主要从系统的用户、功能等方面进行需求分析。

第四章:系统设计。主要对系统框架、系统功能模块、数据库进行功能设计。

第五章:系统实现。主要介绍了系统框架搭建、系统界面的实现。

第六章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试

第七章:总结与展望。

   

第2章相关技术介绍

2.1Express介绍

Express是目前流行的基于Node.js运行环境的Web应用程序开发框架,它简洁且灵活,为Web应用程序提供了强大的功能。Express提供了一个轻量级模块,类似于jQuery(封装的工具库),它把Node.js的HTTP模块的功能封装在一个简单易用的接口中,用于扩展HTTP模块的功能,能够轻松地处理服务器的路由、响应、Cookie和HTTP请求的状态[1]。

Express的优势:

(1)简洁的路由定义方式。

(2)简化HTTP请求参数的处理。

(3)提供中间件机制控制HTTP请求。

(4)拥有大量第三方中间件。

(5)支持多种模版引擎。

2.2Node.js介绍

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。

Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHPPythonPerlRuby 等服务端语言平起平坐的脚本语言。 发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。

Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。 Node是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用[2]。

2.3MySQL数据库

MySQL是一种开源关系型数据库管理系统,广泛应用于Web应用和企业级数据存储。MySQL支持结构化查询语言,允许开发者通过标准语句进行数据的创建、读取、更新和删除操作[3]。数据库通过表格形式组织数据,支持数据完整性和约束条件的定义。MySQL的存储引擎机制使得用户可以根据具体需求选择不同的存储引擎,以优化性能和功能。

MySQL具有高性能和可扩展性,支持大规模数据存储和高并发访问。系统提供了丰富的用户权限管理和数据加密安全特性。MySQL能够与多种编程语言和框架兼容,广泛应用于内容管理系统、电子商务平台和数据分析等各种场景。

2.4JavaScript 运行模式

JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的[4]。

是一种解释性脚本语言(代码不进行预编译)。

主要用来向HTML标准通用标记语言下的一个应用)页面添加交互行为。

可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离[5]。

跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如WindowsLinuxMacAndroidiOS等)[6]。

JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。

2.5B/S框架

B/S(Browser/Server)架构是一种基于浏览器和服务器的系统架构模式,用户通过浏览器与服务器进行交互。B/S架构简化了客户端的部署和管理,用户无需在本地安装复杂的软件,只需使用标准浏览器即可访问应用程序。服务器端负责处理业务逻辑和数据存储,客户端则主要负责展示用户界面和数据交互[7]。B/S架构的设计使得系统更新和维护集中在服务器端,降低了维护成本。

B/S架构通常采用Web技术进行实现,包括HTML、CSS和JavaScript等。用户在浏览器中发起请求,服务器响应并返回数据。数据传输通常通过HTTP或HTTPS协议进行,B/S架构的灵活性使其适用于在线购物、信息管理系统和社交网络等各类应用场景[8]。由于其易于扩展性,B/S架构可以方便地支持大规模用户访问,适应不断变化的业务需求。

2.6微信开发者工具

微信开发者工具是一款专为小程序开发而设计的应用,它不断改进,提供了便捷的操作方式,并且在开发过程中可以通过微信扫描二维码来访问,从而实现快速、准确的小程序开发和调试。

根据用户的需求,我们将采用不同的屏幕大小来制作小程序。

在完成了视图布置之后,可以通过执行编辑功能,快速更改当前的视图界面。

控制台:方便调试打印输出信息。

将代码上传至腾讯服务器,并在审核过程中填写版本号和备注信息,以确保代码的安全性和准确性。

通过查看资源文件,我们可以快速地调整相关项目的文件目录,从而实现断点调试。

使用远程调试技术,无论是在手机端还是PC端,都能够轻松地进行开发工作。

本地数据存储:显示的是本地存储的数据。

通过使用子父层级结构,我们可以更容易地进行视图调试。

微信的代码体积应该保持在2M 以内,而且在开发过程中,应该严格检查合法域名信息,并且为小程序的后台配置服务器域名。

微信开发者工具已经成为了开发过程中不可或缺的一部分,并且正在不断地改进和完善。=

2.7小程序框架介绍

这款微信小程序的设计旨在帮助用户快速、便捷地创建出一款拥有完全独特 特色的应用。它由一套完善的框架结构,将用户界面、操作界面、功能界面等多种功能完美结合,使用户只需要一点点的操作,就能轻松实现微信小程序的创建。框架的核心功能是一个快速的数据绑定机制,它能够轻松地将用户的信息和界面进行一致性的管理。它不仅支持对用户信息的实时监控,还能够根据用户的需求,实现对界面的快速调整和优化,从而使用户能够轻松地构建强大的微信小程序。

第3章系统分析

3.1可行性分析

开发任何一个系统,都要对其可行性进行分析,对其时间和资源上的限制进行考虑,这样可以减少系统开发的风险。同时,分析之后不仅能够合理的运用人力,还能在各方面资源的消耗上得到节省。下面就对技术、经济和操作三个方面来介绍。

3.1.1技术可行性

企业职工投票系统具有较高的技术可行性。首先,Node.js作为一种高效的服务器端运行环境,具备非阻塞I/O和事件驱动的特性,能够在高并发情况下保持系统的高性能,适应企业职工投票系统的实时数据处理需求。Express框架简化了Web应用的开发,提供了灵活的路由和中间件支持,确保了后台逻辑的快速实现。MySQL作为成熟的关系型数据库,能够高效地管理和查询大量的数据,保证了数据的完整性与一致性。通过这些技术的结合,系统能够提供稳定、可靠的服务,同时具有良好的扩展性和维护性,满足企业职工投票系统未来的增长需求。

3.1.2经济可行性

企业职工投票系统在经济上具有较高的可行性。采用Node.js和Express框架进行开发,可以大大减少开发时间和人力成本,同时由于这两者都是开源技术,避免了昂贵的商业软件授权费用。MySQL作为一款广泛应用的开源数据库,其成本较低且支持高效的数据管理,能够满足系统的存储需求而不增加额外开销。此外,系统的模块化设计与高效的性能支持,意味着平台能够处理大量用户和租赁数据,提升运营效率,进而降低了后期维护和扩展的成本。因此,从初期开发到长期运营,系统的经济性都表现出较强的竞争力,为企业职工投票系统提供了低成本、高回报的解决方案。

3.1.3操作可行性

企业职工投票系统在操作上具有较高的可行性。首先,Node.js和Express框架的广泛应用使得开发人员能够快速上手,开发周期短且易于维护。系统采用的前后端分离架构,前端与后端通过API进行高效通信,简化了操作流程,提升了用户体验。同时,MySQL数据库的管理和查询操作直观且稳定,能够保证数据的准确性和实时性。对于管理员和用户而言,系统界面设计简洁直观,操作流程清晰,且通过权限控制,确保了不同角色的操作权限。系统的可扩展性和易于升级的特性,也为后期操作的灵活调整提供了保障。因此,该系统在日常操作中具备高效、稳定且易于管理的特点,确保了平台的顺利运行。

综上所述,企业职工投票系统在技术、经济、操作三个方面都是完全可行的。

3.2系统功能需求

在系统开发设计前,应该对功能做初步设想,清楚这个管理系统有什么板块,每个板块有什么功能,整体的设计是否满足使用者的需求,接着对所开发的系统功能进行的详细分析总结,从而设计出完整的系统并将其实现。用户与开发人员的交流分析,使其达到最佳理解程度,使系统功能达到最佳。

员工用户用例图如下所示。

图3-1 员工用户用例图

管理员用例图如下所示。

图3-2 管理员用例图

管理用户用例图如下所示。

图3-3 管理用户用例图

通过对用例图的分析和调查,根据本系统的实际需要,从用户角度提出需求功能如下:

1. 员工用户功能描述

员工用户通过微信小程序可轻松访问系统,查看企业最新资讯和公告,参与当前的投票活动。员工可通过“我的”页面管理个人收藏、评论、统计和投票记录,及时了解自己在各项投票中的表现和投票结果,同时接收到关于系统更新和活动提醒的通知。通过这一系列功能,员工能够便捷地参与公司决策,并获得与公司相关的重要信息,增强了员工的参与感和企业文化的凝聚力。

2.管理员功能描述

管理员可以通过后台首页实时查看系统的整体概况,管理系统用户信息,进行部门分类的设置和调整。管理员还可以管理投票主题的创建和投票活动的安排,确保投票活动有序进行。除此之外,管理员可以查看并管理投票记录,实时监控投票情况,还能够进行详细的投票统计分析,以便生成数据报告。通知提醒管理功能帮助管理员及时向用户推送系统更新和投票相关的提醒信息。此外,系统管理部分,包括轮播图和网站公告的管理,进一步提升了系统的可操作性和用户体验。管理员还可以管理企业资讯及其分类,确保企业内部信息的及时传递。

3.管理用户功能描述

管理用户可以通过后台首页对系统进行概览,进行部门分类和投票主题的设置与管理,安排投票活动并跟踪其进展。管理用户还能够查看和管理投票记录,实时掌握投票活动的参与情况,并通过投票统计管理获取相关数据分析,支持科学决策。通知提醒管理功能确保管理用户及时接收到系统和投票活动的相关通知,方便其高效进行日常工作。

3.3系统性能需求

评判一个系统好坏的一项重要指标就是性能,下面是对此系统的一些性能进行阐述。

1.系统的安全性和稳定性: 企业职工投票系统在管理权限上有着严格的控制,即想登录此平台进行操作,则必须要有操作权限,没有权限的用户是不可能登录平台查看任何的信息和数据,从而确保了系统的安全性。

2.数据的完整性和准确性:第一个是各项记录信息的完整性,信息记录的内容可以为空;第二个是各项信息数据之间相互联系的准确性;第三个是数据在不同记录信息的一致性

3.用户操作系统简单方便:在系统开发中按照“简单易用”的原则,能够使用户对系统的使用一目了然,既能保证用户使用,同时又能保证维护人员方便维护。

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章系统设计

4.1系统体系结构

企业职工投票系统选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图4-1所示:

图4-1 系统工作原理图

其最终前后台交互原理如图4-2所示。

图4-2前后台交互原理

具体交互流程为:浏览器中执行具体操作,操作命令将生成一个do方法。该方法使得浏览器能够访问后台中的Controller层,Controller层由于业务上的需要执行进而访问Service层。Service层收到指令后将会去调用内部DAO层的接口。接口将会和MyBatis层下的一个SQL语句相对接。对接好之后进而访问MySql数据库。更新底层数据,然后将数据同步回MyBatis层,同步变化后的数据将通过DAO层接口,Service层和后台Controller层,直观反映到浏览器页面上。

4.2总体结构设计

企业职工投票系统的整体结构设计如下图所示。

图4-3系统功能结构图

4.3数据库设计

在进行数据库设计时,概念设计帮助明确系统的整体结构和需求。在这一阶段,需要确定实体、属性以及它们之间的关系,为后续的数据库表设计奠定基础。接下来,将深入探讨数据库表设计的具体细节,实现更高效的数据存储和管理。

4.3.1概念设计

概念设计是数据库设计的第一步,其主要目标是对系统的数据需求进行全面的理解和抽象[9]。在这一阶段,通过建立实体-关系模型(ER模型)来识别系统中的关键实体、属性及其相互关系。概念设计的输出是一个清晰的ER图,作为后续数据库表设计的基础。以下将展示系统的全局E-R图。

图4-4数据库E-R图

4.3.2数据库表设计

这一阶段的重点是将概念模型转换为实际的数据库结构,包括表的创建、字段的定义及数据类型的选择。每个实体通常对应于数据库中的一张表,而实体的属性则转化为表的列[10]。以下是系统的数据库表设计展示。

表 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-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-6-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-7-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-8-department_classification(部门分类)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

department_classification_id

int

部门分类ID

2

department_classification

varchar

64

部门分类

3

limit_times

int

限制次数

4

limit_type

tinyint

限制次数类型1-每天次,2-总计次

5

create_time

datetime

创建时间

6

update_time

timestamp

更新时间

表 4-9-employee_users(员工用户)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

employee_users_id

int

员工用户ID

2

employee_id

varchar

64

员工工号

3

employee_name

varchar

64

员工姓名

4

employee_mobile_phone

varchar

16

员工手机

5

work_department

varchar

64

工作部门

6

employee_position

varchar

64

员工职位

7

examine_state

varchar

16

审核状态

8

user_id

int

用户ID

9

create_time

datetime

创建时间

10

update_time

timestamp

更新时间

表 4-10-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-11-manage_users(管理用户)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

manage_users_id

int

管理用户ID

2

management_id

varchar

64

管理工号

3

user_name

varchar

64

用户姓名

4

users_mobile_phone

varchar

16

用户手机

5

work_department

varchar

64

工作部门

6

user_position

varchar

64

用户职位

7

examine_state

varchar

16

审核状态

8

user_id

int

用户ID

9

create_time

datetime

创建时间

10

update_time

timestamp

更新时间

表 4-12-notice(公告)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

notice_id

mediumint

公告ID

2

title

varchar

125

标题

3

content

longtext

4294967295

正文

4

create_time

timestamp

创建时间

5

update_time

timestamp

更新时间

表 4-13-notification_reminder(通知提醒)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

notification_reminder_id

int

通知提醒ID

2

employee_users

int

员工用户

3

notification_title

varchar

64

通知标题

4

notification_type

varchar

64

通知类型

5

notification_date

date

通知日期

6

notification_content

text

65535

通知内容

7

create_time

datetime

创建时间

8

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-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-16-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-17-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-18-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-19-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

email

varchar

64

邮箱

11

email_state

smallint

邮箱认证:(0未认证|1审核中|2已认证)

12

avatar

varchar

255

头像地址

13

open_id

varchar

255

针对获取用户信息字段

14

create_time

timestamp

创建时间

表 4-20-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-21-voting_activity(投票活动)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

voting_activity_id

int

投票活动ID

2

voting_theme

varchar

64

投票主题

3

voting_image

varchar

255

投票图片

4

voting_figures

varchar

64

投票人物

5

department_classification

varchar

64

部门分类

6

number_of_votes_cast

double

已投票数

7

total_number_of_votes_for_the_theme

double

主题总票数

8

date_of_initiation

date

发起日期

9

closing_date

datetime

截止日期

10

initiate_user

int

发起用户

11

user_name

varchar

64

用户姓名

12

character_introduction

text

65535

人物介绍

13

voting_rules

text

65535

投票规则

14

voting_department

text

65535

可投票部门

15

voting_details

longtext

4294967295

投票详情

16

hits

int

点击数

17

praise_len

int

点赞数

18

collect_len

int

收藏数

19

comment_len

int

评论数

20

examine_state

varchar

16

审核状态

21

timer_title

varchar

64

计时器标题

22

timing_start_time

datetime

计时开始时间

23

timing_end_time

datetime

计时结束时间

24

voting_record_limit_times

int

立即投票限制次数

25

voting_statistics_limit_times

int

生成统计限制次数

26

create_time

datetime

创建时间

27

update_time

timestamp

更新时间

表 4-22-voting_record(投票记录)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

voting_record_id

int

投票记录ID

2

voting_number

varchar

64

投票编号

3

voting_theme

varchar

64

投票主题

4

voting_image

varchar

255

投票图片

5

voting_figures

varchar

64

投票人物

6

department_classification

varchar

64

部门分类

7

initiate_user

int

发起用户

8

employee_users

int

员工用户

9

employee_id

varchar

64

员工工号

10

employee_name

varchar

64

员工姓名

11

voting_time

date

投票时间

12

number_of_voters

varchar

64

投票人数

13

personal_remarks

text

65535

个人备注

14

user_id

int

用户ID

15

create_time

datetime

创建时间

16

update_time

timestamp

更新时间

17

source_table

varchar

255

来源表

18

source_id

int

来源ID

19

source_user_id

int

来源用户

表 4-23-voting_statistics(投票统计)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

voting_statistics_id

int

投票统计ID

2

voting_figures

varchar

64

投票人物

3

voting_theme

varchar

64

投票主题

4

department_classification

varchar

64

部门分类

5

number_of_votes_cast

double

已投票数

6

total_number_of_votes_for_the_theme

double

主题总票数

7

initiate_user

int

发起用户

8

statistical_title

varchar

64

统计标题

9

statistical_date

date

统计日期

10

voting_percentage

double

得票率

11

voting_trends

text

65535

投票趋势

12

create_time

datetime

创建时间

13

update_time

timestamp

更新时间

14

source_table

varchar

255

来源表

15

source_id

int

来源ID

16

source_user_id

int

来源用户

表 4-24-voting_theme(投票主题)

编号

字段名

类型

长度

是否非空

是否主键

注释

1

voting_theme_id

int

投票主题ID

2

voting_theme

varchar

64

投票主题

3

create_time

datetime

创建时间

4

update_time

timestamp

更新时间


第5章系统实现

5.1登录模块的实现

为确保系统安全性,系统操作员只有在登录界面输入正确的用户名、密码、权限以及验证码,单击“登录”按钮后才能够进入本系统的主界面。登录界面如下图所示。

图5-1登录界面

用户登录的关键代码如下:

Login.prototype.api = async function(req) {

var body = req.body;

var obj = await $.services["user"].get_obj({

username: body.username

},{like:false});

if (obj) {

var group = await $.services["user_group"].get_obj({

name:obj.user_group

})

if (group){

if (group.name!=="管理员"){

var sql = "select examine_state from "+ group.source_table +" WHERE user_id = " + obj.user_id;

var userExamine = await $.mysql.run(sql);

if (userExamine && userExamine.length > 0 && userExamine[0].examine_state!=="已通过"){

return {

error: {

code: 70000,

message: "该用户审核未通过"

},

};

}

}

if (obj.state!==1){

return {

error: {

code: 70000,

message: "用户非可用状态,不能登录"

},

};

}

var password = md5(body.password);

if (password === obj.password) {

req.session.user = obj;

var date = Date.parse(new Date());

var token = md5(obj.user_id + "_" + date);

await $.services["access_token"].add({

token,

info: JSON.stringify(obj),

user_id:obj.user_id

});

obj.token = token;

return {

result: {obj}

};

} else {

return {

error: {

code: 70000,

message: "密码错误"

},

};

}

}else {

return {

error: {

code: 70000,

message: "用户组不存在"

},

};

}

} else {

return {

error: {

code: 70000,

message: "账户不存在"

}

};

}

};               

5.2 员工用户子系统模块的实现

5.2.1 用户首页模块

首页是系统的主界面,展示系统的核心内容,包括轮播图、最新企业资讯等。用户可以通过首页快速访问各个功能模块,还可以根据关键词搜索相关内容,如下图所示。

图5-2 首页界面

前台首页关键代码如下:

Service.prototype.get_list = async function(query, config) {

var sql = $.mysql.toGetSql(query, Object.assign({}, this.config, config || {}));

return await this.run(sql);

};

5.2.2 新闻资讯模块

用户点击“新闻资讯”,将显示新闻列表,用户可以查看有关新闻的资讯信息,支持通过关键词搜索或者筛选、排序,点击可查看资讯详情,在详情页面可以进行点赞、收藏、评论等操作。界面如下图所示。

图5-3新闻资讯界面

5.2.3 投票记录模块

投票记录功能详细列出员工参与过的所有投票活动,包括每次投票的时间、投票主题和选项等内容。员工可以随时查阅自己的投票历史,查看自己曾经做出的选择,并对比不同时间段的投票行为。这项功能增强了员工对投票活动的透明度和信任度,确保投票过程的公正性。页面如下图所示。

图5-4投票记录界面

5.2.4 投票活动模块

点击系统导航栏上的“投票活动”菜单按钮,将进入投票活动列表,用户可以查看所有的投票活动,支持通过关键词搜索和下拉搜索。点击某个投票活动,用户可以查看该投票活动的详细信息,可以进行投票、点赞、收藏、评论等操作。页面如下图所示。

图5-5投票活动界面

5.3 管理用户子系统模块的实现

5.3.1 部门分类管理模块

管理用户点击“部门分类管理”这一菜单会显示部门分类列表和部门分类添加两个子菜单,点击“部门分类列表”可以查看所有的部门分类,还可以进行重置、查询、删除等操作。点击“部门分类添加”,管理用户可以添加新的部门分类信息。页面如下图所示。

图5-6部门分类管理界面

5.3.2投票主题管理模块

管理用户点击“投票主题管理”这一菜单会显示投票主题列表和投票主题添加两个子菜单,点击“投票主题列表”可以查看所有的投票主题,还可以进行重置、查询、删除等操作。点击“投票主题添加”,管理用户可以添加新的投票主题信息。页面如下图所示。

图5-7投票主题管理界面

5.3.3 投票活动管理模块

管理用户点击“投票活动管理”这一菜单会显示投票活动列表和投票活动添加两个子菜单,点击“投票活动列表”可以查看所有的投票活动,还可以进行重置、查询、删除等操作。点击“投票活动添加”,管理用户可以添加新的投票活动信息。界面如下图所示。

图5-8投票活动管理界面

5.4 管理员子系统模块的实现

5.4.1部门分类管理界面

管理员点击“部门分类管理”这一菜单会显示部门分类列表和部门分类添加两个子菜单,点击“部门分类列表”可以查看所有的部门分类,还可以进行重置、查询、删除等操作。点击“部门分类添加”,管理员可以添加新的部门分类信息。页面如下图所示。

图5-9部门分类管理界面图

新增部门分类代码如下:

Controller.prototype.add = async function(ctx) {

var result = await this.service.add(ctx.request.body, this.config);

if (this.service.error) {

return {

error: this.service.error,

};

}

return {

result,

};

};

5.4.2系统用户界面

管理员点击“系统用户”,可以管理所有用户的信息,包括新增、修改、删除、搜索等。界面如下图所示。

图5-10系统用户界面图

系统用户的关键代码如下:

Register.prototype.index = async function(req,res) {

var group_list = await $.services["user_group"].get_list({}, Object.assign({}, this.config));

return await res.render(this.config.tpl + "index.html", {

group_list

});

};

Register.prototype.api = async function(req) {

var user = $.services.user;

var body = req.body;

var username = body.username;

var obj = await user.get_obj({

username

});

if (obj) {

return {

error: {

code: 70000,

message: "账户名已存在",

},

};

} else {

var password = md5(body.password);

var nickname = body.nickname;

var user_group = body.user_group;

var email = body.email;

var email_state= body.hasOwnProperty('email_state') ? body.email_state : 0;

var phone = body.phone;

var phone_state= body.hasOwnProperty('phone_state') ? body.phone_state : 0;

var bl_reg = await user.add({

username,

password,

nickname,

user_group,

email,

email_state,

phone,

phone_state

});

if (bl_reg) {

return {

result: "注册成功"

};

} else {

return {

error: {

code: 70000,

message: "注册失败",

},

};

}

}

};

5.4.3投票记录管理界面

管理员点击“投票记录管理”这一菜单会显示投票记录列表,管理员可以查看用户提交的投票记录,还可以进行重置、查询、删除等操作。页面如下图所示。

图5-11投票记录管理界面图

5.4.4投票统计管理界面

管理员点击“投票统计管理”这个菜单,这一菜单会显示投票统计列表,管理员可以查看投票统计详情,还可以进行重置、查询、删除等操作。投票统计管理界面如下图所示。

图5-12投票统计管理界面图

上传文件代码如下:

Controller.prototype.upload = async function(ctx) {

var req = ctx.request;

var query = req.query;

var url = "";

if (req.files && req.files.file) {

var f = req.files.file;

const render = fs.createReadStream(f.path);

var name = f.name;

var dir = f.dir || "";

var file = _dir + dir + name;

try {

if (fs.existsSync(file)) {

var arr = name.split(".");

name = arr[0];

var extension = arr[arr.length - 1];

var num = 10000;

for (var i = 0; i < num; i++) {

var na = name + "_" + (i + 1) + "." + extension;

file = path.join(_dir, na);

if (!fs.existsSync(file)) {

name = na;

break;

}

}

}

const upStream = fs.createWriteStream(file);

render.pipe(upStream);

url = _path + name;

} catch (e) {

console.log("上传失败:", e);

}

return {

result: {

url

}

};

} else {

return {

code: 10000,

message: "上传的文件(file)不能为空!",

};

}

};

5.4.5系统管理界面

管理员点击“系统管理-轮播图管理”菜单,可以对前台展示的轮播图进行设置,系统管理。页面如下图所示。

图5-13系统管理界面图

5.4.6网站公告管理界面

管理员点击“网站公告管理”这个菜单,可以对系统中的通知公告进行管理,包括通知公告的增删改查等操作。页面如下图所示。

图5-14网站公告管理界面图

第6章系统测试

6.1 测试目的

测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。

6.2测试方法

在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。

常见的测试用例包括功能测试用例、边界测试用例和异常测试用例[11]。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。

在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。

6.3测试内容

通过对系统中所含的主要实体对象及其功能操作进行测试用例设计。以下是详细的测试:

表6-1用户注册登录测试表

用户注册登录测试用例:

用例说明

测试目的

测试步骤

预期结果

输出结果

通过情况

用户注册、登录

测试用户正确注册、登录

  1. 在首页界面注册一个新用户,按规定输入合理的注册信息,提交。
  2. 用户在登录界面输入账户密码登录

用户注册成功,登录成功

结果输出符合预期

通过

表6-2投票活动测试表

投票活动用例:

用例说明

测试目的

测试步骤

预期结果

输出结果

通过情况

投票活动

测试用户投票活动功能

  1. 在首页点击投票活动,进入详情页; 
  2. 点击“投票活动”,输入相关信息后点击提交

用户投票成功,生成投票信息

结果输出符合预期

通过

表6-3企业资讯评论测试表

企业资讯评论测试用例:

用例说明

测试目的

测试步骤

预期结果

输出结果

通过情况

企业资讯评论

测试用户企业资讯评论功能

1、在首页点击企业资讯并看详情; 

2、点击评论,输入相关信息点击提交

生成新的评论信息

结果输出符合预期

通过

表6-4企业资讯添加测试表

管理员企业资讯添加测试用例:

用例说明

测试目的

测试步骤

预期结果

输出结果

通过情况

企业资讯添加测试

测试管理员添加企业资讯功能

  1. 管理员点击企业资讯、点击添加; 
  2. 输入相关信息点击提交

企业资讯添加成功

结果输出符合预期

通过

表6-5系统公告删除测试表

系统公告删除测试用例:

用例说明

测试目的

测试步骤

预期结果

输出结果

通过情况

系统公告删除测试

测试系统公告删除功能

  1. 管理员点击系统公告管理;
  2. 选择一个系统公告点击删除并确认删除

系统公告删除成功,前端不在展示该系统公告

结果输出符合预期

通过

6.4测试结果

在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都是能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。

结论

经过了几个月的努力,企业职工投票系统终于完成了,虽然在校期间也开发过一些小型的系统,但是都是在老师的讲解以及辅助下完成的,没有经历过开发之前的需求分析、系统分析,都是直接从系统设计开始的,因此开发企业职工投票系统对我意义重大。

在开发系统最初,首先对各个企业职工投票系统方面的需求进行调研,了解对于用户来说,开发的平台需要实现哪些功能才能满足各方需求,对需求进行分析;其次选择自己比较熟悉的Nodejs语言,MYSQL数据库来设计开发,通过知网库、学校图书馆等地方查阅、学习这些技术,掌握编程的思想和方法,然后就是对系统进行分析,从系统开发的可行性、系统实现的功能、系统应该具备的性能以及系统的操作流程方面,对系统进行全方位的分析,确定系统的最终功能,从而对系统的功能和数据库进行设计,最后就是系统的实现以及对实现的功能的测试,确保系统能够稳定的运行。

在开发的过程中暴露出了自己的很多问题,比如前期的准备还是不够充分,不能完全掌握其操作流程;在开发过程中对Nodejs的编程掌握的还不够熟练以及对系统的环境配置上还存在很多问题,经常会导致项目在运行的时候出现错误。学无止境,通过一边查阅资料一边向导师请教,慢慢的解决了这些问题,在以后的学习、工作者我会更加严谨,通过本项目的开发,我将会受益终生!


参考文献

  1. 凌杰.Node.js后端全程实战[M].人民邮电出版社:202305.371.
  2. 唐小燕,刘洪武.Node.js应用开发[M].人民邮电出版社:202111.308.
  3. 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
  4. 董宁,袁晓曦.JavaScript程序设计[M].人民邮电出版社:202308.265.
  5. 何勇,王瑶.HTML5+CSS3+JavaScript 网页设计基础与实战[M].人民邮电出版社:202211.262.
  6. 孙文江,陈义辉.JavaScript交互式网页设计[M].人民邮电出版社:202309.419.
  7. 刘江涛,王亮亮,吴庆茹,等.基于B/S模式的铁路勘测设计案例信息化管理系统设计与实现[J].铁路计算机应用,2021,30(03):32-35.
  8. 张丹丹,李弘.基于B/S架构的办公管理系统设计与开发[J].铁路通信信号工程技术,2024,21(09):44-48+106.
  9. 周晓玉,崔文超.基于Web技术的数据库应用系统设计[J].信息与电脑(理论版),2023,35(09):189-191.
  10. 马艳艳,吴晓光.计算机软件与数据库的设计策略分析[J].电子技术,2024,53(05):104-105.
  11. 李俊萌.计算机软件测试技术与开发应用策略分析[J].信息记录材料,2023,24(03):50-52.
  12. 李启南,邹楷文.SM2可链接环签名在匿名电子投票系统中的应用[J].河南科技,2024,51(20):20-25.DOI:10.19968/j.cnki.hnkj.1003-5168.2024.20.004.
  13. Salunke V S ,Ouda A .A Performance Benchmark for the PostgreSQL and MySQL Databases[J].Future Internet,2024,16(10):382-382.
  14. Elias N .MySQL Cookbook:100+ recipes for database development and administration in MySQL (English Edition)[M].BPB Publishers:2024-08-21.DOI:10.0000/9789355519290.
  15. 杨景奕.基于可链接环签名的区块链电子投票系统研究[D].湖北民族大学,2024.
  16. 黄一鸿.实用拜占庭共识算法优化及其在电子投票系统中的应用[D].江西师范大学,2024.DOI:10.27178/d.cnki.gjxsu.2024.001734.
  17. 张岭坡.基于区块链的同态加密投票系统的设计与实现[C]//中国电机工程学会电力信息化专业委员会,国家电网公司信息通信分公司.2023电力行业信息化年会论文集.国网英大国际控股集团有限公司;,2023:233-238.DOI:10.26914/c.cnkihy.2023.106025.
  18. 桑柳剑,张常泉.基于国密算法的匿名投票系统设计与实现[J].电脑编程技巧与维护,2023,(09):12-14+18.DOI:10.16184/j.cnki.comprg.2023.09.042.
  19. 李明成,企业级微信投票评选系统V1.0.陕西省,陕西弈聪软件信息技术股份有限公司,2021-01-12.
  20. Mario C ,Luciano M .Node.js Design Patterns:Design and implement production-grade Node.js applications using proven patterns and techniques[M].Packt Publishing Limited:2020-07-29.DOI:10.0000/9781839210440.

致谢

在此论文完成之际,感谢我的指导老师。在指导老师的网页设计课上,当时我学到了很多东西,这对于我实习过程中也打了一定的基础,而且指导老师对于我的设计也提出许多建议,并予以悉心的指导,对于一些细小的问题都耐心的指导我去完善,授予我写论文的交流消息,时常的鼓励我,另外感谢教导我完善此项目的前端同学,对于这个项目,我是边学习边实现完成的,有许多东西开始并不是很明白,但前端开发的同学非常耐心的引导我去将这个项目完成,在系统的后端开发中,所用到的后台开发技术也时常会给我讲解,助于我更好的将论文完成,在此对帮助到我的同学和一直予以教导的指导老师致以衷心的感谢,祝事业有成。

点赞+收藏+关注 → 私信领取本源代码、数据库

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值