基于Java Web的投票管理系统

基于Java Web的投票管理系统 摘 要 相较于传统投票方式,在线投票是任何一-次商演(时间短,影响范围小),电视(投入大,效果不明显)或者户外广告(不能快速吸引消费者眼球)在投入产出效率上都难以企及的

本文包含相关资料包-----> 点击直达获取<-------

基于Java Web的投票管理系统

摘 要

相较于传统投票方式,在线投票是任何一-次商演(时间短、影响范围小)、电视(投入大,效果不明显)或者户外广告(不能快速吸引消费者眼球)在投入产出效率上都难以企及的。在线投票能够迅速提升活动商家的广告价值,降低商家广告成本,提高知名度以及美誉度。网络投票的主要目的就是人群放大:通过网络投票,可以吸引大量的选手及相关亲友的关注,通过以往的数据统计,一名选手参 与投票,会带动60人参与。这样可以最大程度的向客户展现实力,扩大社会影响力。

系统分为前台和后台两部分,前台主要是对普通用户开放。普通用户将实现匿名投票操作:后台主要作用是管理员实现登录、投票管理、用户管理等操作。依据前台和后台的不同权限需求,在线投票系统主要分为普通用户和管理员两个功能模块。

普通用户模块将实现用户登录、用户投票以及查看投票结果等功能。管理员模块将实现管理员登录、发布新投票、查看所有投票、及用户管理等功能。

关键词 :网上投票、JSP、MYSQL

1 概述

随着科技的飞速发展,计算机已经广泛的应用于各个领域之中,而且日趋普及。在计算机应用中很重要的一部分就是编程语言,编程语言的出现打开了计算机应用的新篇章。在这些编程语言中JSP占有着重要的地位,JSP 拥有Java编程语言“一-次编写,各处运行”的特点口。在当今的网络应用中JSP无处不在,在线投票系统就是JSP功能强大的-一个最好的例证。

在线投票系统有很多传统投票方式不可比拟的优势。首先,它可以在很短的时间内,通过互联网将不同时间不同地域的用户投票组合到一起,并进行结果反馈,这是传统的投票方法完全做不到的;其次,在线投票系统的效率要比以往的传统投票方法高很多,在这个寸时如寸金的年代,在线投票系统不但省去了投票与计票环节的人力成本,还可以节省很多时间以用作处理其他更重要的事情:综上所述,在线投票系统有着快捷、经济、方便、省时省力等诸多优点都注定它将是未来投票方式的主流。

2 课程设计任务及要求

2.1 任务

设计一个投票系统,实现学生对教师的匿名投票。有管理用户,实现对整个系统的管理。

2.2 要求

用户分为管理员用户和普通用户。

普通用户提供以下功能:系统首页上显示所有投票选项的列表,显示当前登录用户并提供注销功能,用户可以通过选中某个选项并点击“投票”按钮进行投票操作。用户点击后可在当前一页面上看到各个投票选项目前的投票情况,主要包括各选项所得的票数,并且以柱形显示各选项的得票率,可以让用户从直观上看到各项的得票情况。

管理员用户提供以下功能:显示当前登录用户并提供注销功能,提供系统管理实现用户的增删查改及重新投票等功能,还能显示用户列表及投票情况表。 开发的系统数据库设计要合理,能够实现设计的全部功能,能够运行演示。能够体一个软件的基本功能。

3 需求分析

3.1 功能需求

用户能够正常的登录及注销,每个用户在每一次投票中只能匿名投票一次。 管理员能够新建账号、删除账号、修改账号及初始话投票。在管理员页面显示投票情况及用户情况等系统详情。

整个系统要进行session检查,防止非法用户访问受限页面。

3.2 硬件需求

运行windows的硬件平台并装有如下软件:

  • Jdk1.8

  • tomcat6.0

  • eclipse

  • sql server 2008

4 概要设计

4.1 总体模块设计

4.1.1 普通用户模块

  • 登录 :使用普通用户账号登录到投票界面

  • 投票 :选择投票对象并进行投票

  • 注销 :清空用户session退回到欢迎界面

其各部分关系图如图1所示。

4.1.2 管理员用户模块

  • 登录 :使用管理员账号登录到后台管理界面

  • 注销 :清空用户session退回到欢迎界面

  • 用户管理 :管理员可以增加、删除、修改用户账号,不能删除当前登录用户

  • 初始化投票 :管理员可以初始化投票系统,开启下一次投票

  • 查看所有用户 :显示系统中已存在的用户账号及其投票情况

  • 查看得票数 :显示当前的投票情况

其各部分关系如图2所示。

4.2 开发工具简介

在在线投票系统的设计发开过程中主要用了JSP技术,其中用到的工具有:JDK1.8、Eclipse、MySQL、Tomcat 等。

4.2.1 JSP简介

JSP技术有点类似ASP技术,它是在传统的网页HTML文件中插入Java程序段和JSP,从而形成JSP文件”。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。在线投票系统用JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使本系统基于Web的应用程序的开发变得迅速和容易。

  • 一次编写,到处运行。在这一一点上Java比PHP更出色,除了系统之外,代码不用做任何更改

  • 系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是现而易见的

  • 强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消处理,-台服务器到无数台服务器,Java 显示了一个巨大的生命力

  • 多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下

4.2.2 SQL server简介

SQL Server系列软件是Microsoft 公司推出的关系型数据库管理系统。2008年10月,SQL Server 2008简体中文版在中国正式上市,SQL Server 2008 版本可以将结构化、半结构化和非结构化文档的数据直接存储到数据库中。可以对数据进行查询、搜索、同步、报告和分析之类的操作。数据可以存储在各种设备上,从数据中心最大的服务器一直到桌面计算机和移动设备,它都可以控制数据而不用管数据存储在哪里。

此外,SQL Server 2008 允许使用 Microsoft .NET 和Visual Studio开发的自定义应用程序中使用数据,在面向服务的架构(SOA)和通过 Microsoft BizTalk Server 进行的业务流程中使用数据。信息工作人员可以通过日常使用的工具直接访问数据。

4.3 数据库设计

数据库设计是软件开发中的重要环节,是对系统数据全面的、详细的分析。数据库设计的好坏直接关系到整个项目设计的效率的高低,关系到设计的稳定性。根据在线投票系统不同模块之间的联系和前期的设计目的与需求,设计了三个不同的数据表,它们分别是用户表、投票选项表和投票主题表。

4.3.1 用户表(T_USER)

用户表包括所有用户的各种信息,如账户、密码等详细数据并规定了每个字段的类型,如表1所示。

字段名 数据类型 长度 是否主键 描述
ACCOUNT VARCHAR 40 账号
PASSWARD VARCHAR 40 密码
UNAME VARCHAR 40 用户姓名
ADMIN BIT 1 管理员标识
TICKET INT 255 票数

4.3.2 投票表(T_VOTE)

投票表包括教师编号、教师姓名和得票数。如表2所示。

字段名 数据类型 长度 是否主键 描述
TEACHERNO VARCHER 40 教师编号
TEACHERNAME VARCHER 40 教师姓名
VOTE INT 255 得票数

5 开发与实现

5.1 程序模块实现

5.1.1 用户登录模块关键代码

jsp <% request.setCharacterEncoding("gb2312"); String account = request.getParameter("account"); String password = request.getParameter("password"); UserDao udao = new UserDao(); User user = udao.getUserByAccount(account); if(user == null||!user.getPassword().equals(password)){ %> <br><br><br><br><br><br> 登录失败,<a href="loginForm.jsp">返回登录页面</a> <% } else if(user.getAdmin()==true){ session.setAttribute("user", user); response.sendRedirect("admin.jsp"); } else{ session.setAttribute("user", user); response.sendRedirect("display.jsp"); } %>

5.1.2 投票模块关键代码

jsp <% String account=user.getAccount(); String[]teacherno =request.getParameterValues("teacherno"); VoteDao vdao = new VoteDao(); UserDao udao = new UserDao(); int ticket= udao.ticket(account); if(ticket>0){ if(teacherno!=null){ vdao.updateVotes(teacherno); vdao.updateTictet(account); } response.sendRedirect("display.jsp"); } else{ response.sendRedirect("noTicket.jsp"); } %>

5.1.3 新建用户模块关键代码

jsp <% request.setCharacterEncoding("gb2312"); String account = request.getParameter("account"); String password = request.getParameter("password"); String uname = request.getParameter("uname"); String admin =request.getParameter("admin"); UserDao udao = new UserDao(); User user2=udao.getUserByAccount(account); if(user2!=null){ %> <jsp:forward page="changeError2.jsp"></jsp:forward> <% } udao.adduser(account, password, uname, admin); %> <br><br><br><br><br><br> <p align="center">创建用户成功!<br> <a href="admin.jsp">返回</a></p>

5.1.4 删除用户模块关键代码

jsp <% request.setCharacterEncoding("gb2312"); String account = request.getParameter("account"); String acc = user.getAccount(); if(acc.equals(account)){ %> <jsp:forward page="changeError3.jsp"></jsp:forward> <% } UserDao udao = new UserDao(); User user2=udao.getUserByAccount(account); if(user2==null){ %> <jsp:forward page="changeError.jsp"></jsp:forward> <% } udao.deluser(account); %> <br><br><br><br><br><br> <p align="center">删除用户成功!<br> <a href="admin.jsp">返回</a></p>

5.1.5 修改用户模块关键代码

jsp <% request.setCharacterEncoding("gb2312"); String account = request.getParameter("account"); String password = request.getParameter("password"); String uname = request.getParameter("uname"); String admin =request.getParameter("admin"); UserDao udao = new UserDao(); User user2=udao.getUserByAccount(account); if(user2==null){ %> <jsp:forward page="changeError.jsp"></jsp:forward> <% } udao.changeuser(account, password, uname, admin); %> <br><br><br><br><br><br> <p align="center">修改用户成功!<br> <a href="admin.jsp">返回管理页面</a></p>

5.1.6 初始化投票模块关键代码

```jsp public void initVote() throws Exception{ initConnection(); String sql="UPDATE T_VOTE SET VOTE = 0"; PreparedStatement ps = conn.prepareStatement(sql); ps.executeUpdate(); closeConnection(); }

public void initTicket() throws Exception{ initConnection(); String sql="UPDATE T_USER SET TICKET = 1"; PreparedStatement ps = conn.prepareStatement(sql); ps.executeUpdate(); closeConnection(); } ```

5.1.7 注销登录模块关键代码

jsp <% session.invalidate(); response.sendRedirect("loginForm.jsp"); %>

5.1.8 非法用户的session检查

管理员权限

jsp <% User user =(User)session.getAttribute("user"); if(session.getAttribute("user")==null||user.getAdmin()==false { %> <jsp:forward page="loginError.jsp"></jsp:forward> <% } %>

普通用户权限

```jsp <%5.1.8非法用户的session检查 管理员权限:

User user =(User)session.getAttribute("user");
if(user==null){
%>
    <jsp:forward page="loginError.jsp"></jsp:forward>
<% } %>

```

5.1.9 防刷票的实现

jsp public int ticket(String account) throws Exception{ initConnection(); String sql ="SELECT TICKET FROM T_USER WHERE ACCOUNT= ? "; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, account); ResultSet rs = ps.executeQuery(); rs.next(); int ticket =rs.getInt("TICKET"); if(ticket==0) { closeConnection(); return 0; } else { closeConnection(); return 1; } }

5.2 数据库与操作设计开发

5.2.1 连接数据库

jsp public void initConnection() throws Exception { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); conn=DriverManager.getConnection("jdbc:sqlserver://localhost: 1433;DatabaseName=Vote;user=root;password=123456789"); }

5.2.2 数据库操作设计

jsp public User getUserByAccount(String account) throws Exception{ User use = null; initConnection(); String sql="SELECT ACCOUNT,PASSWORD,UNAME,ADMIN FROM T_USER WHERE ACCOUNT = ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, account); ResultSet rs =ps.executeQuery(); if(rs.next()) { use = new User(); use.setAccount(rs.getString("ACCOUNT")); use.setPassword(rs.getString("PASSWORD")); use.setUname(rs.getString("UNAME")); use.setAdmin(rs.getBoolean("ADMIN")); } closeConnection(); return use; }

6 测试与部署

6.1 运行环境

  • 平台 :Windows10

  • 开发环境 :JDK 1.8、 Eclipse4.9、 Tomcat6.0、 SQL server 2008

6.2 功能测试

6.2.1 防止非法访问功能

  • 功能描述 :未登录的用户不能访问受限页面,已登录的普通用户不能访问管理员权限页面

  • 目的 :防止未授权访问,保证安全性

  • 前提条件 :无

  • 输入 :浏览器地址栏直接输入页面地址

  • 输出 :身份验证通过,转到要访问页面;身份验证不通过,转到拒绝访问页面

  • 是否实现 :实现

6.2.2 初始化投票功能

  • 功能描述 :管理员清空当前投票

  • 目的 :初始化投票者的票数及被投票者的得票数

  • 前提条件 :登录到管理员页面

  • 输入 :点击初始化投票链接

  • 输出 :初始化成功转到管理页面

  • 是否实现 :实现

6.2.3 登录功能

  • 功能描述 :输入用户名和密码登陆到系统,不同用户登录到不同界面

  • 目的 :检验数据判断能否登陆

  • 前提条件 :进入登陆界面

  • 输入 :用户名和密码

  • 输出 :数据判断成功,普通用户登陆到投票界面,管理员用户登录到后

  • 一台管理界面 :数据判断失败,转到失败页面

  • 是否实现 :实现

6.2.4 注销登录功能

  • 功能描述 :已登录到系统的用户可以通过注销来退出系统

  • 目的 :用户退出时,清空用户session

  • 前提条件 :用户已登录

  • 输入 :点击注销链接

  • 输出 :注销成功转到初始欢迎页面

  • 是否实现 :实现

6.2.5 投票功能

  • 功能描述 :给相应的所选教师投票

  • 目的 :实现数据库中相应教师得票数的数据更新

  • 前提条件 :成功登录到投票界面

  • 输入 :勾选教师,点击投票

  • 输出 :相应老师的得票数加1

  • 是否实现 :实现

6.2.6 添加用户功能

  • 功能描述 :管理员添加用户账号到系统中

  • 目的 :在数据库用户表中添加用户账号信息

  • 前提条件 :成功登录后台管理页面

  • 输入 :新的用户数据

  • 输出 :创建用户成功,输出成功提示转到管理界面;创建用户失败,输出相应失败提示转到管理界面

  • 是否实现 :实现

6.2.7 删除用户功能

  • 功能描述 :管理员从系统中删除用户账号

  • 目的 :在数据库用户表中删除用户账号信息

  • 前提条件 :成功登录到后台管理页面

  • 输入 :要删除用户的账号

  • 输出 :删除用户成功,输出成功提示转到管理界面;删除用户失败,输出相应提示转到管理界面

  • 是否实现 :实现

6.2.8 修改用户功能

  • 功能描述 :管理员修改系统中已存在的用户信息

  • 目的 :在数据库中修改相应的用户信息

  • 前提条件 :登录到后台管理页面

  • 输入 :要修改的账号及新的用户信息

  • 输出 :修改成功,输出成功提示转到管理界面;修改失败输出相应失败提示转到管理界面

  • 是否实现 :实现-

6.2.9 显示系统用户功能

  • 功能描述 :在管理页面显示当前系统中已存在的账号及是信息

  • 目的 :显示账号,账号用户及是否投票

  • 前提条件 :登录到后台管理页面

  • 输入 :无

  • 输出 :系统中的账号信息

  • 是否实现 :实现

6.2.10 显示得票数功能

  • 功能描述 :在管理页面及投票页面显示当前的得票情况

  • 目的 :显示各教师的得票数,并以相应比例长的的矩形显示

  • 前提条件 :登录到系统中

  • 输入 :无

  • 输出 :各教师的得票情况

  • 是否实现 :实现

7 结论分析

为期数天的jsp集中上机课程设计让我受益匪浅。和上学期数据库课程设计不同,这次要求我们每个人都要做,主要是考查我们jsp 动手实践能力。这次的课程设计让我再一次翻起了sql课本,已经有好些知识忘了,借此机会刚好复习了一遍,由于这次时间安排的比较紧,赶在了我们期末考试这一特殊时期,所以我选择做个功能齐全的投票系统,其实也算不上齐全,但是也学了不少东西。特别是在具体功能的设计上遇到很多问题,但是经过我上网搜索资料以及寻找同学帮助,这些问题都迎刃而解了。但是不足的时还有很多想做的功能由于时间的关系没有实现,例如动态管理投票对象、更改用户可投票数、非匿名投票等等。

经过了数天的学习研究,终于完成了该课程设计的架构到实现。从开始选定题到系统的规划实现,再到报告的完成,这次的课程设计是对于我们是一个很好的锻炼,通过本次设计,我基本明确了一个基于jsp应用系统从设计到开发的大致流程和重点关注的方向,同时对JSP, SQL语句数据库关系等都有了基本的掌握和应用能力。

通过这次课程设计,我再一次感受到jsp的魅力,自己设计的不是特别完美,但毕竟做成果,心里很高兴,我们对学习jsp的信心也增强不少。

参考文献

[1] 郭克华、奎晓燕. Java Web程序设计 清华大学出版社2011

[2] 明日科技 HTML5从入门到精通 清华大学出版社2012

[3] 何玉洁 数据库基础与实践技术(SQL Server 2008) 机械工业出版社2018

参考文献

  • 利用JSP技术开发基于WEB的人事工资管理系统(大连铁道学院·杜欣然)
  • 利用JSP技术开发基于WEB的人事工资管理系统(大连铁道学院·杜欣然)
  • 基于J2EE的学生网上考试系统的设计与实现(山东大学·雷怡然)
  • 基于EJB的WEB数据库应用研究(武汉理工大学·孟峥嵘)
  • 基于J2EE的远程教育平台的开发与实现(吉林大学·葛瑛)
  • 基于J2EE的远程教育平台的开发与实现(吉林大学·葛瑛)
  • 课程及成绩管理系统的设计与实现(厦门大学·赵超)
  • 基于轻量级JAVA EE的高校在线投票系统的设计与实现(吉林大学·孙丽红)
  • 基于J2EE的学生网上考试系统的设计与实现(山东大学·雷怡然)
  • 企业内手机实时投票问卷系统的设计与实现(华中科技大学·彭良龙)
  • 用JSP技术开发基于WEB的房地产网络管理信息系统(大连理工大学·齐鲲鹏)
  • 少年宫课外学习选课系统软件的设计与实现(电子科技大学·黄涛)
  • 基于J2EE技术的考试系统的实现(大连海事大学·齐崧然)
  • 基于J2EE技术的考试系统的实现(大连海事大学·齐崧然)
  • 基于J2EE的高校学生选课管理系统的设计与实现(电子科技大学·刘雯)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设货栈 ,原文地址:https://m.bishedaima.com/yuanma/35163.html

相关推荐

发表回复

登录后才能评论