版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
投票管理系统
1题目描述
投票选举过程:
(1)用户从键盘输入候选人的个数(提示用户输入人数为1-12),当选标准(例:若
为50%,只需输入50即可)。点击确定后,由用户从键盘输入每一个候选人的姓名,提交后
即可生成候选人的信息(包括姓名和编号)。
(2)投票者就起先投票,对投票者没有姓名和编号的存储,只有结果的存储。
(3)以表格的形式展示选举结果,包括:候选者的编号、姓名、所得票数、得票率、
是否中选,并附投票人的个数和当选标准。
2类设计
2.1类图
Manager:限制整个系统,并对投票结果以及是否当选进行限制;
Userinterface:限制整个系统的展示;
MainGraph:接收候选者人数、姓名、当选标准信息;
VoteGraph:接受用户的投票信息;
ResultGraph:展示最终的投票结果;
Candidate:候选人的实体对象,包括候选人的各种属性;
2.2类声明
本报告采纳java编程语言,一共构造了六个类:1>Candidate;2、Manager;3、
Userinterface;4、MainGraph;5、VoteGraph:6、ResultGrapho
2.2.1>候选者类:Candidate
publicclassCandidate{
privateStringname;〃候选者姓名
privateintid;//候选者的编号
privateintnum;//得票数量
privatedoublevotsResult;//得票率
privatebooleanisVotc;〃是否中选
Candidate(Stringname,intid);//Candidate的构造方法
publicStringgetName();
publicvoidsetNams(Stringname);
publicintgetldO;
publicvoidsetld(intid);
publicintgetNumO;
publicvoidsotNum(intnum);
publicdoublegetVoteResult0;
publicvoidsetVoteResuIt(doublevoteResult);
publicbooleanisV^teO;
puhlic.voidsetVot?»(booleanisVote):
)
2.2.2、管理类:Manager类
publicclassManager{
publicintcandidates;//候选人的数量
publicintpercentage;//当选标准(百分比)
publicintvoters=0;//投票人数量
List〈Candidate〉listc;//装载候选者的容器
publicstaticvoidmain(String[]args);
publicvoidcalculateResult0计算结果
2.2.3^窗口的操作类Userinterface
publicclassUserinterfaceextendsJFrame{
privatestaticfinallongserialVersionUID=IL;
publicContainercontentPane1;//当前界面限制器
publicManagermanager;〃利于数据通信,主要包括:候选人数量、当选标准、投
票者数量
publicJPanolpl;〃输入信息的面板
publicJPanelp2;〃投票面板
publicJPanelp3;〃显示投票结果的面板
publicList<JTextField>1ist_textfield;〃装载候选人姓名的容器
publicList<JRadioButton>1istjradiobutton投票
publicUserInterface(Managerm);
publicvoidupdateO;//窗口中增删组建后马上更新
publicvoidaddCandi(intnum);//panel1输入侯选者姓名完成后,生成候选者对象
}
2.2.4、输入面板类:MainGraph
publicclassMainGraph{
privateUserlnterfaceuserinterface;〃与主面板的通信
publicMainGraph(Userlnterfaceuserinterface);〃MainGraph的构造函数
publicvoidlaunchMainGraph();//加载主面板
)
2.2.5、投票面板类:VoteGraph
publicclassVoteGraph(
privateUserInterfaceuserinterface;〃与主面板的通信
publicVoteGraph(Userinterfaceuserinterface):7构造函数
publicvoidlaunchVoteCraph();//加载投票面板
)
2.2.6^显示结果类:ResultGraph
publicclassResultGraph{
privateL-serlnterfaccuscrlntcrfac。;〃与主面板的通信
publicResultGraph(Userinterfaceuserinterface);//构造函数
publicvoidlaunchResultGraph();,1/加载显示结果的面板
)
3功能实现
3.1窗口显示
点击运行后弹出一个窗口(Panell),要求用户输入候选人的个数(1-12)以及当选标
准(若为50%,只需输入50即可)
@欢迎来到投票|OJ0
请输入投票信息
假如依次输入12,50.点击确定后,窗口中会提示输入侯选人的姓名,候选人的编号是
从小到大依次生成的。
‘昌欢迎来至媵黑苣理浜统
I回
请输入投票信息
请输入候送人的个数(1-12):12
话输当送标潴(百分比):(50确定一1
候送人1的姓名:候送人7的姓名:
I娱送人2的姓名:假送人8的姓名:
陵送人3的姓名:候送人9的姓名:
快送人4的姓名:候送人10的姓名:
健送入5的姓名:候送人11的姓名:
幢送人6的姓名:候送人12的姓名:
1提交
依次输入12人的姓名点击提交后,就会弹出投票的窗口
L欢迎来到投茶管理案姓]E辱|
请为候选者投票
提交显示结果
假如共有7名投票人参加投票(每次投票完点击提交即为完成依次投票)投票过程如下:
投票者1:
1号:吴红岩3号:邵芳9号:李丹11号:李四
投票者2:
2号:刘莉莉3号:邵芳4号:尹聪敏6号:王小丽
8号:王永霞
投票者3:
1号:吴红岩2号:刘莉莉4号:尹聪敏5号:张三
7号:李泽9号:李丹
投票者4;
1号:吴红岩7号:李泽12号:王龙贺
投票者5:
3号:邵芳4号:尹聪敏5号:张三7号:李泽
10号:王小慧
投票者6:
1号:吴红岩2号:刘莉莉4号:尹聪敏5号:张三
10#:王小慧11号:李四12号:王龙贺
投票者7:
1号:吴红岩2号:刘莉莉3号:邵芳4号:刃聪敏
7号:李泽
最终的投票结果如下图所示:
3.2功能1
整个系统的UML时序图如下图所示:
附录:程序源代码
Candidate的具体代码:
publicclassCandidate{
privateStringnam?;〃候选者姓名
privateintid;〃候选者的编号
privateintnum;//得票数量
privatedoublevot?Result;//得票率
privatebooleanisVote;//是否中选
Candidate(Stringname,intid){
this,name=name;
this.id=id;
this,num=0;
this.voteResult=0;
this.isVote=false;
)
publicStringgetNameO{
returnname;
)
publicvoidsetNcims(Stringname){
this.name=neme;
)
publicintgetldO{
returnid;
)
publicvoidsetld(intid){
this.id=id;
)
publicintgetNurn(){
returnnum;
)
publicvoidsetNum(intnum)(
this.num=num;
)
publicdoublegetVoteResult0{
returnvoteResult;
)
publicvoidsetVot9Result(doublevoteResult){
this.voteResult=voteResult;
)
publicbooleanisVDteO(
returnisVote:
)
publicvoidsetVote(booleanisVote){
this.isVote=isVote;
)
publicStringtoStringO{
returnthis,name;
)
)
2、Manager类的具体代码
importjava.util.ArrayList;
importjava.util.List;
publicclassManager{
publicintcandidates;//候选人的数量
publicintpercentage;//当选标准(百分比)
publicintvoters=0;//投票人数量
Ust<Candidate>1istc=newArrayList<Candidate>();
publicstaticvoidmain(String[]args){
Managerm=newManager();
Userinterfaceui=newUserlnterface(m);
MainGraphmainGraph=newMainGraph(ui);
mainGraph.launchMainGraph();
)
publicvoidcalculateResult0{
doubled;
for(inti=0;i<candidates;i++){
Candidatec=listc.get(i);
d=(double)c.getNumO/voters;
c.setVoteResult((double)Math,rounds*10000)/100);
if(d>=percentage*0.01){
c.sctVote(true);
)
)
}
}
3、Userinterface类的具体代码:
importjava.awt.Color:
importjava.awt.Container;
importjava,awl.Fonl;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.util.ArrayList;
importjava,util.Iterator;
importjeiva.util.List;
importjava,util.Vector;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjcivax.swing.JRcidioButton;
importjavax.swing.JScrollPanc;
importjavax.swing.JTable;
importjavax.swing.JTextField;
importjavax.swing.SwiigConstanis;
importjavax.swing,table.DefaultTableCellRenderer;
/**
*
*©authorwhy
*
*/
publicclassUserinterfaceextendsJFrame(
privatestaticfinallongseriiilVersionUID=IL;
publicContainercontentPanel;//当前界面限制器
publicManagermanager;〃利于数据通信,主要包括:候选人数量、当选标
准、投票者数量
publicJPanelpl;〃输入信息的面板
publicJPanclp2;〃投票面板
publicJPanelp3;〃显示投票结果的面板
publicList<JTextField>list_textfield=newArrayList<JTextField>();
publicList<JRadi()Button>1ist_jradiobutton=newArrayList<JRadioButtor>();
publicUserlnterfaee(Managerm){
super(〃欢迎来到投票管理系统〃);
this,manager=m;
this.setVisible(true);
this.setBounds(150,30,700,700);
this,setDefau1IC1oseOperation(JFrame.EX1T_ON_CLOS1。;
this.setResizable(false);
this.setBackground(Color,biack);
contentPanel=this.getContentPane();
)
publicvoidupdateO{
this,repaint();
this.setVisible(true);
}
publicvoidaddCandi(intnum){
JTextFieldtext_name;
JLabellabel_name;
JButtonsubmit=newJButton("提交”);
Stringss=
intxl=80,x2=200,y=150,w=150,h=20;
intyy=y;
for(inti=1;i<=num;i++){
if(y>=this.getHeight()-250){
y=yy;
xl=xl+300;
x2=x2+300;
)
y+=50;
text_name=newJTextField();//新建输入姓名的文本框
label_name=newJLabel(ss);
label_name.setText("候选人"+i+”的姓名:");
labelname.setBounds(xl,y,w,h);
text_name.setBounds(x2,y,w,h);
listtextficld.add(textname);./把输入姓名的文本框加入到1ist中
pl.add(label_name);
pl.add(textname);
this,update();
)
submit.setBounds(this.getWidthO/3,this.getHeight()-150,100,20);
submit.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
for(inti=0;i<list_textfield.size();i++){
Stringname=listtextfield,get(i).getText();//得到文本框
中输入的候选者姓名
Candidatecandi=newCandidate(name,i+1);//依据输入的
姓名生成一个候选者
manager.1istc.add(candi);//把候选者加入到list中
)
VoteGraphvoteGraph=newVoteGraph(Userinterface,this);
voteGraph.1aunchVoteGraph():加载投票面板(Panel2)
)
});
pl.add(submit);
)
1
4、MainGraph类的具体代码:
importjava.awt.Color;
importjava,awt.Container;
importjava.awt.Font;
importjava.awl.HeadlessExceplion;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
/**
*系统的主界面,接受候选者人数,以及当选的标准
*©authorwhy
*
*/
publicclassMainGraph{
privateUserinterfaceuserinterface;〃与主面板的通信
publicMainGraph(UserInterfaceuserInterface){
super0;
this,userinterface=userinterface;
)
publicvoidlaunchMainGraphO{
userinterface,pl=newJPanel();
userinterface,pl.setLayout(null);
userinterface.pl.setBackground(Color,orange):
userinterface.contentPanel.add(userinterface,pl);
JLabellab=newJLabel("请输入投票信息“);
lab.setBounds(200,30,250,50);
intsize=25;
lab.setFont(newFont("Serif”,Font.PLAIN,size));
JLabellabel=newJLabel("请输入候选人的个数(1T2);
finalJTextFieldtext=newJTextField();//输入候选人的个数
Jl.abellabelp=newJLabel("请输当选标准[百分比):");
finalJTextFieldpertage=newJTextField();输入当选百分比
JButtonb=newJButton("确定");〃对候选人个数与门分比进行计较的扬,用
label.setBounds(80,100,170,20);
labelp.setBounds(80,130,150,20);
text.setBounds(240,100,150,20);
pertage.setBou.ids(240,130,150,20);
b.setBounds(50D,130,70,20);
b.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
userinterface,manager,candidates=
Integer,parseint(text.getText());〃得到候选者的个数
userlnlerface.addCandi(userinterface,manager,candidates);
userinterface,manager,percentage=
Integer.parseInt(pertage.getText());//得到当选百分比
)
});
userinterface,pl.add(label);
uscrlnterface.pl.add(lab);
userinterface,pl.add(text);
userinterface,pl.add(b);
userinterface,pl.add(1abe1p);
userinterface,pl.add(pertage);
userinterface,update();
)
}
5、VoteGraph类的具体代码:
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.event.ActionEvcnt;
importjava.awt.event.ActionListener:
importjava.util.Iterator;
importjavax.swing.JButton;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JRadioButton;
publicclassVoteGraph{
privateUserinterfaceuserinterface;〃与主面板的通信
publicVoteGraph(Userinterfaceuserinterface){
super();
this.userinterface=userinterface;
)
publicvoidlaunchVoteGraph(){
userinterface.1isi_jradiobutton.clear();
intx=80,y=150,w=120,h=20;
intyy=y;
JRadioButtonjrb;
userinterface.contentPanel.removeAll();
userinterface.p2=newJPanel();
userinterface.contentPanel.add(userinterface.p2);
userinterface.p2.setLayout(null);
userinterface.p2.setBackground(Color,orange);
JLabellabel=newJLabel("请为候选者投票");
label.setBounds(200,100,250,50);
intsize=25;
label.setFont(newFont("Serif”,Font.PLAIN,size));
JButtonvoter_submit=newJButton("提交");
votersubmit.setBounds(100,userinterface.getHeight()-150,100,20);
voter_submit.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
userinterface,manager.votcrs++;
for(inti=0;i<userinterface,manager,candidates;i++){
if(uscrlntcrface.1istjradiobutton.gct(i).isSclcctcdO){
userinterface,manager.listc.get(i).setNuni(userinterface.manager,listc.get(i
).getNumO+1);
)
)
uscrlntcrface.contentPanel.remove(uscrlntcrface.p2);
launchVoteGraph():
userinterface,update();
)
});
JButtonresult,submit=newJButton("显示结果”);
resultsubmit.setBounds(370,uscrlntcrface.getHeight()-150,100,20);
result_submit.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
userinterface,manager.calculateResult();
ResultGraphresult=newResultGraph(userinterface);
result.launchResultGraph();
userinterface,update0;
)
});
Iterator<Candidate>iterator=userInterface,manager.listc.iteratorO;
for(inti=1;i<=userinterface,manager,candidates;i++){//添力「候
选者以备投票用
Candidateceind=iterator.next();
if(y>=userinterface.getHeightO-250){
y=yy;
x=x4-300;
)
y+=50;
jrb=newJRadioButton(i+”号:"+cand.getNameO);
jrb.setBounds(x,y,w,h);
uscrlntcrface.1istjradiobutton.add(jrb);
userinterface.p2.add(jrb);
userinterface.update();
)
uscrlntcrface.p2.add(votcrsubmit);
userinterface.p2.add(result_submit);
userinterface.p2.add(label);
userinterface,contentPanel,add(userinterface.p2);
uscrlntcrface.update();
)
)
6^ResultGraph类的具体代码:
importjava.awt.Color;
importjava.awt.Font;
importjava.util.Vector;
importjavax.swing.JLabel:
importjavax.swing.JPanel;
importjavax.swing.JScrolIPane;
importjavax.swing.JTable;
importjavax.swing,table.DefaultTableCel1Renderer;
publicclassResultGraph{
privateUserinterfaceuscrlntcrface;〃与主面板的通信
publicResultGraph(UserInterfaceuserinterface){
super();
this.userinterface=userinterface;
)
publicvoidlaunchResultGraphO(
JLabellabel=newJLabel("最终结果");
label.setBounds(300,50,250,50);
intsize=25;
label.setFont(newFont("Serif”,Font.PLAIN,size));
JLabella=newJLabel("共有"+userInterface,manager,voters+”个投票人
当选标准:”
+userlntcrfacc.manager,percentage+"%”);
la.setBounds(2D0,570,250,50);
intsi=15;
la.setFont(newFont("Serif”,Font.PLAIN,si));
JScrolIPanescrolIPane=newJScrolIPaneO;//支持滚动
scrollpane.setBounds(100,150,500,380);
String[]columnNames=("候选者编号","姓名","票数","得票率〃,”是否中
选“};
Vector<String>columnNameV=newVector<String>(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论