简单投票管理系统课程设计报告
- 格式:doc
- 大小:473.00 KB
- 文档页数:24
中原工学院软件学院软件工程实践二设计任务书指导教师签字:年月日网络选举投票系统设计与实现摘要随着Internet技术的快速发展,如今很多服务行业都需要进行服务的反馈,以便更好的提高产品的质量和作出更好的服务,投票系统就是一个反馈信息的软件,通过它可以更好更快捷的反馈信息供服务商参考,同时在公司单位内需要进行各种投票项目进行领导和员工间的互动,以供公司高层了解下面同事的最新动态,同时通过网络投票系统在各种精选活动中可以大大提高公平性与公正性,采用计算机机票提高了选举效率。
因此开发一个供客户反馈信息,供同事间进行交流的平台是必要的。
(1)方便的操作。
原有的手工投票管理基本上是人工管理,效率低下,缺乏方便性,在线投票管理系统运用计算机及其他附属设备,不再需要人工操作,基本上实现自动化,能够节省人力,最大限度的节省各种宝贵的资源,大大提高效率。
(2)友好的界面。
友好的用户界面会给人一种亲切感,在使用起来不会觉得沉闷,效率大大提高。
关键词:网络;投票;JSP目录摘要 (1)第1章项目分析 (1)1.1问题描述 (1)1.2技术分析 (1)1.3工程进度计划 (3)第2章系统分析与设计 (4)2.1系统分析 (4)2.1.1参与者 (4)2.1.2 用例及用例规约 (4)2.1.3用例图 (6)2.2系统设计 (6)2.2.1顺序图 (6)2.2.2类图 (8)2.2.3系统体系结构设计 (11)2.3数据库设计 (13)2.3.1E-R图 (14)2.3.2关系模式 (14)2.3.3表的设计 (15)第3章实现与测试 (17)3.1查看项目模块 (17)3.1.1活动图 (17)3.1.2界面 (18)3.1.3代码分析 (18)3.1.4测试用例 (20)3.2新建项目模块 (20)3.2.1活动图 (21)3.2.2界面 (21)3.2.3代码分析 (22)3.2.4测试用例 (22)3.3停止项目模块 (23)3.3.1活动图 (23)3.3.2界面 (24)3.3.3代码分析 (24)3.3.4测试用例 (25)3.4恢复项目模块 (25)3.4.1活动图 (25)3.4.2界面 (26)3.4.3代码分析 (26)第4章结束语 (28)附录A: 主要源程序 (31)第1章项目分析项目分析是对该系统具有功能的大致介绍,包括设计该系统的问题描述、技术分析、该系统的工作进度计划等内容。
《Web程序设计(一)课程设计》实验报告院系名称:专业班级:学生姓名:学号:2012年11 月一、实验目的本实验属于设计性实验,目的是使我们在学完《Web程序设计(一)》课程的基本知识之后,通过使用JSP+JavaBean制作一个简单的在线投票系统,进一步熟悉和领悟JSP、JavaBean和Java语言的语法结构和使用方法,通过实验学习Java Web系统的开发步骤与方法,任务是设计一个简单的线投票系统。
二、实验步骤1、对整个系统进行分析设计,设计整个系统的功能和所应有的页面。
2、对系统进行页面设计。
3、对系统进行功能设计。
4、对系统进行数据库设计和链接。
5、整个系统进行测试和调试。
三、系统设计1、界面设计首页注册页面:错误提示页面投票页面:投票结果页面:系统应该具有注册功能、登录功能、在线投票功能、票数统计功能、投票结果显示功能,其中注册功能应该包含的注册项如表1所示,在线投票功能应该包含的投票项如表2所示。
下图表1下图表23、数据库设计根据上述的功能要求,该系统数据库中包括的数据表有:用户基本信息表(表名:yonghu)、年龄信息表(表名:nianling)、收入信息表(表名:shouru)、文化程度信息表(表名:xueli)、娱乐方式信息表(表名:yule)、体育运动信息表(表名:tiyu)、电影类型信息表(表名:dianying)。
表3用户基本信息表表4年龄信息表表5收入信息表表6文化程度信息表表7娱乐方式信息表表8体育运动信息表表9电影类型信息表四、系统的核心代码1、index.jsp<body bgcolor="FF1493"><div align="center"><p>欢迎进入投票系统</p><hr><table><tr><td>已注册,点击登录按钮登录</td><td>未注册,点击注册按钮注册</td></tr><tr><td width="300px"align="center"><a href="denglu.html">登录</a></td><td width="300px"align="center"><a href="zhuce.html">注册</a></td></tr></table>2.zhuce.html<body bgcolor="FF1493"><div align="center"><p>欢迎用户注册!</p><form action="zhuce.jsp"method="post"><table><tr><td> 用户名:</td><td><input type="text"name="username"/></td></tr> <tr><td> 密 码:</td><td><input type="text"name="password"/></td></tr><tr><td>真实姓名:</td><td><input type="text"name="realname"/></td></tr><tr><td> 性别:</td><td><inputtype="radio"name="sex"value="男"checked/>男<input type="radio"name="sex"value="女"/>女</td></tr><tr><td> 省份:</td><td><select name="shengfen"><OPTION value="安徽">安徽</OPTION>-------soso onon----<OPTION value="内蒙古"selected>内蒙古</OPTION><OPTION value="宁夏">宁夏</OPTION>------<OPTION value="西藏">西藏</OPTION><OPTION value="云南">云南</OPTION><OPTION value="浙江">浙江</OPTION>-----</select></td></tr><tr><td align="center"><input type="submit"value="注册"/></td><td align="center"><input type="reset"value="重置"/></td></tr></table></form>3.zhuce.jsp<% request.setCharacterEncoding("UTF-8");String username=request.getParameter("username");String password=request.getParameter("password");String realname=request.getParameter("realname");String sex=request.getParameter("sex");String shenfen=request.getParameter("shengfen");Stringstrsql1="'"+username+"'"+","+"'"+password+"'"+","+"'"+realname+"'"+","+"'"+sex+"'"+", "+"'"+shenfen+"'";String strsql="insert into yonghu(username,password,realname,sex,shengfen)"+"values("+strsql1+")";System.out.println(strsql);Access a=new Access();boolean isnot=a.executeUpdate(strsql);if(isnot==true){ session.setAttribute("username",username);response.sendRedirect("toupiao.jsp");}Else{response.sendRedirect("zhuce.html");}%>4.error.html<body bgcolor="FF1493"><p>您输入的用户名或密码错误</p><p>请重新输入</p><table><tr><td><a href="denglu.html">跳转到登录页面重新登录</a></td></tr></table></body>5.denglu.js p<body bgcolor="FF1493"><jsp:useBean id="user"class="com.mushu.Access.Access"></jsp:useBean><% String username=request.getParameter("username");String password=request.getParameter("password");String iscorrect="select * from yonghu where username="+"'"+username+"'"+" and password="+"'"+password+"'";System.out.println(iscorrect);ResultSet rs=user.execute(iscorrect);if(!rs.next()){ response.sendRedirect("error.html");}Else { session.setAttribute("username", rs.getString("username"));session.setAttribute("password", rs.getString("password"));rs.close();response.sendRedirect("toupiao.jsp");}%></body>6.toupiao.jsp<body bgcolor="FF1493"><% if(session.getAttribute("username")==null){ response.sendRedirect("denglu.html"); }%>尊敬的<%=session.getAttribute("username") %>,欢迎来到投票页面<form action="toupiao1.jsp"method="post"><table width="700"border="0"align="center"cellpadding="0" cellspacing="0"><tbody><tr><td height="45"valign="top"><table width="746"border="0" cellspacing="0"cellpadding="0"><tbody><tr><tbody><tr><td width="177"><div align="center"><div id="ValidationSummary2"style="color:Red;display:none;"></div></div></td><td width="76"><div align="center"></div></td></tr></tbody></table></td></tr></tbody></table><table width="600"align="center"><tbody><tr><td class="style1"><div><table class="GbText"cellspacing="1"cellpadding="3"rules="all" border="1"id="VoteView"style="border-color:SteelBlue;border-width:1px;bo rder-style:None;width:100%;"><tbody><tr class="GbText"style="color:Black;font-size:Large;font-weight:b old;"> <th scope="col">调查问卷</th></tr><tr><td align="left">1、您的年龄是多少?<div id="VoteView_ctl02_ItemPanel"class="GbText" dir="ltr"style="width:100%;"><table id="VoteView_ctl02_radioList"border="0"><tbody><tr><td><input id="VoteView_ctl02_radioList_0" type="radio"name="VoteView1"value="age1"><label for="VoteView_ctl02_radioList_0">20岁及以下</label></td><td><input id="VoteView_ctl02_radioList_1" type="radio"name="VoteView1"value="age2"><label for="VoteView_ctl02_radioList_1">21-35岁</label></td></tr><tr><td><input id="VoteView_ctl02_radioList_2" type="radio"name="VoteView1"value="age3"><label for="VoteView_ctl02_radioList_2">36-50岁</label></td><td><input id="VoteView_ctl02_radioList_3" type="radio"name="VoteView1"value="age4"><labelfor="VoteView_ctl02_radioList_3">50岁</label></td></tr></tbody></table></div></td></tr><table></body> 7.toupiao1.jsp<body bgcolor="FF1493"><%request.setCharacterEncoding("UTF-8");Access a=new Access();//年龄String age=request.getParameter("VoteView1");if(age!=null){String agesql="update nianling set "+age+"="+age+"+1";a.executeUpdate(agesql);//收入String shouru=request.getParameter("VoteView2");if(shouru!=null){String shourusql="update shouru set "+shouru+"="+shouru+"+1";a.executeUpdate(shourusql);}//学历String xueli=request.getParameter("VoteView3");if(xueli!=null){String xuelisql="update xueli set "+xueli+"="+xueli+"+1";a.executeUpdate(xuelisql);}//娱乐String yule[]=request.getParameterValues("VoteView4");if(yule!=null){for(int i=0; i<yule.length;i++){String yulesql="update yule set "+yule[i]+"="+yule[i]+"+1;";a.executeUpdate(yulesql);System.out.println(yulesql);}}//体育String tiyu[]=request.getParameterValues("VoteView5");if(tiyu!=null){for(int i=0; i<tiyu.length;i++){String tiyusql="update tiyu set "+tiyu[i]+"="+tiyu[i]+"+1;";a.executeUpdate(tiyusql);System.out.println(tiyusql);}}//电影String dianying[]=request.getParameterValues("VoteView6");if(dianying!=null){for(int i=0; i<dianying.length;i++){String dianyingsql="update dianying set"+dianying[i]+"="+dianying[i]+"+1;";a.executeUpdate(dianyingsql);System.out.println(dianyingsql);}}response.sendRedirect("result.jsp");%></body>五、实验总结通过本次实验,让自己进一步熟悉和领悟JSP、JavaBean和Java语言的语法结构和使用方法,让自己对javaweb程序设计有了更加深刻的认识,提高了自己的计算机操作能力,提高了自己的实践动手能力。
一、课程设计的内容编程建立一个小型电子投票系统二、课程设计的要求与数据1.开发环境:Wintc2.需求分析:电子投票平台作为一个用来进行投票统计的应用软件1)编程建立一个小型电子投票系统,其中包含电子投票、票数统计功能,。
尽量做到提供一个简单的人机界面,系统界面友好,使用方便。
2)软件的使用者分为两类,一类为管理员,可以对候选人信息进行初始化和修改,还可浏览候选人信息介绍,可对候选人的票数进行排序以及对系统的用户进行管理,创建使用者用户名和密码,还可以对用户信息进行增加、删除、修改和查询操作等。
另一类为使用者—普通投票者,该类用户需要用管理员分配的用户名和密码正确登录系统,可以查询候选人介绍、投票等。
投票是只需做到输入自己想要投票的候选人编号即可完成投票。
3.功能需求描述电子投票系统是用来进行投票统计的系统软件,进入投票系统后应该需要先进行身份验证。
如果是投票人,就可以用浏览和查询的方式了解各个候选人的介绍信息,根据候选人的介绍信息决定将选票投向哪位候选人。
① 投票人的投票方式:输入要选举的候选人的编号,即可完成投票;②投票人了解候选人的方式:浏览候选人列表,输入序号查询候选人介绍。
如果是管理人员就可以进以下操作:①初始化候选人信息:在系统投入使用前需要先将需要投票选举的候选人信息录入系统中,以便投票和查看。
管理员的初始化工作就是将候选人的序号、姓名和简介录入系统。
②浏览候选人简介:为随时掌握候选人的信息,进行修改,管理员可以浏览候选人简介。
③修改候选人简介:当候选人信息有所变化时,输入候选人序号,对信息进行修改。
④查询投票情况:管理员有权查询当前各个候选人得票情况.⑤清除投票信息:当投票结束后,管理员可清除系统中所有候选人的票数,使之归零。
⑥安全管理:管理员可以对投票人信息进行管理,投票人只有用管理员规定的用户名和密码才能进入系统进行投票。
管理员还可以更改用户名、密码和权限,并对投票人信息进行增加、删除、查询、排序和初始化等操作。
软件开发新技术说明书题目: 在线投票系统院系:计算机科学与工程学院专业班级:计科14-3班学号: **********学生姓名:***指导教师:***2017 年 11 月 30 日安徽理工大学课程设计(论文)任务书摘要相较于传统投票方式,在线投票是任何一次商演(时间短、影响范围小)、电视(投入大,效果不明显)或者户外广告(不能快速吸引消费者眼球)在投入产出效率上都难以企及的。
在线投票能够迅速提升活动商家的广告价值,降低商家广告成本,提高知名度以及美誉度。
网络投票的主要目的就是人群放大:通过网络投票,可以吸引大量的选手及相关亲友的关注,通过以往的数据统计,一名选手参与投票,会带动60人参与。
这样可以最大程度的向客户展现实力,扩大社会影响力。
系统分为前台和后台两部分,前台主要是对普通用户开放。
普通用户将实现注册、投票、重选等操作;后台主要作用是管理员实现登录、投票管理、用户管理等操作。
依据前台和后台的不同权限需求,在线投票系统主要分为普通用户和管理员两个功能模块。
普通用户模块将实现用户注册、用户登录、用户投票以及投票重选和查看投票结果等功能。
管理员模块将实现管理员登录、发布新投票、撤消投票、查看所有投票、编辑和删除新投票以及用户管理等功能。
关键词:网上投票、JSP、MYSQL目录1系统分析 (5)1.1 系统简介 (5)1.2 系统功能 (5)2系统设计 (6)2.1 开发工具简介 (6)2.2 总体功能模块设计 (7)3系统实现 (10)3.1 数据库实现 (10)3.2 程序模块实现 (11)4总结 (16)4.1 设计体会 (16)4.2 系统改进 (16)参考文献 (18)1系统分析1.1 系统简介随着科技的飞速发展,计算机已经广泛的应用于各个领域之中,而且日趋普及。
在计算机应用中很重要的一部分就是编程语言,编程语言的出现打开了计算机应用的新篇章。
在这些编程语言中JSP占有着重要的地位,JSP拥有Java编程语言“一次编写,各处运行”的特点[1]。
简易投票系统java课程设计一、课程目标知识目标:1. 学生能理解Java语言中面向对象编程的基本概念,包括类、对象、继承、封装等。
2. 学生能掌握Java集合框架的使用,了解List、Set等数据结构的特点及应用场景。
3. 学生能掌握Java异常处理机制,了解其作用和用法。
4. 学生能了解简易投票系统的业务需求,理解其功能模块及其之间的关系。
技能目标:1. 学生能够运用面向对象编程思想,独立完成简易投票系统的设计与实现。
2. 学生能够运用Java集合框架,实现对投票数据的存储、查询和统计功能。
3. 学生能够编写符合Java编程规范的代码,养成良好的编程习惯。
4. 学生能够运用异常处理机制,提高程序的健壮性。
情感态度价值观目标:1. 学生通过课程学习,增强对计算机编程的兴趣和热情,培养自主学习能力和团队协作精神。
2. 学生能够认识到编程在解决实际问题中的价值,提高信息素养,培养创新思维。
3. 学生能够遵循编程道德规范,尊重他人知识产权,养成良好的职业道德。
本课程针对高年级学生,具备一定的Java编程基础。
通过本课程的学习,学生将能够综合运用所学知识,独立设计和实现简易投票系统。
课程注重理论与实践相结合,培养学生解决实际问题的能力,提高编程水平和综合素质。
在教学过程中,教师应关注学生的个体差异,给予个性化指导,确保学生达到课程目标。
课程目标的具体分解和学习成果的评估,将有助于后续教学设计和教学效果的提升。
二、教学内容1. 面向对象编程基础:- 类与对象的概念及其关系- 继承与多态的实现原理- 封装的意义及实现方法2. Java集合框架:- List、Set、Map接口及其实现类- 集合框架中的常用方法- 集合的应用场景及性能分析3. Java异常处理:- 异常的分类及处理机制- try-catch-finally结构的使用- 自定义异常的定义与抛出4. 简易投票系统设计与实现:- 投票系统的需求分析- 系统功能模块划分- 数据存储与业务逻辑实现5. 编程规范与代码质量:- Java编程规范- 代码审查与调试- 提高代码可读性与可维护性教学内容参考教材相关章节,按照以下进度安排:1. 面向对象编程基础(2课时)2. Java集合框架(2课时)3. Java异常处理(2课时)4. 简易投票系统设计与实现(4课时)5. 编程规范与代码质量(2课时)在教学过程中,教师应结合实际案例,引导学生掌握教学内容,确保学生能够将所学知识应用于实际项目中。
课程设计(论文)任务书软件学院学院09软件工程+会计学专业 2 班一、课程设计(论文)题目简单投票管理系统(小应用程序Applet)二、课程设计(论文)工作自 2010 年 12 月20 日起至2010 年12 月 24 日止。
三、课程设计(论文) 地点: 软件学院实训中心四、课程设计(论文)内容要求:1.本课程设计的目的(1)掌握Java语言的程序设计方法;(2)理论联系实际,进一步提高学生的软件开发技术;(3)培养学生分析、解决问题的能力;(4)提高学生实践论文撰写能力。
2.课程设计的任务及要求1)课程设计任务:设计一个投票管理系统。
2)创新要求:(1)新增背景音乐(2)新增程序的“使用说明”(3)在输入候选人之前选项框和部分功能键被禁用,防止乱点导致统计结果有误(4)新增保存结果功能(5)新增版权所属标签3)课程设计论文编写要求(1)课程设计任务及要求(2)设计思路--工作原理、功能规划(3)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等。
(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。
(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。
(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)(7)报告按规定排版打印,要求装订平整,否则要求返工;(8)课设报告的装订顺序如下:封面---任务书---中文摘要---目录----正文---附录(代码及相关图片)(9)严禁抄袭,如有发现,按不及格处理。
4)课程设计评分标准:(1)学习态度:10分;(2)系统设计:20分;(3)编程调试:20分;(4)回答问题:20分;(5)论文撰写:30分。
5)参考文献:(1)丁振凡. Java语言实用教程(第2版)[M]. 北京邮电大学出版社. 2008.1(2)丁振凡. Java语言实用教程实验指导(第2版)[M]. 北京邮电大学出版社. 2008.1 (3)杨树林等. Java语言最新实用案例教程(第2版)[M]. 清华大学出版社. 2010.7 6)课程设计进度安排1.准备阶段(4学时):选择设计题目、了解设计目的要求、查阅相关资料2.程序模块设计分析阶段(4学时):程序总体设计、详细设计3.代码编写调试阶段(8学时):程序模块代码编写、调试、测试4.撰写论文阶段(4学时):总结课程设计任务和设计内容,撰写课程设计论文学生签名:2010 年12 月20 日课程设计(论文)评审意见(1)学习态度(10分):优()、良()、中()、一般()、差();(2)系统设计(20分):优()、良()、中()、一般()、差();(3)编程调试(20分):优()、良()、中()、一般()、差();(4)回答问题(20分):优()、良()、中()、一般()、差();(5)论文撰写(30分):优()、良()、中()、一般()、差();评阅人:职称:讲师2010 年12 月25 日目录一、课程设计任务及要求 0二、需求分析 (2)三、设计思路 (3)四、详细设计 (6)五、运行调试与分析讨论 (15)六、设计体会与小结 (19)七、参考文献 (20)一、课程设计任务及要求设计一个如图1所示的投票管理系统界面,要求输入候选人名单后,点击确认按钮实现使用选择框代表候选人,计选择框的名字就是候选人的名字。
投票管理系统课程设计c一、教学目标本课程旨在让学生了解和掌握投票管理系统的基本原理和实际应用,通过学习,学生应能够:1.知识目标:理解电子投票系统的基本概念、架构和工作原理;掌握常见的投票算法和安全性分析。
2.技能目标:能够设计简单的投票管理系统,进行投票数据的收集、统计和分析;能够对投票系统进行安全性能评估。
3.情感态度价值观目标:培养学生对、公正、透明投票过程的认同,提高其对信息技术在投票系统中应用的意识和责任感。
二、教学内容教学内容将围绕投票管理系统的基本概念、架构、算法和安全性能展开,具体包括:1.电子投票系统的基本概念:介绍电子投票系统的定义、特点和分类。
2.投票管理系统的架构:讲解投票管理系统的组成,包括投票站、投票箱、投票算法等。
3.投票算法:介绍常见的投票算法,如简单多数投票、排序投票等,并通过实例进行分析。
4.安全性分析:讲解投票系统的安全性要求,分析可能存在的安全风险和攻击手段,以及相应的防护措施。
三、教学方法为了提高学生的学习兴趣和主动性,将采用多种教学方法,包括:1.讲授法:讲解基本概念、原理和算法。
2.案例分析法:通过分析实际案例,使学生更好地理解投票管理系统的工作原理和应用。
3.讨论法:学生进行小组讨论,分享对安全性分析和投票算法的研究成果。
4.实验法:安排实验课程,让学生动手设计简单的投票管理系统,提高其实践能力。
四、教学资源教学资源包括:1.教材:《投票管理系统设计与实现》。
2.参考书:介绍电子投票系统、算法和安全性的相关书籍。
3.多媒体资料:包括PPT、视频教程等。
4.实验设备:计算机、网络设备等,用于实验课程的开展。
五、教学评估为了全面、客观地评估学生的学习成果,将采用以下评估方式:1.平时表现:包括课堂参与度、小组讨论和实验操作等,占总评的30%。
2.作业:布置与课程相关的研究性作业,如投票算法的设计与分析,占总评的20%。
3.考试:包括期中考试和期末考试,内容涵盖课程基础知识与实践应用,占总评的50%。
在线投票系统课程设计一、课程目标知识目标:1. 学生理解在线投票系统的基本原理,掌握相关概念,如投票、计票、数据安全等;2. 学生了解在线投票系统的优点和潜在风险;3. 学生掌握在线投票系统的基本操作流程和使用方法。
技能目标:1. 学生具备分析在线投票系统需求的能力,能够设计简单的投票流程;2. 学生能够运用编程语言或工具搭建一个基本的在线投票系统;3. 学生通过实际操作,提升信息处理、问题解决和团队协作能力。
情感态度价值观目标:1. 学生培养对网络安全的重视,树立正确的网络道德观念;2. 学生养成积极参与公共事务、行使公民权利的责任感;3. 学生在团队合作中学会尊重他人意见,培养批判性思维和创新精神。
课程性质分析:本课程为信息技术课程,旨在通过在线投票系统教学,提高学生对信息技术的应用能力和网络安全意识。
学生特点分析:六年级学生已具备一定的信息素养,对新事物充满好奇,具备一定的自主学习能力,但需引导其正确使用网络。
教学要求:1. 紧密联系课本内容,注重理论与实践相结合;2. 教学过程中注重启发式教学,引导学生主动思考、探索;3. 关注学生个体差异,提供个性化指导,确保每个学生都能达到课程目标。
二、教学内容本章节教学内容围绕在线投票系统设计,依据课程目标,科学系统地组织以下内容:1. 在线投票系统概述- 投票系统的发展历程;- 在线投票系统的定义、特点及分类;- 投票系统的应用场景。
2. 在线投票系统原理与技术- 投票系统的工作原理;- 数据加密技术及其在投票系统中的应用;- 投票系统的安全性分析。
3. 在线投票系统设计与实现- 投票系统需求分析;- 投票流程设计;- 投票系统的编程实现;- 投票系统的测试与优化。
4. 在线投票系统应用案例- 国内外在线投票系统案例分析;- 在线投票在我国的应用现状及发展趋势;- 投票系统在校园民主管理中的应用。
教学安排与进度:第一课时:在线投票系统概述、原理与技术;第二课时:在线投票系统设计与实现;第三课时:在线投票系统应用案例及讨论。
目录1 课程设计内容 (1)2 课程设计目的 (1)3 系统需求分析 (1)3.1 系统概述 (1)3.2 系统运行环境 (2)3.3 功能需求分析 (2)4 系统总体设计 (3)4.1 开发与设计的总体思想 (3)4.2 系统模块结构图 (4)4.3 系统流程图 (4)4.4 系统界面设计 (6)4.5 数据库设计 (8)5 系统详细设计 (9)5.1 应用部署图 (10)5.2系统关键类设计 (10)5.3系统关键页面设计 (13)6小结 (17)1 课程设计内容本设计开发一个投票管理系统,主要涉及JSP技术和数据库系统两方面的知识的综合运用。
2 课程设计目的在已经掌握相关的专业理论知识的基础上,巩固所学知识、增强开发能力、提高专业素质,促进全面发展。
通过计算机应用大型作业这一实践环节,培养系统综合应用所学系列课程基本理论、基本知识的能力,使所学的理论知识系统化,培养独立思考、独立分析、独立解决问题的能力。
通过作业小组成员的集体合作,培养合作共事、协同工作的能力,为今后更好地胜任计算机应用的开发打好扎实的基础。
3 系统需求分析本系统实现了网络上较为常用的投票、评论功能,为调查、收集、统计各类用户的意见反馈提供了一个方便易用的网上平台。
本系统遵循软件工程标准,并按照软件工程规定的流程进行项目的开发。
3.1 系统概述本系统功能比较简单,主要有以下功能:显示页面需要从数据源取出所有数据显示,供使用者浏览,当用户选择某个选项单击提交按钮时,将完成一次投票功能。
当用户完成一次投票后,不允许再反复投票,如果用户再提交,则提示“您以投过票,请不要反复投票”。
当用户访问时单击查看选项时,可以看到所有选项的得票数。
同时在首页可以查看用户对这次投票的评论,如果访问者想评论时,可根据系统首页的提示进行注册、对投票进行评论等。
管理员用户可以通过登录进入投票管理系统的管理页面进行修改、删除、增加投票项,以及注册用户、评论管理等。
第1篇一、实训背景随着互联网的普及和信息技术的发展,电子投票系统已成为现代社会不可或缺的一部分。
为了提高投票效率和准确性,降低人为干预的风险,我们进行了一次投票程序实训,旨在设计和实现一个简单、高效、安全的投票系统。
二、实训目标1. 理解电子投票系统的基本原理和设计思路。
2. 掌握编程语言(如Python)在投票程序开发中的应用。
3. 熟悉数据库技术,实现投票数据的存储和管理。
4. 确保投票过程的安全性,防止作弊行为。
5. 完成投票系统的功能测试和性能优化。
三、实训内容1. 需求分析- 投票对象:某大学学生会选举- 投票内容:学生会主席、副主席、各部部长- 投票方式:在线投票- 投票人数:1000人- 投票时间:一周2. 系统设计- 系统架构:采用前后端分离的架构,前端负责用户界面展示和交互,后端负责数据处理和业务逻辑。
- 技术选型:前端使用HTML、CSS、JavaScript,后端使用Python和Django 框架,数据库使用MySQL。
- 功能模块:- 用户注册与登录- 投票页面展示- 投票数据处理- 投票结果统计3. 系统实现- 前端实现:设计简洁、美观的用户界面,实现用户注册、登录、投票等功能。
- 后端实现:- 使用Django框架搭建后端服务,实现用户管理、投票管理、结果统计等功能。
- 使用MySQL数据库存储用户信息、投票信息、结果数据等。
- 安全实现:- 使用HTTPS协议加密数据传输,保证数据安全。
- 使用JWT(JSON Web Token)技术实现用户身份验证和授权。
- 设置投票截止时间,防止超时投票。
4. 系统测试- 功能测试:对各个功能模块进行测试,确保功能正常。
- 性能测试:对系统进行压力测试,评估系统在高并发情况下的性能表现。
- 安全测试:对系统进行安全漏洞扫描,确保系统安全。
四、实训结果1. 成功设计和实现了投票系统,满足了实训目标。
2. 系统功能完善,包括用户注册、登录、投票、结果统计等。
课程设计(论文)任务书软件学院学院09软件工程+会计学专业 2 班一、课程设计(论文)题目简单投票管理系统(小应用程序Applet)二、课程设计(论文)工作自 2010 年 12 月20 日起至2010 年12 月 24 日止。
三、课程设计(论文) 地点: 软件学院实训中心四、课程设计(论文)内容要求:1.本课程设计的目的(1)掌握Java语言的程序设计方法;(2)理论联系实际,进一步提高学生的软件开发技术;(3)培养学生分析、解决问题的能力;(4)提高学生实践论文撰写能力。
2.课程设计的任务及要求1)课程设计任务:设计一个投票管理系统。
2)创新要求:(1)新增背景音乐(2)新增程序的“使用说明”(3)在输入候选人之前选项框和部分功能键被禁用,防止乱点导致统计结果有误(4)新增保存结果功能(5)新增版权所属标签3)课程设计论文编写要求(1)课程设计任务及要求(2)设计思路--工作原理、功能规划(3)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等。
(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。
(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。
(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)(7)报告按规定排版打印,要求装订平整,否则要求返工;(8)课设报告的装订顺序如下:封面---任务书---中文摘要---目录----正文---附录(代码及相关图片)(9)严禁抄袭,如有发现,按不及格处理。
4)课程设计评分标准:(1)学习态度:10分;(2)系统设计:20分;(3)编程调试:20分;(4)回答问题:20分;(5)论文撰写:30分。
5)参考文献:(1)丁振凡. Java语言实用教程(第2版)[M]. 北京邮电大学出版社. 2008.1(2)丁振凡. Java语言实用教程实验指导(第2版)[M]. 北京邮电大学出版社. 2008.1 (3)杨树林等. Java语言最新实用案例教程(第2版)[M]. 清华大学出版社. 2010.7 6)课程设计进度安排1.准备阶段(4学时):选择设计题目、了解设计目的要求、查阅相关资料2.程序模块设计分析阶段(4学时):程序总体设计、详细设计3.代码编写调试阶段(8学时):程序模块代码编写、调试、测试4.撰写论文阶段(4学时):总结课程设计任务和设计内容,撰写课程设计论文学生签名:2010 年12 月20 日课程设计(论文)评审意见(1)学习态度(10分):优()、良()、中()、一般()、差();(2)系统设计(20分):优()、良()、中()、一般()、差();(3)编程调试(20分):优()、良()、中()、一般()、差();(4)回答问题(20分):优()、良()、中()、一般()、差();(5)论文撰写(30分):优()、良()、中()、一般()、差();评阅人:职称:讲师2010 年12 月25 日目录一、课程设计任务及要求 (1)二、需求分析 (3)三、设计思路 (4)四、详细设计 (7)五、运行调试与分析讨论 (16)六、设计体会与小结 (20)七、参考文献 (21)一、课程设计任务及要求设计一个如图1所示的投票管理系统界面,要求输入候选人名单后,点击确认按钮实现使用选择框代表候选人,计选择框的名字就是候选人的名字。
点击取消按钮候选人输入框为空,重新输入候选人名单。
选中候选人的选择框时,表示给该候选人投一票。
点击确定按钮时表示产生一张选票。
点击刷新按钮回到程序的初始界面重新设置候选人。
根据选择框的状态变化统计出候选人的最后得票数,并可按票选取多少点击排序按钮对候选人进行排序。
(其中,最多从候选人中选取3人,如果一张选票选取多于3人,该票就作废票处理。
如果一个也没投票,就作弃权处理。
程序能显示一共统计了多少选票,并能统计出废票和弃权票的票数。
图1二、需求分析本程序主要需要掌握窗口的布局和按钮事件的触发相关知识,所有部件都可以添加到面板Panel上,显示提示信息需要用到标签Label,输入框需要新建TextField,按钮用Button,选票需要新建Checkbox复选框来实现,至于下面那个用来显示各个候选人得票数的要先新建文本框TextField 添加到一个小面板上,再新建个Scroll滚动条,将建有文本框的面板添加到Scroll滚动条上就可以了。
为了做出这个界面还需要对各个部件进行摆放,为了达到那个效果,可以将整个界面分成很多个小块,每一小块都是个面板,最后再拼接起来,每个小块都设置好布局setLayout,在这里主要用到网格布局GridLayout,流式布局FlowLayout和BorderLayout方位布局,设置面板的颜色可以用setBackground()来实现。
做好界面后,接下来就需要去实现各个功能了。
因为各个功能都是通过按钮来实现的,所以要对按钮进行注册监听addActionlistener(),监听之后就是对按钮事件的处理了actionPerformed(ActionEvent e)。
要一个字符串中的人名,可以用StringTokenizer字符串分析器来获取候选人的名字,其中还要用到里面的一些方法,比如nextToken()、hasMoreTokens ()、countTokens()。
还有setEnabled()方法可以设置按钮是否可用,setState(boolean)可以设置复选框是否激活,在文本框或文本域中输出和获取信息可以分别用setText()和getText(),根据候选人数将多余的复选框去掉,可以让设置多余的为不可见setVilible(flase)这样就行了。
对于附加功能如背景音乐,可以用AudioClip接口、public void play ()控制播放、public void loop()实现循环播放、public void stop ()停止播放当前音乐、使用说明和保存结果都是需要通过新建Franme窗体实现的。
三、设计思路一拿到这个题目我就构思好了大概的方向,那就是先制作主界面,然后再实现各个按钮的功能。
界面设计时,先定义好各个部件:标签Label、文本框TextFiled、按钮Button、复选框Checkbox、Scroll滚动条,我把整个界面分成很多个小面板,每一行部件都在一个小面板上面,最后将这些小面板一个个添加上去add(),像流式布局FlowLayout、方位布局BorderLayout、网格布局GridLayout主要是用到了这三种布局,中间那几块面板通过setBackground()将其背景色改为绿色。
经过不断修改测试运行,一个投票系统的主界面就做出来了。
接下来就是对各个功能的实现了,定义几个类变量来记录投票相关记录如:Checkbox candidate[] //选择框数组,代表候选人TextField personvote[] //文本条数组,显示每个人的得票情况int count[] //记录每个人的得票数int totalvote=0, //总票数int peoplenumber=0; //候选人个数int count1=0,invalidatedTicket=0,abstention=0; //分别表示选的人数,废票数,弃权票数对各个按钮进行注册监听addActionListener()在输入候选人名单时是输入一串名字,所以要从这一串名字中单个的提取出来并统计出候选人个数,在完成这项功能时要用到StringTokenizer类。
String g=canditate.getText();//获取输入的候选人StringTokenizer st=new StringTokenizer(g);//字符串分析器peoplenumble=st.countTokens();//统计候选人数int i=0;while(st.hasMoreTokens()){candidatelist[i]=st.nextToken();i++;}//获取语言符号(候选人名单)点击确认按钮后,根据候选人个数添加单选按钮,并以候选人名字作为单选按钮的标签名。
for(int j=0;j<10;j++) candidate[j].setLabel(candidatelist[j]); //将候选人名单添加到复选框里将多余的选框设置为不可见for(int j=peoplenumble;j<10;j++)candidate[j].setVisible(false)点击“取消”的话输入候选人的文本框为空,此时可以重新输入,点击下面“确定”则统计选了多少人并通过这个判断是废票还是弃权,然后分别给候选人增加票数并输出相应的信息;for(int j=0;j<10;j++){if(candidate[j].getState())count1++;}//统计选了多少人if(count1==0) abstention++;//一个都没选则选票作为弃权if(count1>3) invalidatedTicket++;//选的人数超过3个则选票作废if(count1<=3&&count1>0){for(int j=0;j<peoplenumble;j++)if(candidate[j].getState())count[j]++;}//统计候选人所得票数out.setText("已经统计了:"+totalvote+"张选票,其中弃权票:"+abstention+"作废票:"+invalidatedTicket);//输出统计结果for(int j=0;j<peoplenumble;j++)personvote[j].setText(""+candidatelist[j]+"得票数:"+count[j]);//输出各个候选人得票数点击“排序”则比较各个候选人的票数由高到低进行排序for(int j=0;j<peoplenumble;j++)for(int i=j+1;i<peoplenumble;i++)if(count[j]<count[i]){m=count[j];count[j]=count[i];count[i]=m;n=candidatelist[j];candidatelist[j]=candidatelist[i];candidat elist[i]=n;}//按得票数由多到少进行排序“刷新”按钮通过清空所有文本框中的数据,所有变量变为初始化值;“使用说明”通过弹出Frame窗体来实现,在该窗体中新建了几个文本框TextFeild和Scroll滚轮用来显示帮助信息。