最新毕业设计基于struts2SpringHibernate构建一个网上投票系统.docx
- 文档编号:24238138
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:23
- 大小:93.49KB
最新毕业设计基于struts2SpringHibernate构建一个网上投票系统.docx
《最新毕业设计基于struts2SpringHibernate构建一个网上投票系统.docx》由会员分享,可在线阅读,更多相关《最新毕业设计基于struts2SpringHibernate构建一个网上投票系统.docx(23页珍藏版)》请在冰豆网上搜索。
最新毕业设计基于struts2SpringHibernate构建一个网上投票系统
《JavaEE》课程设计报告
题目名称:
基于struts2、Spring、Hibernate
构建一个网上投票系统
指导教师:
__________王振飞_____________
专业班级:
__机械2011级___________
组长:
__________董建华___________
成员:
__娄宇杨浩亮张益民林强____
电子邮件:
____15224891@________
设计时间:
2011年11月16日至
2011年12月21日
成绩:
______
基于struts2、Spring、Hibernate构建一个网上投票系统
一、问题描述及设计思路
对于开发一个投票管理系统来说,应该实现什么功能,如何实现这个功能都是开发人员必须了解的问题。
将这个系统的需求、业务流程以及用例进行细致的分析、讲解。
1.1需求分析
随着网络应用的日益普及,投票的形式也发生了很大的变化。
目前在很多的场合,投票已经开始由原始方式转变为网上投票。
由于具有方便、快捷、成本低、调查范围广等优点,网上投票已经被广泛的应用。
如何管理好网上投票信息内容也变得十分的重要,我们所设计开发的投票管理系统,正是基于这种需求诞生的。
本投票管理系统分为用户提供网上投票和投票信息管理两大类功能。
通过投票管理功能可以完成增加新投票、修改原有投票信息、查找投票等功能。
本系统的界面友好、操作简便,适用于任何网站进行投票调查。
本系统的基本功能如下所述。
●使用本系统的网上投票功能,用户只要登录指定的网页,就可以进行投票操作,并可以得到投票结果信息。
●使用本网站的登录功能,管理员可以登录系统,然后对相关的信息进行管理。
●使用本系统的创建投票功能,管理员可以创建一个新的投票功能。
。
●使用本系统的管理投票功能,管理员可以对系统已经存在的投票进行更新,包括增加投票子选项、删除投票子选项、修改投票类型、更改投票状态。
●使用本系统的查找投票功能,管理员可以通过输入部分或者全部的投票主题查找对应的投票信息。
●使用本系统的管理员管理功能,管理员可以修改本人的密码或者创建一个新的管理员。
●使用本系统的注销功能,管理员可以安全的退出本系统。
1.2业务分析
投票管理系统由前台和后台两部分组成:
前台显示投票并可以执行投票操作,后台是对投票信息和管理员信息进行管理。
下面分别从使用前台和使用后台两个角度来分析本系统的业务流程。
1.2.1显示投票
用户进入投票页面如图,进行投票操作。
1.2.2管理投票
1.2.2.1后台登录页面
只有管理员可以进入后台对相关的信息进行维护,管理员在维护信息之前必须先登录系统。
1.2.2.2后台主页面
当成功登录系统后进入后台主页面,在后台主页面的左侧显示欢迎信息和系统当前所有投票数量信息。
同时该页面提供了相关操作的链接,单击相应的链接即可进行相应的操作。
各链接具体实现的业务如下。
●管理投票链接:
当管理员单击“投票管理”的文字或者图标链接后,进入管理投票页面,可以对系统已有投票信息进行维护。
●创建投票链接当管理员单击“创建投票”的文字或者图标链接后,进入创建投票页面,可以增加新的投票选项。
●查找投票链接:
当管理员单击“查找投票”的文字或者图标后,进入查找投票页面,可以根据所输入的投票主题信息(可以是完整的,也可以是关键字)在系统已有的投票中进行查找。
●管理员管理连接:
当管理员单击“管理员管理”链接后,进入管理员管理页面,可以修改当前管理员密码,增加新的管理员。
●投票主页链接:
当管理员单击“投票主页”链接后,可以跳转到后台主页面。
●注销链接:
当管理员单击“注销后“链接后,可以安全退出系统。
1.3投票用例
Ø用例名称:
投票
简要说明:
允许所有用户进行投票操作
基本事件流:
(1)用户进入投票页面
(2)系统显示投票主题及投票内容
(3)用户进行投票
(4)系统显示投票结果
(5)用例结束
异常事件流:
(1)投票已经关闭,系统给出错误提示
(2)用户所在IP已经投过票,系统出现错误提示
Ø用例名称:
创建投票
简要说明:
允许管理员创建新投票
前置条件:
管理员已经登录后台系统
基本事件流:
(1)管理员进入创建投票页面
(2)管理员填写新投票主题相关信息并单击下一步
(3)管理员填写新投票选项信息并单击下一步
(4)系统增加新投票信息并显示
(5)用例结束
异常事件流:
(1)填写信息错误,系统给出提示信息
(2)管理员中途单击其他页面链接,跳转相应页面
Ø用例名称:
查找投票
Ø简要说明:
允许管理员查找投票
前置条件:
管理员已经登录后台系统
基本事件流:
(1)管理员进入查找投票页面
(2)管理员输入完整或部分的投票主题并提交
(3)系统显示查找结果
(4)用例结束
异常事件流:
(1)输入信息有误,系统给出错误提示
(2)数据库没有符合要求的信息,系统给出提示
Ø用例名称:
增加投票选项
简要说明:
允许管理员为某投票主题增加子选项
气质条件:
管理员已经登录后台系统
基本事件流:
(1)管理员进入修改投票信息页面
(2)管理员单击“新增加一个投票选项“链接
(3)管理员输入新增加选项内容
(4)用例结束
异常事件流:
(1)输入信息有误,系统给出错误提示
(2)数据库没有符合要求信息,系统给出提示
Ø用例名称:
删除投票选项
简要说明:
允许管理员删除某投票选项的子选项
气质条件:
管理员已经登录后台系统
基本事件流:
(1)管理员进入修改投票信息页面
(2)管理员单击要删除选项相应的“删除”链接
(3)系统删除相应的选项
(4)用例结束
异常事件流:
当剩余选项个数小于等于2时,继续删除系统提示错误
Ø用例名称:
修改投票选项
简要说明:
允许管理员修改投票信息
前置条件:
管理员已经登录后台系统
基本事件流:
(1)管理员进入修改投票信息页面
(2)管理员修改投票信息并单击“更新”按钮
(3)系统更新投票信息
(4)用例结束
异常信息流:
输入信息有误,系统给出提示
Ø用例名称:
修改密码
简要说明:
允许管理员修改本人的登录密码
前置条件:
管理员已经登录后台系统
基本事件流:
(1)管理员进入修改密码页面
(2)管理员输入信息并提交
(3)系统显示现修改成功
(4)用例结束
异常信息流:
(1)输入信息有误,系统给出错误提示
(2)旧密码输入不正确,系统给出提示
(3)两次输入新密码不一致,系统给出提示
Ø用例名称:
创建新管理员
简要说明:
允许管理员创建一个新管理员
前置条件:
管理员已经登录了后台系统
基本事件流:
(1)管理员进入创建新管理员页面
(2)管理员输入信息并提交
(3)系统显示创建成功
(4)用例结束
异常信息流:
(1)输入信息有误,系统给出错误提示
(2)两次输入密码不一致,系统给出提示
(3)新管理员用户名已存在,系统给出提示
二、详细设计过程
到目前为止我们已经对于整个投票系统的需求有了一定的了解,下面将要设计到具体的实现方案。
本节将从两个方面入手进行系统设计,包括技术方案(使用什么样的技术来开发设计这个系统)和数据库设计(本系统设计到的数据信息如何存取)。
下面就是系统设计的详细内容。
通过前面的分析设计,我们已经对整个投票管理系统的工作流程、工程构架有了深入的了解,下面开始进入详细设计和代码的实现过程。
2.1创建Struts2应用
✧在stc根目录添加配置文件struts.Xml
✧修改web.xml文件内容
✧引入jar包
2.2添加Hibernate
✧引入jar包
包括hibernate3.jar、cglib-nodep-2.14_3.jar、dom4j-1.6.1.jar、commons-collections.jar、log4-1.2.13.jar、c3p0.0.90.4.jar、jta.jar、antlr-0.7.
6.jar
✧创建对应数据库的持久化类
一共需要创建4个持久化类,分别为Admin.java、Vote.java、Votecontext.java、Voterjava。
它们各自对应的代码将在具体实现小节中提供
需要注意的是,在写Hibernate持久类的时候,一定要遵循如下所述的规范。
●持久化类符合Javabean的规范,包含一些成员变量,以及与之对应的getter、setter方法
●持久化类有一个ID属性,用来唯一标示Customer类的每一个对象。
在面向对象术语中,这个ID属性被称为对象标识符(OID,ObjectIdentifier),通常它都用整数表示。
●Hibernate要求持久化类必须提供一个不带参数的默认构造方法。
✧创建对象关系映射文件
对应持久化类我们也需要创建4个映射文件,分别为Admin.hbm.xml、Vote.hbm.xml、Voter.hbm.xml、Votecontext.hbm.xml。
它们各自对应的代码将在具体的实现小节中提供。
✧创建Hibernate配置文件hibernate.cfg.xml
2.3添加Spring应用
✧引入jar包
包括spring.jar和sturts2-spring-plugin-2.08.jar
✧创建Spring配置文件applicationContext.xml
✧在Web.xml中添加Spring监听
2.4领域模型层设计
2.4.1持久层设计
持久层是通过Hibernate实现的,采用DAO模式进行的开发设计。
在设计过程中,我们所有的实现类都继承了HibernateDaoSupport,通过Hibernate提供的HQL语言执行数据操作,避免了手写大量SQL语句繁琐、易错的弊端。
具体的实现过程可以分为以下几步。
(1)编写接口
(2)编写实现类
(3)在applicationContext.xml中配置DAO。
2.4.2业务层设计
业务层是一个典型的Web应用程序中是作为中间组件而存在的。
2.4.3表示层设计
✧管理员登录模块设计
后台管理员登录是后台系统管理的入口,只有成功登录系统后才可以进行信息管理。
首先管理员进入登录界面。
输入用户名、密码以及图形校检码并单击“确定”按钮,如果信息无误则进入后台管理系统这页面;如果输入信息有误,系统将给出提示信息。
✧创建投票模块
该模块主要用于系统中添加一个新的投票,包括投票主题,投票类型、投票是否发布、投票选项内容。
输入投票的主题、子选项个数、选择投票类型以及是否马上开放并单击“下一步”按钮。
如过输入有误,系统给出提示信息。
创建投票选项的代码。
确定并单击“下一步”,创建投票流程结束。
✧查看投票信息模块
该模块用来显示目前系统中已经存在的所有投票信息内容。
当管理员单击系统主页面的管理投票链接后,系统显示所有的投票信息。
显示所有的投票信息代码。
✧修改投票信息模块
该模块用来修改系统已存在的投票相关信息。
为了确保信息的公正性,当某个投票信息被更新时,该投票对应投票记录,包括投票票数以及投票人信息都被清空。
当单击投票编号对应的编辑链接,进入修改投票信息界面。
单击新增加一个投票选项,可以为当前投票增加子选项。
增加投票选项的代码。
观察发现,在员原选项下面增加了一个新的选项。
单击投票选项后面的“删除”链接,可以删除对应的选票选项。
✧查找信息模块
该模块允许管理员根据投票主题查找对应的投票信息。
当单击后台主页查找投票链接后,进入查找投票界面。
输入查询的内容并单击“确定”按钮,系统显示符合条件的投票信息。
✧修改密码模块
通过该模块可以修改登录管理员的登录密码。
单击修改密码连接进入修改界面。
输入提示信息并单击“确认”按钮即可修改密码,如果旧密码不正确或者两次输入的新密码不一致,系统会给出错误的提示信息。
✧创建新管理员模块
通过该模块可以创建一个新的管理员。
单击创建新管理员链接,进入创建管理员的界面。
输入相关的信息并单击“确定”按钮可以创建一个新的管理员,如果输入有误或者所输入用户名已经不存在,系统给出错误的提示信息。
✧投票模块
该模块负责显示投票信息给用户并处理投票过程。
当投票人进入投票页面。
选择并单机:
:
下一步“按钮,系统显示投票结果界面。
三、结论和体会
3.1结论
随着网络应用的日益普及,投票的形式也发生了很大的变化。
目前在很多的场合,投票已经开始由原始方式转变为网上投票。
由于具有方便、快捷、成本低、调查范围广等优点,网上投票已经被广泛的应用。
如何管理好网上投票信息内容也变得十分的重要,我们所设计开发的投票管理系统,正是基于这种需求诞生的。
本投票管理系统分为用户提供网上投票和投票信息管理两大类功能。
通过投票管理功能可以完成增加新投票、修改原有投票信息、查找投票等功能。
本系统的界面友好、操作简便,适用于任何网站进行投票调查。
3.2体会
这次数据库课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,困难在你的勇气和毅力下是抬不了头的。
从做这个课程设计开始无论遇到什么困难,我都没有一丝的放弃的念头。
出于对知识的渴望,出于对新技术的好奇,出于对一切未知的求知。
我完成了这次课程设计,不过这只是我学习路上的驿站,我会继续学习它,包括jave公司的j2ee我也很想试试,语言本来就是相通的,justdoit!
语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。
古语说的好:
学无止境啊!
我很庆幸我参加了这次课程设计,让我确实打开了眼界。
四、附录
附录A其它图表
附录B主要程序代码
创建用户
packagesunyang.vote.action.admin;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
importsunyang.vote.action.rootaction.AdminRoot;
importsunyang.vote.domain.Admin;
@SuppressWarnings("serial")
publicclassCreateadminextendsAdminRoot{
privatestaticfinalStringCREATEADMINERROR="createAdminError";
@Override
publicStringexecute()throwsException{
//通过用户名查找管理员信息
Admina=adminService.findAdminByName(name);
//如果不为空,说明已经存在
if(a!
=null){
addActionError(getText("adminexist"));
returnCREATEADMINERROR;
}else{
Datedate=Calendar.getInstance().getTime();
SimpleDateFormatformatter=newSimpleDateFormat(
"yyyy-MM-ddHH:
mm:
ss");
StringdateString=formatter.format(date);
Adminadmin=newAdmin();
admin.setName(name);
admin.setPassword(newpwd1);
admin.setLogintime(dateString);
adminService.addAdmin(admin);
returnSUCCESS;
}
}
登录界面
packagesunyang.vote.action.admin;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
importjavax.servlet.http.HttpSession;
importorg.apache.struts2.ServletActionContext;
importsunyang.vote.action.rootaction.AdminRoot;
importsunyang.vote.domain.Admin;
importsunyang.vote.domain.Count;
@SuppressWarnings("serial")
publicclassLoginextendsAdminRoot{
@Override
publicStringexecute()throwsException{
HttpSessionsession=ServletActionContext.getRequest().getSession();
if(session.getAttribute("rand")==null){
returnERROR;
}
//获得图形校验码
Stringsf=(String)session.getAttribute("rand");
//如果图形校验码正确,判断帐号、密码是否正确
if(sf.equals(safecode)){
Adminadmin=adminService.findAdmin(name,password);
if(admin==null){
addActionError(getText("loginerror"));
returnERROR;
}else{
//将admin信息存入session
session.setAttribute("admin",admin);
Countcount2=newCount();
//设置单选投票个数
count2.setSingleCount(voteService.findVoteCountByType(newInteger
(1)));
//设置多选投票个数
count2.setMultiCount(voteService.findVoteCountByType(newInteger(0)));
//设置所有投票个数
count2.setAllCount(voteService.findVoteCount());
session.setAttribute("count2",count2);
//获得当前系统时间并格式化,存入管理员登录时间
Datedate=Calendar.getInstance().getTime();
SimpleDateFormatformatter=newSimpleDateFormat("yyyy-MM-ddHH:
mm:
ss");
StringdateString=formatter.format(date);
admin.setLogintime(dateString);
//更新管理员登录时间信息
adminService.updatelogintime(admin);
returnSUCCESS;
}
}else{
addActionError(getText("codeerror"));
returnERROR;
}
}
}
退出登录
packagesunyang.vote.action.admin;
importjavax.servlet.http.HttpSession;
importorg.apache.struts2.ServletActionContext;
importcom.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
publicclassLogoutextendsActionSupport{
@Override
publicStringexecute()throwsException{
HttpSessionsession=ServletActionContext.getRequest().getSession();
session.invalidate();
returnSUCCESS;
}
}
投票根目录
packagesunyang.vote.action.rootaction;
importjava.util.List;
importjava.util.Map;
importsunyang.vote.service.VoteContextService;
importsunyang.vote.service.VoteService;
importsunyang.vote.domain.*;
importcom.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
publicclassVoteContextRootextendsActionSupport{
/**
*@paramcontext
*子选项内容,数组类型
*@paramvoteId
*投票编号
*@paramlist
*@paramlist2
*封装投票结果信息
*@paramvotecontextId
*投票子选项编号
*@paramtype
*投票类型
*@parampublish
*是否发布
*@parammap
*封装投票选项编号及内容
*/
protectedVoteContextServicevoteContextService;
protectedVoteServicevoteService;
protectedString[]context;
protectedIntegervoteId;
protectedList
protectedIntegervotecontextId;
protectedIntegertype;
protectedIntegerpublish;
protectedMapmap;
publicInteger
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 毕业设计 基于 struts2SpringHibernate 构建 一个 网上 投票 系统