在线投票系统项目案例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
共性问题集中讲解
共性问题集中讲解
常见调试问题及解决办法 代码规范问题
用例5:投票维护3-1
需求说明
在投票列表页面点击“维护”超链接,进入管理页面 在管理页面中,选择要维护的投票内容,点击“维护
”超链接,修改投票内容
由管理界面 进入维护页面
用例5:投票维护3-2
思路分析
制作管理页面和维护页面 编写Action实现投票维护
配置LoginAction
配置RegisterAction
配置SubjectAction
制作登录成功页面,显示投票列表
用例1:注册与登录5-4
功能测试
检查点1(15分钟) 注册功能
检查点2 (15分钟) 登录功能
检查点3(10分钟) 显示所有投票信息
单元测试
互相测试完成的程序功能 测试出的缺陷记录在“常见问题列表中” 修正缺陷后返测通过,才认为用例开发完成
完成时间:30分钟
用例2:发布投票3-3
功能测试
检查点1(15分钟)
制作发布投票的页面
检查点2 (15分钟)
编写Action实现新投票发布
单元测试
互相测试完成的程序功能 测试出的缺陷记录在“常见问题列表中” 修正缺陷后返测通过,才认为用例开发完成
共性问题集中讲解
共性问题集中讲解
常见调试问题及解决办法 代码规范问题
难点分析1:数据库设计2-1
每一个投票应该有多个选项,所以投票选项与投 票内容应为多对一关系,
字段名 投票内容 投票类型
说明 投票的具体内容 投票为单选还是多选
字段名 投票选项 投票内容
显示顺序
说明
选项的具体内容 记录投票内容 页面显示时,该选项的位置,由系统按照添加顺序自 动设置
难点分析1:数据库设计2-2
Hale Waihona Puke Baidu
用例1:注册与登录5-5
参考代码或结果演示
public class SubjectAction extends BaseAction { private VoteService service;//业务类 private List subjects;//投票内容列表 //每个投票内容有多少人参与投票 private Map<Long, Long> votes = new HashMap<Long, Long>(); //...省略setter&getter方法 public String list() { subjects = getService().getAllSubjects(); List<Object[ ]> subjectVotes = (List<Object[ ]>) getService() .getUserCountPerSubject(null); for (Object[ ] subjectVote : subjectVotes) { votes.put((Long) subjectVote[0], (Long) subjectVote[1]); } return "success"; }
用例3:完成投票3-1
需求说明
在投票列表页面,点击“我要参与” 链接,进入投票 页面
选择选项点击投票按钮,完成投票,投票成功,页面 跳转至投票成功页面
投票成功
用例3:完成投票3-2
思路分析
制作投票和投票成功页面
投票页面要判断投票的类型是单选还是多选,选择使用radio 还是checkbox显示投票选项
检查点1(20分钟)
编写Action实现查看投票结果
检查点2 (10分钟)
显示投票结果
单元测试
互相测试完成的程序功能 测试出的缺陷记录在“常见问题列表中” 修正缺陷后返测通过,才认为用例开发完成
用例4:查看投票结果4-4
参考代码或结果演示
public class VoteAction extends BaseAction { private VoteService service;//业务类 private Long userCountOfThisSubject//投票人数 private Subject subject;//投票内容 private Long[ ] options; //每个选项票数 private Map<Long,Long> stat=new HashMap<Long,Long>(); //每个选项百分比 private Map<Long, Long> statPercent = new HashMap<Long, Long>(); public String view() { statUserCountOfThisSubject();//获得投票人数 initStatResultToZeroForView();//初始化数据 //计算每个选项票数占总票数百分比 statVoteCountAndCalcPercentPerOption(); return "viewSuccess"; } …
用例6:投票查询4-2
思路分析
编写Action实现查询投票
在SubjectAction中新建search方法,实现投票查询
难点分析2:理解业务3-1
发布新投票
填写投票信息 增加选项
新增选项可删除,默认选项不可删除
发布新投票
在Action类中使用字符串数组接收投票选项
难点分析2:理解业务3-2
投票
选择想要参与的投票,页面跳转至投票页面 根据发布时设定的投票类型,在页面判断是单选还是
多选,选择使用radio还是checkbox显示投票选项
用户ID 用户名 密码
说明 自动编号,从1开始,主键 必填 必填
投票内容表vote_subject
字段名 vs_id vs_title vs_type
编号 投票内容 投票类型
说明 自动编号,从1开始,主键 必填 必填。1-单选;2-多选;默认为1
项目准备1:数据库设计与实现2-2
投票选项表vote_option
检查点2 (25分钟) 进行投票维护
单元测试
互相测试完成的程序功能 测试出的缺陷记录在“常见问题列表中” 修正缺陷后返测通过,才认为用例开发完成
共性问题集中讲解
共性问题集中讲解
常见调试问题及解决办法 代码规范问题
用例6:投票查询4-1
需求说明
在投票列表页面输入查询关键字,点击查询按钮,即 可获得查询结果
}
共性问题集中讲解
共性问题集中讲解
常见调试问题及解决办法 代码规范问题
用例2:发布投票3-1
需求说明
用户登录后可以添加新投票
用例2:发布投票3-2
思路分析
制作发布投票的页面 编写Action实现新投票发布
在SubjectAction中,新建save方法用于发布新投票 在SubjectAction中使用字符数组保存投票选项
创建投票结果页面,显示投票结果
设置页面中<div>显示宽度,以达到直观效果显示投票结果
<div class="percent" style="width:<s:property value='statPercent[id]'/>%">
</div>
完成时间:30分钟
用例4:查看投票结果4-3
代码检查
用例1:注册与登录5-1
需求说明
系统要求用户必须登录,才能使用系统。若不是注册 用户则要注册后才可以登录使用投票系统
用例1:注册与登录5-2
需求说明
系统要求用户必须登录,才能使用系统。若不是注册 用户则要注册后才可以登录使用投票系统
用例1:注册与登录5-3
思路分析
制作登录和注册页面
第十章
项目案例:在线投票系统
训练的技能点
能够分析系统功能 能够设计数据库 会使用Struts 2框架开发程序功能 会使用Hibernate框架开发程序功能 会使用Filter 会使用三层架构组织程序代码
任务描述
系统概述
开发在线投票系统,实现如下功能:
用户注册和登录 发布新投票 投票 查看投票结果 维护投票 投票查询
难点分析2:理解业务3-3
查看投票结果
在投票列表中点击投票内容超链接或在投票成功后选 择查看投票结果,将跳转到查看投票结果页面
通过计算每个选项所得票数占总投票数的百分比设置 页面中<div>显示宽度,以直观显示投票结果
项目准备1:数据库设计与实现2-1
用户信息表vote_user
字段名 vu_user_id vu_user_name vu_password
编写Action实现投票
创建VoteAction有关投票的所有操作 新建save方法实现投票功能
完成时间:30分钟
用例3:完成投票3-3
功能测试
检查点1(15分钟)
制作投票和投票成功页面
检查点2 (15分钟)
编写Action实现投票
单元测试
互相测试完成的程序功能 测试出的缺陷记录在“常见问题列表中” 修正缺陷后返测通过,才认为用例开发完成
问题分析1:整体开发思路
系统开发步骤
明确需求 设计数据库 设计技术框架
Struts 2 + Hibernate
项目开发准备 编码顺序
1、用户注册和登录 2、发布新投票 3、投票 4、查看投票结果 5、维护投票 6、投票查询
测试
问题分析2:界面交互设计
界面交互设计的原则
统一性原则
共性问题集中讲解
共性问题集中讲解
常见调试问题及解决办法 代码规范问题
用例4:查看投票结果4-1
需求说明
在投票列表页面点击投票内容标题超链接或在投票成 功后点击“返回查看投票结果”超链接,查看投票结 果
用例4:查看投票结果4-2
思路分析
编写Action实现查看投票结果
在VoteAction新建view方法实现查看投票结果
界面风格统一: 用相同方式展现相同类型的数据
交互风格统一: 用相同方式完成相同类型的操作
美观性原则
界面美观大方
易用性原则
操作方式自然、易理解
问题分析3:技术框架设计
技术框架中需要考虑的问题
如何分层,每层的职责 采用哪些技术 如何处理异常、管理事务、记录日志等 命名规范 教员补充内容
字段名 vo_id vo_option vs_id vo_order
编号 投票选项 投票内容ID 显示顺序
说明 自动编号(标识列),从1开始,主键 必填
投票取值表vote_item
完成时间:20分钟
字段名 vi_id vo_id vs_id vu_user_i d
编号 投票选项ID 投票内容ID
说明 自动编号(标识列),从1开始,主键 必填
完成时间:40分钟
编写Action实现登录、注册
创建BaseAction
创建LoginAction实现用户登录
创建RegisterAction实现用户注册
创建SubjectAction用于投票内容的所有操作,新建list方法获 取所有投票信息
修改Struts 2配置文件,增加Action的配置
投票结果应记录投票选项、投票内容以及用户
字段名 投票选项 投票内容 用户
说明 记录用户选择了那个选项 记录用户参与了那个投票 记录那个用户参与投票
用户须登录才能使用系统,系统应保存用户信息
字段名 用户ID 用户名 密码
说明
用户在系统中的唯一标识,不能有重复值, 用户登录系统所使用的账号 用户姓名 用户登录系统所使用的密码
创建DAO接口 创建DAO接口的Hibernate实现类
完成时间:10分钟
创建业务接口及实现类
完成时间:20分钟 完成时间:10分钟
使用Filter管理事务
完成时间:10分钟
开发计划
用例1:注册与登录 [40分钟] 用例2:发布投票 [30分钟] 用例3:完成投票 [30分钟]
用例4:查看投票结果 [30分钟] 用例5:投票维护 [40分钟] 用例6:投票查询 [25分钟]
在SubjectAction中新建modifyList方法,实现显示维护投票列 表
在SubjectAction中新建read方法,实现显示投票信息 修改SubjectAction中modify方法,实现更新投票信息
完成时间:40分钟
用例5:投票维护3-3
功能测试
检查点1(15分钟) 显示管理页面
用户ID
项目准备2:搭建系统框架
采用熟悉的Hibernate+Struts 2框架实现系统
创建Web工程及相关包
为工程添加Struts 2的支持,修改web.xml,增加Struts 2的Filter,创建Struts 2配置文件
为工程添加Hibernate 支持,创建并配置Hibernate配 置文件,创建实体类及实体映射文件
共性问题集中讲解
共性问题集中讲解
常见调试问题及解决办法 代码规范问题
用例5:投票维护3-1
需求说明
在投票列表页面点击“维护”超链接,进入管理页面 在管理页面中,选择要维护的投票内容,点击“维护
”超链接,修改投票内容
由管理界面 进入维护页面
用例5:投票维护3-2
思路分析
制作管理页面和维护页面 编写Action实现投票维护
配置LoginAction
配置RegisterAction
配置SubjectAction
制作登录成功页面,显示投票列表
用例1:注册与登录5-4
功能测试
检查点1(15分钟) 注册功能
检查点2 (15分钟) 登录功能
检查点3(10分钟) 显示所有投票信息
单元测试
互相测试完成的程序功能 测试出的缺陷记录在“常见问题列表中” 修正缺陷后返测通过,才认为用例开发完成
完成时间:30分钟
用例2:发布投票3-3
功能测试
检查点1(15分钟)
制作发布投票的页面
检查点2 (15分钟)
编写Action实现新投票发布
单元测试
互相测试完成的程序功能 测试出的缺陷记录在“常见问题列表中” 修正缺陷后返测通过,才认为用例开发完成
共性问题集中讲解
共性问题集中讲解
常见调试问题及解决办法 代码规范问题
难点分析1:数据库设计2-1
每一个投票应该有多个选项,所以投票选项与投 票内容应为多对一关系,
字段名 投票内容 投票类型
说明 投票的具体内容 投票为单选还是多选
字段名 投票选项 投票内容
显示顺序
说明
选项的具体内容 记录投票内容 页面显示时,该选项的位置,由系统按照添加顺序自 动设置
难点分析1:数据库设计2-2
Hale Waihona Puke Baidu
用例1:注册与登录5-5
参考代码或结果演示
public class SubjectAction extends BaseAction { private VoteService service;//业务类 private List subjects;//投票内容列表 //每个投票内容有多少人参与投票 private Map<Long, Long> votes = new HashMap<Long, Long>(); //...省略setter&getter方法 public String list() { subjects = getService().getAllSubjects(); List<Object[ ]> subjectVotes = (List<Object[ ]>) getService() .getUserCountPerSubject(null); for (Object[ ] subjectVote : subjectVotes) { votes.put((Long) subjectVote[0], (Long) subjectVote[1]); } return "success"; }
用例3:完成投票3-1
需求说明
在投票列表页面,点击“我要参与” 链接,进入投票 页面
选择选项点击投票按钮,完成投票,投票成功,页面 跳转至投票成功页面
投票成功
用例3:完成投票3-2
思路分析
制作投票和投票成功页面
投票页面要判断投票的类型是单选还是多选,选择使用radio 还是checkbox显示投票选项
检查点1(20分钟)
编写Action实现查看投票结果
检查点2 (10分钟)
显示投票结果
单元测试
互相测试完成的程序功能 测试出的缺陷记录在“常见问题列表中” 修正缺陷后返测通过,才认为用例开发完成
用例4:查看投票结果4-4
参考代码或结果演示
public class VoteAction extends BaseAction { private VoteService service;//业务类 private Long userCountOfThisSubject//投票人数 private Subject subject;//投票内容 private Long[ ] options; //每个选项票数 private Map<Long,Long> stat=new HashMap<Long,Long>(); //每个选项百分比 private Map<Long, Long> statPercent = new HashMap<Long, Long>(); public String view() { statUserCountOfThisSubject();//获得投票人数 initStatResultToZeroForView();//初始化数据 //计算每个选项票数占总票数百分比 statVoteCountAndCalcPercentPerOption(); return "viewSuccess"; } …
用例6:投票查询4-2
思路分析
编写Action实现查询投票
在SubjectAction中新建search方法,实现投票查询
难点分析2:理解业务3-1
发布新投票
填写投票信息 增加选项
新增选项可删除,默认选项不可删除
发布新投票
在Action类中使用字符串数组接收投票选项
难点分析2:理解业务3-2
投票
选择想要参与的投票,页面跳转至投票页面 根据发布时设定的投票类型,在页面判断是单选还是
多选,选择使用radio还是checkbox显示投票选项
用户ID 用户名 密码
说明 自动编号,从1开始,主键 必填 必填
投票内容表vote_subject
字段名 vs_id vs_title vs_type
编号 投票内容 投票类型
说明 自动编号,从1开始,主键 必填 必填。1-单选;2-多选;默认为1
项目准备1:数据库设计与实现2-2
投票选项表vote_option
检查点2 (25分钟) 进行投票维护
单元测试
互相测试完成的程序功能 测试出的缺陷记录在“常见问题列表中” 修正缺陷后返测通过,才认为用例开发完成
共性问题集中讲解
共性问题集中讲解
常见调试问题及解决办法 代码规范问题
用例6:投票查询4-1
需求说明
在投票列表页面输入查询关键字,点击查询按钮,即 可获得查询结果
}
共性问题集中讲解
共性问题集中讲解
常见调试问题及解决办法 代码规范问题
用例2:发布投票3-1
需求说明
用户登录后可以添加新投票
用例2:发布投票3-2
思路分析
制作发布投票的页面 编写Action实现新投票发布
在SubjectAction中,新建save方法用于发布新投票 在SubjectAction中使用字符数组保存投票选项
创建投票结果页面,显示投票结果
设置页面中<div>显示宽度,以达到直观效果显示投票结果
<div class="percent" style="width:<s:property value='statPercent[id]'/>%">
</div>
完成时间:30分钟
用例4:查看投票结果4-3
代码检查
用例1:注册与登录5-1
需求说明
系统要求用户必须登录,才能使用系统。若不是注册 用户则要注册后才可以登录使用投票系统
用例1:注册与登录5-2
需求说明
系统要求用户必须登录,才能使用系统。若不是注册 用户则要注册后才可以登录使用投票系统
用例1:注册与登录5-3
思路分析
制作登录和注册页面
第十章
项目案例:在线投票系统
训练的技能点
能够分析系统功能 能够设计数据库 会使用Struts 2框架开发程序功能 会使用Hibernate框架开发程序功能 会使用Filter 会使用三层架构组织程序代码
任务描述
系统概述
开发在线投票系统,实现如下功能:
用户注册和登录 发布新投票 投票 查看投票结果 维护投票 投票查询
难点分析2:理解业务3-3
查看投票结果
在投票列表中点击投票内容超链接或在投票成功后选 择查看投票结果,将跳转到查看投票结果页面
通过计算每个选项所得票数占总投票数的百分比设置 页面中<div>显示宽度,以直观显示投票结果
项目准备1:数据库设计与实现2-1
用户信息表vote_user
字段名 vu_user_id vu_user_name vu_password
编写Action实现投票
创建VoteAction有关投票的所有操作 新建save方法实现投票功能
完成时间:30分钟
用例3:完成投票3-3
功能测试
检查点1(15分钟)
制作投票和投票成功页面
检查点2 (15分钟)
编写Action实现投票
单元测试
互相测试完成的程序功能 测试出的缺陷记录在“常见问题列表中” 修正缺陷后返测通过,才认为用例开发完成
问题分析1:整体开发思路
系统开发步骤
明确需求 设计数据库 设计技术框架
Struts 2 + Hibernate
项目开发准备 编码顺序
1、用户注册和登录 2、发布新投票 3、投票 4、查看投票结果 5、维护投票 6、投票查询
测试
问题分析2:界面交互设计
界面交互设计的原则
统一性原则
共性问题集中讲解
共性问题集中讲解
常见调试问题及解决办法 代码规范问题
用例4:查看投票结果4-1
需求说明
在投票列表页面点击投票内容标题超链接或在投票成 功后点击“返回查看投票结果”超链接,查看投票结 果
用例4:查看投票结果4-2
思路分析
编写Action实现查看投票结果
在VoteAction新建view方法实现查看投票结果
界面风格统一: 用相同方式展现相同类型的数据
交互风格统一: 用相同方式完成相同类型的操作
美观性原则
界面美观大方
易用性原则
操作方式自然、易理解
问题分析3:技术框架设计
技术框架中需要考虑的问题
如何分层,每层的职责 采用哪些技术 如何处理异常、管理事务、记录日志等 命名规范 教员补充内容
字段名 vo_id vo_option vs_id vo_order
编号 投票选项 投票内容ID 显示顺序
说明 自动编号(标识列),从1开始,主键 必填
投票取值表vote_item
完成时间:20分钟
字段名 vi_id vo_id vs_id vu_user_i d
编号 投票选项ID 投票内容ID
说明 自动编号(标识列),从1开始,主键 必填
完成时间:40分钟
编写Action实现登录、注册
创建BaseAction
创建LoginAction实现用户登录
创建RegisterAction实现用户注册
创建SubjectAction用于投票内容的所有操作,新建list方法获 取所有投票信息
修改Struts 2配置文件,增加Action的配置
投票结果应记录投票选项、投票内容以及用户
字段名 投票选项 投票内容 用户
说明 记录用户选择了那个选项 记录用户参与了那个投票 记录那个用户参与投票
用户须登录才能使用系统,系统应保存用户信息
字段名 用户ID 用户名 密码
说明
用户在系统中的唯一标识,不能有重复值, 用户登录系统所使用的账号 用户姓名 用户登录系统所使用的密码
创建DAO接口 创建DAO接口的Hibernate实现类
完成时间:10分钟
创建业务接口及实现类
完成时间:20分钟 完成时间:10分钟
使用Filter管理事务
完成时间:10分钟
开发计划
用例1:注册与登录 [40分钟] 用例2:发布投票 [30分钟] 用例3:完成投票 [30分钟]
用例4:查看投票结果 [30分钟] 用例5:投票维护 [40分钟] 用例6:投票查询 [25分钟]
在SubjectAction中新建modifyList方法,实现显示维护投票列 表
在SubjectAction中新建read方法,实现显示投票信息 修改SubjectAction中modify方法,实现更新投票信息
完成时间:40分钟
用例5:投票维护3-3
功能测试
检查点1(15分钟) 显示管理页面
用户ID
项目准备2:搭建系统框架
采用熟悉的Hibernate+Struts 2框架实现系统
创建Web工程及相关包
为工程添加Struts 2的支持,修改web.xml,增加Struts 2的Filter,创建Struts 2配置文件
为工程添加Hibernate 支持,创建并配置Hibernate配 置文件,创建实体类及实体映射文件