投票系统.docx
- 文档编号:3634623
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:16
- 大小:369.70KB
投票系统.docx
《投票系统.docx》由会员分享,可在线阅读,更多相关《投票系统.docx(16页珍藏版)》请在冰豆网上搜索。
投票系统
课程名称网页设计与网站建设
课题名称投票系统
目录
1绪论1
1.1JSP简介1
1.2应用技术领域及范围1
1.3设计的原理、方法和主要内容1
2系统分析3
2.1设计思路3
2.1.1系统介绍3
2.1.2需求的提取3
2.2设计目的4
2.3设计要求4
3系统设计5
3.1系统结构图5
3.2数据库功能模板设计6
3.3详细设计8
3.3.1用户登录模块的设计8
3.3.2管理员管理模块的设计9
3.3.3用户投票和投票结果查看模块设计10
4系统实现13
4.1环境搭建13
4.2界面及功能的实现13
5总结17
参考文献19
1绪论
1.1JSP简介
JSP:
(JavaServerPages),JSP是一种基于Java的技术,用来产生跨平台和跨Web服务器的动态页面。
它是在传统的网页HTML文件中插入Java程序段和JSP,从而形成JSP文件。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。
在线投票系统用JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使本系统基于Web的应用程序的开发变得迅速和容易。
1.2应用技术领域及范围
本投票系统主要分为普通用户和管理员两部份。
普通用户登录后可以进行投票和查看投票结果;普通用户投票时可以选择不同的主题分类进行投票。
选择分类后,主页显示该分类的所有投票主题。
点击进入主题投票后,显示该主题的名称及选项内容,然后用户选择选项,提交表单。
主页还提供投票结果查询的链接管理员登录后可以进行管理投票主题和管理投票项。
“投票”用例主要的功能是普通用户对某个投票主题进行投票,在用户进行投票时检测用户是否已经投票了该主题,保证每个用户都一个主题只能投一次票。
“查看投票结果”用例负责为用户提供某个主题的投票情况,包括每个选项的票数以及统计图。
“登录”负责核对管理员的用户名与密码,保证管理员身份的正确性。
管理员管理投票信息,包括主题、选项的添加、删除和查看。
管理员登陆后台管理系统后可以管理投票信息;同时可以查看和删除主题及选项;也可以查看不同类别的主题的投票结果。
1.3设计的原理、方法和主要内容
本系统功能比较简单,主要有以下功能:
显示页面需要从数据源取出所有数据显示,供使用者浏览,当用户选择某个选项单击提交按钮时,将完成一次投票功能。
当用户完成一次投票后,不允许再反复投票,如果用户再提交,则提示“您以投过票,请不要反复投票”。
当用户访问时单击查看选项时,可以看到所有选项的得票数。
同时在首页可以查看用户对这次投票的评论,如果访问者想评论时,可根据系统首页的提示进行注册、对投票进行评论等。
管理员用户可以通过登录进入投票管理系统的管理页面进行修改、删除、增加投票项,以及注册用户、评论管理等。
2系统分析
2.1设计思路
2.1.1系统介绍
本投票系统主要分为普通用户和管理员两部份。
普通用户登录后可以进行投票和查看投票结果;管理员登录后可以进行管理投票话题和管理投票项。
“投票”用例主要的功能是普通用户对某个投票话题进行投票,在用户进行投票时检测用户是否已经投票了该话题,保证每个用户都一个话题只能投一次票。
“查看投票结果”用例负责为用户提供某个话题的投票情况,包括每个选项的票数以及统计图。
2.1.2需求的提取
在线投票系统应具有的独特的功能:
(1)方便的操作。
原有的手工投票管理基本上是人工操作,效率低下,缺乏方便性,在线投票管理系统运用计算机和其他附加设备,不再需要手工操作,基本上是全自动化,能够节省人力、最大限度地利用各种宝贵的资源,大大的提高了效率。
(2)友好的界面。
友好的用户界面会给人一种亲切的感觉,在使用起来不会觉得沉闷,效率自然也会提高了。
(3)强大的功能,能够满足需要,快速简单的统计任务,提高质量。
在线投票系统需要满足的条件:
(1)系统自动把投票结果转换为百分比显示。
(2)投票管理员可以对投票主题和投票选项进行设计与修改。
在线投票系统开发应遵循以下要求:
(1)尽量采用现有软硬件环境及先进的系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。
(2)系统应具有可扩展、可复用的特点,能与投票系统接轨,数据库的设计应该具有通用性。
(3)系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于系统维护人员的调试与修改维护。
(4)系统应具备数据库维护功能,及时根据需要进行数据的添加、删除、修改等工作。
2.2设计目的
在已经掌握相关的专业理论知识的基础上,巩固所学知识、增强开发能力、提高专业素质,促进全面发展。
通过计算机应用大型作业这一实践环节,培养系统综合应用所学系列课程基本理论、基本知识的能力,使所学的理论知识系统化,培养独立思考、独立分析、独立解决问题的能力。
通过作业小组成员的集体合作,培养合作共事、协同工作的能力,为今后更好地胜任计算机应用的开发打好扎实的基础。
2.3设计要求
通过对用户的需求调查分析,可以概括出用户的功能需求如下:
单选投票、多选投票、查看投票、投票设计。
◆单选投票:
用户只能从多个选项中选取一项进行投票。
◆多选投票:
用户可以从多个选项中选取多项进行投票。
◆查看投票:
提供用户查看当前投票情况,投票结果以柱状图显示。
◆投票设计:
管理员可以设计不同的投票主题,及投票主题的内容供用户进行投票。
投票设计又包括以下功能需求:
增加主题、删除主题、查看主题、修改主题。
3系统设计
3.1系统结构图
在线投票系统总体功能模块包括普通用户模块和管理员模块,其具体描述如下:
1.普通用户模块
普通用户模块包含着3个不同的功能,其各部分功能关系如图所示。
2.系统的流程图:
在线投票系统的流程图包含了该系统的投票原理与主要制作方法。
从流程图上我们可以看到在线投票系统需要经过登录、显示投票项、取得投票参数、累加投票数、将投票写入数据库和显示投票结果等步骤,其流程图,如图3-1-3所示。
3.管理员模块
(1)发布新问题;
(2)用户管理,管理员可以增加和删除普通用户(超级用户不能删除),或者更改普通用户密码;
(3)查看所有投票;
从功能描述的内容中可以看到,管理员模块可以实现添加投票话题、删除投票话题、增加投票项、删除投票项、公布结果和查看投票结果6个完整的功能,并且不同功能之间也存在着一些直接或间接联系,如图所示。
3.2数据库功能模板设计
数据库设计是软件开发中的重要环节,是对系统数据全面的、详细的分析。
数据库设计的好坏直接关系到整个项目设计的效率的高低,关系到设计的稳定性。
根据在线投票系统不同模块之间的联系和前期的设计目的与需求,设计了三个不同的数据表,它们分别是用户表、投票选项表和投票主题表。
1参与投票表(Admins)
参与投票表包括所有用户的各种信息,如投票ID、投票MSEL以及投票时间等详细数据并规定了每个字段的类型,如表3-7-1所示。
2.结果查询表(Items)
投票结果查询表包括每个投票选项的基本信息,如投票的书名、编码以及投票员工号等信息,同时此表还规定了字段类型和长度,具体的数据说明如表3-7-2所示。
3.3详细设计
3.3.1用户登录模块的设计
(1)程序描述
本程序设计的目的主要是对用户注册和用户登录的实现。
(2)功能描述
用户登录:
如果是已经注册的用户,则直接验证登录到投票系统首页;如果是还未注册的用户,则首先进行注册,注册成功,进行登录,登录成功的用户进入投票系统首页。
(3)性能
身份认证和检查用户要对数据库进行搜索和录入,检查用户是不是合法和注册时,用户表里是否有此用户名,如果是用户要求反应时间在1秒之内,如果不是会员反应时间在2秒之内,并在0.5秒之内跳到注册页面。
(4)输入项
在登录界面登陆的信息包括:
用户信息(用户名,密码,数据类型:
char,密码要以‘●’显示)。
(5)输出项
对用户输入信息进行判断,通过验证后进入用户操作界面,如果该用户信息不存在提示“注册”。
3.3.2管理员管理模块的设计
(1)程序描述
本程序设计的目的主要是管理员登录以及对管理员身份进行验证的实现。
(2)功能描述
管理员登录:
如果是管理员,则直接验证登录到后台管理系统首页,如果不是管理员,则显示错误信息。
如图:
(3)性能
身份认证和检查管理员要对数据库进行搜索和录入,检查管理员是不是合法时,管理员表里是否有此管理员名,如果是管理员要求反应时间在1秒之内,如果不是管理员要求反应时间在2秒之内。
(4)输入项
在登录界面登陆的信息包括:
管理员信息(管理员,密码,数据类型:
char,密码要以‘●’显示)。
(5)输出项
对用户输入信息进行判断,通过验证后进入用户操作界面,如果该用户信息不存在提示“出错”。
(6)流程逻辑
如图:
3.3.3用户投票和投票结果查看模块设计
(1)程序描述
本程序设计的目的主要是用户进行投票以及对投票结果进行查看的实现。
(2)功能描述
投票管理:
选择投票项,点击“提交”,数据库增加相应票数,转换到投票查看页面;点击“重置”,返回默认头投票项。
如图:
是
是
否
投票结果查看:
点击“查看投票结果”,可以查看到管理员允许对外公布的主题的投票结果。
是
(3)性能
投票提交要求反应时间在1秒之内,数据库修改数据并以数字和图示显示结果。
(4)投票输入项
点击投票项,被选中的选项以‘●’显示
(5)结果输出项
点击查看结果,页面显示管理员允许对外公布的主题的票数和图示。
(6)流程逻辑
如图:
4系统实现
4.1环境搭建
本系统是在Eclipse、Tomcat、MySql的开发环境下实现的。
4.2界面及功能的实现
(1)在进入程序主界面中,有两个链接按钮如图1.1所示。
图1.1投票首页
如果在投票前想查看一下投票结果,可单击“查看结果”链接按钮,进入投票结果查询界面,如图1.2所示。
图1.2查看投票结果
具体实现代码如下:
*@功能查询数据表,获取投票选项
*/
publicListselectVote(Stringsql){
Listvotelist=null;
if(sql!
=null&&!
sql.equals("")){
getRs(sql);
if(rs!
=null){
votelist=newArrayList();
try{
while(rs.next()){
VoteSinglevoteSingle=newVoteSingle();
voteSingle.setId(MyTools.intToStr(rs.getInt
(1)));
voteSingle.setTitle(rs.getString
(2));
voteSingle.setNum(MyTools.intToStr(rs.getInt(3)));
voteSingle.setOrder(MyTools.intToStr(rs.getInt(4)));
votelist.add(voteSingle);
}
如果需要查询某一指定IP的最后一次投票记录,核心实现代码如下
*@功能查询数据表,获取指定IP最后一次投票的记录
*/
publicTempSingleselectTemp(Stringsql){
TempSingletempSingle=null;
if(sql!
=null&&!
sql.equals("")){
getRs(sql);
if(rs!
=null){
try{
while(rs.next()){
tempSingle=newTempSingle();
tempSingle.setId(MyTools.intToStr(rs.getInt
(1)));
tempSingle.setVoteIp(rs.getString
(2));
tempSingle.setVoteMSEL(rs.getLong(3));
tempSingle.setVoteTime(rs.getString(4));
}
(3)投票查询后,单击“返回投票”按钮,或者在首页单击“参与投票”链接钮钮,进行投票操作,如图1.3所示。
图1.3在线投票
实现投票时间核心代码:
publicstaticStringcompareTime(longtoday,longtemp){
intlimitTime=60;//设置限制时间为60分钟
longcount=today-temp;//计算当前时间与上次投票时间相差的毫秒数(该结果一定是大于等于0)
if(count<=limitTime*60*1000)//如果相差小于等于60分钟(1分=60秒,1秒=1000毫秒)
return"no";
else//如果相差大于60分钟
return"yes";
}
/**
*@功能格式化时间为指定格式。
首先通过Date类的构造方法根据给出的毫秒数获取一个时间,然后将该时间转换为指定格式,如"年-月-日时:
分:
秒"
*@参数ms为毫秒数
*@返回值String类型
*/
publicstaticStringformatDate(longms){
Datedate=newDate(ms);
SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddHH:
mm:
ss");
StringstrDate=format.format(date);
returnstrDate;
}
}
5总结
这个系统主要采用的jsp技术,数据库为SQLSERVER2000,服务器为Tomcat,开发环境是MyEclispe。
由于是首次合作使用不熟悉的java语言弄的系统,故在编写系统的过程中,我们碰到了很多问题。
如:
在数据库的安装和链接这一部分,我们花了大量的时间。
由于之前安装了数据库2008版的功能不全,无法完成数据库的连接操作,由于之前安装了数据库2008版的功能不全,无法完成数据库的链接操作,故要卸载2008版本,重新安装了2000版本。
但是由于之前的2008版卸载时挺麻烦的,需要在系统的注册表里面删除之前的安装键值等才能够安装2000版数据库。
本数据库的端口号改为了1434。
默认为1433。
由于所安装的2000版本的库并不能支持所运用的开发环境MYEclipse(反反复复才搞清楚是这个原因。
),因此还需要对数据库进行打补丁SP3。
在JDK安装中需要设置系统坏境和Tomcat的安装中需要设置虚拟机为JDK的安装路径,这一步是挺重要的。
本系统的开发主要分为:
界面层、逻辑结构层、数据存储层。
在编写JSP文档中