JavaEE课程设计报告_第1页
JavaEE课程设计报告_第2页
免费预览已结束,剩余18页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JavaEE课程设计报告 题目名称:基于 struts2 、Spring、Hibernate 构建一个网上投票系统 成绩: 目录 基于 struts2、Spring、Hibernate 构建一个网上投票系统 . 2 一、 问题描述及设计思路 . 2 1.1需求分析 . 2 1.2业务分析 . 3 1.3投票用例 . 5 二、 详细设计过程 . 7 2.1 仓U建 Struts2 应用 . 8 2.2 添力口 Hibernate . 8 2.3 添力口 Spring 应用 . 8 2.4领域模型层设计 . 9 三、 结论和体会 . 12 3.1结论 . 12 3.2体会 . 13 四、 附录 .

2、 13 附录A其它图表 . 13 附录B主要程序代码 . 14 五、 参考文献 . 20欢迎下载 3 基于 struts2、Spring、Hibernate 构建一个 网上投票系统 亠、问题描述及设计思路 对于开发一个投票管理系统来说,应该实现什么功能,如何实现这个功能都是 开发人员必须了解的问题。将这个系统的需求、业务流程以及用例进行细致的分 析、讲解。 1.1 需求分析 随着网络应用的日益普及,投票的形式也发生了很大的变化。目前在很多的 场合,投票已经开始由原始方式转变为网上投票。 由于具有方便、快捷、成本低、 调查范围广等优点,网上投票已经被广泛的应用。如何管理好网上投票信息内容 也变得

3、十分的重要,我们所设计开发的投票管理系统,正是基于这种需求诞生的。 本投票管理系统分为用户提供网上投票和投票信息管理两大类功能。 通过投 票管理功能可以完成增加新投票、 修改原有投票信息、查找投票等功能。本系统 的界面友好、操作简便,适用于任何网站进行投票调查。欢迎下载 4 本系统的基本功能如下所述。 使用本系统的网上投票功能, 用户只要登录指定的网页, 就可以进行投票操作, 并 可以得到投票结果信息。 使用本网站的登录功能,管理员可以登录系统,然后对相关的信息进行管理。 使用本系统的创建投票功能,管理员可以创建一个新的投票功能。 。 使用本系统的管理投票功能, 管理员可以对系统已经存在的投票

4、进行更新, 包括增 加投票子选项、删除投票子选项、修改投票类型、更改投票状态。 使用本系统的查找投票功能,管理员可以通过输入部分或者全部的投票主题查找对 应的投票信息。 使用本系统的管理员管理功能,管理员可以修改本人的密码或者创建一个新的管理 员。 使用本系统的注销功能,管理员可以安全的退出本系统。 1.2 业务分析 投票管理系统由前台和后台两部分组成: 前台显示投票并可以执行投票操作, 后台是对 投票信息和管理员信息进行管理。下面分别从使用前台和使用后台两个角度来分析本系统的 业务流程。 1.2.1 显示投票 用户进入投票页面如图,进行投票操作 。 1.2.2管理投票 后台登录

5、页面 只有管理员可以进入后台对相关的信息进行维护,管理员在维护信息之前必 须先登录系统。 瞥理员童i K 输入用户喀 欢迎下载 5 n 17n |唾(SH 1.222后台主页面 当成功登录系统后进入后台主页面, 在后台主页面的左侧显示欢迎信息和系 统当前所有投票数量信息。同时该页面提供了相关操作的链接,单击相应的链接 即可进行相应的操作。各链接具体实现的业务如下。 管理投票链接:当管理员单击“投票管理”的文字或者图标链接后,进 入管理投票页面,可以对系统已有投票信息进行维护。 创建投票链接当管理员单击“创建投票”的文字或者图标链接后,进入 创建投票页面,可以增加新的投票选项。 查找投票链接:当

6、管理员单击“查找投票”的文字或者图标后,进入查 找投票页面,可以根据所输入的投票主题信息(可以是完整的,也可以是关 键字)在系统已有的投票中进行查找。 管理员管理连接:当管理员单击“管理员管理”链接后,进入管理员管 理页面,可以修改当前管理员密码,增加新的管理员。 投票主页链接:当管理员单击“投票主页”链接后,可以跳转到后台主 页面。 注销链接:当管理员单击“注销后“链接后,可以安全退出系统。欢迎下载 6 1.3投票用例 ? 用例名称:投票 简要说明:允许所有用户进行投票操作 基本事件流: (1) 用尸进入投票页面 (2) 系统显示投票主题及投票内容 (3) 用户进行投票 (4) 系统显示投票

7、结果 (5) 用例结束 异常事件流: (1) 投票已经关闭,系统给出错误提示 (2) 用户所在IP已经投过票,系统出现错误提示 用例名称:创建投票 简要说明:允许管理员创建新投票 前置条件:管理员已经登录后台系统 基本事件流: (1) 管理员进入创建投票页面 (2) 管理员填写新投票主题相关信息并单击下一步 (3) 管理员填写新投票选项信息并单击下一步 (4) 系统增加新投票信息并显示 (5) 用例结束 异常事件流: (1 填写信息错误,系统给出提示信息 欢迎下载 7 (2) 管理员中途单击其他页面链接,跳转相应页面 用例名称:查找投票 简要说明:允许管理员查找投票 前置条件:管理员已经登录后

8、台系统 基本事件流: (1 管理员进入查找投票页面 (2) 管理员输入完整或部分的投票主题并提交 (3) 系统显示查找结果 (4) 用例结束 异常事件流: (1) 输入信息有误,系统给出错误提示 (2) 数据库没有符合要求的信息,系统给出提示 用例名称:增加投票选项 简要说明:允许管理员为某投票主题增加子选项 气质条件:管理员已经登录后台系统 基本事件流: (1) 管理员进入修改投票信息页面 (2) 管理员单击“新增加一个投票选项“链接 (3) 管理员输入新增加选项内容 (4) 用例结束 异常事件流: (1) 输入信息有误,系统给出错误提示 (2) 数据库没有符合要求信息,系统给出提示 用例名

9、称:删除投票选项 简要说明:允许管理员删除某投票选项的子选项 气质条件:管理员已经登录后台系统 基本事件流: (1) 管理员进入修改投票信息页面 (2) 管理员单击要删除选项相应的“删除”链接 (3) 系统删除相应的选项 (4) 用例结束 异常事件流: 当剩余选项个数小于等于2时,继续删除系统提示错误 用例名称:修改投票选项 简要说明:允许管理员修改投票信息 前置条件:管理员已经登录后台系统 基本事件流: (1) 管理员进入修改投票信息页面 (2) 管理员修改投票信息并单击“更新”按钮 (3) 系统更新投票信息 (4) 用例结束 异常信息流: 输入信息有误,系统给出提示 用例名称:修改密码 简

10、要说明:允许管理员修改本人的登录密码 前置条件:管理员已经登录后台系统 基本事件流: (1) 管理员进入修改密码页面 (2) 管理员输入信息并提交 (3) 系统显示现修改成功 (4) 用例结束 异常信息流: (1) 输入信息有误,系统给出错误提示 欢迎下载 8 (2) 旧密码输入不正确,系统给出提示 (3) 两次输入新密码不一致,系统给出提示 用例名称:创建新管理员 简要说明:允许管理员创建一个新管理员 前置条件:管理员已经登录了后台系统 基本事件流: (1) 管理员进入创建新管理员页面 (2) 管理员输入信息并提交 (3) 系统显示创建成功 (4) 用例结束 异常信息流: (1) 输入信息有

11、误,系统给出错误提示 (2) 两次输入密码不一致,系统给出提示 (3) 新管理员用户名已存在,系统给出提示 1、详细设计过程 到目前为止我们已经对于整个投票系统的需求有了一定的了解, 下面将要设 计到具体的实现方案。本节将从两个方面入手进行系统设计,包括技术方案(使 用什么样的技术来开发设计这个系统)和数据库设计(本系统设计到的数据信息 如何存取)。下面就是系统设计的详细内容。 通过前面的分析设计,我们已经对整个投票管理系统的工作流程、工程构架有了深入的 了解,下面开始进入详细设计和代码的实现过程。 2.1 创建 Struts2 应用 在stc根目录添加配置文件 struts.Xml 修改we

12、b.xml文件内容 引入jar包 2.2 添加 Hibernate 欢迎下载 9 引入jar包 包 括 hibernate3.jar、 cglib-nodep-2.14_3.jar、 dom4j-1.6.1.jar、 com mon s-collect ion s.jar、Iog4-1.2.13.jar、c3p.jar、jta.jar、an tlr-0.7. 6.jar 创建对应数据库的持久化类 一共需要创建 4个持久化类,分别为 Admin.java、Vote.java、 Votecontext.java Voterjava。它们各自对应的代码将在具体实现小节中提 供 需要注

13、意的是,在写Hibernate持久类的时候,一定要遵循如下所述 的规范。 持久化类符合Javabean的规范,包含一些成员变量,以及与之 对应的getter、setter方法 持久化类有一个ID属性,用来唯一标示 Customer类的每一个 对象。在面向对象术语中,这个ID属性被称为对象标识符(0ID, Object Identifier),通常它都用整数表示。 Hibernate要求持久化类必须提供一个不带参数的默认构造方 法。 创建对象关系映射文件 对应持久化类我们也需要创建 4个映射文件,分别为Admin.hbm.xml、 Vote.hbm.xml、Voter.hbm.xml、Votec

14、ontext.hbm.xml。它们各自对应的代 码将在具体的实现小节中提供。 仓U建 Hibernate 配置文件 hibernate.cfg.xml 2.3 添加 Spring 应用 引入jar包 包括 spring.jar 和 sturts2-spring-plugin-2.08.jar 仓U建 Spring 配置文件 applicationContext.xml 在 Web.xml中添加Spring监听 2.4 领域模型层设计 2.4.1 持久层设计 持久层是通过Hibernate实现的, 采用DAO模式进行的开发设计。 在设 计过程中,我们所有的实现类都继承了 HibernateDao

15、Support,通过Hibernate 提供的HQL语言执行数据操作,避免了手写大量SQL语句繁琐、易错的弊端。 具体的实现过程可以分为以下几步。 ( 编写接口 (2) 编写实现类 (3) 在 applicationContext.xml 中配置 DAO。 2.4.2 业务层设计 业务层是- 个典型的 Web应用程序中是作为中间组件而存在的 2.4.3 表示层设计 管理员登录模块设计 后台管理员登录是后台系统管理的入口,只有成功登录系统后才可 以进行信息管理。 欢迎下载 10 码 in 1 7n 首先管理员进入登录界面。 输入用户名、 密码以及图形校检码并单 击“确定”按钮,如果信息无误则进入

16、后台管理系统这页面 ;如果输入信 息有误,系统将给出提示信息。 欢迎下载 11 创建投票模块 该模块主要用于系统中添加一个新的投票,包括投票主题,投票类 型、投票是否发布、投票选项内容。 输入披覃选攻内咎: 输入投票的主题、 子选项个数、 选择投票类型以及是否马上开放并单 击“下一步”按钮。如过输入有误,系统给出提示信息。 创建投票选项的代码。确定并单击“下一步”,创建投票流程结束 查看投票信息模块 该模块用来显示目前系统中已经存在的所有投票信息内容。当管理 员单击系统主页面的管理投票链接后,系统显示所有的投票信息。显示 所有的投票信息代码。 投卑理号 尖昙r臥 创st阖阖 按具奕丹 7? 2

17、011-12-07 19tST:19 册 单请 InagB 2011-12-09 ZQtll 12J 开放 kc 1 lo 20L1-12-J9 汕皿駅 123 开戒| 8 wh姑l are you doing 1 1? 23 1E3 单说 修改投票信息模块 该模块用来修改系统已存在的投票相关信息。为了确保信息的公正 性,当某个投票信息被更新时,该投票对应投票记录,包括投票票数以 及投票人信息都被清空。当单击投票编号对应的编辑链接,进入修改投 票信息界面。 欢迎下载 12 单击新增加一个投票选项,可以为当前投票增加子选项。增加投票 选项的代码。 观察发现,在员原选项下面增加了一个新的选项。单击

18、投票选项后 面的“删除”链接,可以删除对应的选票选项。 查找信息模块 该模块允许管理员根据投票主题查找对应的投票信息。当单击后台 主页查找投票链接后,进入查找投票界面。输入查询的内容并单击“确 定”按钮,系统显示符合条件的投票信息。 修改密码模块 通过该模块可以修改登录管理员的登录密码。单击修改密码连接进 入修改界面。输入提示信息并单击“确认”按钮即可修改密码,如果旧 密码不正确或者两次输入的新密码不一致, 系统会给出错误的提示信息 创建新管理员模块 通过该模块可以创建一个新的管理员。单击创建新管理员链接,进 入创建管理员的界面。输入相关的信息并单击“确定”按钮可以创建一 个新的管理员,如果输

19、入有误或者所输入用户名已经不存在,系统给出 错误的提示信息。 投票模块 该模块负责显示投票信息给用户并处理投票过程。当投票人进入投 票页面。选择并单机:下一步“按钮,系统显示投票结果界面。 冃屮1 有 1 .A茅加了 授黒 wlial ara you de ing 1 .尊 I l0ft nt eh inp. 0 I 欢迎下载 13 三、结论和体会 3.1 结论 随着网络应用的日益普及,投票的形式也发生了很大的变化。目前在很多的 场合,投票已经开始由原始方式转变为网上投票。 由于具有方便、快捷、成本低、 调查范围广等优点,网上投票已经被广泛的应用。如何管理好网上投票信息内容 也变得十分的重要,

20、我们所设计开发的投票管理系统,正是基于这种需求诞生的。 本投票管理系统分为用户提供网上投票和投票信息管理两大类功能。 通过投 票管理功能可以完成增加新投票、修改原有投票信息、查找投票等功能。本系统 的界面友好、操作简便,适用于任何网站进行投票调查。 3.2 体会 这次数据库课程设计给我的最大的印象就是如果自己有了兴趣,就动手去 做,困难在你的勇气和毅力下是抬不了头的。 从做这个课程设计开始无论遇到什 么困难,我都没有一丝的放弃的念头。出于对知识的渴望,出于对新技术的好奇, 出于对一切未知的求知。我完成了这次课程设计,不过这只是我学习路上的驿站, 我会继续学习它,包括jave公司的j2ee我也很

21、想试试,语言本来就是相通的, just doit!语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外 人道的事情,主要是了解学习思想。古语说的好:学无止境啊! 我很庆幸我参加了这次课程设计,让我确实打开了眼界。 四、附录 附录A其它图表 檢M号 我据T題 卡ft时间 创ft 7 21 w i a Ei 2011-12-U7 19:S7:19 123 开敢 1单选1 6 1;1右上 14;辜 123 开驗 琳養 了 h.c “住 201L-lZ-fl9 123 幵敢 1单進 a j doing 2011 1Z-09 21:26:55 1Z3 幵放 单选 欢迎下载 14 附录 B 主要程

22、序代码 创建用户 package sunyan g.vote.acti on. adm in; import java.text.SimpleDateFormat; import java.util.Cale ndar; import java.util.Date; import sunyan g.vote.actio n.rootactio n.Admi nRoot; import sunyan g.vote.doma in. Adm in; SuppressWar nin gs(serial) public class Createadmin exte nds Admi nRoot pri

23、vate static final Stri ng CREATEADMINERROR createAdmi nError; Override znJ.匕n氏 欢迎下载 15 public String execute() throws Exception 通过用户名查找管理员信息 Admin a = admi nService.fi ndAdmi nByName( name); 如果不为空,说明已经存在 if (a != n ull) addActio nError(getText(admi nexist); return CREATEADMINERROR; else Date date =

24、Cale ndar.getl nsta nce().getTime(); SimpleDateFormat formatter = new SimpleDateFormat( yyyy-MM-dd HH:mm:ss); Stri ng dateStri ng = formatter.format(date); Admin admin = new Admi n(); adm in. setName( name); admi n.setPassword( newpwd1); adm in. setLog in time(dateStri ng); admi nService.addAdmi n(a

25、dmi n); return SUCCESS; 登录界面 package sunyan g.vote.acti on. adm in; import java.text.SimpleDateFormat; import java.util.Cale ndar; import java.util.Date; import javax.servlet.http.HttpSessio n; import org.apache.struts2.ServletActio nCon text; import sunyan g.vote.actio n.rootactio n.Admi nRoot; imp

26、ort sunyan g.vote.doma in. Adm in; import sunyan g.vote.doma in.Count; SuppressWar nin gs(serial) public class Log in exte nds Adm in Root Override public String execute() throws Exception HttpSessi on sessi on ServletActio nCon text.getRequest().getSessio n(); if(sessi on. getAttribute(ra nd)=nu ll

27、) return ERROR; 欢迎下载 16 获得图形校验码 String sf = (Stri ng) sessi on. getAttribute(ra nd); 如果图形校验码正确,判断帐号、密码是否正确 if (sf.equals(safecode) Admin admin = admi nService.fi ndAdmi n(n ame, password); if (adm in = n ull) addActio nError(getText(logi nerror); return ERROR; else /将admin信息存入session session.setAttr

28、ibute(admin, admin); Count count2 = new Coun t(); /设置单选投票个数 coun t2.setSi ngleCo un t(voteService.fi nd6teCo un tByType( new In teger(1); /设置多选投票个数 coun t2.setMultiCou nt(voteService.fi ndVoteCo un tByType( new In teger(0); /设置所有投票个数 cou nt2.setAIICou nt(voteService.fi ndVoteCou nt(); sessi on. setA

29、ttribute(co un t2, coun t2); /获得当前系统时间并格式化,存入管理员登录时间 Date date = Cale ndar.getl nsta nce().getTime(); SimpleDateFormat formatter = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); Stri ng dateStri ng = formatter.format(date); adm in. setLogi ntime(dateStri ng); 更新管理员登录时间信息 admi nService.updatelogi ntime(a

30、dmi n); return SUCCESS; else addActio nError(getText(codeerror); return ERROR; 退出登录 package sunyan g.vote.actio n.admi n; import javax.servlet.http.HttpSessio n; 欢迎下载 17 import org.apache.struts2.ServletActio nCon text; import com.ope nsymph on y.xwork2.Actio nSupport; SuppressWar nin gs(serial) pub

31、lic class Logout exte nds Action Support Override public String execute。throws Exception HttpSessi on sessi on ServletActio nCon text.getRequest().getSessio n(); sessi on .i nv alidate(); return SUCCESS; 投票根目录 package sunyan g.vote.acti on .rootact ion; import java.util.List; import java.util.Map; i

32、mport sunyan g.vote.service.VoteC on textService; import sunyan g.vote.service.VoteService; import sunyan g.vote.doma in .*; import com.ope nsymph on y.xwork2.Actio nSupport; SuppressWar nin gs(serial) public class bteCo ntextRoot exte nds Action Support /* * param con text * 子选项内容,数组类型 * param vote

33、Id * 投票编号 * param list * param list2 * 封装投票结果信息 * param votec on textId * 投票子选项编号 * param type * 投票类型 * param publish 欢迎下载 18 * 是否发布 * param map * 封装投票选项编号及内容 */ protected V)teC on textService voteC on textService; protected V)teService voteService; protected Strin g con text; protected In teger vot

34、eId; protected List Iist2; protected In teger votec on textId; protected In teger type; protected In teger publish; protected Map map; public In teger getPublish() retur n publish; public void setPublish(I nteger publish) this.publish = publish; public In teger getType() return type; public void setType(I nteger type) this.type

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论