基于JAVAGUI的投票管理系统的设计与实现

合集下载

智慧投票系统使用设计方案

智慧投票系统使用设计方案

智慧投票系统使用设计方案智慧投票系统是一种基于技术手段的投票方式,旨在提高投票的效率和公正程度。

下面给出一个智慧投票系统的设计方案。

一、系统架构智慧投票系统采用分布式架构,包括前端、后端和数据库三个主要组成部分。

1. 前端:提供用户界面,包括投票页面、选项选择、投票倒计时、投票结果展示等。

2. 后端:负责处理用户请求、用户身份验证、投票计算、数据存储等核心功能。

3. 数据库:存储用户信息、投票选项、投票结果等相关数据。

二、技术实现1. 前端技术:采用HTML/CSS/JavaScript等前端技术,实现用户界面的展示和交互。

2. 后端技术:采用Java、Python等编程语言,使用Spring框架实现后端逻辑的处理。

3. 数据库技术:使用MySQL等关系型数据库,存储用户信息、投票选项和投票结果等数据。

4. 安全性设计:使用HTTPS协议保护用户数据传输的安全,使用用户身份验证确保投票的合法性。

5. 技术扩展性:采用微服务架构,将功能模块划分为不同的服务,方便后续的功能扩展和维护。

三、功能设计1. 用户注册:用户可以注册个人账号,或者通过第三方平台账号登录。

2. 选项创建:管理员可以创建投票选项,设置选项名称、描述、投票生效时间等相关信息。

3. 投票发起:用户可以选择投票选项,并进行投票。

4. 统计分析:系统可以实时统计投票的结果,并对结果进行展示和分析,包括图表展示、数据分析等。

5. 投票倒计时:系统可以设置投票的倒计时时间,提醒用户进行投票。

6. 投票结果公示:系统可以设置投票结果的公示时间,确保投票公正和透明。

7. 投票安全性:系统可以确保投票的安全性和合法性,防止重复投票和非法操作。

四、系统优势1. 提高投票效率:智慧投票系统可以减少纸质投票的流程和时间,提高投票的效率。

2. 提升投票公正性:智慧投票系统可以实现投票结果的实时统计和公示,减少人为操作的干扰,提升投票的公正性。

3. 数据存储方便:智慧投票系统将用户信息、投票选项和投票结果等数据存储在数据库中,方便数据的存储和查询。

java实现投票程序设计

java实现投票程序设计

java实现投票程序设计本⽂实例为⼤家讲述了java实现投票程序设计代码,分享给⼤家供⼤家参考,具体内容如下运⾏效果图:程序如下:import java.awt.*;import java.awt.Event.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.StringTokenizer;import javax.swing.*;public class VoteTest implements ActionListener{private JFrame frame;private JPanel p1,p2,p3,p2_1;private JLabel label1,label2,label3;private JTextField name,votemess;private JTextField schoolVote[];private JButton com,con,sure,resh,sort;private Checkbox checkbox[];private int[] count;private int totalVote,schoolNumber,max,dis,giveup;public VoteTest(){frame=new JFrame("中国⼤学排⾏榜选票系统v1.0");p1=new JPanel();p2=new JPanel();p3=new JPanel();label1=new JLabel("⾸先输⼊候选学校的名字(数量不超过10,名字之间⽤逗号分隔):");label2=new JLabel("⽤下⾯的选择框统计选票:",JLabel.CENTER);label3=new JLabel("选举结果:");name=new JTextField(10);votemess=new JTextField(46);schoolVote=new JTextField[10];com=new JButton("确认");con=new JButton("取消");sure=new JButton("确定");resh=new JButton("刷新");sort=new JButton("排序");checkbox=new Checkbox[10];p2_1=new JPanel();count=new int[10];//记录学校的选票数totalVote=0;schoolNumber=0;max=3;dis=0;giveup=0;init();}public void init(){frame.setLayout(new GridLayout(3,1));frame.add(p1);frame.add(p2);frame.add(p3);p1.setLayout(new BorderLayout());p1.add(label1,BorderLayout.NORTH);p1.add(name,BorderLayout.CENTER);JPanel p1_3;p1_3=new JPanel();p1_3.add(com);p1_3.add(con);p1_3.add(label2);p1.add(p1_3,BorderLayout.SOUTH);p2.setLayout(new BorderLayout());JPanel p2_2;p2_2=new JPanel();p2_1.setLayout(new GridLayout(2,5));for(int i=0;i<=9;i++){checkbox=new Checkbox();p2_1.add(checkbox);}p2_2.add(sure);p2_2.add(resh);p2_2.add(sort);p2.add(p2_1,BorderLayout.CENTER);p2.add(p2_2,BorderLayout.SOUTH);p3.setLayout(new BorderLayout());JPanel p3_1,p3_2;p3_1=new JPanel();p3_2=new JPanel();p3_1.add(label3);p3_1.add(votemess);p3_2.setLayout(new GridLayout(10,1));for(int i=0;i<=9;i++){schoolVote=new JTextField();p3_2.add(schoolVote);}ScrollPane scroll=new ScrollPane();scroll.add(p3_2);p3.add(p3_1,BorderLayout.NORTH);p3.add(scroll,BorderLayout.CENTER);com.addActionListener(this);con.addActionListener(this);sure.addActionListener(this);resh.addActionListener(this);sort.addActionListener(this);}public void show(){frame.pack();frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/* (non-Javadoc)* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString s[]=new String[10];if(e.getSource()==com){p2_1.removeAll();String s_name=name.getText();//提取候选的名字,名字⽤逗号(英⽂逗号或汉⽂逗号)分隔;StringTokenizer fenxi=new StringTokenizer(s_name,",,");schoolNumber=fenxi.countTokens();//获取候选的个数int i=0;while(fenxi.hasMoreTokens()){ //⽤单选框代表候选,并添加到⾯板p2_1s=fenxi.nextToken();p2_1.add(checkbox);checkbox.setLabel(s);i++;}for(int k=0;k<schoolNumber;k++){schoolVote[k].setText(null);}}else if(e.getSource()==con){name.setText(null);com.setEnabled(true);for(int k=0;k<schoolNumber;k++){schoolVote[k].setText(null);}}else if(e.getSource()==sure){totalVote=totalVote+1;com.setEnabled(false);int number=0;for(int k=0;k<schoolNumber;k++){if(checkbox[k].getState()){number++;}}if(number>max){dis++;for(int k=0;k<schoolNumber;k++){checkbox[k].setState(false);}}else if(number==0){giveup++;}else if(number>0&&number<=max){for(int k=0;k<schoolNumber;k++){if(checkbox[k].getState()){count[k]=count[k]+1;checkbox[k].setState(false);schoolVote[k].setText(checkbox[k].getLabel()+"的得票数:"+count[k]);}else{schoolVote[k].setText(checkbox[k].getLabel()+"的得票数:"+count[k]);}}}votemess.setText("⼰统计了:"+totalVote+"张选票,其中弃权票:"+giveup+"作废票:"+dis); }else if(e.getSource()==sort){for(int i=0;i<schoolNumber;i++){for(int j=i+1;j<schoolNumber;j++){if(count[j]>count){String str_temp=schoolVote.getText();schoolVote.setText(schoolVote[j].getText());schoolVote[j].setText(str_temp);int nnn=count;count=count[j];count[j]=nnn;}}}sort.setEnabled(false);sure.setEnabled(false);}else if(e.getSource()==resh){totalVote=0;votemess.setText("⼰统计了:"+totalVote+"张选票");name.setText(null);com.setEnabled(true);sure.setEnabled(true);sort.setEnabled(true);for(int i=0;i<=4;i++){count=0;schoolVote.setText(null);p2_1.removeAll();}}}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubnew VoteTest().show();}}希望本⽂所述对⼤家学习java软件编程有所帮助。

Java软件设计投票系统总报告

Java软件设计投票系统总报告

计算机学院基于J a v a的软件开发投票系统项目总报告小组序号:09组员姓名:年级班级:提交日期:2014年6 月12 日目录1. 导论 (1)1.1 系统目标 (1)1.2 参考文献 (1)1.3 概述 (1)2. 项目方案 (1)2.1硬件环境 (1)2.2软件环境 (1)3. 需求分析 (2)3.1 概述 (2)3.2 功能需求 (2)3.3 非功能需求 (2)3.4 系统模型 (3)3.4.1 用例模型 (3)3.4.2 对象模型 (5)3.4.3 动态模型 (8)4. 系统设计 (10)4.1 概述 (10)4.2 全局软件控制 (11)4.3 子系统分解 (14)4.4 数据库的设计 (15)5. 系统实现 (16)5.1投票模块主要代码 (16)5.2管理员模块主要代码 (18)6. 项目总结 (20)7. 项目组成员分工和组内评分 (20)1.导论1.1系统目标投票系统可以为用户提供相应主题的投票、投票结果数据分析和结论,使用方便快捷、界面简洁明了,系统稳定、安全、维护周期长且维护简单。

1.2参考文献[1] 耿祥义,张跃平.Java面向对象程序设计.北京:清华大学出版社,2010.1.[2] 刘瑞新,张兵义.SQL Server数据库技术及应用教程.电子工业出版社.2012.8.[3] 郑人杰,马素霞.软件工程概论.机械工业出版社.2009.11.1.3概述本次《基于Java的软件开发》项目为投票管理系统,这是我们小组第一次经手做一个较为完整、有计划、条理清晰地项目。

本投票系统是基于Java语言、SQL Server数据库开发的,使用了面向对象的设计方法、可以在大多数操作系统和较低硬件条件下就能使用的、界面友好和方便使用的软件系统。

系统功能主要包括两个方面。

第一:管理员部分。

管理员是系统的维护者,可以对用户和投票主题等进行操作,包括:添加用户、查看用户信息、修改用户信息、修改投票主题、查看投票主题等等。

Java中的GUI设计原则与最佳实践

Java中的GUI设计原则与最佳实践

Java中的GUI设计原则与最佳实践在Java开发领域,GUI(Graphical User Interface)设计是一个非常重要的方面。

一个良好的GUI设计可以提升用户体验,增强应用程序的功能性和可用性。

本文将探讨一些Java中的GUI设计原则与最佳实践,帮助开发者创建出令人满意的用户界面。

1. 界面简洁明了一个好的GUI应该尽量简洁明了,避免过多的视觉元素和复杂的布局。

使用统一的字号、颜色和图标可以提高界面的一致性和可读性。

同时,尽量减少用户需要进行的操作次数,提供直观的导航和操作方式,使用户能够快速找到需要的功能。

2. 遵循MVC架构MVC(Model-View-Controller)是一种常用的软件架构模式,可以将应用程序的数据、界面和逻辑进行解耦。

在Java的GUI设计中,我们可以使用Swing或JavaFX等框架来实现MVC架构。

将视图(View)与模型(Model)分离,使用控制器(Controller)来协调两者之间的交互,可以简化设计和维护过程。

3. 使用合适的布局管理器Java提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout和GridBagLayout等。

开发者应根据界面的结构和需求选择合适的布局管理器。

合理的布局可以保证组件的自适应性和美观性,同时提高界面的稳定性和可维护性。

4. 响应用户交互良好的GUI设计应该及时响应用户的交互操作,给予用户明确的反馈。

例如,当用户点击按钮或输入框时,应该有适当的动画、颜色变化或提示信息来告知用户操作已被接受。

同时,应该及时处理错误输入,并给予用户友好的提示,提高用户体验。

5. 使用合适的字体和颜色字体和颜色对于GUI设计起着至关重要的作用。

选择合适的字体和字号可以增加界面的可读性和美观性,建议使用简洁清晰的字体,避免使用太小或太大的字号。

而颜色的选择应考虑到可读性和视觉吸引力,尽量使用明亮且对比度较高的颜色,以避免用户阅读和操作困难。

投票管理系统 java

投票管理系统 java

投票管理系统 java投票管理系统 java1.引言本文档旨在对投票管理系统进行详细的描述和说明,以便开发人员了解系统的功能、业务流程和实现细节。

本文档适用于使用Java 编程语言开发的投票管理系统。

2.系统概述2.1 目标投票管理系统的目标是提供一个在线投票平台,便于用户创建和参与不同类型的投票活动。

系统能够管理投票选项、统计投票结果并报表,以支持有效的投票管理和分析。

2.2 功能投票管理系统包含以下主要功能:2.2.1 注册和身份验证:用户可以通过注册账号并进行身份验证来使用系统。

2.2.2 投票功能:用户可以创建投票活动,设置投票选项和相关信息,并邀请其他用户参与投票。

2.2.3 投票统计:系统能够统计投票结果,并图表和报表,以便用户分析投票情况。

2.2.4 报告管理:系统可以投票活动的报告,并支持导出和打印功能。

2.2.5 管理员功能:系统管理员可以管理用户账号、投票活动和报告等。

3.系统架构3.1 概述投票管理系统采用三层架构,包括表示层、业务逻辑层和数据访问层。

各层之间通过接口进行通信,以保证系统的松耦合和可扩展性。

3.2 表示层表示层负责处理用户界面展示和用户交互。

使用 Java Servlet 和 JSP 技术,结合、CSS 和 JavaScript,实现系统的前端功能。

3.3 业务逻辑层业务逻辑层负责处理系统的业务逻辑和流程控制。

包括用户管理、投票管理、统计分析和报告等模块。

通过封装的服务类和工具类,实现系统的核心业务功能。

3.4 数据访问层数据访问层负责处理系统的数据访问和持久化。

采用 JDBC 技术与数据库进行交互,实现数据的读取、插入、更新和删除等操作。

4.数据库设计4.1 用户表用户表用于存储注册用户的信息,包括用户名、密码、邮箱等字段。

4.2 投票活动表投票活动表用于存储投票活动的信息,包括活动名称、说明、创建时间等字段。

4.3 投票选项表投票选项表用于存储每个投票活动的选项,包括选项名称、投票数量等字段。

投票管理系统 java

投票管理系统 java

中文摘要本文主要是研究如何开发一个“简单、实用”的基于Applet的投票管理系统。

本系统运用到了窗口布局、按钮事件的触发和字符串分析器等相关知识,界面简洁、清爽,操作简单,用户可以自定义候选人,允许用户修改候选人,支持多次投票,能够自动统计出一共投的票数、废票数、弃权票数和各个候选人的得票数。

除此之外,本系统还支持排序功能,为用户自动按得票数从高到低进行排序。

在此基础上,本系统增加了一些实用的功能,背景音乐给人以轻松愉快的操作心情,使用说明功能使用户容易上手,还有一个保存结果功能使用户方便保存投票统计结果。

目录一、课程设计任务及要求 (1)二、需求分析 (2)三、设计思路 (3)四、详细设计 (4)五、运行调试与分析讨论 (9)六、设计体会与小结 ........................................... 错误!未定义书签。

七、参考文献 (13)八、附录(源代码) (14)一、课程设计任务及要求设计一个投票管理系统界面,要求输入候选人名单后,点击确认按钮实现使用选择框代表候选人,计选择框的名字就是候选人的名字。

点击取消按钮候选人输入框为空,重新输入候选人名单。

选中候选人的选择框时,表示给该候选人投一票。

点击确定按钮时表示产生一张选票。

点击刷新按钮回到程序的初始界面重新设置候选人。

根据选择框的状态变化统计出候选人的最后得票数,并可按票选取多少点击排序按钮对候选人进行排序。

(其中,最多从候选人中选取3人,如果一张选票选取多于3人,该票就作废票处理。

如果一个也没投票,就作弃权处理。

程序能显示一共统计了多少选票,并能统计出废票和弃权票的票数。

图1-1 操作界面二、需求分析这个投票管理系统的主要功能是:设置候选人,对候选人进行投票,统计出结果,并能够对结果按选票数由高到低进行排序,有背景音乐和使用帮助,最后还能保存统计结果。

主要功能的用例描述如下:1.运行投票管理系统,此时背景音乐会响起。

简易投票系统java课程设计

简易投票系统java课程设计

简易投票系统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课时)在教学过程中,教师应结合实际案例,引导学生掌握教学内容,确保学生能够将所学知识应用于实际项目中。

搞基程序设计 java 投票系统

搞基程序设计 java  投票系统

高级程序设计课程设计报告投票管理系统院系管理科学与信息工程学院专业计算机科学与技术班级1013 1014班学号1401101323 1401101431 1401101428姓名张浩黄河武玉鹏指导教师毛云舸二○一三年四月一、设计目的传统的手工测评,在整个过程中不仅要耗费大量的人力,需要使用过多的纸张,而且更为麻烦的是当测评结束后将会有海量的数据等待人工完成统计。

还不能保证数据完全正确,鉴于以上这种情况,通过调查后开发设计的这套测评系统可使管理员只花费几分钟时间将服务端配置好后,将客户端发给参与投票的用户即可,用户端使用拿到的用户端和管理员分配的用户名及密码即可登录系统完成投票,在最终统计结果时可以利用系统自带的统计工具完成自动计算得分、自动生成结果报表等。

整个操作流程简单,统计的数据准确度高。

二、设计思路与需求分析2.1 系统业务流程系统只允许管理员执行一次自动创建数据库及数据库表单。

系统只允许管理员在系统之内合法操作数据库,在后台中的数据库虽然管理员可以去看系统所用的数据库以及表单,但是保存在数据库中的数据全部加密保存的,只有系统在读取时才会自动逆向运算。

●管理员必须将要发给用户的文件中的配置文件做相应的配置●服务器必须运行在windows server 2005中●必须安装JDBC驱动●用户必须保证自己的计算机支持java应用程序。

●用户端可以用任意一款操作系统完成投票2.2 系统构架在该系统中,首先用户通过登录界面进行登录。

用户类型分为两种:一是普通用户类型,当以普通用户类型登录后进入的是投票主界面,用户可以为想要支持的人进行投票,最多不多于三个人。

另一种是管理员用户,当以管理员用户登录后进入的是所有候选人信息主界面,管理员可以对候选人进行删除,添加,以及查看候选人的得票情况。

具体情况如下图所示:图-1 系统流程图2.3系统功能需求本系统实现了最为普遍的功能需求,基本的投票及查询功能,为用户调查,收集,统计用户的反馈意见提供了一个方便易用的网上平台。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计(论文)任务书软件学院学院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滚轮用来显示帮助信息。

相关文档
最新文档