当前位置:文档之家› JAVA课程设计(计算机)

JAVA课程设计(计算机)

武汉理工大学华夏学院课程设计报告书课程名称:JAVA课程设计题目:简单投票管理系统系名:信息工程系专业班级:计算机 1 1 2 1姓名:商德楼学号:10210412108指导教师:刘春燕2014年9 月5日课程设计任务书学生姓名:商德楼专业班级:计算机1121指导教师:刘春燕工作单位:信息工程系设计题目:简单投票管理系统的设计与实现要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)设计一个投票管理系统界面,完成以下简单的功能(1)设计一个文本框,输入候选人的姓名;(2)点击确定后候选人姓名进入复选框;(3)选中候选人的选择框,表示给该候选人投一票;(4)点击确定按钮产生一张选票。

设计报告撰写格式要求:1、明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。

严格要求自己,要独立思考,按时、独立完成课程设计任务。

2、设计报告:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。

设计报告正文字数不少于0.2万字(不包括附录)时间安排:消化资料、系统调查 1天项目原型开发1天系统功能实现 1天系统验收 1天指导教师签字:2014年9 月 5 日系主任签字:2014 年9 月 5 日目录1 目标 (4)2 软件开发环境与技术简介 (4)2.1 开发工具介绍 (4)2.2 硬件环境 (4)2.3 软件环境 (5)3 系统需求分析 (5)4 系统总体设计 (5)4.1 系统功能简介 (5)4.2 系统功能模块规划 (6)5 系统详细设计 (6)5.1界面设计时 (6)5.2功能实现 (7)6 系统测试与运行 (9)7 总结 (12)参考文献 (12)附录:系统核心代码 (13)简单投票管理系统的设计与实现1 目标设计一个如图1所示的投票管理系统界面,要求输入候选人名单后,点击确认按钮实现使用选择框代表候选人,计选择框的名字就是候选人的名字。

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

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

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

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

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

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

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

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

图1 投票管理系统界面效果图2 软件开发环境与技术简介2.1 开发工具介绍NetBeans IDE、Java2.2 硬件环境个人计算机一台2.3 软件环境Windows 2000及以上系统Java环境3 系统需求分析这个投票管理系统的主要功能是:设置候选人,对候选人进行投票,统计出结果,并能够对结果按选票由高到低进行排序,有背景音乐和使用帮助,最后还能保存统计结果。

主要功能的用例描述如下:1.运行投票管理系统。

2.点击“使用说明”来查看使用方法。

3.在候选人文本框中输入不超过10个候选人,候选人之间用空格隔开,点击确认以完成候选人的设置,点击旁边的取消可以从新设置候选人。

4.在生成的候选人选框中选择想要选的候选人,点击下面的“确定”按钮以完成选票的填制,此时在显示统计结果的地方能即时的看到选票统计结果。

5.重复第4步来填制下一张选票。

6.点击“排序”按钮后统计结果会按照候选人的票数从高到低进行排列。

7.点击“保存结果”会弹出一个文本域对话框,里面有刚刚统计的结果, ctrl+a全部选中,再ctrl+c复制,这样就可以将结果粘贴到别处保存下来。

8.点击“刷新”后回到主界面,重新设置候选人,进行下一轮投票。

4 系统总体设计4.1 系统功能简介1. 点击确认按钮实现使用选择框代表候选人2. 点击取消按钮候选人输入框为空,重新输入候选人名单3. 选中候选人的选择框时,表示给该候选人投一票4. 点击确定按钮时表示产生一张选票。

5. 点击刷新按钮回到程序的初始界面重新设置候选人6.根据选择框的状态变化统计出候选人的最后得票数7.并可按票选取多少点击排序按钮对候选人进行排序。

4.2 系统功能模块规划5 系统详细设计5.1界面设计时先定义好各个部件:标签Label、文本框TextFiled、按钮Button、复选框Checkbox、Scroll滚动条,我把整个界面分成很多个小面板,每一行部件都在一个小面板上面,最后将这些小面板一个个添加上去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 GridLayout(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;i<5;i++){//创建候选人选项candidate[i]=new Checkbox(candidatelist[i]);p4.add(candidate[i]); }for(int i=5;i<10;i++){//创建候选人选项candidate[i]=new Checkbox(candidatelist[i]);p5.add(candidate[i]); }for(int j=0;j<10;j++){candidate[j].setEnabled(false);}p6.add(confirm2);p6.add(refresh);p6.add(sort);p7.add(result);p7.add(out);p7.add(save);pa.add(p1);pa.add(p2);pa.add(p3);pa.add(p4);pa.add(p5);pa.add(p6);pa.add(p7);p.setLayout(new GridLayout(10,1));for(int i=0;i<10;i++){p.add(personvote[i]);}ScrollPane scroll=new ScrollPane();scroll.add(p); pc.add(banquan);pb.add("Center",scroll); pb.add("South",pc);add("Center",pa);add("South",pb);5.2功能实现定义几个类变量来记录投票相关记录如:Checkbox candidate[] //选择框数组,代表候选人TextField personvote[] //文本条数组,显示每个人的得票情况int count[] //记录每个人的得票数int totalvote=0 //总票数int peoplenumber=0; //候选人个数int count1=0,invalidatedTicket=0,abstention=0//分别表示选的人数,废票数,弃权票数(1)对各个按钮进行注册监听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++;}//获取语言符号(候选人名单)(2)点击“确认”按钮后,根据候选人个数添加单选按钮,并以候选人名字作为单选按钮的标签名。

for(int j=0;j<10;j++)candidate[j].setLabel(candidatelist[j]); //将候选人名单添加到复选框里将多余的选框设置为不可见for(int j=peoplenumble;j<10;j++)candidate[j].setVisible(false)(3)点击“取消”的话输入候选人的文本框为空,此时可以重新输入,点击下面“确定”则统计选了多少人并通过这个判断是废票还是弃权,然后分别给候选人增加票数并输出相应的信息;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]);//输出各个候选人得票数(4)点击“排序”则比较各个候选人的票数由高到低进行排序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];candidatelist[i]=n;}//按得票数由多到少进行排序(5)“刷新”按钮通过清空所有文本框中的数据,所有变量变为初始化值;(6)“使用说明”通过弹出Frame窗体来实现,在该窗体中新建了几个文本框TextFeild 和Scroll滚轮用来显示帮助信息。

相关主题