基于struts2springhibernate构建一个网上投票系统.docx

上传人:b****5 文档编号:12067111 上传时间:2023-04-16 格式:DOCX 页数:27 大小:94.86KB
下载 相关 举报
基于struts2springhibernate构建一个网上投票系统.docx_第1页
第1页 / 共27页
基于struts2springhibernate构建一个网上投票系统.docx_第2页
第2页 / 共27页
基于struts2springhibernate构建一个网上投票系统.docx_第3页
第3页 / 共27页
基于struts2springhibernate构建一个网上投票系统.docx_第4页
第4页 / 共27页
基于struts2springhibernate构建一个网上投票系统.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

基于struts2springhibernate构建一个网上投票系统.docx

《基于struts2springhibernate构建一个网上投票系统.docx》由会员分享,可在线阅读,更多相关《基于struts2springhibernate构建一个网上投票系统.docx(27页珍藏版)》请在冰豆网上搜索。

基于struts2springhibernate构建一个网上投票系统.docx

基于struts2springhibernate构建一个网上投票系统

成功案例,最新归档。

授权本站,请勿外传!

《JavaEE》课程设计报告

题目名称:

基于struts2、Spring、Hibernate

构建一个网上投票系统

指导教师:

__________王振飞_____________

专业班级:

__机械2011级___________

组长:

__________董建华___________

成员:

__娄宇杨浩亮张益民林强____

电子邮件:

____15224891@________

 

设计时间:

2011年11月16日至

2011年12月21日

 

成绩:

______

目录

基于struts2、Spring、Hibernate构建一个网上投票系统3

一、问题描述及设计思路3

1.1需求分析3

1.2业务分析3

1.3投票用例5

二、详细设计过程8

2.1创建Struts2应用8

2.2添加Hibernate8

2.3添加Spring应用9

2.4领域模型层设计9

三、结论和体会13

3.1结论13

3.2体会13

四、附录14

附录A其它图表14

附录B主要程序代码15

五、参考文献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

*封装投票选项编号及内容

*/

protectedVoteContextSe

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1