投票管理系统.docx
《投票管理系统.docx》由会员分享,可在线阅读,更多相关《投票管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
![投票管理系统.docx](https://file1.bdocx.com/fileroot1/2022-10/11/e8ccf8bf-600d-450f-94ba-554dc919abdd/e8ccf8bf-600d-450f-94ba-554dc919abdd1.gif)
投票管理系统
投票管理系统
1题目描述
投票选举过程:
(1)用户从键盘输入候选人的个数(提示用户输入人数为1-12)、当选标准(例:
若
为50%,只需输入50即可)。
点击确定后,由用户从键盘输入每一个候选人的姓名,提交后即可生成候选人的信息(包括姓名和编号)。
(2)投票者就开始投票,对投票者没有姓名和编号的存储,只有结果的存储。
(3)以表格的形式展示选举结果,包括:
候选者的编号、姓名、所得票数、得票率、是否中选,并附投票人的个数和当选标准。
2类设计
2.1类图
Manager:
控制整个系统,并对投票结果以及是否当选进行控制;Userinterface:
控制整个系统的展示;
MainGraph:
接收候选者人数、姓名、当选标准信息;VoteGraph:
接受用户的投票信息;
ResultGraph:
展示最终的投票结果;
Candidate:
候选人的实体对象‘包括候选人的各种属性;
22类声明
本报告采用java编程语言,一共构造了六个类:
1、Candidate;2、Manager;3、
Userinterface;4、MainGraph;5・VoteGraph;6、ResultGraph。
2.2.1、候选者类:
Candidate
publicclassCandidate{
privateStringname〃候选者姓名
privateintid;〃候选者的编号
privateintnum〃得票数量
privatedoublevoteResult;//得票率
privatebooleanisVote:
//是否中选
Candidate(Stringname,intid);//Candidate的构造方法
publicStringgetName();
publicvoidsetName(Stringname);
publicintgetld();
publicvoidsetld(intid);
publicintgetNum();
publicvoidsetNum(intnum);
publicdoublegetVoteResult();
publicvoidsetVoteResult(doublevoteResult);
publicbooleanisVote();
publicvoidsetVote(booleanisVote);
2.2.2・管理类:
Manager类publicclassManager{
public
int
candidates;
//
候选人的数量
public
int
percentage;
//
当选标准(百分
ri、
public
int
voters=0;
//
投票人数量
Listlistc
;//
装载候选者的容器
publicstaticvoidmain(String[]args);
publicvoidcalculateResult();//计算结果
2.2.3・窗口的操作类Userlnterface
publicclassUserlnterfaceextendsJFrame{
privatestaticfinalIongserialVersionUID=1L;
publicContainercontentPanel;//当前界面控制器
publicManagermanager;〃利于数据通信,主要包括:
候选人数量、当选标准、投
票者数量
publicJPanelp1;
publicJPanelp2;
publicJPanelp3;
〃输入信息的面板
//投票面板
〃显示投票结果的面板
publicListlist_textfield;//装载候选人姓名的容器
publicListlistjradiobutton;//投票
publicUserlnterface(Managerm);
publicvoidupdate();〃窗口中增删组建后立即更新
publicvoidaddCandi(intnum);//panel1输入侯选者姓名完成后'生成候选者对象
2.2.4・输入面板类:
MainGraph
publicvoidlaunchResultGraph();〃加载显示结果的面板
3功能实现
3.1窗口显示
点击运行后弹出一个窗口(Panell),要求用户输入候选人的个数(以及当选标
准(若为50%,只需输入50即可)
请辙人投票信息
常输人條議人tn令戦:
门■低]:
f百甘10:
假若依次输入12,50•点击确定后,窗口中会提示输入侯选人的姓名‘候选人的编号是
从小到大依次生成的。
2总迟黑却拧竺哥卑金城
候班人1的妬&:
请为候选者投票
卩1葺〔冥红窑
■爲刘罰莉
3号:
部斉
4垮住弘倉
4号:
爭陆
J箱:
掘三
U贞号住cb丽
q房:
主並贺
握立二
品不琴卑
假若共有7名投票人参与投票(每次投票完点击提交即为完成依次投票)
投票过程如下:
投票者1:
1号:
吴红岩
3号:
邵芳
9号:
李丹
11号:
李四
投票者2:
2号:
刘莉莉
8号:
王永霞
投票者3:
3号:
邵芳
4号:
尹聪敏
6号:
王小丽
1号:
吴红岩
2号:
刘莉莉
4号:
尹聪敏
5号:
张三
7号:
李泽
投票者4:
9
»■
李丹
1号:
吴红岩
投票者5:
7
口.
李泽
12号:
王龙贺
3号:
邵芳
10号:
王小慧投票者6:
4号:
尹聪敏
5号:
张三
7号:
:
李泽
1号:
吴红岩
2号:
刘莉莉
4号:
尹聪敏
5号:
:
张三
10号住小慧
11号
:
李四
12号:
王龙贺
投票者7:
1号:
吴红岩2号:
刘莉莉3号:
邵芳
4号:
:
尹聪敏
7号:
李泽
最终的投票结果如下图所示:
最终结吴
3.2功能1
扶茸斤按票人兰选标薜;
整个系统的UML时序图如下图所示:
Manager
I
Jserhterface
I
Hain’aph|
Voiejraph|
ResultGraph
1
Candidiate
1
片:
nwwLto害rlnftrf•孔悔
LJEurxhH&鬥匚r帮卉
1
1
1iftUnchFesultAAhi'
1.1i.j
.:
Llil'lM13(1屯
Ite
F
I
C—-
£
1
附录:
程序源代码
1、Candidate的详细代码:
publicclassCandidate{
privateStringname〃候选者姓名
privateintid;〃候选者的编号privateintnum〃得票数量
privatedoublevoteResult;//得票率privatebooleanisVote:
//是否中选
Candidate(Stringname,intid){
this.name=name;
this.id=id;
this•num=0;
this.voteResult=0;
this.isVote=false
publicStringgetName(){returnnamepublicvoidsetName(Stringname){this•name=name;
publicintgetld(){
returnid;
}
publicvoidsetld(intid){this.id=id;
}
publicintgetNum(){
returnnum;
}
publicvoidsetNum(intnum){this.num=num;
}
publicdoublegetVoteResult(){
returnvoteResult;
}
publicvoidsetVoteResult(doublevoteResult){this.voteResult=voteResult;
}
publicbooleanisVote()
{returnisVote;
}
publicvoidsetVote(booleanisVote){this.isVote=isVote;
}
publicStringtoString(){
returnthis.name;
}
}
2、Manager类的详细代码importjava.util.ArrayList;import
java.util.List;
publicclassManager{
publicintcandidates;〃候选人的数量publicintpercentage;//当选标准(百分比)
Listlistc=newArrayList();publicstaticvoidmain(String[]args){
Managerm=newManager();
Userlntefaceui=newUserlnteface(m);
MainGraphmainGraph=newMainGraph(ui);
mainGraph」aunchMainGraph();
candidates;i++)
publicvoidcalculateResult(){doubled;=
for(inti=0;i<
Candidatec{3北);
d=(double)c.getNum()/votersc.setVoteResult((double)Math.round(d10000)/100);if(d>=percentage*0.01){
c.setVote(true);
3、Userinterface类的详细代码:
importjava.awt.Color;
importjava.awt.Container;
importjava.awt.Font;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.util.ArrayList;
importjava.util.lterator;
importjava.util.List;
importiava.util.Vector;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.