学生投票软件.docx

上传人:b****7 文档编号:9357252 上传时间:2023-02-04 格式:DOCX 页数:19 大小:1.66MB
下载 相关 举报
学生投票软件.docx_第1页
第1页 / 共19页
学生投票软件.docx_第2页
第2页 / 共19页
学生投票软件.docx_第3页
第3页 / 共19页
学生投票软件.docx_第4页
第4页 / 共19页
学生投票软件.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

学生投票软件.docx

《学生投票软件.docx》由会员分享,可在线阅读,更多相关《学生投票软件.docx(19页珍藏版)》请在冰豆网上搜索。

学生投票软件.docx

学生投票软件

Java期末项目论文

项目名称:

学生投票软件

小组成员:

AAA

BBB

年级专业:

11级计算机科学与技术

日期:

2013年12月18日

 

1、选题背景

每个合法的成年公民都具有选举权,在人们的日常工作、学习以及生活中,大到领导的选举,小到班级组织的活动,投票这项活动随处可见。

在我们大学校园里,每年都要进行三好学生、优秀干部的选举,奖助学金的评选等一系列活动,这些都需要我们学生进行投票。

手写的选票不但繁琐、麻烦,还会出现一些不合法的选票,于是我们小组决定制作一个投票、计票软件,方便大家的同时,也提升了该项活动的公平、公正性。

2、分析过程

本程序主要需要掌握窗口的布局格式和事件触发的相关知识,程序整体采用组合布局的方式,将所有部件添加到面板JPanel上,显示提示信息需要用到是标签Label,按钮用Button来实现,选票需要用Checkbox复选框来实现,选票的计数和显示用到的是设置为不可编辑的文本框TextField,候选人的照片也是通过JLabel来添加的。

本程序将整个界面分成若干个小块,每一小块都是一个面板,最后将所有小块拼接起来,为每个小块都设置好布局setLayout,我们在这里主要用到的布局有:

流式布局FlowLayout和BoxLayout盒式位布局。

界面创建好了之后,就要实现具体的功能了。

本程序的功能主要是通过鼠标触发来实现的,通过对java.awt.event.ActionListener的成员方法actionPerformed的重载来实现。

学生每次投票后,通过setEnabled(false)使投票按钮不可编辑,必须点击刷新按钮才能重新投票,这样能够有效地避免一个学生进行多次投票、刷票等不公平现象。

而文件的保存这一部分主要是参考教材第七章—文件和数据流的处理来实现的。

3、开发过程

在选定了题目之后,我首先分析了程序的编写思路及步骤,首先编写程序界面的相关代码,在实现了界面之后完成每一部分的具体功能。

⑴首先是界面的设计:

定义:

JPanel[]p=newJPanel[7],将布局分成了七个不部分,每一个部分设置成需要的布局形式,然后通过p[pj[i]].add()语句为每一部分添加相关的组件,设置相关属性,主要用到的组件有:

Dialog、Label、Button、TextField和CheckBox。

有关变量的定义如下:

①staticJDialogd=newJDialog();//弹出对话框

②staticJButton[]bk={newJButton("投票"),newJButton("刷新"),newJButton("保存结果")};//相关的按钮

③JCheckBox[]ck={newJCheckBox("陈乔恩"),newJCheckBox("蔡依林"),newJCheckBox("柯震东")};//实现投票的复选框

④JTextField[]t={newJTextField("",14),newJTextField("",14),newJTextField("",14),newJTextField("",14)};//文本框用于显示选票

⑤ImageIcon[]ic={newImageIcon("0.jpg"),newImageIcon("1.jpg"),newImageIcon("2.jpg"),newImageIcon("3.jpg"),newImageIcon("4.jpg")};//图片信息

⑵各部分功能的实现:

(只列出关键部分)

①查看简介按钮:

通过显示对话框的方式来实现候选人的介绍

button.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

JOptionPane.showMessageDialog(null,str1[0],str2[0],JOptionPane.PLAIN_MESSAGE);}

});

②投票按钮:

button.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

if(ck[0].isSelected()||ck[1].isSelected()||ck[2].isSelected())

count++;//如果由候选人被选,

if(ck[0].isSelected()){

count1++;//1号候选人被选,票数加1

ck[0].setEnabled(true);//设置复选框可以被编辑

bk[0].setEnabled(true);//投票按钮可以使用

}

//其他的候选人复选框和以上相同,这里不再列出

t[0].setText("投票总人数:

"+count);

t[1].setText("陈乔恩得票数:

"+count1);

t[2].setText("蔡依林得票数:

"+count2);

t[3].setText("柯震东得票数:

"+count3);

bk[0].setEnabled(false);//投票之后,投票按钮不可编辑,必须点击刷新按钮,保证每人只能投一张选票

}

③文件保存按钮主要通过以下步骤进行编写:

创建该文件所对应的输入/输出流或读写器的实例对象,以获得相应的系统资源;对文件进行读(输入)/写(输出)操作;最后调用close成员方法,关闭文件,以释放文件所占用的系统资源。

4、测试过程

⑴程序初始化界面

⑵测试查看三个候选人简介功能

⑶测试软件的投票功能(主要功能)

假设一共有15个人投票,每个人的投票情况如下:

陈乔恩

蔡依林

柯震东

1号投票人

2号投票人

3号投票人

4号投票人

5号投票人

6号投票人

7号投票人

8号投票人

9号投票人

10号投票人

11号投票人

12号投票人

13号投票人

14号投票人

15号投票人

总计

7票

11票

9票

投票结果显示如下:

⑷测试软件的选票存储功能

打开刚刚保存在C盘下的名为(选票.xls)的Excel文档:

 

5、小组人员分工及自我表现评价

⑴组员:

AAA

我参与了开发前期的选题及分析过程,由于本人编程能力较弱,所以未参与编程开发的工作,但是在这期间复习了课本,巩固了自己java语言编程的基础知识。

我还负责了软件开发后期的测试及改进阶段,与其他组员合作完善了软件的功能。

另外,我还负责本小组项目报告的编写。

虽然没有参与代码编写有些遗憾,可是在本项目开发的过程中提高了很多,综合表现得分90分。

⑵组员:

BBB

我主要参与了开发前期的选题及分析过程,在此期间从图书馆和互联网上查阅了很多资料,最终和AAA一起确定了课程的题目---学生投票软件。

随后由我负责软件代码的编写,在编写的过程中,由于对java语言掌握的不是特别好,遇到了很多问题,不过经过自己的努力,一一克服了困难,最终编写出了比较满意的代码,最后我还参与了开发后期的测试与程序改进,word的修改工作,综合表现得分95分。

6、总结

通过本次的Java期末大作业,我最大的体会就是我们不仅要熟练地掌握了书本上的知识,更要能够把学到的知识应用到上机编程中,这样才能算是真正学会了书本上所讲的知识。

本次Java编程主要参考本学期所学的教材第八章—Swing图形用户界面设计,本次代码有些简单,但完全是我自己编写的,无任何抄袭;在编写代码的过程中,我遇到了很多困难,比如图形界面的设计、鼠标触发等就花费了很多时间翻看教材和其他资料,不过看着凭借自己的努力做出来的成果,一切努力都是值得的。

通过做这个学生投票系统,我对于Java有了进一步地了解,特别对部件的布局更熟练了。

我想,学习是个持之以恒的过程,如果真正想学好Java语言的话,光靠课程设计的时间是远远不够的,因为自己对Java还是比较感兴趣,所以以后我一定要加强Java的学习,坚持不懈,一切努力都将会是值得的。

7、参考文献

1.雍俊海编著.《Java程序设计教程》(第二版)--北京:

清华大学出版社,2007.07

八、程序源代码

importjava.awt.Color;

importjava.awt.Container;

importjava.awt.FlowLayout;

importjava.awt.Font;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.io.BufferedWriter;

importjava.io.FileWriter;

importjava.io.IOException;

importjavax.swing.JDialog;

importjavax.swing.JFileChooser;

importjavax.swing.JLabel;

importjavax.swing.JPanel;

importjavax.swing.JFrame;

importjavax.swing.JButton;

importjavax.swing.ImageIcon;

importjavax.swing.BoxLayout;

importjavax.swing.JCheckBox;

importjavax.swing.JTextField;

importjavax.swing.JOptionPane;

publicclassVoteextendsJFrame{

privatestaticfinallongserialVersionUID=1L;

protectedinti,m=0,h=0;

staticJDialogd=newJDialog();

staticJButton[]bk={newJButton("投票"),newJButton("刷新"),newJButton("保存结果")};

JCheckBox[]ck={newJCheckBox("陈乔恩"),newJCheckBox("蔡依林"),newJCheckBox("柯震东")};

JTextField[]t={newJTextField("",14),newJTextField("",14),newJTextField("",14),newJTextField("",14)};

ImageIcon[]ic={newImageIcon("00000.jpg"),newImageIcon("11111.jpg"),newImageIcon("22222.jpg"),newImageIcon("33333.jpg"),newImageIcon("44444.jpg")};

staticintcount=0,count1=0,count2=0,count3=0;

publicVote()

{

super("学生投票系统");

String[]s={"陈乔恩","蔡依林","柯震东"};

int[]ia={JLabel.CENTER,JLabel.CENTER,JLabel.CENTER,JLabel.CENTER,JLabel.CENTER};

int[]ib={JLabel.TOP,JLabel.TOP,JLabel.TOP,JLabel.TOP,JLabel.TOP};

Containerc=getContentPane();

c.setLayout(newFlowLayout());

JPanel[]p=newJPanel[7];

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

{

p[i]=newJPanel();

}

p[0].setLayout(newFlowLayout());

p[1].setLayout(newFlowLayout(FlowLayout.CENTER,30,0));

p[2].setLayout(newFlowLayout(FlowLayout.CENTER,150,0));

p[3].setLayout(newFlowLayout());

p[4].setLayout(newBoxLayout(p[4],BoxLayout.Y_AXIS));

p[5].setLayout(newFlowLayout(FlowLayout.CENTER,0,0));

p[6].setLayout(newBoxLayout(p[6],BoxLayout.X_AXIS));

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

{

c.add(p[i]);

}

int[]pj={0,1,1,1,2,2,2,3,4,4,4,5,5,5,5};

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

{

if(i==0)

{

JLabelaLabel=newJLabel(ic[i],JLabel.CENTER);

aLabel.setHorizontalTextPosition(ia[i]);

aLabel.setVerticalTextPosition(ib[i]);

p[pj[i]].add(aLabel);

}

if(i>0&&i<=3)

{

JLabelaLabel=newJLabel(s[i-1],ic[i],JLabel.CENTER);

aLabel.setHorizontalTextPosition(ia[i]);

aLabel.setVerticalTextPosition(ib[i]);

p[pj[i]].add(aLabel);

}

if(i>3&&i<=6)

{

JButtonb=newJButton("查看简介");

Show1(b,m++);

p[pj[i]].add(b);

}

if(i==7)

{

JLabelaLabel=newJLabel(ic[i-3],JLabel.CENTER);

aLabel.setHorizontalTextPosition(ia[i-3]);

aLabel.setVerticalTextPosition(ib[i-3]);

p[pj[i]].add(aLabel);

}

if(i>7&&i<=10)

{

p[pj[i]].add(ck[i-8]);

ck[i-8].setSelected(false);

}

if(i==11)

{

p[pj[i]].add(bk[i-11]);

Show1(bk[i-11],3);

}

if(i==12)

{

p[pj[i]].add(bk[i-11]);

Show1(bk[i-11],4);

}

if(i==13)

{

p[pj[i]].add(bk[i-11]);

Show1(bk[i-11],5);

}

if(i==14)

{

for(intlength=0;length<4;length++)

{

t[length].setEditable(false);

p[pj[i]].add(t[length]);

}

}

}

}

publicvoidShow1(JButtonbutton,intnumber)

{

finalStringstr2[]={"陈乔恩简介","蔡依林简介","柯震东简介"};

finalStringstr1[]={"陈乔恩,中国台湾女演员、歌手,出生于台湾新竹。

2001年9月23日正式出道,是一位多方位发展的艺人。

",

"蔡依林,1980年9月15日生于台湾,中国的流行音乐女歌手,擅长前卫多变的造型与丰富的舞曲及舞蹈。

",

"柯震东,本名柯家凯。

中国台湾男演员、歌手。

1991年6月18日出生于台湾澎湖,现就读于私立中国文化大学体育系。

"};

setLayout(newFlowLayout());

add(button);

if(number==0)//查看陈乔恩简介

{button.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

JOptionPane.showMessageDialog(null,str1[0],str2[0],JOptionPane.PLAIN_MESSAGE);

}

});

}

if(number==1)//查看蔡依林简介

{button.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

JOptionPane.showMessageDialog(null,str1[1],str2[1],JOptionPane.PLAIN_MESSAGE);

}

});

}

if(number==2)//查看柯震东简介

{button.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

JOptionPane.showMessageDialog(null,str1[2],str2[2],JOptionPane.PLAIN_MESSAGE);

}

});

}

if(number==3)//投票按钮

{button.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

if(ck[0].isSelected()||ck[1].isSelected()||ck[2].isSelected())

count++;

if(ck[0].isSelected())

{

count1++;

ck[0].setEnabled(true);

bk[0].setEnabled(true);

}

if(ck[1].isSelected())

{

count2++;

ck[1].setEnabled(true);

bk[0].setEnabled(true);

}

if(ck[2].isSelected()){

count3++;

ck[2].setEnabled(true);

bk[0].setEnabled(true);

}

t[0].setText("投票总人数:

"+count);

t[1].setText("陈乔恩得票数:

"+count1);

t[2].setText("蔡依林得票数:

"+count2);

t[3].setText("柯震东得票数:

"+count3);

bk[0].setEnabled(false);

Fontfont=newFont("宋体",Font.BOLD,15);

Colorclo[]={Color.blue,Color.magenta,Color.green,Color.red,Color.darkGray};

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

{

t[j].setFont(font);

if(h%5==0)

t[j].setForeground(clo[0]);

if(h%5==1)

t[j].setForeground(clo[1]);

if(h%5==2)

t[j].setForeground(clo[2]);

if(h%5==3)

t[j].setForeground(clo[3]);

if(h%5==4)

t[j].setForeground(clo[4]);

}

h++;

}

});

}

if(number==4)//刷新按钮

{button.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

bk[0].setEnabled(true);

ck[0].setSelected(false);

ck[1].setSelected(false);

ck[2].setSelected(false);

ck[0].setEnabled(true);

ck[1].setEnabled(true);

ck[2].setEnabled(true);

}

});

}

if(number==5)//保存结果按钮

{button.addActionListener(newActionListener()

{

publicvoidactionPerformed(ActionEvente)

{

JFileChooserf=newJFileChooser();

f.showSaveDialog(Vote.this);

Stringfilename=f.getSelec

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

当前位置:首页 > 法律文书 > 判决书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1