软件工程课程设计投票系统.docx
- 文档编号:17165065
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:30
- 大小:398.55KB
软件工程课程设计投票系统.docx
《软件工程课程设计投票系统.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计投票系统.docx(30页珍藏版)》请在冰点文库上搜索。
软件工程课程设计投票系统
投票系统
一、系统分析
1、可行性研究
在当今时代,信息显得十分的重要。
从中,我们不仅可以获得商家,同时,我们也能从中得到用户的反馈,通过增强用户体验,来提升产品的竞争力。
本次设计,开发一个用于获取用户信息的投票系统。
目标:
用户可以选择投票频道、增加投票选项、进行投票以及查看投票结果。
管理可以发起投票、查看所有投票、删除投票。
技术可行性:
本次开发使用JSPJavaBeanStructs2JDBC和JFreeChart技术,这些技术经过多年的发展,日趋成熟,在技术上是可行的。
经济可行性:
操作可行性:
2、需求分析
根据投票系统的需要,投票网站的用户可以分为两种:
普通用户,公司用户。
在网站建设的初期阶段,公司的用户权限由管理员来担当。
在网站建设的初期阶段,为了积累人气,增加用户,通常对一些热门话题进行投票,例如体育赛事等。
2.1、功能需求分析
经过分析,首先该系统中具有两种权限的用户,所以各自将他们分为单独的模块。
在普通用户模块中,用户能够完成如下的功能:
1、选择投票频道
2、选择投票选项,进行投票
3、当没有对应的选项的时候,能够自定义选项
4、查看投票结果
在管理员模块中,管理员能够完成如下的功能:
1、发起投票,给出投票名称和选项
2、查看所有的投票列表
3、删除已经发起的投票
2.2、数据流图
2.3HIPO图
二、系统设计
2.1、概要设计
2.1.1、设计目标:
概要设计是软件开发过程的一个阶段,在这个阶段需要完成一些明确的事情。
概括设计阶段的基本母的是回答“概括的说,系统应该如何实现?
”。
通过这个阶段,确定系统的组成模块。
本投票系统有两大模块组成:
用户模块和管理员模块。
每个模块又有自己的子模块组成。
2.1.2、功能需求与程序的关系
本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系:
程序1
程序2
程序3
程序4
程序5
程序6
程序7
登录投票页面
登录管理页面
数据库创建新的投票选项
数据库创建新的投票信息
数据库录入投票信息
数据库删除选项信息
数据库反馈查询信息
选择频道
√
查看结果
√
√
投票
√
√
√
自定义选项
√
√
√
√
发起投票
√
√
查看列表
√
√
删除投票
√
√
2.1.3、尚未解决的问题
此阶段已完成了此软件的结构设计,划分了摸块,并规定了各模块的功能及它们之间的联系。
在系统完成之前,还需要做的工作包括:
1) 给出软件模块结构中各个模块的内部过程描述,给出目标系统的精确描述
2) 将软件详细设计的结果翻译成用某种书写的程序,实现相应功能。
3) 由于软件开发人员自身能力的局限性,和开发环境的限制,软件难免会存在一些错误和缺陷,因此软件测试在系统运行之前是不可或缺的一步。
2.1.4、接口设计
用户接口:
程序是标准的javaweb程序,提供图形化的用户界面。
外部接口:
与管理员之间的外部接口:
此系统与管理员之间通过系统管理来进行信息交换,由于重点花在做数据管理,人机交互,数据报表等,没有做管理员用密码账号登录。
内部接口:
本系统采用框架结构(该结构的详细说明请参阅数据库设计),内部接口的实现通过配置框架实现,该部分接口对程序员是透明的。
三、数据库设计
3.1、数据库分析
在投票网站中,并不须要用户登录后在进行投票,所以在数据库中不需要保存用户信息。
在数据库中只有保存投票和投票选项,以及各个选取的票数,所以信息量不是很大。
因此考虑到项目开发成本和维护成本,本系统采用MYSQL作为后台数据库,数据库名称定义为db_votemanage。
数据库中包含3张表用来存储不同的信息。
3.2、数据库概念设计
本系统一共设计规划出3个实体。
分别是投票频道实体、投票实体和投票选项实体。
其中投票频道实体用来保存投票频道的信息,包括频道编号和频道名称。
投票实体用来保存投票的信息,包括投票编号、投票名称以及投票所需频道。
投票选项实体用来保存投票选项信息,包括投票选项编号,投票选项名称,得票数以及投票选项所属投票。
投票实体E-R图、投票选项实体E-R图和投票频道E-R图如下:
3.3、数据库逻辑结构设计
设计好的各实体E-R图创建数据库的逻辑结构,数据库各表的结构如下:
频道信息表用以存储投票所在的频道的基本信息,包括频道ID和频道名称,该表的逻辑结构如下:
频道信息表
字段名
数据类型
是否主键
描述
channeled
整数(int)
是
频道编号
channelName
文本(varchar)
否
频道名称
投票信息表用来存储投票选项的基本信息,包括选项ID,所属投票ID,选项名称、得票数,该表的逻辑结构如下:
投票信息表
字段名
数据类型
是否主键
描述
voteID
整数(int)
是
投票编号
voteName
文本(varchar)
否
投票名称
channeled
整数
否(外键)
所属频道ID
选项信息表用来存储投票的基本信息,包括投票ID,投票名称和所属频道ID,该表的逻辑结构如下:
选项信息表
字段名
数据类型
是否主键
描述
voteOptionID
整数(int)
是
选项编号
voteID
整数(int)
否(外键)
所属投票编号
voteOptionName
文本(varchar)
否
选项名称
ticketNum
整数(int)
否
得票数
四、详细设计
本阶段主要详细设计每个模块或构件的设计细节,主要包括模块或构件的处理逻辑,算法和接口等。
4.1、软件结构图:
(a)查看投票结果模块设计
(b)处理投票模块
(c)发起投票模块
(d)删除投票模块
4.2、各模块详细设计
查看投票结果模块设计
程序描述:
本模块实现了用户模块中查看已投票结果,本程序不是常驻内存的,重用的,在程序员模块中,程序员也可以实现和普通用户一样的查看投票结果操作。
功能:
系统名称:
投票系统
作者:
模块名:
查看投票结果模块
日期:
2012.5.22
模块编号:
1.2
上层调用模块:
用户处理子系统
下层被调用模块:
输入数据:
用户的请求信息
输出数据:
投票结果信息
处理:
用户提交请求信息,系统接受并处理,以图标的形式向用户展现投票结果
注释:
性能:
本操作的响应时间应控制在1~2秒内。
输入项:
输出项:
投票选项voteOptionName投票名称voteName投票数ticketNum
算法:
显示所有投票页面
在Action中将投票封装类集合保存到request内置对象中,所以在显示投票页面中只需将它循环遍历就可以很容易的得到每一个投票,这里我们采用Struts2标签库中的 iterator>标签对封装类集合进行遍历。 显示所有投票DAO方法 在管理员管理页面中,创建了“投票管理”超链接,单机该超链接将调用显示所有投票Action,在其中调用显示所有投票方法,最后跳转到显示所有投票页面,在该页面中在对已经发布的投票进行管理。 首先开放所有投票的DAO层方法,英文一个网站中已经发布的投票可能很多,所以我们才有分页技术来显示投票。 (1)获取投票的总记录数 要想对所有的投票进行管理分页,首先要获取投票的记录总数。 在VoteDAOImpl投票操作中定义了findAllCount方法来获取发起投票的总记录数。 (2)获取所有投票 由于显示投票时使用到了分页技术,所以获取多有投票也就是获取当前的投票。 在VotaDAOImpl投票操作DAO中定义了findAllVote方法来获取当前页面的所有投票。 (3)根据投票ID获取该投票中的所有选项 在VoteOptionDAOImpl选项操作中固定液了findVOteOptionBuVoteID方法,通过该方法获取指定投票ID中的所有选项。 显示所有投票Action 在管理界面中个,单击“投票管理”超链接后,就会访问显示所有投票Aaction,在该Action中获取分页信息,然后调用DAO中的相应方法,并跳转到显示投票页面。 流程逻辑: 接口: 与本程序直接相关联的数据库表为: 投票信息表tb_vote选项信息表tb_voteoption 处理投票模块设计 程序描述: 本程序设计的目的在于实现了用户子系统模块下的投票模块。 本程序不是常驻内存的,本程序是顺序处理的。 功能: 系统名称: 投票系统 作者: 模块名: 直接投票 日期: 2012.5.23 模块编号: 1.3 上层调用模块: 用户处理 下层被调用模块: 直接投票;输入自定义选项投票 输入数据: 投票信息,投票选项信息 输出数据: 投票结果信息 处理: if直接投票then选择投票选项,直接投票 Else输入自定义的选项,单击投票 Then系统录入投票信息,并反馈出投票报表 注释: 性能: 本操作的响应时间应控制在1~2秒内。 输入项: 投票名称voteName所属频道channeled投票选项voteOptionName 输出项: 投票名称voteName所属频道channeled投票选项voteOptionName得票数 ticketNum 算法: 进行投票页面 在投票页面中,用户可以对给出的选项进行投票,这里采用单选按钮的形式来规定用户只能选取其中给一个。 当投票中没有合适的选项时,用户可以选择其他,然后在后面的文本框中输入自定义的选项。 进行投票的DAO方法 用户进行投票操作时,可以分为两种操作,一种是选择了已有选项进行投票,另一种是选择“其他”选项,然后在后面的文本框中输入自定义选项,根据两种操作要有不同的DAO方法。 当用户选择“其他”的时候,将执行增加选项的方法。 当用户对已有选项进行投票,要首先获取该选项的已得票数,然后对其得到的票数加1后保存。 (1)获取选项 在进行投票的页面中,我们只能得到选项ID,要想得到选项的得票数要首先得到选项信息,所以要在操作选项的DAO中定义获取选项方法。 (2)更新选项得票数 获取选项后,可以得到它的原得票数,然后设置它的得票数加1,最后执行更新选项得票方法,从而完成该功能,所有要在操作选项DAO中定义更新选项得票数的方法。 进行投票Action 用户在进行投票页面中,进行选择选项后,单机“投票”按钮,就会就如进行投票Action中。 在进行投票Action中,首先要获得选项ID、其他选项名称、投票ID和频道ID等信息。 并且要判断用户是否已经进行了投票,这里采用了cookie技术进行验证。 在进行投票Action中还要判断用户选择的是已有选项合适其他选项。 然后依据不同的选择进行不同的操作。 查看投票结果DAO方法 在进行投票Action执行成功时,将执行投票结果Action,在其中要调用查看投票结果Dao方法。 由于在Action中之只能获得投票ID,所以在操作投票DAO中要定义根据投票ID获取投票的方法。 除此之外,还要应用到使用投票ID获取所有选项的方法。 查看投票结果Action 在开发查看投票结果功能时,采用到了Structs2整合JFreeChart的技术,使投票结果以报表的形式显示出来,在查看投票结果Action中最主要的就是将生成的报表返回。 流程逻辑: 接口 与本程序直接相关联的数据库表为: 投票信息表tb_vote选项信息表tb_voteoption 发起投票模块 程序描述: 本程序实现了管理员发起投票功能,本程序不是常驻内存的,有一个子程序2.1.1更新系统数据库信息,本程序是顺序处理的。 功能: 系统名称: 投票系统 作者: 模块名: 发起投票模块 日期: 2012.5.23 模块编号: 2.3 上层调用模块: 管理员处理 下层被调用模块: 新建投票信息2.1.1 输入数据: 投票信息、投票选项信息 输出数据: 新增投票名称及选项 处理: input投票信息,选项信息ifsuccessthen发起投票 注释: 输入项: 投票名称voteName所属频道channeled选项名称voteOptionName得票数ticketNum 输出项: 投票名称voteName所属频道channeled选项名称voteOptionName得票数ticketNum 算法: 发布投票 发布投票页面 管理员进入发布投票页面后,将能够输入投票所属频道,要发布投票的名称,并初始给出几个投票选项。 发布投票DAO方法 当管理员发布投票之后,要完成两件事,费分别是增加投票和增加选项。 所以要在数据访问层创建投票操作的VoteDAO和选项操作的VotaOPtionDAO。 在这里采用工厂模式创建DAO类、DAO接口和DAO实现类。 (1)增加投票 在VoteDAOImpt投票操作DAO中定义了addVOte方法,该方法在收到了投票信息类对象,通过该方法将该投票信息保存到投票数据库中去。 (2)获取指定名称的投票 在增加选项操作时,是要增加该选项所属投票ID字段的,但是在页面中并没有提交该字段,他是数据库自动生成的,所以在VoteDAOImpl投票操作DAO中顶叶findVotaByName获取指定名称投票方法。 (3)增加选项 在VoteOptionDAOImpl选项操作DAO实现类中定义了addVoteOption方法,该方法接受选项信息类对象,通过该方法将fai选项信息保存到选项数据库中。 发布投票Action 在本投票系统中,采用Struts2做为控制层,所以在发布投票页面中提交后,将提交到发布投票Action中,在Struts2的Action中药首先获取发布页面表单中的数据,然后将数据封装为对象,最后调用DAO中个的方法来完成投票的功能。 流程逻辑: 接口: 与本程序直接相关联的数据库表为: 投票信息表tb_vote选项信息表tb_voteoption 删除投票模块 程序描述: 本程序实现了管理员模块的删除曾经发起的投票,在现实生活中,投票往往具有时效性,有的投票经过一段时间,就会变得没有价值,这是只有删除。 本程序不是并发处理,而是顺序处理,本程序不用常驻内出,本程序没有覆盖要求 功能: 系统名称: 投票系统 作者: 模块名: 删除投票模块 日期: 2012.5.23 模块编号: 2.3 上层调用模块: 管理员处理 下层被调用模块: 2.3.1更新数据库 输入数据: 管理员删除指令 输出数据: 更新后的投票结果 处理: admin在”投票管理”界面单击删除选项,删除发起的投票, 后台数据库自动更新数据 注释: 输入项: 管理员删除投票指令 输出项: 更新后的数据库。 有关被删除投票名称的所有的投票选项及其得票数全部删除。 算法: 删除投票DAO方法 在显示所有投票页面中,管理员能够只需删除操作。 当进行删除操作时,不当要删除投票,还要删除带投票下的所有选项。 (1)删除投票 在投票操作DAO中定义了deleteVote方法来删除指定投票ID的已发布的投票。 (2)删除选项 当将投票删除后,只是将投票表中的指定记录删除。 在选项表中任然存在该投票所属的选项记录,所以也需要将其删除。 删除投票Action 当在显示投票页面中单机“删除”超链接后,就会进入到执行删除投票的Action中。 在删除投票Action中获取传递的投票ID,根据投票ID就可以完成删除投票的功能。 并且根据投票ID可以获取该投票下的所有选项,从而删除这些选项。 流程逻辑: 接口: 与本程序直接相关联的数据库表为: 投票信息表tb_vote选项信息表tb_voteoption 五、模块开发卷宗 查看投票结果模块 处理投票模块 1、标题 软件系统名称: 投票系统 模块名称: 查看投票结果编号: 1.2 程序编制员签名: 卷宗的修改文本序号 修改完成的日期2012/5/30 卷宗序号01 编排日期2012/5/30 2、模块开发情况表 本模块已完成功能分析,概要设计,与详细设计,软件的结构已经划分,工作算法已经给出。 3、功能说明 输入数据: 用户查看投票结果的请求 输出数据: 投票结果信息 用户提交请求信息,系统接受并处理,以图标的形式向用户展现投票结果 4、设计说明 本模块在投票系统中隶属于用户处理模块, 接口描述: 输入项: 用户查看投票结果的请求 输出项: 投票名称voteName投票选项voteOptionName得票数ticketNum 5、源代码清单 略 6、测试说明 处理投票模块 1、标题 软件系统名称: 投票系统 模块名称: 处理投票模块编号: 1.3 程序编制员签名: 卷宗的修改文本序号 修改完成的日期2012/5/30 卷宗序号02 编排日期2012/5/30 2、模块开发情况表 本模块已完成功能分析,概要设计,与详细设计,软件的结构已经划分,工作算法已经给出。 3、功能说明 输入数据: 投票信息,投票选项信息 输出数据: 投票结果信息 用户只有在进入了投票界面才可以投票,用户进行投票的时候,为了防止恶意投票,规定一个用户一天只可以投一次票。 4、设计说明 本模块在投票系统中隶属于用户处理模块,有两个子模块,即直接投票和自定义选项投票。 接口描述: 输入项: 投票名称voteName所属频道channeled投票选项voteOptionName 输出项: 投票名称voteName所属频道channeled投票选项voteOptionName得票数ticketNum 5、源代码清单 略 6、测试说明 发起投票模块 1、标题 软件系统名称: 投票系统 模块名称: 发起投票模块编号: 2.1 程序编制员签名: 卷宗的修改文本序号 修改完成的日期2012/5/30 卷宗序号03 编排日期2012/5/30 2、模块开发情况表 本模块已完成功能分析,概要设计,与详细设计,软件的结构已经划分,工作算法已经给出。 3、功能说明 输入数据: 投票信息、投票选项信息 输出数据: 新增投票名称及选项 管理员在发起投票页面输入投票信息,选项信息。 如果数据库录入信息成功,则设置初始的得票数并发起投票。 4、设计说明 本模块在投票系统中隶属于用户处理模块,有1个子模块: 新增投票信息模块2.1.1 接口描述: 输入项: 投票名称voteName所属频道channeled选项名称voteOptionName 输出项: 投票名称voteName所属频道channeled选项名称voteOptionName得票数ticketNum 5、源代码清单 略 6、测试说明 发起投票模块 1、标题 软件系统名称: 投票系统 模块名称: 删除投票模块编号: 2.3 程序编制员签名: 卷宗的修改文本序号 修改完成的日期2012/5/30 卷宗序号03 编排日期2012/5/30 2、模块开发情况表 本模块已完成功能分析,概要设计,与详细设计,软件的结构已经划分,工作算法已经给出。 3、功能说明 输入数据: 管理员删除投票指令 输出数据: 更新后的数据库 管理员在“投票管理”界面单击删除选项,删除发起的投票,后台数据库自动更新数据 4、设计说明 本模块在投票系统中隶属于用户处理模块,有1个子模块: 更新数据库2.3.1 接口描述: 输入项: 管理员删除指令 输出项: 投票名称voteName所属频道channeled选项名称voteOptionName得票数ticketNum 5、源代码清单 略 6、测试说明 六、测试计划 1引言 1.1编写目的 1.2背景 说明: a.测试计划从属与本投票软件 b.在本测试计划必须要完成软件的需求分析,概要设计,详细设计。 2计划 2.1软件说明 略 2.2测试内容 2.1.1界面测试 1、主界面 2、投票界面 CBA栏目下 NBA栏目下 3、管理员操作界面 4、新增投票操作 5、新增投票之后 6、删除操作之后 2.1.2数据库测试 1、后台数据表 2、删除投票选项后的表 3、新增投票选项后的表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课程设计 投票 系统