基于MVC的投票系统的实现

2018-01-04 12:02刘瑾
电脑知识与技术 2018年29期

摘要:该文介绍了网络投票系统的设计与实现,该系统采用MVC设计模式进行开发。主要实现了用户注册、登录、注销,匿名投票,实名投票,查看投票结果,留言,发表意见,留言管理,用户管理等功能。该系统界面友好、操作简单,易于维护。

关键词:投票系统;MVC;JSP

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)29-0117-02

Abstract: The design and implementation of a network voting system is introduced, which is developed with the MVC design pattern.Many functions are mainly implemenmted, such as user registration, login, cancellation, anonymous voting, real-name voting, checking the results of voting, leaving a message, commenting, message management, user management etc. Meanwhile, the system has friendly interface, simple operation and easy maintenance.

Key words: voting System;MVC;JSP

1 背景

随着社会信息化程度的提高,及时、有效的获取信息已成为关键,网上投票系统正好能满足信息获取的基本需求。投票系统不但扩展了信息反馈的规模,节流了人力资源,在日益竞争的市场中具有较强的作用。

2 系统的分析和设计

2.1 需求分析

投票系统中共有三种用户角色:游客、注册用户、管理员。每种角色的操作权限是不同的。

游客的主要权限有:浏览信息、用户注册、匿名投票、留言。

注册用户的主要权限有:登录、投票、查看结果、留言。

管理员的主要权限有:登录、管理投票、管理用户。

2.2 系统结构设计

该系统是基于B/S架构下的多层结构应用系统。系统采用三层架构,其中最上一层为表现层,该层主要负责接收用户的请求,以及数据的返回,为客户端提供应用程序的访问。第二层为业务逻辑层,该层专注于实现业务逻辑功能,主要负责对数据层的操作。第三层为数据访问层,有时候也称为是持久层,其功能主要是负责数据库的访问,简单来说就是实现对数据表的Select,Insert,Update,Delete的操作。在该系统中,使用开源的MySQL数据库,持久化层使用Hibernate技术,业务逻辑层使用struts框架和javabean技术,表现层运用jsp技术。

2.3 数据库设计

通过对投票系统的数据进行分析,确定了系统的五个实体分别是:用户、管理员、投票内容、投票结果、留言。

用户实体用来表示用户的基本信息,包括以下属性:用户ID、用户名、密码、性别、出生日期、邮箱等。

管理员实体用来表示管理员的基本信息,包括以下属性:管理员ID、管理员名、密码、权限等。

投票内容实体用来表示投票的相关信息,包括以下属性:投票ID、投票名、选项A、选项B、选项C、选项D等。

投票结果实体用来表示投票结果的相关数据,包括以下属性:投票ID、选项A投票数、选项B投票数、选项C投票数、选项D投票数、总投票数等。

留言实体用来表示用户留言的相关信息,包括以下属性:用户ID、留言内容、邮箱等。

3 系统实现

3.1 首页显示模块

投票系统的首页会显示相关投票内容,提供选项进行投票。实现该模块主要使用了Map数组,首先从数据库的投票内容表中查询到投票ID和投票名,把投票ID和投票名看成键值对应的关系,全部put到Map数组中,重写集合框架Collection中的sort()方法,通过重写compare()方法来实现升序排序,然后使用for循环遍历Map数组,即可获取到投票的列表信息。

3.2 注册模块

游客点击注册按钮进入注册页,输入相关注册信息,首先查询数据库中是否存在此用户名,如存在注册失败,如不存在,则会跳转到登录页。 实现该模块是通过JavaBean技术,建立用户类,所有属性一律用private修饰,利用get()和set()方法获取和设置属性值。JSP中的内置对象request用来获取注册表单里的内容,通过set()方法设置User类各属性的信息,最后判断是否成功插入数据库中,如成功则跳转到RegisterSuccess.jsp;如失败,则跳转到注册页。

3.3 登录模块

用户进入登录页面,输入用户名和密码,点击登录按钮,此时会查询数据库进行验证,验证通过,则可以正常登录。实现该模块通过JavaBean技术,建立用户类,所有属性一律用private修饰,利用get()和set()方法获取和设置属性值。使用JSP中的内置对象request来获取表单里的内容,判断通过request获取的用户名、密码是否与User类中getUserName()、getPassword()的返回值相同,如相同则跳转到index.jsp;如失败,则跳转回登录页。

3.4 投票模块

用户在投票页面选择一个选项进行投票,如果成功会跳转到投票结果显示页,如果不成功则返回到投票页。实现该模块也使用了JavaBean技术,首先查询数据库中投票内容表的数据,然后从结果集中一一取出,通过内置对象request的getParameter()获取,最后传递到表单中,通过页面显示出来。

3.5 显示结果模块

投票成功后,系統会自动跳转到投票结果显示页,实时查看投票结果,结果通过横向柱状图显示。实现该模块是通过地址传参,获得投票ID,再根据投票ID查询投票结果表中的相应记录,得到每一个选项的投票数,求出总和,并求出每个选项所占比例,根据比例设置绿条的width属性,即可柱状显示。

3.6 投票管理模块

管理员成功登录后,通过输入投票名、投票选项等内容创建新的投票,系统会将输入的内容插入到数据库的投票内容表中。实现该模块首先要把表单里输入的内容保存到新建的Vote对象中,通过Vote类中的get()方法获取所有属性的值,然后使用insert语句插入到相应的投票内容表中。

4 结束语

该系统使用了J2EE相关技术,采用了MVC系统架构,较好地实现了投票系统的基本功能,实现了投票的无纸化管理,让用户投票以及统计投票结果更为快捷,让组织投票更加便利。

参考文献:

[1] 衡友跃. 基于MVC模式的网上购物系统应用研究[J]. 淮北职业技术学院学报, 2008,7(1):77-79.

[2] 孙卫琴. 精通struts:基于MVC的JAVA WEB设计与开发[M]. 北京: 电子工业出版社, 2004.

[3] 刘瑾, 詹玲超. 基于J2EE的网络考试系统的设计与实现[J]. 电脑知识与技术, 2016(4).

【通联编辑:谢媛媛】