投票系统分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9章投票管理系统
开发一个软件首先要进行系统分析,其主要工作是确定系统的规模和范围,确定软件的总体要求以及所需要的硬件环境和支撑软件,确定待开发软件与外界的接口,根据用户的情况确定软件对操作的要求,以及待开发软件总体上的约束和限制。
系统分析有助于弄清对需开发的软件、支撑软件、硬件环境以及操作人员的要求。
本章将会详细介绍投票系统实现的过程,如系统的需求分析、系统设计和数据库设计和模块实现等。
掌握系统需求分析的过程
掌握系统用例图
熟练掌握系统设计过程
了解数据库设计过程
掌握系统时序图设计
9.1 系统概述
系统分析阶段的目标就是为系统设计提供系统的逻辑模型,系统设计阶段再根据这个逻辑模型进行物理方案的设计。
系统分析阶段的主要任务就是将在系统详细调查中所得到的文档资料集中在一起,对组织内部整体管理状况和信息处理过程进行分析。
系统分析在整个系统开发过程中,是要解决“做什么”的问题,把要解决哪些问小题、满足用户哪些具体的信息需求进行调查、分析清楚,从逻辑上,或者说从信息处理的功能需求上提出系统的方案。
9.1.1 需求分析
投票系统主要用来统计网站用户对某个主题或热门话题的意见。
决策者通过这些统计数据做出相应的决策。
在线投票系统是一般网站必备的程序之一,网站开发者可以通过该系统了解用户对该网站的意见和建议。
该系统应具备下面相应的功能:
●查看投票信息并进行投票。
投票主页显示投票的主题和选项的信息,提供所有主题的
连接,用户可以选择不同的主题进行投票。
选择主题后,主页显示与主题关联的选项。
然后用户选择选项,提交表单。
投票表单包括主题、选项、投票个人信息。
主页还提供投票结果查询的连接。
●查看当前用户投票情况。
用户可以通过单击投票结果查询的连接查看投票结果。
投票
结果显示主题、选项以及该选项的投票数。
用户还可以在提交投票表单后自动转到投票结果显示页面查看投票结果。
●管理员管理投票信息,包括主题、选项的添加、删除、查看。
管理员登录后台管理系
统后可以管理投票信息。
管理员可以添加主题,在添加主题时需要同时添加至少一条选项。
管理员可以添加选项,添加选项必须与主题对应。
管理员可以对主题和选项进行查看和删除。
●管理员查看投票人信息。
投票人信息显示数据库存储的所有信息。
管理员可以删除投
票人信息但不可以修改和添加。
实现本系统过程中,开发环境如下所示:
●服务器硬件要求:处理器:Pentium 3以上;内存>=512MB;硬盘>=40G。
●服务器端软件要求:操作系统:Windows 2000或Windows XP;数据库服务器:
MySQL 5.0。
●Web容器:Tomcat 6.x;
●客户端软件要求:操作系统:Windows 2000或Windows XP;浏览器:Internet Explorer
6.0或以上版本。
●开发工具:MyEclipse 6.0
9.1.2 系统用例图
用例图由Ivar Jacobson在开发AXE系统中首先使用,并添加到由他所倡导的OOSE和Objectory方法中。
用例图引起了面向对象领域的极大关注,自1994年Ivar Jacobson的著作出版后,面向对象领域已广泛接纳了这一概念,并认为它是第二代面向对象技术的标志。
使用例图可以描述外部参与者所理解的系统功能,也就是说用例图描述了用例、参与者以及它们之间的关系。
1.用例图
用例代表的是一个完整的功能。
UML中的用例是动作步骤的集合。
动作(action)是系统的一次执行(能够给某个角色输出结果值)。
与角色通信,或进行计算,或在系统内工作都可以称作动作。
用例应支持多种可能发生的动作。
比如,自动售货系统中当顾客付款之后,系统自动送出顾客想要的饮料,这是一个动作付款后若需要的饮料无货,则提示可否买其他货物或退款等等。
系统中的每种可执行情况就是一个动作,每个动作由许多具体步骤实现。
用例是一个完整的描述,虽然编程实现时,一个用例可以被分解为多个小用例(函数)每个小用例之间互相调用执行,一个小用例可以先执行完毕,但是该小用例执行结束并不能说这个用例执行结束。
也就是说,不管用例内部的小用例是如何通信工作的,只有最终产生了返回给角色的结果值,才能说用例执行完毕。
用例和角色之间也有连接关系,用例和角色之间的关系属于关联(association)又称作通信关联(communication association)。
这种关联表明哪种角色能与该用例通信关联。
关系是双向的一对一关系,即角色可以与用例通信,用例也可以与角色通信。
经过分析,投票系统用户用例图如图9-1所示:
用户
图9-1 用户管理用例图
投票系统后台管理用例图如图9-2所示:
管理员
图9-2 后台管理用例图
2。
用例说明
图9-1中的各个用例,代表了系统不同的行为操作。
其详细信息如下所示:
●查看投票信息:用户进入主页后查看主页显示的投票信息。
主页主要显示的信息有:
主题,与主题关联的选项。
用户可以选择自己需要投票的主题。
●输入个人信息:用户确定需要投票的主题及其选项后,在个人信息输入表单输入个人
信息。
该表单是用户姓名、地址、年龄的输入表单。
●投票:用户完成投票选择,个人信息输入后,进行投票操作。
系统存储用户投票的信
息以及用户个人信息。
●查看投票结果:用户单击查看投票结果连接进入投票结果统计页面查看投票结果。
该
统计页面只显示与投票相关信息,不显示个人等其他信息。
图9-2中的各个用例,其详细信息如下所示:
●登录系统:管理员通过主页的后台系统登录表单输入用户名和密码,系统对用户名和
密码验证,通过则进入后台管理系统,失败显示不存在该用户,重新登录。
后台管理系统是对投票、投票人信息、用户信息的管理平台,只允许管理员进入。
●查看投票人信息:管理员浏览投票人信息页面,系统会显示投票人信息的列表,采用
分页显示。
●删除投票人信息:管理员选择需要删除的投票人信息,单击【删除】,系统删除对应
的记录。
●增加主题:管理员通过主题增加表单输入主题,单击【提交】,系统插入一条相关记
录。
●删除主题:该操作会显示一个列出所有主题的页面,管理员选择需要删除的主题,在
这里是选择代表主题的编号,单击【删除】,系统删除对应的记录。
●查看主题:管理员浏览查看主题页面,系统显示主题的列表。
●增加选项:选择需要增加的主题编号,如果不知道,进入查看主题页面查看。
在选项
输入表单输入要增加的选项。
单击【添加】,系统插入一条相关记录。
●删除选项:系统显示选项及其所属的主题,管理员选择选项的编号输入选项删除表单,
单击【删除】,系统删除对应的记录。
9.1.3 系统设计
本系统采用JSP、Ajax、JavaBean和Servlet等技术。
在实现本系统过程中,采用Ajax 技术实现异步数据传输和样式设置,JSP负责显示数据交互表单、模块的服务器端部分采用Servlet技术,主要实现接受客户端请求,并根据情况将信息转发给JavaBean处理,这些操作通常是数据库操作,最后返回结果到客户端。
JavaBean负责执行业务逻辑。
通过对功能需求进行分析和概括得到如图9-3所示的系统功能模块图:
图9-3 系统功能模块图
9.2 数据库设计
在MySQL中创建数据库dbvote,并创建用户表user,投票人信息表person,投票表vote。
1.用户表user
用户表user主要用来存储进入管理系统需要的信息,如用户名、密码等。
其字段的详细信息如表9-1所示:
表9-1 用户结构表
2.
投票人信息表person主要用来存储投票人的姓名、地址、年龄信息等。
其字段的详细信息如表9-2所示:
3.投票表
投票表vote存储投票的主题和选项信息。
其字段的详细信息如表9-3所示:
9.3 系统功能模块设计
根据模块功能具体化程度的不同,可以分为逻辑模块和物理模块。
在系统逻辑模型中定义的处理功能可视为逻辑模块。
物理模块是逻辑模块的具体化,可以是一个计算机程序、子程序或若干条程序语句,也可以是人工过程的某项具体工作。
在本节中,将会详细介绍系统逻辑模块的实现过程。
9.3.1 投票模块
投票模块主要包括投票和查看结果操作,涉及到Ajax、JSP、JavaBean和Servlet三项技术,其中Ajax实现客户端样式设置与异步数据传输,JSP显示投票表单、Servlet接受客户请端请求,并执行处理操作。
JavaBean主要处理获取的信息即保存信息。
该模块时序图9 -4所示:
图9-4 投票时序图
上图中,用户打开index.jsp 页面选择需要投票的主题,index.jsp 显示相应主题及其选项。
用户选择选项并输入个人信息,单击【提交投票】按钮,提交到NumChange 。
NumChange 获取输入信息,并调用V ote 存储获取的信息。
存储完成后跳转到show.jsp 页面显示投票统计结果。
具体功能如表9-4所示:
表9-4 投票功能表
9.3.2 投票管理模块
投票管理模块的操作有:添加主题、删除主题、查看主题、添加选项、删除选项。
涉及到Ajax 、
JSP 、JavaBean 和Servlet 三项技术,其中采用Ajax 技术实现异步数据传输和样式设置,JSP 显示数据交互表单,Servlet 用来接受客户端的请求,执行处理并返回结果。
Java Bean 主要处理获取的信息。
主题管理模块时序图如图9-5所示:
图9-5 添加主题时序图
上图中,管理员打开add.jsp 页面输入主题信息并提交表单,表单信息采用Ajax 技术提交到服务器端Add 进行处理。
服务器端Add 调用V ote 的insert(Vote vote )方法保存获取的
信息。
保存成功后返回信息到客户端add.jsp页面,add.jsp显示执行结果。
具体功能如表9-5所示:
选项管理模块时序图如图9-6所示:
图9-6 删除主题时序图
上图中,管理员打开del.jsp页面输入主题编号并提交表单,表单信息采用Ajax技术提交到服务器端Delete进行处理。
服务器端Delete调用V ote的del(int flag )方法根据获取的信息删除记录。
删除成功后返回信息到客户端del.jsp,del.jsp显示执行结果。
具体功能如表9-6所示:
9-6 删除主题功能表
表
投票人信息管理模块的操作有:查看投票人信息、删除投票人信息,涉及到JSP、Java Bean技术,其中JSP显示所需信息,信息的获取和提交。
JavaBean主要处理获取的信息。
该模块时序图9-7所示:
图9-7 投票人信息管理时序图
上图中,管理员打开person.jsp页面,该页面显示投票人信息和删除表单,并实现删除操作。
管理员选择要删除的投票人信息,单击【删除】后person.jsp调用Perosn的del(int i d)方法按id删除记录。
具体功能如表9-7所示:
9.4 模块功能实现
完成了投票系统的需求分析和系统设计之后,就可以进入系统编码阶段了。
系统编码阶段是系统开发工作的最后一个阶段,所谓的代码编写是指将系统设计阶段的结果在计算机上实现,将原来纸面上的、类似于设计图式的系统方案转换成可执行的应用软件系统。
9.4.1 创建项目
开发本系统使用的开发工具是MyEclipse 6.0。
开发本系统前,请确保jdk1.6、tomcat 6.0、MySQL 5.0开发工具已经正确安装。
Eclipse是一个集成开发工具,为我们提供了很多功能。
Eclipse的官方下载中心是http: ///eclipse/downloads/,上面有很多版本,目前最新的是Eclipse 3.4.X。
E clipse支持Windows,Linux,Mac OS等多种操作系统。
本系统使用Eclipse 3.3。
MyEclipse是Eclipse的一种插件,提供了功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及工程部署等功能。
MyEclipse的官方网站地址是http://www.myeclipseid /,MyEclipse有很多版本,目前最新的是MyEclipse 6.5。
本系统使用MyEclipse 6.0。
下面我就来创建项目:
(1)打开MyEclipse,新建一个名为“VoteProject”的Web工程,如图9-8所示。
图9-8 创建新项目
(2)单击【Finish】完成。
(3)加载数据库驱动程序并在Tomcat6.0上部署项目。
之前的章节详细介绍了该操作过程。
9.4.2 通用模块实现
在实现各个模块的功能之前,需要将通用模块实现,这样就方便被其他模块调用。
为了减少代码重复,在实现本系统过程中,对经常使用的操作进行了封装。
在所有jsp文件中,我们只是将实现关键功能的代码列了出来,对于其他代码有兴趣的读者可以查阅本书所带光盘。
1.实现数据库连接类
创建数据库连接类DB.java,该类实现与数据库的连接和常用的操作。
代码如下:
该类首先创建与数据库的连接,并提供getConnection()方法,可以得到与数据库的连接。
然后根据项目需求定义了常用的方法,包括Statement、PreparedStatement对象的创建以及各对象的关闭操作。
2.实现编码转换功能的过滤器。
CharEncodingFilter.java该类实现Filter接口,完成请求、响应页面的编码转换操作。
代
9.4.3 投票模块实现
投票模块主要包括投票和查看结果操作,涉及到Ajax、JSP、JavaBean和Servlet三项技术,其中采用Ajax技术实现异步数据传输和样式设置,JSP显示数据交互表单,Servlet 用来接受客户端的请求,执行处理并返回结果JavaBean主要处理获取的信息即保存信息。
1.实现JavaBean
该方法用于对结果集保存时常用代码的封装。
完成从结果集中取出数据并保存到Vote
能,部分功能是在后续开发中根据需要添加完成。
在这里给出完整代码避免在以后添加时造成混乱。
索引,第二个参数pageSize为查询的记录数。
方法的功能为查询从pageNo开始的pageSize
2.实现前台首页index.jsp
index.jsp显示相应的主题及其选项。
提供投票表单以及登录后台管理的登录表单。
代码
上述代码主要用于登录后台管理的客户端,主要有三个JavaScript函数,login()函数首先验证表单中信息,然后把从登录表单获取的信息发送给服务器,这里采用post形式发送数据。
语句xmlHttp.onreadystatechange=callback;标示一个匿名函数,该函数没有名称,其作
上述代码使用JSP技术与Servlet技术完成投票信息的显示与处理功能,JSP脚本部分查询数据并在页面中显示,投票表单提交到NumChange端进行处理。
3.实现投票结果显示
用户进行投票操作后,显示投票结果。
该部分代码分为客户端和服务器端两部分。
服务器端获取客户端请求页数和产生指定记录集的共能,view.jsp代码如下:
该代码实现分页显示,上述脚本中获取开始显示的记录pageNo的值以及设置每页要显示的记录数。
调用V ote类的方法findAllV ote()完成该功能,并使用while循环将指定数据库记录以XML文件形式返回到客户端。
客户端代码主要完成显示数据的样式,传递请求的数据
在该文件中,JavaScript函数gg()完成当前页数的减操作,函数go()完成当前页数的加操作。
get()函数完成向服务器端发送异步请求,callback()处理服务器端相应,show()指定数据的显示样式。
4.实现页面流程控制
NumChange.java该类继承HttpServlet接口,完成投票的流程控制。
该类获取投票表单
doPost方法获取投票表单信息并调用V ote类的update(id)方法处理获取的信息。
在获取复选框的参数时规定每次投票选项不大于20,因此使用for循环得到复选框的参数值。
处理完成后跳转到投票结果显示页面show.jsp。
上述操作完成后,就可以运行了。
打开IE浏览器,在地址栏中输入http://localhost:808 0/V oteProject/news/index.jsp,单击【转到】,会显示如图9-9所示窗口:
图9-9 投票首页
单击【查看投票结果】显示如图9-10所示窗口:
图9-10 投票结果统计页面
9.4.4 投票主题管理实现
投票主题管理实现添加主题、删除主题、查看主题操作。
管理员登录后台管理系统后可以管理投票信息。
管理员可以添加主题,在添加主题时需要同时添加至少一条选项。
管理员可以对主题进行查看和删除。
1.实现查看主题
主题添加操作允许用户添加主题同时添加相关选项,该操作对主题和选项进行保存。
该部分分为客户端和服务器端两部分。
服务器端主要完成记录的保存,使用Servlet技术实现。
在该文件中,JavaScript函数add()对表单提交的数据验证,并完成向服务器端发送异步请求,callback()处理服务器端相应,show()获取服务器端返回的信息并显示结果信息。
3、实现删除主题
主题删除操作允许用户删除主题。
该部分分为客户端和服务器端俩部分。
服务器端主要
并返回信息到客户端。
客户端代码主要是发送异步请求和设置显示样式。
del.jsp代码如下
在该文件中,JavaScript函数del.()完成对表单数据验证,完成向服务器端发送异步请求,callback()处理服务器端相应,show()指定数据的显示样式。
表单部分要求输入删除的主题编号,该编号并未在该页面显示,需要进入查看主题页面查看主题编号。
4.运行
上述操作完成后,就可以运行了。
打开IE浏览器,在地址栏中输入http://localhost:808 0/V oteProject/flowcard/vote_list.jsp,单击【转到】,会显示如图9-11所示窗口:
图9-11 查看主题
在地址栏输入http://localhost:8080/V oteProject/flowcard/add.jsp,单击【转到】,会显示如图9-12所示窗口:
图9-12 添加主题
在地址栏输入http://localhost:8080/V oteProject/flowcard/add.jsp,单击【转到】,会显示如图9-13所示窗口:
图9-13 删除主题
9.4.5投票选项管理实现
投票选项管理现添加选项、删除主题操作。
管理员登录后台管理系统后可以管理投票信息。
管理员可以添加选项,添加选项必须与主题对应。
管理员可以对选项进行查看和删除。
1.实现添加主题
主题添加操作允许用户添加主题同时添加相关选项,该操作对主题和选项进行保存。
该部分分为客户端和服务器端俩部分。
服务器端主要完成记录的保存,使用Servlet技术实现.
上述代码获取客户端发送请求的参数,调用V ote类的insert(V ote vote)方法执行存储操作,并返回信息到客户端。
客户端代码主要是发送异步请求和设置显示样式。
option_add.js
求,callback()处理服务器端响应,show()指定数据的显示样式。
2、实现删除选项
由于删除选项和删除主题操作,实现的方法相同,为避免代码重复提交到同一servlet
上述代码脚本部分完成分页的功能。
JavaScript函数optiondel()对表单数据验证,完成向服务器端发送异步请求,callback()处理服务器端相应,show()获取服务器端返回的信息,并显示结果。
3.运行
上述操作完成后,就可以运行了。
打开IE浏览器,在地址栏中输入http://localhost:808 0/V oteProject/flowcard/option_add.jsp,单击【转到】,会显示如图9-14所示窗口:
图9-14 增加选项
在地址栏中输入http://localhost:8080/V oteProject/flowcard/option_del.jsp,单击【转到】,
会显示如图9-15所示窗口:
图9-15 删除选项
本系统使用一个HTML页面对后台所有页面进行关联,读者可以在随书赠送光盘中获得该页面。
该页面显示如图9-17所示:
图9-16 投票后台管理系统
单击左侧菜单栏内容可以连接到相应页面。