欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

基于 Jsp、Java、数据库、HTML 的在线投票系统的 Jsp 课程设计实施(包括文档和代码)

最编程 2024-03-04 19:35:19
...

目录

摘要 

第1章 课程设计内容及要求 

第2章 系统分析 

2.1 系统简介 

2.2 系统功能 

第3章 系统设计 

3.1 开发工具简介 

3.2 总体功能模块设计 

第4章 系统实现 

4.1 数据库实现 

4.2 程序模块实现 

第5章 课程设计心得 

5.1 设计体会 

5.2 系统改进 

第6章 参考文献 

谢辞 


摘要

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

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

 普通用户模块将实现用户注册、用户登录、用户投票以及投票重选和查看投票结果等功能。 管理员模块将实现管理员登录、发布新投票、撤消投票、查看所有投票、编辑和删除,投票以及用户管理等功能。

关键词:网上投票


  1. 课程设计内容及要求

在线投票系统主要包含以下模块:显示投票选项模块,主要是显示投票内容,即投票表单的实现;参与投票模块,禁止重复投票;显示投票结果模块,主要是投票选项的计数统计。后台管理主要包括投票项目的增加、修改和删除,其中修改投票项目还可以包含对选项的修改和删除;管理员登录验证模块;投票主题显示模块,可以浏览投票主题及相关信息(投票总数、投票时间等),可实现分页显示;投票主题增加模块,以表单的形式增加投票主题以及选项的个数;投票项目的删除,对于不需要的投票主题可实现删除。


  1. 系统分析


2.1 系统简介

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

在线投票系统有很多传统投票方式不可比拟的优势。首先,它可以在很短的时间内,通过互联网将不同时间不同地域的用户投票组合到一起,并进行结果反馈,这是传统的投票方法完全做不到的;其次,在线投票系统的效率要比以往的传统投票方法高很多,在这个寸时如寸金的年代,在线投票系统不但省去了投票与计票环节的人力成本,还可以节省很多时间以用作处理其他更重要的事情;综上所述,在线投票系统有着快捷、经济、方便、省时省力等诸多优点都注定它将是未来投票方式的主流。在线投票系统可以用来统计网站用户对某个主题或热门话题的意见。网站管理员也可以通过投票的方式了解用户的看法,或者通过在线投票系统这个媒介去了解用户的思想、意见,并通在线投票系统的结果反馈改进自己的网站设计。*决策者也可以通过在线投票系统来调查民众对某一项新政策的意见,进而统计数据做出更恰当的决策。在线投票系统是当今各大网站必备的程序之一,如果网站开发者想了解用户对该网站的意见和建议,他可以设计这样一个投票主题:你认为该网站如何?(A.很好B.一般C.不好)然后提供给用户进行投票。


2.2 系统功能

因在线投票系统有着经济、快捷等诸多优点,所以在实际项目实践中如何很好的实现这些优点便成了整个开发过程中的重中之重。在整个项目实践中,首先对课题的实际要求与需求分析进行详细的考究,查阅大量的相关资料,并且借鉴一些其他投票系统的项目经验,最后提出设计方案。系统分为前台和后台两部分,前台主要是对普通用户开放。普通用户将实现注册、投票、重选等操作;后台主要作用是管理员实现登录、投票管理、用户管理等操作。依据前台和后台的不同权限需求,在线投票系统主要分为普通用户和管理员两个功能模块。

普通用户模块将实现用户注册、用户登录、用户投票以及投票重选和查看投票结果等功能。管理员模块将实现管理员登录、发布新投票、撤消投票、查看所有投票、编辑和删除新投票以及用户管理等功能。


  1. 系统设计


3.1 开发工具简介

在在线投票系统的设计发开过程中主要用了JSP技术,其中用到的工具有:JDK1.4、MyEclipse8.5、Microsoft SQL Server 2008、Tomcat等。

1.JSP简介

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

  1. 一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改
  2. 系统的多平台支持。基本上可以在所有的平台任意的环境下开发,在任意环境中进行系统配置,在任意环境中拓展,相比ASP/PHP的局限性是显而易见的。
  3. 强大的可伸缩性。从只有一个小的JAR文件就可以运行Servlet/JSP,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命活力。
  4. 多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
  1. Microsoft SQL Server 2008简介

Microsoft SQL Server 2008是微软推出的一个能够提供可信的、高效率智能数据平台软件,它能满足企业各种管理数据的需求。SQL Server 2008推出了许多新的特性和关键的改进,使得公司可以运行他们最关键任务的应用程序,同时降低了管理数据基础设施和发送观察和信息给所有用户的成本,已成为至今为止的最强大和最全面的SQL Server版本。

SQL Server 2008在企业中也是非常重要的应用,各种财务系统,ERP系统,OA系统等都会用到SQL Server 2008数据库,甚至网站也可以用到数据库来作为网站的后台。这是微软官方发布的SQL Server 2008 SP3简体中文版,基于SQL Server 2008提供可靠高效的智能数据平台构建而成,提供了大量新改进,可帮助您的组织满怀信心地调整规模、提高 IT 效率并实现管理完善的自助BI。此版本SQL Server 2008 SP3中包含应用程序和多服务器管理、复杂事件处理、主数据服务及最终用户报告等方面的新功能和增强功能。

确保业务连续性增强的数据库镜像SQL Server 2008 构建于 SQL Server 2005 之上,但增强的数据库镜像,包括自动页修复、提高性能和提高支持能力,因而是一个更加可靠的平台。

数据页的自动恢复SQL Server 2008 允许主机器和镜像机器从 823/824 类型的数据页错误透明地恢复,它可以从透明于终端用户和应用程序的镜像伙伴请求新副本。日志流压缩数据库镜像需要在镜像实现的参与方之间进行数据传输。使用 SQL Server 2008,参与方之间的输出日志流压缩提供最佳性能,并最小化数据库镜像使用的网络带宽。


3.2 总体功能模块设计

在线投票系统总体功能模块包括普通用户登录模块和管理员登录模块,其具体描述如下:

  1. 普通用户模块

(1)用户注册:普通投票用户须通过账号注册方可以进行投票;

(2)登录:注册成功后,可输入用户名和密码登录系统;

(3)重选:用户可以进行重新投票; 

从以上介绍中我们能看到,普通用户模块包含着3个不同的功能,其各部分功能关系如图下图所示。

  1. 显示投票选项模块

主要是显示投票内容,即投票表单的实现。

  1. 参与投票模块

禁止重复投票;显示投票结果模块,主要是投票选项的计数统计。

  1. 总流程图设计

在线投票系统的流程图包含了该系统的投票原理与主要制作方法。从流程图上我们可以看到在线投票系统需要经过登录、显示投票表单、取得投票参数、累加投票数、将投票写入数据库和显示投票结果等步骤,其流程图如下图所示:

  1. 系统实现
    1. 数据库实现

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

  1. 用户表

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

  1. 投票选项表

投票选项表包括每个投票的基本信息,如投票ID、投票主题和投票选项各选所得票数等信息,同时还规定了字段类型和长度,如下表所示:

  1. 投票记录表

投票记录表包括投票的ID、投票IP、投票时间等信息,同时还规定了字段类型和长度,如下表所示:

    1. 程序模块实现(含代码)
  1. 注册模块

普通用户登录在线投票系统需要先进行账号注册,注册成功之后才可以进行其他操作,注册模块的界面如下图所示:

实现代码:

Register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

<style type="text/css">

<!--

.STYLE2 {

font-size: 24px;

font-family: "宋体";

font-weight: bold;

color: #FF0000;

}

.STYLE3 {

font-family: "新宋体";

font-size: 16px;

}

.STYLE4 {color: #FF0000}

.STYLE5 {

font-size: 12px;

line-height: 14px;

text-decoration: none;

}

-->

</style>

<script language ="JavaScript">

<!--

function CheckSubmit()

 {

  if( document.registerform.id.value == "" )

     { alert("请输入用户名!"); document.registerform.id.focus(); return false; }

  if( document.registerform.password.value == "" )

     { alert("请输入密码!"); document.registerform.password.focus(); return false; }   

  if( document.registerform.password2.value == "" )

     { alert("请验证密码!"); document.registerform.password2.focus(); return false; }

  if( document.registerform.password2.value != document.registerform.password.value  )

     { alert("密码验证出错!"); document.registerform.password.focus(); return false; }

  if( document.registerform.username.value == "" )

     { alert("请输入真实姓名!"); document.registerform.username.focus(); return false; }   

  return true;                                                                                          

 }

</script>

</head>

<body style="background:url('images/背景.jpg') no-repeat;">

<div align="center">

<p>请如实填写下面的注册申请单(*为必填项)</p>

<hr width="800" size="0" />

<form name="registerform" id="form1" method="post" action="Register1.jsp">

<table width="343" border="0">

<tr>

<td><div align="center">用 户 ID:</div></td>

<td><input name="id" type="text" class="input1" size="20"/>

  <span class="style1" style="color: red">*</span></td>

</tr>

<tr>

<td><div align="center">    码:</div></td>

<td><input name="password" type="password" class="input1" size="20"/>  

<span class="style1" style="color: red">*</span></td>

</tr>

<tr>

<td><div align="center">验证密码:</div></td>

<td><input name="password2" type="password" class="input1" size="20"/>

<span class="style1" style="color: red">*</span></td>

</tr>

<tr>

<td><div align="center">真实姓名:</div></td>

<td><input name="username" type="text" class="input1" size="20"/>

  <span class="style1" style="color: red">*</span></td>

</tr>

<tr>

<td><div align="center">    别:</div></td>

<td><input name="sex" type="radio" value="M" checked="checked" />

<input name="sex" type="radio" value="W" />

<span class="style1" style="color: red">*</span></td>

</tr>

</table>

 <hr width="800" size="0" />

 <table width="294" border="0">

 <tr>

 <td width="147"><input name="Submit" type="submit" class="button1" value="注册" οnclick="return CheckSubmit();" /></td>

 <td width="137"><input name="Submit2" type="reset" class="button1" value="清除"  /></td>

 </tr>

</table></form>

</div>

</body>

</html>

Register1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.sql.*"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

<style type="text/css">

<!--

.STYLE2 {

font-size: 24px;

font-family: "宋体";

font-weight: bold;

color: #FF0000;

}

.STYLE3 {

font-family: "新宋体";

font-size: 16px;

}

.STYLE4 {color: #FF0000}

.STYLE5 {

font-size: 12px;

line-height: 14px;

text-decoration: none;

}

-->

</style>

<script language="javascript">

function backward()

{

    history.back();

}

</script>

</head>

<body style="background:url('images/背景.jpg') no-repeat;">

<%

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();

//"com.microsoft.sqlserver.jdbc.SQLServerDriver"要与驱动类名一样

String url="jdbc:sqlserver://localhost:1433;databaseName=db_database08";

//db_database08为数据库名

String user="sa";

String userpassword="";

    Connection conn= DriverManager.getConnection(url,user,userpassword);

    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

    String id=request.getParameter("id");

    String sql="select * from S where id='"+id+"'";

ResultSet rs=stmt.executeQuery(sql);

if(rs.next())

{

rs.close();

stmt.close();

conn.close();

%>

<p>用户名不能重名,请重新选择!</p>

<p><input name="Button2" type="button" class="button1" οnclick="backward()" value="返回上一步" /><a href="Register.jsp"></a></p>

<%}

else{

rs.close();

String username=request.getParameter("username");

String sex=request.getParameter("sex");

String password=request.getParameter("password");

%>

<form action="Register2.jsp" method="post">

<input type="hidden" name="id" value="<%=id%>" />

上一篇: 基于 Django 1.11 和 Python3 开发一个简单的投票系统

下一篇: 如何在线注册微信投票群?本投票制作平台实现!