新版专业课程设计方案报告.doc
《新版专业课程设计方案报告.doc》由会员分享,可在线阅读,更多相关《新版专业课程设计方案报告.doc(27页珍藏版)》请在咨信网上搜索。
《JavaEE》课程设计报告 题目名称:基于struts2、Spring、Hibernate 构建一种网上投票系统 成绩:______ 目录 基于struts2、Spring、Hibernate构建一种网上投票系统 3 一、问题描述及设计思路 3 1.1 需求分析 3 1.2业务分析 3 1.3投票用例 5 二、详细设计过程 8 2.1 创立Struts2应用 8 2.2 添加Hibernate 8 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 需求分析 随着网络应用日益普及,投票形式也发生了很大变化。当前在诸多场合,投票已经开始由原始方式转变为网上投票。由于具备以便、快捷、成本低、调查范畴广等长处,网上投票已经被广泛应用。如何管理好网上投票信息内容也变得十分重要,咱们所设计开发投票管理系统,正是基于这种需求诞生。 本投票管理系统分为顾客提供网上投票和投票信息管理两大类功能。通过投票管理功能可以完毕增长新投票、修改原有投票信息、查找投票等功能。本系统界面和谐、操作简便,合用于任何网站进行投票调查。 本系统基本功能如下所述。 l 使用本系统网上投票功能,顾客只要登录指定网页,就可以进行投票操作,并可以得到投票成果信息。 l 使用本网站登录功能,管理员可以登录系统,然后对有关信息进行管理。 l 使用本系统创立投票功能,管理员可以创立一种新投票功能。。 l 使用本系统管理投票功能,管理员可以对系统已经存在投票进行更新,涉及增长投票子选项、删除投票子选项、修改投票类型、更改投票状态。 l 使用本系统查找投票功能,管理员可以通过输入某些或者所有投票主题查找相应投票信息。 l 使用本系统管理员管理功能,管理员可以修改本人密码或者创立一种新管理员。 l 使用本系统注销功能,管理员可以安全退出本系统。 1.2业务分析 投票管理系统由前台和后台两某些构成:前台显示投票并可以执行投票操作,后台是对投票信息和管理员信息进行管理。下面分别从使用前台和使用后台两个角度来分析本系统业务流程。 1.2.1 显示投票 顾客进入投票页面如图,进行投票操作。 1.2.2管理投票 1.2.2.1后台登录页面 只有管理员可以进入后台对有关信息进行维护,管理员在维护信息之前必要先登录系统。 1.2.2.2 后台主页面 当成功登录系统后进入后台主页面,在后台主页面左侧显示欢迎信息和系统当前所有投票数量信息。同步该页面提供了有关操作链接,单击相应链接即可进行相应操作。各链接详细实现业务如下。 l 管理投票链接:当管理员单击“投票管理”文字或者图标链接后,进入管理投票页面,可以对系统已有投票信息进行维护。 l 创立投票链接当管理员单击“创立投票”文字或者图标链接后,进入创立投票页面,可以增长新投票选项。 l 查找投票链接:当管理员单击“查找投票”文字或者图标后,进入查找投票页面,可以依照所输入投票主题信息(可以是完整,也可以是核心字)在系统已有投票中进行查找。 l 管理员管理连接:当管理员单击“管理员管理”链接后,进入管理员管理页面,可以修改当前管理员密码,增长新管理员。 l 投票主页链接:当管理员单击“投票主页”链接后,可以跳转到后台主页面。 l 注销链接:当管理员单击“注销后“链接后,可以安全退出系统。 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持久类时候,一定要遵循如下所述规范。 l 持久化类符合Javabean规范,包括某些成员变量,以及与之相应getter、setter办法 l 持久化类有一种ID属性,用来唯一标示Customer类每一种对象。在面向对象术语中,这个ID属性被称为对象标记符(OID,Object Identifier),普通它都用整数表达。 l 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我也很想试试,语言本来就是相通,just do it!语言并不重要毕竟它仅仅是工具,用好一种工具并不是一件值得为外人道事情,重要是理解学习思想。古语说好:学无止境啊! 我很庆幸我参加了这次课程设计,让我的确打开了眼界。 四、附录 附录 A 其他图表 附录 B 重要程序代码 创立顾客 package sunyang.vote.action.admin; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import sunyang.vote.action.rootaction.AdminRoot; import sunyang.vote.domain.Admin; @SuppressWarnings("serial") public class Createadmin extends AdminRoot { private static final String CREATEADMINERROR = "createAdminError"; @Override public String execute() throws Exception { //通过顾客名查找管理员信息 Admin a = adminService.findAdminByName(name); //如果不为空,阐明已经存在 if (a != null) { addActionError(getText("adminexist")); return CREATEADMINERROR; } else { Date date = Calendar.getInstance().getTime(); SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); String dateString = formatter.format(date); Admin admin = new Admin(); admin.setName(name); admin.setPassword(newpwd1); admin.setLogintime(dateString); adminService.addAdmin(admin); return SUCCESS; } } 登录界面 package sunyang.vote.action.admin; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import sunyang.vote.action.rootaction.AdminRoot; import sunyang.vote.domain.Admin; import sunyang.vote.domain.Count; @SuppressWarnings("serial") public class Login extends AdminRoot { @Override public String execute() throws Exception { HttpSession session = ServletActionContext.getRequest().getSession(); if(session.getAttribute("rand")==null){ return ERROR; } //获得图形校验码 String sf = (String) session.getAttribute("rand"); //如果图形校验码对的,判断帐号、密码与否对的 if (sf.equals(safecode)) { Admin admin = adminService.findAdmin(name,password); if (admin == null) { addActionError(getText("loginerror")); return ERROR; } else { //将admin信息存入session session.setAttribute("admin",admin); Count count2 = new Count(); //设立单选投票个数 count2.setSingleCount(voteService.findVoteCountByType(new Integer(1))); //设立多选投票个数 count2.setMultiCount(voteService.findVoteCountByType(new Integer(0))); //设立所有投票个数 count2.setAllCount(voteService.findVoteCount()); session.setAttribute("count2",count2); //获得当前系统时间并格式化,存入管理员登录时间 Date date = Calendar.getInstance().getTime(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = formatter.format(date); admin.setLogintime(dateString); //更新管理员登录时间信息 adminService.updatelogintime(admin); return SUCCESS; } } else { addActionError(getText("codeerror")); return ERROR; } } } 退出登录 package sunyang.vote.action.admin; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") public class Logout extends ActionSupport { @Override public String execute() throws Exception { HttpSession session = ServletActionContext.getRequest().getSession(); session.invalidate(); return SUCCESS; } } 投票根目录 package sunyang.vote.action.rootaction; import java.util.List; import java.util.Map; import sunyang.vote.service.VoteContextService; import sunyang.vote.service.VoteService; import sunyang.vote.domain.*; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") public class VoteContextRoot extends ActionSupport { /** * @param context * 子选项内容,数组类型 * @param voteId * 投票编号 * @param list * @param list2 * 封装投票成果信息 * @param votecontextId * 投票子选项编号 * @param type * 投票类型 * @param publish * 与否发布 * @param map * 封装投票选项编号及内容 */ protected VoteContextService voteContextService; protected VoteService voteService; protected String[] context; protected Integer voteId; protected List<VotingInfo> list2; protected Integer votecontextId; protected Integer type; protected Integer publish; protected Map map; public Integer getPublish() { return publish; } public void setPublish(Integer publish) { this.publish = publish; } public Integer getType() { return type; } public void setType(Integer type) { this.type = type; } public Integer getVotecontextId() { return votecontextId; } public void setVotecontextId(Integer votecontextId) { this.votecontextId = votecontextId; } public Integer getVoteId() { return voteId; } public void setVoteId(Integer voteId) { this.voteId = voteId; } public String[] getContext() { return context; } public void setContext(String[] context) { this.context = context; } public VoteContextService getVoteContextService() { return voteContextService; } public void setVoteContextService(VoteContextService voteContextService) { this.voteContextService = voteContextService; } public VoteService getVoteService() { return voteService; } public void setVoteService(VoteService voteService) { this.voteService = voteService; } public Map getMap() { return map; } public void setMap(Map map) { this.map = map; } public List<VotingInfo> getList2() { return list2; } public void setList2(List<VotingInfo> list2) { this.list2 = list2; } } 五、参照文献 [1].张桂珠 刘丽 陈爱国 Java面向对象程序设计(第2版)北京邮电大学出版社 [2]毕广吉.Java程序设计实例教程[M]. 北京:冶金工业出版社, [3].王保罗.Java面向对象程序设计[M]. 北京:清华大学出版社, [4].高林,周海燕.Jsp网上书店系统与案例分析[M]. 北京:人民邮电出版社, [5].刘腾红,孙细明.信息系统分析与设计[M]. 北京:科学出版社,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新版 专业课程 设计方案 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文