投票管理系统 java

上传人:人*** 文档编号:564966912 上传时间:2022-11-29 格式:DOCX 页数:25 大小:285.13KB
返回 下载 相关 举报
投票管理系统 java_第1页
第1页 / 共25页
投票管理系统 java_第2页
第2页 / 共25页
投票管理系统 java_第3页
第3页 / 共25页
投票管理系统 java_第4页
第4页 / 共25页
投票管理系统 java_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《投票管理系统 java》由会员分享,可在线阅读,更多相关《投票管理系统 java(25页珍藏版)》请在金锄头文库上搜索。

1、中文摘要本文主要是研究如何开发一个“简单、实用”的基于 Applet 的投票管 理系统。本系统运用到了窗口布局、按钮事件的触发和字符串分析器等相 关知识,界面简洁、清爽,操作简单,用户可以自定义候选人 ,允许用户 修改候选人,支持多次投票,能够自动统计出一共投的票数、废票数、弃 权票数和各个候选人的得票数。除此之外,本系统还支持排序功能,为用 户自动按得票数从高到低进行排序。在此基础上,本系统增加了一些实用的 功能,背景音乐给人以轻松愉快的操作心情,使用说明功能使用户容易上 手,还有一个保存结果功能使用户方便保存投票统计结果。目录一、课程设计任务及要求 1二、需求分析 2三、设计思路四、详细设

2、计五、运行调试与分析讨论六、设计体会与小结错误!未定义书签。1314七、参考文献 八、附录(源代码)一、课程设计任务及要求设计一个投票管理系统界面,要求输入候选人名单后,点击确认按钮 实现使用选择框代表候选人,计选择框的名字就是候选人的名字。点击取 消按钮候选人输入框为空,重新输入候选人名单。选中候选人的选择框时, 表示给该候选人投一票。点击确定按钮时表示产生一张选票。点击刷新按 钮回到程序的初始界面重新设置候选人。根据选择框的状态变化统计出候 选人的最后得票数,并可按票选取多少点击排序按钮对候选人进行排序。(其中,最多从候选人中选取3人,如果一张选票选取多于3人,该票就 作废票处理。如果一个

3、也没投票,就作弃权处理。程序能显示一共统计了 多少选票,并能统计出废票和弃权票的票数。二、需求分析这个投票管理系统的主要功能是:设置候选人,对候选人进行投票,统 计出结果,并能够对结果按选票数由高到低进行排序,有背景音乐和使用 帮助,最后还能保存统计结果。主要功能的用例描述如下: 1运行投票管理系统,此时背景音乐会响起。 2点击“使用说明”来查看使用方法。3在候选人文本框中输入不超过 10 个候选人,候选人之间用空格隔开, 点击确认以完成候选人的设置,点击旁边的取消可以从新设置候选人。4在生成的候选人选框中选择想要选的候选人,点击下面的“确定”按钮 以完成选票的填制,此时在显示统计结果的地方能

4、即时的看到选票统计 结果。5重复第4 步来填制下一张选票。6点击“排序”按钮后统计结果会按照候选人的票数从高到低进行排列。 7点击“保存结果”会弹出一个文本域对话框,里面有刚刚统计的结果, ctrl+a 全部选中,再 ctrl+c 复制,这样就可以将结果粘贴到别处保存下 来。8点击“刷新”后回到主界面,重新设置候选人,进行下一轮投票。三、设计思路先制作主界面,然后再实现各个按钮的功能。本程序主要需要掌握窗 口的布局和按钮事件的触发相关知识,所有部件都可以添加到面板 Panel 上,显示提示信息需要用到标签Label,输入框需要新建TextField,按钮 用Button,选票需要新建Check

5、box复选框来实现,至于下面那个用来显示 各个候选人得票数的要先新建文本框TextField添加到一个小面板上,再 新建个Scroll滚动条,将建有文本框的面板添加到Scroll滚动条上就可 以了。为了做出这个界面还需要对各个部件进行摆放,为了达到那个效果 可以将整个界面分成很多个小块,每一小块都是个面板,最后再拼接起来 每个小块都设置好布局setLayout,在这里主要用到网格布局GridLayout, 流式布局FlowLayout和BorderLayout方位布局,设置面板的颜色可以用 set Background ()来实现。做好界面后,接下来就需要去实现各个功能了。因为各个功能都是通

6、过按钮来实现的,所以要对按钮进行注册监听addActionlistener (),监 听之后就是对按钮事件的处理了 actionPerformed (ActionEvent e)。要一 个字符串中的人名,可以用StringTokenizer字符串分析器来获取候选人 的名字,其中还要用到里面的一些方法,比如nextToken ()、hasMoreTokens ()、countTokens ()。还有setEnabled()方法可以设置按钮是否可用, setState (boolean)可以设置复选框是否激活,在文本框或文本域中输出 和获取信息可以分别用set Text ()和ge tText (

7、),根据候选人数将多余 的复选框去掉,可以让设置多余的为不可见setVilible (flase)这样就行 了。对于附加功能如背景音乐,可以用AudioClip接口、public void play ()控制播放、public void loop ()实现循环播放、public void stop ()停止播放当前音乐、使用说明和保存结果都是需要通过新建Franme窗 体实现的。四、详细设计图 4-1 流程图界面设计时,先定义好各个部件:标签Label、文本框TextFiled、按 钮Button、复选框Checkbox、Scroll滚动条,我把整个界面分成很多个小 面板,每一行部件都在一个小

8、面板上面,最后将这些小面板一个个添加上 去add (),像流式布局FlowLayout、方位布局BorderLayout、网格布局 GridLayout 主要是用到了这三种布局,中间那几块面板通过 setBackground()将其背景色改为绿色。经过不断修改测试运行,一个投票系统的主界 面就做出来了。setLayout(new BorderLayout();pa.setLayout(new GridLayout(7,1);pb.setLayout(new BorderLayout(); p4.setLayout(new GridLayout(1,5);p5.setLayout(new Gri

9、dLayout(1,5);p1.add(hint);p2.add(canditate);p2.add(help); p3.add(confirm1);p3.add(cancle);p3.add(notice); p4.setBackground(Color.green);p5.setBackground(Color.green);p6.setBackground(Color.green);for(int i=0;iv5;i+)创建候选人选项candidatei=new Checkbox(candidatelisti); p4.add(candidatei);for(int i=5;ivl0;i

10、+) 创建候选人选项candidatei=new Checkbox(candidatelisti); p5.add(candidatei);for(int j=0;jl0;j+) candidatej.setEnabled(false);p6.add(confirm2);p6.add(refresh);p6.add(sort); p7.add(result);p7.add(out);p7.add(save);pa.add(pl);pa.add(p2);pa.add(p3);pa.add(p4);pa.add(p5);pa.add(p6);pa.add( p7);p.setLayout(new

11、GridLayout(l0,l);for(int i=0;il0;i+)p.add(personvotei);ScrollPane scroll=new ScrollPane();scroll.add(p);pc.add(banquan);pb.add(Center,scroll);pb.add(South,pc);add(Center,pa);add(South,pb);接下来就是对各个功能的实现了,定义几个类变量来记录投票相关记 录如:Checkbox candidate/选择框数组,代表候选人TextField personvote int count int totalvote=0,

12、int peoplenumber=0;/文本条数组,显示每个人的得票情况/记录每个人的得票数/总票数/候选人个数int count1=0,invalidatedTicket=0,abstention=0; /分别表示选的人 数,废票数,弃权票数对各个按钮进行注册监听addActionListener ()在输入候选人名单时是输入一串名字,所以要从这一串名字中单个的 提取出来并统计出候选人个数,在完成这项功能时要用到StringTokenizer 类。St ring g=candi tat e.ge tTex t();/获取输入的候选人St ringTokenizer st二 new St ri

13、ngTokenizer(g);/字符串分析器 peoplenumble二s t.cou nt Tokens();/统计候选人数 int i=0;while(st.hasMoreTokens() candidatelisti=st.nextToken(); i+;/获取语言符号(候选人名单) 点击确认按钮后,根据候选人个数添加单选按钮,并以候选人名字作 为单选按钮的标签名。for(int j=0;j10;j+) candidatej.setLabel(candidatelistj); /将候选人名单添加到复选框里将多余的选框设置为不可见for(int j=peoplenumble;j10;j+)

14、 candidatej.setVisible(false)点击“取消”的话输入候选人的文本框为空,此时可以重新输入,点 击下面“确定”则统计选了多少人并通过这个判断是废票还是弃权,然后 分别给候选人增加票数并输出相应的信息;for(int j=0;j3) invalidatedTicket+;/选的人数超过3个则选票作废 if(count10)for(int j=0;jpeoplenumble;j+)if(candidatej.getState()coun t j+;/统计候选人所得票数out.setText (“已经 统计了 :+totalvote+张 选票,其 中弃权票:+abs tent

15、 ion+作废票:+invalida tedTicke t);/输出统计结果 for(int j=0;jpeoplenumble;j+)personvotej.setText(“+candidatelistj+ 得 票 数:+coun tj);/输出各个候选人得票数点击“排序”则比较各个候选人的票数由高到低进行排序for(int j=0;jpeoplenumble;j+)for(int i=j+1;ipeoplenumble;i+) if(countjcounti) m=countj;countj=counti;counti=m;n=candidatelistj;candidatelistj=candidatelisti;candidat e

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号