网络选举投票管理系统报告.docx
《网络选举投票管理系统报告.docx》由会员分享,可在线阅读,更多相关《网络选举投票管理系统报告.docx(83页珍藏版)》请在冰豆网上搜索。
网络选举投票管理系统报告
中原工学院软件学院
软件工程实践二设计任务书
姓名
杜春静
Java专业104班
题目
网络选举投票系统的设计与实现
设
计
任
务
设计一个功能完善的网络选举投票系统,该程序界面简洁大方,按照用户的需要进行投票项目的管理,具体功能如下:
1.用户端登录,输入正确的账户和密码,登录成功后进行投票和查询历史记录的操作。
2.管理员登录,输入正确的账户和密码,登录后可对各种投票项目进行管理。
开发工具:
MyEclipse6.5
数据库:
Mysql
使用技术:
jdbc、servlet、filter
开发环境:
WindowsXP
时
间
进
度
第1周(2013-2-25~2013-3-1):
完成软件的需求分析,总体设计和详细设计,并构造出一个大体的软件模型,构造出其体系结构,画出其系统模块图,并写出初步的文档;
第2周(2013-3-4~2013-3-8):
主要是对系统进行详细设计,划分出具体的功能模块,根据模块进行界面设计,编码及单元测试;
第3周(2013-3-11~2013-3-15):
主要是对系统的测试,以及纠错,加强对软件的功能设计,添补遗漏;然后对文档进行适当的修改。
原主
始要
资参
料考
与文
献
[01]刘京华JavaWeb整合开发王者归来[M]:
清华大学出版社.
[02]张帆Java范例开发大全[M]:
清华大学出版社.
[03]李钟尉、陈丹丹Java开发实战1200例[M]:
清华大学出版社.2006.6
[04]千丽霞Java项目开发案例全程实录[M]:
北京.清华大学出版社.2004.5
[05]孙卫琴Tomcat与JavaWeb开发技术详解[M]:
电子工业出版社.2005.2
指导教师签字:
年月日
网络选举投票系统设计与实现
摘要
随着Internet技术的快速发展,如今很多服务行业都需要进行服务的反馈,以便更好的提高产品的质量和作出更好的服务,投票系统就是一个反馈信息的软件,通过它可以更好更快捷的反馈信息供服务商参考,同时在公司单位内需要进行各种投票项目进行领导和员工间的互动,以供公司高层了解下面同事的最新动态,同时通过网络投票系统在各种精选活动中可以大大提高公平性与公正性,采用计算机机票提高了选举效率。
因此开发一个供客户反馈信息,供同事间进行交流的平台是必要的。
(1)方便的操作。
原有的手工投票管理基本上是人工管理,效率低下,缺乏方便性,在线投票管理系统运用计算机及其他附属设备,不再需要人工操作,基本上实现自动化,能够节省人力,最大限度的节省各种宝贵的资源,大大提高效率。
(2)友好的界面。
友好的用户界面会给人一种亲切感,在使用起来不会觉得沉闷,效率大大提高。
关键词:
网络;投票;JSP
摘要1
第1章项目分析1
1.1问题描述1
1.2技术分析1
1.3工程进度计划3
第2章系统分析与设计4
2.1系统分析4
2.1.1参与者4
2.1.2用例及用例规约4
2.1.3用例图6
2.2系统设计6
2.2.1顺序图6
2.2.2类图8
2.2.3系统体系结构设计11
2.3数据库设计13
2.3.1E-R图14
2.3.2关系模式14
2.3.3表的设计15
第3章实现与测试17
3.1查看项目模块17
3.1.1活动图17
3.1.2界面18
3.1.3代码分析18
3.1.4测试用例20
3.2新建项目模块20
3.2.1活动图21
3.2.2界面21
3.2.3代码分析22
3.2.4测试用例22
3.3停止项目模块23
3.3.1活动图23
3.3.2界面24
3.3.3代码分析24
3.3.4测试用例25
3.4恢复项目模块25
3.4.1活动图25
3.4.2界面26
3.4.3代码分析26
3.4.4测试用例27
第4章结束语28
附录A:
主要源程序31
第1章项目分析
项目分析是对该系统具有功能的大致介绍,包括设计该系统的问题描述、技术分析、该系统的工作进度计划等内容。
项目分析是对该系统的总体概述。
这次我们做的系统名称是网络选举投票系统。
1.1问题描述
当前正处于信息时代的繁荣时期,消费者对网站和企业的要求逐渐由单纯对质量的要求转变为不仅要求质量同时要求用户的体验和意见反馈及处理的方式。
在这样的情况下,一款专门应用与网络的网络选举投票系统就显的极为重要。
网络投票选举系统主要用来进行公司的各种投票和公司内部网的热点话题的意见收集与反馈,通过这些数据使公司高层尽快掌握员工的思想动态和各种工作需求,同时大大提高各种用于活动的竞选效率。
投票系统具有极大的灵活性,可以进行单选或多选投票,自动记录登录者的ID防止恶意刷票的出现,管理员也可以在线设计不同的投票主题供用户进行投票。
1)普通用户登录后即可对当前进行的投票项目进行投票。
2)管理员登录后即可对当前正在进行的投票项目进行结束,删除,添加等操作。
用户:
面向所有公司内部员工,拥有正确的工号号和登录密码。
管理员:
公司内部管理员,拥有正确的登录帐号和密码。
1.2技术分析
Java是一种动态加载和运行的语言。
也就是说当应用程序持有一个类的地址(CLASSPATH)和名称(包名和类名)的情况下,可以在程序运行期间任何时候加载这个类,并创建和使用该类的对象。
Servlet就是基于这个机制与Web容器融合在一起的。
目前已知的所有支持JavaServlet的Web容器都是采用Java开发的。
当Web容器接收到来自客户端的请求信息之后,会根据URL中的Web元件地址信息到Servlet队列中查找对应的Servlet对象,如果找到则直接使用,如果没有找到则加载对应的类,并创建对象。
也就是说,Servlet对象是在第一次被使用的时候才创建的,并且一旦创建就会被反复使用,不再创建新的对象。
所有创建出的Servlet对象会在Web服务器停止运行的时候统一进行垃圾回收。
为了解决客户端请求地址与JavaServlet之间对应关系问题,Web容器需要一个用来描述这种对应关系的文件,一般是web.xml文件。
如果一个Web应用程序中存在很多个Servlet,那么web.xml会变得非常庞大。
在Servlet3.0规范推出之后,允许在Servlet代码中使用声明式语法来代替web.xml中的描述信息,这才让web.xml瘦身下来。
所有的程序运行都需要有一个必要的运行环境。
这个环境可以是软件,也可以是硬件,或者是软件和硬件的结合。
比如说Windows操作系统需要运行在硬件基础上;Office软件需要运行在操作系统上。
并且程序与运行环境之间会有一定的数据交换,比如操作系统会将运行指令传递给硬件,硬件也会将指令运行结果传递给操作系统。
JavaWeb程序也需要一个运行环境才能够执行。
这种运行JavaWeb程序的环境被称为Web容器,JavaWeb程序与Web容器之间存在数据交互。
目前主要存在两种类型的JavaWeb容器:
一种是独立的JavaWeb容器,在这种容器里面只能运行Web程序,这种容器一般也叫做Web服务器,如Tomcat等;另一种是与其他JavaEE容器混合在一起的Web容器,Web容器负责运行Web程序,其他容器负责运行EJB等程序,如WebLogic等。
当用户通过浏览器等Web客户端软件向服务器发出一个请求之后,首先接收到这个请求的是Web容器,Web容器会将请求信息封装到一个HttpServletRequest类型的Java对象中,并将对象传递给JavaWeb程序。
对于每个请求,Web容器还会创建一个HttpServletResponse类型对象,该对象的作用是用来保存需要返回到浏览器等客户端的内容。
JavaWeb程序可以从HttpServletRequest提取用户发出的请求信息,进行适当的处理之后,将处理结果放置HttpServletResponse中,然或由Web容器解析HttpServletResponse对象内容,并将解析结果以浏览器能够识别的HTML等格式返回给浏览器等客户端。
在这个过程中,HttpServletRequest和HttpServletResponse就如同两条渡船,负责在Web容器和JavaWeb程序之间传递信息。
需要注意的是,这两个对象仅存在于Web容器和JavaWeb程序当中,与浏览器没有关系。
1.3工程进度计划
表1.1工程进度计划表
模块名称
开发时间
编码人员
后台集成、调试
登陆界面
1
宋晓梅
所有人员调试时间
为1天
管理员功能模块
5
杜春静
用户功能界面
5
吴文文
恢复项目模块
5
杜春静
终止项目模块
5
杜春静
添加项目模块
5
杜春静
浏览项目模块
5
杜春静
添加用户模块
5
宋晓梅
删除用户模块
5
宋晓梅
添加参选者模块
5
吴文文
删除参选者模块
5
吴文文
用户投票模块
5
吴文文
用户查看个人投票历史记录模块
5
吴文文
重新登陆模块
1
宋晓梅
退出模块
1
宋晓梅
备注:
组长:
杜春静
组员:
吴文文、宋晓梅、杜春静
第2章系统分析与设计
网络投票选举系统主要用来进行公司的各种投票和公司内部网的热点话题的意见收集与反馈,通过这些数据使公司高层尽快掌握员工的思想动态和各种工作需求,同时大大提高各种用于活动的竞选效率。
该系统立足课本,运用平时课本所学知识,来完成基本操作,并适当延伸知识点,培养自己动手的能力。
并能更好的提高编程水平。
2.1系统分析
需求分析及系统设计说明:
本系统是针对众多用户对项目参选人的投票,需要能够显示每个项目的参选人的票数,且对于每个用户同一个项目的参选人只能进行一次投票,并实现管理对项目的开放和关闭。
针对以上需求,管理员应对参选者、用户和项目具有管理权限(增、删、改、查)。
用户具有对项目参选人投票及个人投票记录查询的权限。
2.1.1参与者
本项目的参与者都有:
管理员、用户、参选者
2.1.2用例及用例规约
表2.1系统用例汇总表【A管理员B用户】
编号
用例编号
用例名称
参与者
备注
1
UC-01
登录系统
A、B
2
UC-02
添加项目
A
3
UC-03
终止项目
A
4
UC-04
恢复项目
A
5
UC-05
添加参选者
A
6
UC-06
删除参选者
A
7
UC-07
添加用户
A
8
UC-08
删除用户
A
9
UC-09
查看项目
A
10
UC-10
个人投票记录
B
11
UC-11
投票
B
12
UC-12
重新登录系统
A、B
13
UC-12
退出系统
A、B
表2.2管理员停止当前项目用例规约
用例名称
停止当前项目
参与者
管理员用户
功能描述
将此正在进行的投票项目停止并删除至历史记录
前置条件
管理员账户必须登录成功
基本事件流
点击“停止投票”按钮
备选事件流
E-1:
如果点击后无反应,请刷新后重试。
后置条件
如果用例执行成功,系统发生相应改变。
如果执行不成功,系统状态不变。
业务规则
必须有正确的管理员账户
表2.3查询历史项目并恢复用例规约
用例名称
查询历史记录并恢复
参与者
管理员用户
功能描述
用户可以查询以前的投票项目及结果并回复至正在进行继续进行选举
前置条件
用户成功登录管理员账户
基本事件流
(1)进入系统后,点击“历史项目”后,此用例开始;
(2)系统调用数据库中标记为已结束的项目
(3)系统从数据库中找出所要查询的信息,并显示出来;
(4)点击“恢复项目”按钮
(5)系统修改数据库中信息。
(6)在正在进行页面显示此项目并可以继续进行投票。
备选事件流
E-1:
点击恢复如无反应,请刷新后重试。
后置条件
如果用例执行成功,系统发生相应改变。
如果执行不成功,系统状态不变。
业务规则
已经标记为结束的记录存在于数据库中
表2.4新建投票项目用例规约
用例名称
新建投票项目
参与者
管理员用户
功能描述
创建新的投票项目
前置条件
用户成功登录
基本事件流
填写参选人信息并提交
备选事件流
若填写信息不规范则无法提交成功、可重填
后置条件
如果执行成功,系统发生相应改变。
如果执行不成功,系统状态不变。
业务规则
主键必须进行设置
2.1.3用例图
图2.1用例图
2.2系统设计
本系统前台采用MVC框架,采用jsp+servlet+JavaBean。
本着易用、可靠、实用性原则,采用模块化设计,将系统分解为管理员和用户两个模块。
管理员管理权限和角色、登录以及项目的相关操作,用户则是对参选者进行投票。
2.2.1顺序图
图2.2管理员查看顺序图
图2.3管理员新建项目顺序图
图2.3管理员停止项目顺序图
图2.4管理员恢复项目顺序图
2.2.2类图
图2.4Dao包业务层类图2.5voter实体类
图2.6Manager实体类图2.7Redocer实体类
图2.8Projecter实体类图2.9UserRecoder实体类
图2.10User实体类图图2.11ProRecoder实体类
图2.12过滤器类图
图2.13HistoryProject控制类图
图2.14HistoryUser控制类图
图2.15ListProject控制类图
图2.16ManagerHistoryProject类图
图2.17ManagerListProject类图
图2.18ManagerListUser类图
图2.19ManagerListVoter类图
图2.20ManagerMessage类图
图2.21Manager控制类图
图2.22ManagerView类图
图2.23UserView类图
图2.24Vote控制类图
图2.25数据库连接类图
2.2.3系统体系结构设计
设计原则:
模块化:
本系统采用模块化的设计,如每个类中的具体方法,由一个方法块构成,可以方便的被系统中的其他类或者方法调用以实现预定的功能;
抽象类:
本系统还采用许多抽象类和接口,以实现访问层与数据库之间的连接;
信息隐藏:
系统代码编写过程中隐藏了帐户密码,这样可以确保使用时的安全性。
高内聚:
系统中的每个类都具有相应的独立性和功能特性,其内都有各自具体的方法来实现不同的功能;
低耦合:
各个类之间有一定的联系,但是依赖性不大,可以避免因为子程序之间的复杂关系产生更多的错误;
简单化:
本系统设计的界面清晰,简明,性能可靠,操作简单;
实用性能:
该系统可以满足校园内进行的各种投票选举操作。
系统模块划分如图2.1所示:
图2.26功能结构图
各子系统主要功能如下:
1)登录:
用户输入正确的账号和密码,进入系统;
2)投票;普通用户对正在进行的项目进行投票;
3)新建:
管理员用户发起一个新的投票项目;
4)查询:
普通用户查询本人帐号以前的投票记录,管理员用户查询已经停止的投票项目;
5)恢复:
管理员用户对已经结束的投票项目进行恢复至正在进行;
总体设计说明:
表示层:
应用程序的用户界面部分。
为了方便操作采用统一简明的界面与用户交互登陆后即可对账户进行各种操作。
;
数据层:
有数据的存储及对数据的存取操作。
以及数据源正确连接。
服务器层:
对数据库中的数据进行各种操作。
此B/S体系结构中服务器中主要功能:
(1)从客户端接收数据请求。
(2)处理数据请求。
(3)格式化结果并传送给客户机。
(4)执行完整性检查。
(5)提供并行访问控制。
2.3数据库设计
数据是企业运作过程中不可缺少的重要部分,建立自己的数据资料库是提高企业整体竞争力的关键因素。
对于程序而言,安全完整地保存客户的信息是一种责任,因此,数据库设计就成了整个软件开发中重要的一个环节。
一旦数据设计出现问题,软件就会出现问题,某些功能的使用就发挥不了最大作用。
所以,为了更好地开发数据库,了解信息的来源以及信息的流向是头等大事。
对于客户的整个操作流程,都要亲身参与,才能客观地掌握数据资料的真实性,为设计良好的数据库打下基础。
本章主要介绍如何收集客户的数据资料,并将其转化为程序需要的数据资源。
对于本系统,管理员拥有对参选者的voter表、用户的user表添加删除的功能,对项目的project表恢复终止的功能,用户有对个人投票记录userrecoder表查询的功能,存储历史项目的prorecoder表,参选人项目报名的recoder表。
2.3.1E-R图
图2.27E-R图
2.3.2关系模式
本次课题经过最初小组讨论,确定voter类、recoder类、manager类、project类、user类、prorecoder类、userrecoder类七个基本类。
系统中有三个实体:
管理员、用户和参选者。
1.voter(voterIdint(20),voterAgeint(50),voterIndexint(8),voterNameVarchar(255),voterSexVarchar(8),voterWordVarchar(255),voterProjectVarchar(30),voterBoolBoolean)voterId为主键;
2.recoder(recoderIdint(20),chooseNameVarchar(255),chooseProjectVarchar(255))recoderId为主键;
3.manager(managerIdint(20),managerNameVarchar(255),managerPasswordVarchar(50))managerId为主键;
4.project(proIdint(20),proNameVarchar(255),proNumberint(20),proShowVarchar(255),proBoolBoolean)proId为主键;
5.user(idint(20),passwordVarchar(50),nameVarchar(255))id为主键;
6.prorecoder(recProIdint(20),recProNameVarchar(255))recProId为主键;
7.userrecoder(rIdint(20),rIndexint(8),rNameVarchar(255),rProjectVarchar(255),rChooseNameVarchar(255),rBoolBoolean)rId为主键。
2.3.3表的设计
表2.1参选人信息(voter)
表名
voter
列名
数据类型(精度范围)
空/非空
约束条件
voterId
int(20)
非空
主键
voterName
Varchar(255)
非空
无
voterSex
Varchar(8)
非空
无
voterWord
Varchar(255)
非空
无
voterIndex
int(8)
非空
无
voterAge
int(50)
非空
无
voterProject
Varchar(255)
非空
无
voterBool
Boolean
非空
无
voterPassword
Varchar(255)
非空
无
表2.2管理员信息表(manager)
表名
manager
列名
数据类型(精度范围)
空/非空
约束条件
managerId
int(20)
非空
主键
managerPassword
Varchar(50)
非空
无
managerName
Varchar(255)
非空
无
表2.3普通用户信息表(user)
表名
user
列名
数据类型
空/非空
约束条件
id
int(20)
非空
主键
password
Varchar(50)
非空
无
name
Varchar(255)
非空
无
表2.4项目信息表(project)
表名
project
列名
数据类型
空/非空
约束条件
proId
int(20)
非空
主键
proName
Varchar(255)
非空
无
proNumber
int(20)
非空
无
proShow
Varchar(255)
非空
无
proBool
Boolean
非空
无
表2.5用户记录信息表(userrecoder)
表名
userrecoder
列名
数据类型
空/非空
约束条件
rId
int(20)
非空
主键
rIndex
int(8)
非空
无
rProject
Varchar(255)
非空
无
rName
Varchar(255)
非空
无
rChoosename
Varchar(255)
非空
无
rBool
Boolean
非空
无
表2.6项目参选人表(recoder)
表名
recoder
列名
数据类型(精度范围)
空/非空
约束条件
recoderId
int(20)
非空
主键
chooseName
Varchar(255)
非空
无
chooseProject
Varchar(255)
非空
无
表2.7历史项目表(prorecoder)
表名
prorecoder
列名
数据类型(精度范围)
空/非空
约束条件
recProId
int(20)
非空
主键
recProName
Varchar(255)
非空
无
第3章实现与测试
实现该系统的功能,并对实现的功能进行相应的测试工作,包括功能模块,活动图,界面和代码
3.1查看项目模块
管理员登录系统后,选择某一项目,查看项目参选人信息。
3.1.1活动图
图3.1管理员查看项目活动图
3.1.2界面
图3.2管理员选择项目界面
图3.3管理员查看项目界面
3.1.3代码分析
此功能的主要代码是ManagerListProjectServlet.java,主要思路是通过一个servlet判断是否显示所有信息,是否结束一个,是否开始一个。
@SuppressWarnings("serial")//关闭序列化警告。
publicclassManagerListProjectServletextendsHttpServlet{//创建一个HttpServletResponse类型对象,该对象的作用