投票管理系统java课程设计.docx

上传人:b****6 文档编号:7952525 上传时间:2023-05-12 格式:DOCX 页数:20 大小:414.41KB
下载 相关 举报
投票管理系统java课程设计.docx_第1页
第1页 / 共20页
投票管理系统java课程设计.docx_第2页
第2页 / 共20页
投票管理系统java课程设计.docx_第3页
第3页 / 共20页
投票管理系统java课程设计.docx_第4页
第4页 / 共20页
投票管理系统java课程设计.docx_第5页
第5页 / 共20页
投票管理系统java课程设计.docx_第6页
第6页 / 共20页
投票管理系统java课程设计.docx_第7页
第7页 / 共20页
投票管理系统java课程设计.docx_第8页
第8页 / 共20页
投票管理系统java课程设计.docx_第9页
第9页 / 共20页
投票管理系统java课程设计.docx_第10页
第10页 / 共20页
投票管理系统java课程设计.docx_第11页
第11页 / 共20页
投票管理系统java课程设计.docx_第12页
第12页 / 共20页
投票管理系统java课程设计.docx_第13页
第13页 / 共20页
投票管理系统java课程设计.docx_第14页
第14页 / 共20页
投票管理系统java课程设计.docx_第15页
第15页 / 共20页
投票管理系统java课程设计.docx_第16页
第16页 / 共20页
投票管理系统java课程设计.docx_第17页
第17页 / 共20页
投票管理系统java课程设计.docx_第18页
第18页 / 共20页
投票管理系统java课程设计.docx_第19页
第19页 / 共20页
投票管理系统java课程设计.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

投票管理系统java课程设计.docx

《投票管理系统java课程设计.docx》由会员分享,可在线阅读,更多相关《投票管理系统java课程设计.docx(20页珍藏版)》请在冰点文库上搜索。

投票管理系统java课程设计.docx

投票管理系统java课程设计

课程设计(论文)任务书

软件学院学  院  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人,如果一张选票选取多于3人,该票就作废票处理。

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

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

图1

二、需求分析

本程序主要需要掌握窗口的布局和按钮事件的触发相关知识,所有部件都可以添加到面板Panel上,显示提示信息需要用到标签Label,输入框需要新建TextField,按钮用Button,选票需要新建Checkbox复选框来实现,至于下面那个用来显示各个候选人得票数的要先新建文本框TextField添加到一个小面板上,再新建个Scroll滚动条,将建有文本框的面板添加到Scroll滚动条上就可以了。

为了做出这个界面还需要对各个部件进行摆放,为了达到那个效果,可以将整个界面分成很多个小块,每一小块都是个面板,最后再拼接起来,每个小块都设置好布局setLayout,在这里主要用到网格布局GridLayout,流式布局FlowLayout和BorderLayout方位布局,设置面板的颜色可以用setBackground()来实现。

做好界面后,接下来就需要去实现各个功能了。

因为各个功能都是通过按钮来实现的,所以要对按钮进行注册监听addActionlistener(),监听之后就是对按钮事件的处理了actionPerformed(ActionEvente)。

要一个字符串中的人名,可以用StringTokenizer字符串分析器来获取候选人的名字,其中还要用到里面的一些方法,比如nextToken()、hasMoreTokens()、countTokens()。

还有setEnabled()方法可以设置按钮是否可用,setState(boolean)可以设置复选框是否激活,在文本框或文本域中输出和获取信息可以分别用setText()和getText(),根据候选人数将多余的复选框去掉,可以让设置多余的为不可见setVilible(flase)这样就行了。

对于附加功能如背景音乐,可以用AudioClip接口、publicvoidplay()控制播放、publicvoidloop()实现循环播放、publicvoidstop()停止播放当前音乐、使用说明和保存结果都是需要通过新建Franme窗体实现的。

三、设计思路

一拿到这个题目我就构思好了大概的方向,那就是先制作主界面,然后再实现各个按钮的功能。

界面设计时,先定义好各个部件:

标签Label、文本框TextFiled、按钮Button、复选框Checkbox、Scroll滚动条,我把整个界面分成很多个小面板,每一行部件都在一个小面板上面,最后将这些小面板一个个添加上去add(),像流式布局FlowLayout、方位布局BorderLayout、网格布局GridLayout主要是用到了这三种布局,中间那几块面板通过setBackground()将其背景色改为绿色。

经过不断修改测试运行,一个投票系统的主界面就做出来了。

接下来就是对各个功能的实现了,定义几个类变量来记录投票相关记录如:

Checkboxcandidate[]//选择框数组,代表候选人

TextFieldpersonvote[]//文本条数组,显示每个人的得票情况

intcount[]//记录每个人的得票数

inttotalvote=0,//总票数

intpeoplenumber=0;//候选人个数

intcount1=0,invalidatedTicket=0,abstention=0;//分别表示选的人数,废票数,弃权票数

对各个按钮进行注册监听addActionListener()

在输入候选人名单时是输入一串名字,所以要从这一串名字中单个的提取出来并统计出候选人个数,在完成这项功能时要用到StringTokenizer类。

Stringg=canditate.getText();//获取输入的候选人

StringTokenizerst=newStringTokenizer(g);//字符串分析器

peoplenumble=st.countTokens();//统计候选人数

inti=0;

while(st.hasMoreTokens()){

candidatelist[i]=st.nextToken();

i++;}//获取语言符号(候选人名单)

点击确认按钮后,根据候选人个数添加单选按钮,并以候选人名字作为单选按钮的标签名。

for(intj=0;j<10;j++)candidate[j].setLabel(candidatelist[j]);

//将候选人名单添加到复选框里

将多余的选框设置为不可见

for(intj=peoplenumble;j<10;j++)

candidate[j].setVisible(false)

点击“取消”的话输入候选人的文本框为空,此时可以重新输入,点击下面“确定”则统计选了多少人并通过这个判断是废票还是弃权,然后分别给候选人增加票数并输出相应的信息;

for(intj=0;j<10;j++){

if(candidate[j].getState())

count1++;}//统计选了多少人

if(count1==0)abstention++;//一个都没选则选票作为弃权

if(count1>3)invalidatedTicket++;//选的人数超过3个则选票作废

if(count1<=3&&count1>0){

for(intj=0;j

if(candidate[j].getState())

count[j]++;}//统计候选人所得票数

out.setText("已经统计了:

"+totalvote+"张选票,其中弃权票:

"+abstention+"作废票:

"+invalidatedTicket);//输出统计结果

for(intj=0;j

personvote[j].setText(""+candidatelist[j]+"得票数:

"+count[j]);//输出各个候选人得票数

点击“排序”则比较各个候选人的票数由高到低进行排序

for(intj=0;j

for(inti=j+1;i

if(count[j]

m=count[j];count[j]=count[i];count[i]=m;

n=candidatelist[j];candidatelist[j]=candidatelist[i];candidatelist[i]=n;

}//按得票数由多到少进行排序

“刷新”按钮通过清空所有文本框中的数据,所有变量变为初始化值;

“使用说明”通过弹出Frame窗体来实现,在该窗体中新建了几个文本框TextFeild和Scroll滚轮用来显示帮助信息。

“保存结果”也是通过弹出Franme窗体,窗体里面有个文本域TextArea,用来输出统计的结果,在文本域中,用户可以复制里面的内容然后保存在其他文件中。

最后说下背景音乐的实现,通过添加AudioClip接口来实现

AudioClipmusic;//播放音乐

music=getAudioClip(getCodeBase(),"瘦瘦的-梁静茹.mid");

publicvoidstart(){//循环播放音乐

music.loop();}

publicvoidstop(){//结束播放

music.stop();}

四、详细设计

importjava.io.*;

importjava.awt.*;

importjava.util.*;

importjava.applet.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclass投票管理系统extendsAppletimplementsActionListener{

AudioClipmusic;//播放音乐

Labelhint,result,notice,banquan;

TextFieldcanditate;//输入候选人文本框

TextFieldout;//显示选举结果的文本框

Buttonconfirm1,cancle,confirm2,refresh,sort;//分别表示确认、取消、确定、刷新、排序

Buttonhelp;//使用说明

Buttonsave;//保存统计结果

Checkboxcandidate[]=newCheckbox[10];//选择框数组,代表候选人

TextFieldt1,t2,t3,t4,t5,t6,t7,t8,t9,t10;

TextFieldpersonvote[]={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10};//文本条数组,显示每个人的得票情况

Stringcandidatelist[]=newString[10];//候选人名单

intcount[]={0,0,0,0,0,0,0,0,0,0};//记录每个人的得票数

inttotalvote=0;//总票数

intpeoplenumble=0;//候选人个数

intcount1=0,invalidatedTicket=0,abstention=0;//分别表示选的人数,废票数,弃权票数

publicvoidinit(){

music=getAudioClip(getCodeBase(),"瘦瘦的-梁静茹.mid");

hint=newLabel("首先输入候选人的名字(人数不超过10,名字之间用空格分隔):

");

notice=newLabel("用下面的选择框统计选票(最多选3人):

");

result=newLabel("选举结果:

");

banquan=newLabel("版权所属:

09软件工程+会计学2班祝捷");

canditate=newTextField(50);

confirm1=newButton("确认");cancle=newButton("取消");confirm2=newButton("确定");refresh=newButton("刷新");sort=newButton("排序");

confirm2.setEnabled(false);refresh.setEnabled(false);sort.setEnabled(false);

help=newButton("使用说明");save=newButton("保存结果");save.setEnabled(false);

out=newTextField(50);

for(inti=0;i<10;i++)

personvote[i]=newTextField(80);

Panelp=newPanel();

Panelp1=newPanel();

Panelp2=newPanel();

Panelp3=newPanel();

Panelp4=newPanel();

Panelp5=newPanel();

Panelp6=newPanel();

Panelp7=newPanel();

Panelpa=newPanel();

Panelpb=newPanel();

Panelpc=newPanel();

setLayout(newBorderLayout());

pa.setLayout(newGridLayout(7,1));

pb.setLayout(newBorderLayout());

p4.setLayout(newGridLayout(1,5));

p5.setLayout(newGridLayout(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(inti=0;i<5;i++){//创建候选人选项

candidate[i]=newCheckbox(candidatelist[i]);

p4.add(candidate[i]);

}

for(inti=5;i<10;i++){//创建候选人选项

candidate[i]=newCheckbox(candidatelist[i]);

p5.add(candidate[i]);

}

for(intj=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(newGridLayout(10,1));

for(inti=0;i<10;i++){

p.add(personvote[i]);

}

ScrollPanescroll=newScrollPane();

scroll.add(p);

pc.add(banquan);

pb.add("Center",scroll);

pb.add("South",pc);

add("Center",pa);

add("South",pb);

confirm1.addActionListener(this);

cancle.addActionListener(this);

confirm2.addActionListener(this);

refresh.addActionListener(this);

sort.addActionListener(this);

help.addActionListener(this);

save.addActionListener(this);

}//面板的布局

publicvoidstart(){//循环播放音乐

music.loop();}

publicvoidstop(){//结束播放

music.stop();}

publicvoidactionPerformed(ActionEvente){//注册监听

Strings=e.getActionCommand();

if(s.equals("确认")){

confirm1.setEnabled(false);save.setEnabled(true);

confirm2.setEnabled(true);refresh.setEnabled(true);sort.setEnabled(true);help.setEnabled(true);

Stringg=canditate.getText();//获取输入的候选人

StringTokenizerst=newStringTokenizer(g);//字符串分析器

peoplenumble=st.countTokens();//统计候选人数

inti=0;

while(st.hasMoreTokens()){

candidatelist[i]=st.nextToken();

i++;}//获取语言符号(候选人名单)

for(intj=0;j<10;j++)

candidate[j].setLabel(candidatelist[j]);//将候选人名单添加到复选框里

for(intj=0;j

candidate[j].setEnabled(true);

for(intj=peoplenumble;j<10;j++)

candidate[j].setVisible(false);//多余的选框设置为不可见

}

if(s.equals("取消")){//重新设置候选人,进行重新投票

confirm1.setEnabled(true);

canditate.setText("");

}

if(s.equals("确定")){

totalvote++;count1=0;

sort.setEnabled(true);

for(intj=0;j<10;j++){

if(candidate[j].getState())

count1++;}//统计选了多少人

if(count1==0)abstention++;//一个都没选则选票作为弃权

if(count1>3)invalidatedTicket++;//选的人数超过3个则选票作废

if(count1<=3&&count1>0){

for(intj=0;j

if(candidate[j].getState())

count[j]++;

}//统计候选人所得票数

for(intj=0;j<10;j++)

candidate[j].setState(false);

for(intj=0;j<10;j++){

candidate[j].setState(false);

}//清空选框中的勾

out.setText("已经统计了:

"+totalvote+"张选票,其中弃权票:

"+abstention+"作废票:

"+invalidatedTicket);//输出统计结果

for(intj=0;j

personvote[j].setText(""+candidatelist[j]+"得票数:

"+count[j]);//输出各个候选人得票数

}

if(s.equals("刷新")){

confirm1.setEnabled(true);

confirm2.setEnabled(false);refresh.setEnabled(false);sort.setEnabled(false);save.setEnabled(false);

totalvote=

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 唐诗宋词

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2