简单抽奖软件java程序设计
来源:互联网 发布:360自动优化工具下载 编辑:程序博客网 时间:2024/06/08 06:11
一.设计任务
摇奖 描述:从候选手机号码里随机选取号码显示在屏幕上作为获奖手机号。此题训练多线程操作。 描述 提示和要求: 提示和要求 ①候选号码可以保存在数组中,也可以保存在数据库中。 ②抽奖人点击开始按钮时,号码开始翻动,点击停止按钮时,显示的号码即为获奖号码。 ③为保证公平,应该使每个号码被选中的几率相同。
二.功能描述
用户界面简介:用户界面如图所示;界面包括一个顶层容器框架;两个按钮控件:开始和停止;一个编辑框控件;和一个标注为“抽奖机”的标签。
功能简介:点击开始按钮如图所示号码快速闪动,以至于不能看清号码。
然后点击停止按钮,选出幸运号码;如图:
点击消息框的确定按钮,继续抽奖!!!!!
三.各功能具体完成的功能
框架代码:
Final Liu form = new Liu();//Liu是一个自定义的框架类
form.setLocation(400,200);//设置框架位置坐标
form.setSize(455,300);//设置框架大小(长度和宽度)
form.setVisible(true);//设置框架是否可见
开始按钮代码:
JButton startButton = new JButton("开始");
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
str[0] = "b";
new Thread(new Runnable(){
public void run(){
new Main().string();
for(int i = 0;;++i)
{
if(str[0] == "a")
break;
form.getTextField().setText(new Main().string());
}
}}).start();
}
});
startButton.setFont(new Font("微软雅黑", Font.PLAIN, 24));
startButton.setBackground(Color.ORANGE);
startButton.setBounds(80, 165, 117, 46);
form.getContentPane().add(startButton);
开始按钮代码里面有一个内部线程new Thread(new Runnable)(){}).start(),这是我编程中的难点。
停止按钮代码:
JButton stopButton = new JButton("\u505C\u6B62");
stopButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
str[0] = "a";
String st = form.getTextField().getText();
st = "恭喜手机号为:" + st + "的用户获得百元大奖!!!!";
new JOptionPane().showMessageDialog(null, st);
}
});
stopButton.setFont(new Font("微软雅黑", Font.PLAIN, 24));
stopButton.setBackground(Color.magenta);
stopButton.setBounds(240, 165, 117, 46);
form.getContentPane().add(stopButton);
停止按钮代码里遇到线程结束问题非常头痛,通过多方面的查看资料,不断地调试,勉强解决,以后要加强线程的训练。
标签代码:
JLabel lblNewLabel = new JLabel("抽奖机");
lblNewLabel.setBackground(Color.MAGENTA);
lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 30));
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel.setBounds(150, 21, 136, 50);
getContentPane().add(lblNewLabel);
编辑框代码:
txtEdit = new JTextField();
txtEdit.setFont(new Font("微软雅黑", Font.PLAIN, 24));
txtEdit.setBounds(118, 90, 200, 50);
getContentPane().add(txtEdit);
txtEdit.setColumns(10);
本程序中编辑框读写号码是问题的关键,这也是我非常头痛的问题之一。
四.功能实现的流程
五.实验体会
编程遇到的困难:
编程过程中遇到很多困难,由于是第一次用可视化编程控件编程,所以对各个控件不太熟悉,走了很多弯路。由于对各个控件创建和设置都不能很好地把握,因此我运用eclipse的windowBuilder来编辑控件和设置属性等。其次就是对事件源,事件监听器,事件处理方法运用的不太熟练掌握的不太透彻。最大的困难就是创建线程和结束线程;尤其是结束线程可谓是绞尽脑汁。但是功夫不负有心人,在不断的坚持当中终于完成了任务。
经验总结:
以后要加强自己的编程训练,提高自己的编程能力。一定要敢想,敢写,敢做。在本次编程中使我更加深刻的了解了java面向对象的编程思想和编程方法。对java类有了更深刻的理解。对线程的应用更得心应手。
附录:
Liu.Java:
package java课程设计; import javax.swing.JFrame;import javax.swing.JButton;import javax.swing.JOptionPane; import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.ActionListener;import java.awt.event.ActionEvent; import javax.swing.JTextField;import java.awt.Font;import java.awt.Color;import javax.swing.JLabel;import javax.swing.SwingConstants; public class Liu extends JFrame{ public JTextField txtEdit; public Liu() { super(); getContentPane().setBackground(Color.GREEN); getContentPane().setForeground(Color.MAGENTA); getContentPane().setFont(new Font("微软雅黑", Font.PLAIN, 30)); getContentPane().setLayout(null); txtEdit = new JTextField(); txtEdit.setFont(new Font("微软雅黑", Font.PLAIN, 24)); txtEdit.setBounds(118, 90, 200, 50); getContentPane().add(txtEdit); txtEdit.setColumns(10); JLabel lblNewLabel = new JLabel("抽奖机"); lblNewLabel.setBackground(Color.MAGENTA); lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 30)); lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER); lblNewLabel.setBounds(150, 21, 136, 50); getContentPane().add(lblNewLabel); } public JTextField getTextField() {return txtEdit; }}
Main.java:
package java课程设计; import java.awt.Color;import java.awt.Container;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Random; import javax.swing.JButton;import javax.swing.JOptionPane;import javax.swing.JTextField; public class Main{String string(){String [] phone = {"14854268096","17864268097","12345678912","13864268096","18964268097","12345678912","14564268096","16764268097","12345678912","13864268096","13864268097","12345678912","13864268096","13864268097","12345678912","13864268096","13864268097","12345678912","13864268096","13864268097","12345678912"}; Random random = new Random(); int ran = random.nextInt(20); return phone[ran];} public static void main(String [] args) { final String [] str = new String [5]; final Liu form = new Liu(); form.setLocation(400,200); form.setSize(455,300); form.setVisible(true); JButton startButton = new JButton("开始"); startButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { str[0] = "b"; new Thread(new Runnable(){ public void run(){ new Main().string(); for(int i = 0;;++i) { if(str[0] == "a") break; form.getTextField().setText(new Main().string()); } }}).start(); } }); startButton.setFont(new Font("微软雅黑", Font.PLAIN, 24)); startButton.setBackground(Color.ORANGE); startButton.setBounds(80, 165, 117, 46); form.getContentPane().add(startButton); JButton stopButton = new JButton("\u505C\u6B62"); stopButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {str[0] = "a"; String st = form.getTextField().getText(); st = "恭喜手机号为:" + st + "的用户获得百元大奖!!!!"; new JOptionPane().showMessageDialog(null, st); } }); stopButton.setFont(new Font("微软雅黑", Font.PLAIN, 24)); stopButton.setBackground(Color.magenta); stopButton.setBounds(240, 165, 117, 46); form.getContentPane().add(stopButton); }}
- 简单抽奖软件java程序设计
- java 抽奖软件
- java简单抽奖程序
- JAVA 简单的抽奖程序
- 抽奖软件
- JAVA 两个简单的抽奖算法
- java实现简单的抽奖游戏
- 年会抽奖 抽奖软件 抽奖系统
- Flash手机抽奖程序设计:抽奖操作
- java 抽奖
- 简单java程序设计
- 微博抽奖软件
- 随机抽奖软件
- 抽奖软件webapi开发
- 滚动照片抽奖软件
- java实现大转盘抽奖的简单思路
- 抽奖简单算法
- android简单抽奖
- 【翻译】和麻美学姐一起的世界树(マミさんと世界樹スレ)第一话
- POI介绍及视频教程
- D - 最小公倍数
- oralce数据泵
- cookie编码(中文乱码)
- 简单抽奖软件java程序设计
- 使用 spring web 时候 web.xml 的配置
- MapReduce实例——ChainMapper的使用
- UFLDL学习笔记2(Preprocessing: PCA and Whitening)
- JavaScript前台判空
- servlet 中获取 spring 管理的 bean
- 2D斜视角游戏的绘制次序总结(云风的blog)
- 开发工作中使用的敏捷开发模式
- qt-connect