《在线投票系统项目案例》由会员分享,可在线阅读,更多相关《在线投票系统项目案例(47页珍藏版)》请在金锄头文库上搜索。
1、第十章第十章项目案例:在线投票系统训练的技能点训练的技能点n能够分析系统功能能够分析系统功能n能够设计数据库能够设计数据库n会使用会使用Struts 2框架开发程序功能框架开发程序功能n会使用会使用Hibernate框架开发程序功能框架开发程序功能n会使用会使用Filtern会使用三层架构组织程序代码会使用三层架构组织程序代码任务描述任务描述n系统概述系统概述n开发在线投票系统,实现如下功能:n用户注册和登录n发布新投票n投票n查看投票结果n维护投票n投票查询问题分析问题分析1:整体开发思路:整体开发思路n系统开发步骤系统开发步骤n明确需求n设计数据库n设计技术框架nStruts 2 + Hi
2、bernaten项目开发准备n编码顺序1、用户注册和登录2、发布新投票3、投票4、查看投票结果5、维护投票6、投票查询n测试问题分析问题分析2:界面交互设计:界面交互设计n界面交互设计的原则界面交互设计的原则n统一性原则n界面风格统一:用相同方式展现相同类型的数据n交互风格统一:用相同方式完成相同类型的操作n美观性原则n界面美观大方n易用性原则n操作方式自然、易理解问题分析问题分析3:技术框架设计:技术框架设计n技术框架中需要考虑的问题技术框架中需要考虑的问题n如何分层,每层的职责n采用哪些技术n如何处理异常、管理事务、记录日志等n命名规范n教员补充内容难点分析难点分析1:数据库设计:数据库设
3、计2-1字段名字段名说说 明明投票内容投票内容投票的具体内容投票的具体内容投票类型投票类型投票为单选还是多选投票为单选还是多选n每一个投票应该有多个选项,所以投票选项与投每一个投票应该有多个选项,所以投票选项与投票内容应为多对一关系,票内容应为多对一关系,字段名字段名说说 明明投票选项投票选项选项的具体内容选项的具体内容投票内容投票内容记录投票内容记录投票内容显示顺序显示顺序页面显示时,该选项的位置,由系统按照添加顺序自页面显示时,该选项的位置,由系统按照添加顺序自动设置动设置难点分析难点分析1:数据库设计:数据库设计2-2字段名字段名说说 明明投票选项投票选项记录用户选择了那个选项记录用户选
4、择了那个选项投票内容投票内容记录用户参与了那个投票记录用户参与了那个投票用户用户记录那个用户参与投票记录那个用户参与投票n投票结果应记录投票选项、投票内容以及用户投票结果应记录投票选项、投票内容以及用户n用户须登录才能使用系统用户须登录才能使用系统,系统应保存用户信息系统应保存用户信息字段名字段名说说 明明用户用户IDID用户在系统中的唯一标识,不能有重复值,用户在系统中的唯一标识,不能有重复值,用户登录系统所使用的账号用户登录系统所使用的账号用户名用户名用户姓名用户姓名密码密码用户登录系统所使用的密码用户登录系统所使用的密码难点分析难点分析2:理解业务:理解业务3-1n发布新投票发布新投票n
5、填写投票信息n增加选项n新增选项可删除,默认选项不可删除 n发布新投票n在Action类中使用字符串数组接收投票选项 难点分析难点分析2:理解业务:理解业务3-2n投票投票n选择想要参与的投票,页面跳转至投票页面 n根据发布时设定的投票类型,在页面判断是单选还是多选,选择使用radio还是checkbox显示投票选项 难点分析难点分析2:理解业务:理解业务3-3n查看投票结果查看投票结果 n在投票列表中点击投票内容超链接或在投票成功后选择查看投票结果,将跳转到查看投票结果页面n通过计算每个选项所得票数占总投票数的百分比设置页面中显示宽度,以直观显示投票结果项目准备项目准备1:数据库设计与实现:
6、数据库设计与实现2-1字段名字段名说说 明明vu_user_id用户用户ID自动编号自动编号,从,从1开始,主键开始,主键vu_user_name用户名用户名必填必填vu_password密码密码必填必填n用户信息表用户信息表vote_usern投票内容表投票内容表vote_subject字段名字段名说说 明明vs_id编号编号自动编号自动编号,从,从1开始,主键开始,主键vs_title投票内容投票内容必填必填vs_type投票类型投票类型必填。必填。1-单选;单选;2-多选;默认为多选;默认为1项目准备项目准备1:数据库设计与实现:数据库设计与实现2-2字段名字段名说说 明明vo_id编号
7、编号自动编号(标识列),从自动编号(标识列),从1 1开始,主键开始,主键vo_option投票选项投票选项必填必填vs_id投票内容投票内容IDvo_order显示顺序显示顺序n投票选项表投票选项表vote_optionn投票取值表投票取值表vote_item 字段名字段名说说 明明vi_idvi_id编号编号自动编号(标识列),从自动编号(标识列),从1 1开始,主键开始,主键vo_idvo_id投票选项投票选项IDID必填必填vs_idvs_id投票内容投票内容IDIDvu_user_idvu_user_id用户用户IDID完成时间:完成时间:20分钟分钟项目准备项目准备2:搭建系统框架
8、:搭建系统框架n采用熟悉的采用熟悉的Hibernate+Struts 2框架实现系统框架实现系统n创建Web工程及相关包 n为工程添加Struts 2的支持,修改web.xml,增加Struts 2的Filter,创建Struts 2配置文件 n为工程添加Hibernate 支持,创建并配置Hibernate配置文件,创建实体类及实体映射文件 n创建DAO接口 n创建DAO接口的Hibernate实现类 n创建业务接口及实现类 n使用Filter管理事务 完成时间:完成时间:10分钟分钟完成时间:完成时间:20分钟分钟完成时间:完成时间:10分钟分钟完成时间:完成时间:10分钟分钟开发计划开发
9、计划n用例用例1:注册与登录:注册与登录 40分钟分钟n用例用例2:发布投票:发布投票 30分钟分钟n用例用例3:完成投票:完成投票 30分钟分钟n用例用例4:查看投票结果:查看投票结果 30分钟分钟n用例用例5:投票维护:投票维护 40分钟分钟n用例用例6:投票查询:投票查询 25分钟分钟用例用例1:注册与登录:注册与登录5-1 n需求说明需求说明n系统要求用户必须登录,才能使用系统。若不是注册用户则要注册后才可以登录使用投票系统 注册成功注册成功注册失败注册失败用例用例1:注册与登录:注册与登录5-2 n需求说明需求说明n系统要求用户必须登录,才能使用系统。若不是注册用户则要注册后才可以登
10、录使用投票系统 登录成功登录成功登录失败登录失败用例用例1:注册与登录:注册与登录5-3 n思路分析思路分析n制作登录和注册页面 n编写Action实现登录、注册 n创建BaseAction n创建LoginAction实现用户登录 n创建RegisterAction实现用户注册 n创建SubjectAction用于投票内容的所有操作,新建list方法获取所有投票信息n修改Struts 2配置文件,增加Action的配置 n配置LoginActionn配置RegisterActionn配置SubjectActionn制作登录成功页面,显示投票列表 完成时间:完成时间:40分钟分钟用例用例1:注
11、册与登录:注册与登录5-4n功能测试功能测试n检查点1(15分钟)n注册功能n检查点2 (15分钟)n登录功能n检查点3(10分钟)n显示所有投票信息n互相测试完成的程序功能互相测试完成的程序功能n测试出的缺陷记录在测试出的缺陷记录在“常见问题列表中常见问题列表中”n修正缺陷后返测通过,才认为用例开发完成修正缺陷后返测通过,才认为用例开发完成单元测试单元测试用例用例1:注册与登录:注册与登录5-5 n参考代码或结果演示参考代码或结果演示public class SubjectAction extends BaseAction private VoteService service;/业务类业务
12、类private List subjects;/投票内容列表投票内容列表/每个投票内容有多少人参与投票每个投票内容有多少人参与投票private Map votes = new HashMap(); /.省略省略setter&getter方法方法public String list() subjects = getService().getAllSubjects();List subjectVotes = (List) getService().getUserCountPerSubject(null);for (Object subjectVote : subjectVotes) votes.
13、put(Long) subjectVote0, (Long) subjectVote1);return success;共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解用例用例2:发布投票:发布投票3-1 n需求说明需求说明n用户登录后可以添加新投票 增加选项增加选项发布成功发布成功用例用例2:发布投票:发布投票3-2 n思路分析思路分析n制作发布投票的页面n编写Action实现新投票发布n在SubjectAction中,新建save方法用于发布新投票n在SubjectAction中使用字符数组保存投票选项
14、完成时间:完成时间:30分钟分钟用例用例2:发布投票:发布投票3-3 n功能测试功能测试n检查点1(15分钟)n制作发布投票的页面n检查点2 (15分钟)n编写Action实现新投票发布n互相测试完成的程序功能互相测试完成的程序功能n测试出的缺陷记录在测试出的缺陷记录在“常见问题列表中常见问题列表中”n修正缺陷后返测通过,才认为用例开发完成修正缺陷后返测通过,才认为用例开发完成单元测试单元测试共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解用例用例3:完成投票:完成投票3-1 n需求说明需求说明n在投票列表
15、页面,点击“我要参与” 链接,进入投票页面n选择选项点击投票按钮,完成投票,投票成功,页面跳转至投票成功页面 投票成功投票成功用例用例3:完成投票:完成投票3-2 n思路分析思路分析n制作投票和投票成功页面n投票页面要判断投票的类型是单选还是多选,选择使用radio还是checkbox显示投票选项 n编写Action实现投票 n创建VoteAction有关投票的所有操作n新建save方法实现投票功能完成时间:完成时间:30分钟分钟用例用例3:完成投票:完成投票3-3 n功能测试功能测试n检查点1(15分钟)n制作投票和投票成功页面n检查点2 (15分钟)n编写Action实现投票n互相测试完成
16、的程序功能互相测试完成的程序功能n测试出的缺陷记录在测试出的缺陷记录在“常见问题列表中常见问题列表中”n修正缺陷后返测通过,才认为用例开发完成修正缺陷后返测通过,才认为用例开发完成单元测试单元测试共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解用例用例4:查看投票结果:查看投票结果4-1 n需求说明需求说明n在投票列表页面点击投票内容标题超链接或在投票成功后点击“返回查看投票结果”超链接,查看投票结果 用例用例4:查看投票结果:查看投票结果4-2 n思路分析思路分析n编写Action实现查看投票结果 n在V
17、oteAction新建view方法实现查看投票结果 n创建投票结果页面,显示投票结果n设置页面中显示宽度,以达到直观效果显示投票结果完成时间:完成时间:30分钟分钟div class=percent style=width:% 用例用例4:查看投票结果:查看投票结果4-3 n代码检查代码检查n检查点1(20分钟)n编写Action实现查看投票结果n检查点2 (10分钟)n显示投票结果n互相测试完成的程序功能互相测试完成的程序功能n测试出的缺陷记录在测试出的缺陷记录在“常见问题列表中常见问题列表中”n修正缺陷后返测通过,才认为用例开发完成修正缺陷后返测通过,才认为用例开发完成单元测试单元测试用例
18、用例4:查看投票结果:查看投票结果4-4 n参考代码或结果演示参考代码或结果演示public class VoteAction extends BaseAction private VoteService service;/业务类业务类 private Long userCountOfThisSubject/投票人数投票人数 private Subject subject;/投票内容投票内容 private Long options; /每个选项票数每个选项票数 private Map stat=new HashMap(); /每个选项百分比每个选项百分比 private Map statPe
19、rcent = new HashMap(); public String view() statUserCountOfThisSubject();/获得投票人数获得投票人数 initStatResultToZeroForView();/初始化数据初始化数据 /计算每个选项票数占总票数百分比计算每个选项票数占总票数百分比 statVoteCountAndCalcPercentPerOption(); return viewSuccess; 共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解用例用例5:投票维护:
20、投票维护3-1 n需求说明需求说明n在投票列表页面点击“维护”超链接,进入管理页面 n在管理页面中,选择要维护的投票内容,点击“维护”超链接,修改投票内容由管理界面由管理界面进入维护页面进入维护页面用例用例5:投票维护:投票维护3-2 n思路分析思路分析n制作管理页面和维护页面n编写Action实现投票维护n在SubjectAction中新建modifyList方法,实现显示维护投票列表n在SubjectAction中新建read方法,实现显示投票信息n修改SubjectAction中modify方法,实现更新投票信息完成时间:完成时间:40分钟分钟用例用例5:投票维护:投票维护3-3 n功能
21、测试功能测试n检查点1(15分钟)n显示管理页面n检查点2 (25分钟)n进行投票维护n互相测试完成的程序功能互相测试完成的程序功能n测试出的缺陷记录在测试出的缺陷记录在“常见问题列表中常见问题列表中”n修正缺陷后返测通过,才认为用例开发完成修正缺陷后返测通过,才认为用例开发完成单元测试单元测试共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解用例用例6:投票查询:投票查询4-1 n需求说明需求说明n在投票列表页面输入查询关键字,点击查询按钮,即可获得查询结果 用例用例6:投票查询:投票查询4-2 n思路分析
22、思路分析n编写Action实现查询投票 n在SubjectAction中新建search方法,实现投票查询n使用投票列表页面显示查询到的结果 完成时间:完成时间:25分钟分钟用例用例6:投票查询:投票查询4-3 n功能测试功能测试n实现投票查询功能n互相测试完成的程序功能互相测试完成的程序功能n测试出的缺陷记录在测试出的缺陷记录在“常见问题列表中常见问题列表中”n修正缺陷后返测通过,才认为用例开发完成修正缺陷后返测通过,才认为用例开发完成单元测试单元测试用例用例6:投票查询:投票查询4-4 n参考代码或结果演示参考代码或结果演示public class SubjectAction extend
23、s BaseAction private String keywords;/每个投票内容有多少人参与投票每个投票内容有多少人参与投票private Map votes = new HashMap();public String search() if (keywords != null & !.equals(keywords) subjects=getService().getSubjectsByTitle(keywords); else subjects = getService().getAllSubjects();List subjectVotes=(List)getService().
24、getUserCountPerSubject(null);for (Object subjectVote : subjectVotes) votes.put(Long)subjectVote0,(Long)subjectVote1);return success;共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解集成测试集成测试完成时间:完成时间:25分钟分钟n系统集成后,重新测试系统所有程序功能系统集成后,重新测试系统所有程序功能n测试出的缺陷记录在测试出的缺陷记录在“常见问题列表中常见问题列表中”n修正缺
25、陷后返测,并更新修正缺陷后返测,并更新“常见问题列表中常见问题列表中”集成测试集成测试项目总结项目总结n讲解要点:讲解要点: 完成情况、技能总结、经验分享、项目收获完成情况、技能总结、经验分享、项目收获n表达要求:表达要求: 清晰流畅、有条理、重点突出清晰流畅、有条理、重点突出项目展示项目展示技能总结技能总结n分析系统功能分析系统功能n设计数据库设计数据库n使用使用Struts 2+Hibernate框架开发程序功能框架开发程序功能n使用使用Filter管理事务管理事务n使用三层架构组织程序代码使用三层架构组织程序代码n 项目流程项目流程n需求设计开发测试部署用户培训n设计:数据库设计、技术框架设计、交互设计作业作业n课后作业课后作业n必做n编写蓝点在线投票系统项目总结,不少于1000字n选做n教员备课时在此添加内容n提交时间:xxxn提交形式:xxxn预习作业预习作业n教员备课时在此添加内容