寒假小软件
彩票模拟
编程前PSP:
PSP2.1 |
Personal Software Process Stages |
Time |
Planning |
计划 |
15min |
· Estimate |
· 估计这个任务需要多少时间 |
10h |
Development |
开发 |
10h |
· Analysis |
· 需求分析 (包括学习新技术) |
1h |
· Design Spec |
· 生成设计文档 |
1h |
· Design Review |
· 设计复审 (和同事审核设计文档) |
1h |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
1h |
· Design |
· 具体设计 |
2h |
· Coding |
· 具体编码 |
1h |
· Code Review |
· 代码复审 |
1h |
· Test |
· 测试(自我测试,修改代码,提交修改) |
1h |
Reporting |
报告 |
1h |
· Test Report |
· 测试报告 |
20min |
· Size Measurement |
· 计算工作量 |
20min |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
20min |
|
合计 |
10h |
双色球模拟
package balls; import java.util.Arrays; import java.util.Random; public class Ball1 { public String ball1() { String[] pool = {"01","02","03","04","05", "06","07","08","09","10", "11","12","13","14","15", "16","17","18","19","20", "21","22","23","24","25", "26","27","28","29","30", "31","32","33"}; boolean[] used = new boolean[pool.length]; String[] balls = new String[6]; Random random = new Random(); int i; int index = 0; while(true){ i = random.nextInt(pool.length); if(used[i]){ continue; } balls[index++] =pool[i]; used[i] = true; if(index == balls.length){ break; } } Arrays.sort(balls); String[] newBalls = new String[7]; for(int m = 0; m < balls.length; m++){ newBalls[m] = balls[m]; } newBalls[newBalls.length - 1] = pool[random.nextInt(16)]; String r = Arrays.toString(newBalls); return r; } }
大乐透模拟
package balls; import java.util.Arrays; import java.util.Random; public class Ball2 { public String ball2() { String[] pool = {"01","02","03","04","05", "06","07","08","09","10", "11","12","13","14","15", "16","17","18","19","20", "21","22","23","24","25", "26","27","28","29","30", "31","32","33","34","35"}; boolean[] used = new boolean[pool.length]; String[] balls = new String[5]; Random random = new Random(); int i; int index = 0; while(true){ i = random.nextInt(pool.length); if(used[i]){ continue; } balls[index++] =pool[i]; used[i] = true; if(index == balls.length){ break; } } Arrays.sort(balls); String[] newBalls = new String[7]; for(int m = 0; m < balls.length; m++){ newBalls[m] = balls[m]; } newBalls[newBalls.length - 2] = pool[random.nextInt(12)]; while(true){ String j = pool[random.nextInt(12)]; if(j == newBalls[5]){ continue; }else{ newBalls[6] = j; break; } } /*if(newBalls[5] > (newBalls[6]){ String x = newBalls[5]; newBalls[5] = newBalls[6]; newBalls[6] = x; }*/ String r = Arrays.toString(newBalls); return r; } }
java JFrame窗口
package window; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.imageio.ImageIO; import java.io.IOException; import balls.*; public class BallsWindow extends JFrame { public void Window() { /*标题 String path = "/Img/彩票.jpg"; try { Image img = ImageIO.read(this.getClass().getResource(path)); this.setIconImage(img); } catch (IOException e) { e.printStackTrace(); } //this.setIconImage(Toolkit.getDefaultToolkit().getImage("E:\\彩票.jpg")); */ this.setTitle("我要中大奖"); //窗口控制 //this.setBounds(300, 200, 580, 600); this.setLocation(500, 100); this.setSize(500, 300); this.setResizable(false); this.setLayout(new FlowLayout()); setLayout(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); //按钮控制 Button bu1 = new Button("双色球"); bu1.setFont(new Font("宋体", Font.BOLD, 20)); bu1.setBounds(100,70,100,100); Button bu2 = new Button("大乐透"); bu2.setFont(new Font("宋体", Font.BOLD, 20)); bu2.setBounds(280,70,100,100); this.add(bu1); this.add(bu2); bu1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JTextField jtf1;//文本框 JFrame frame1 = new JFrame("双色球"); frame1.setVisible(true); frame1.setLocation(500, 100); frame1.setSize(500, 300); frame1.setDefaultCloseOperation(EXIT_ON_CLOSE); frame1.setLayout(new FlowLayout()); // 第一行 JLabel jl1 = new JLabel("输入模拟次数"); jtf1 = new JTextField(12); frame1.add(jl1); frame1.add(jtf1); // 第二行 JButton jb1, jb2;//按钮 jb1 = new JButton("确定"); jb1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand();// 根据动作命令,来进行分别处理 if (cmd.equals("确定")) { String n = jtf1.getText(); int m = Integer.parseInt( n ); JFrame frame1 = new JFrame("双色球"); frame1.setVisible(true); frame1.setLocation(500, 100); frame1.setSize(500, 300); frame1.setDefaultCloseOperation(EXIT_ON_CLOSE); frame1.setLayout(new FlowLayout()); JTextArea jta = new JTextArea(50,14); Ball1 b1 = new Ball1(); jta.append(" ---------红球----------蓝球-"+"\n"); for(int i = 0; i < m; i++) { jta.append(b1.ball1()+"\n"); } frame1.add(jta); } }});// 添加动作响应器 jb2 = new JButton("重置"); jb2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand();// 根据动作命令,来进行分别处理 if (cmd.equals("重置")) { jtf1.setText(""); } }});// 添加动作响应器 frame1.add(jb1); frame1.add(jb2); } }); bu2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JTextField jtf1;//文本框 JFrame frame2 = new JFrame("大乐透"); frame2.setVisible(true); frame2.setLocation(500, 100); frame2.setSize(500, 300); frame2.setDefaultCloseOperation(EXIT_ON_CLOSE); frame2.setLayout(new FlowLayout()); // 第一行 JLabel jl1 = new JLabel("输入模拟次数"); jtf1 = new JTextField(12); frame2.add(jl1); frame2.add(jtf1); // 第二行 JButton jb1, jb2;//按钮 jb1 = new JButton("确定"); jb1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand();// 根据动作命令,来进行分别处理 if (cmd.equals("确定")) { String n = jtf1.getText(); int m = Integer.parseInt( n ); JFrame frame2 = new JFrame("大乐透"); frame2.setVisible(true); frame2.setLocation(500, 100); frame2.setSize(500, 300); frame2.setDefaultCloseOperation(EXIT_ON_CLOSE); frame2.setLayout(new FlowLayout()); JTextArea jta = new JTextArea(50,14); Ball2 b2 = new Ball2(); jta.append(" ----------前区--------*后区*"+"\n"); for(int i = 0; i < m; i++) { jta.append(b2.ball2()+"\n"); } frame2.add(jta); } }});// 添加动作响应器 jb2 = new JButton("重置"); jb2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand();// 根据动作命令,来进行分别处理 if (cmd.equals("重置")) { jtf1.setText(""); } }});// 添加动作响应器 frame2.add(jb1); frame2.add(jb2); } }); } }
主函数
package play; import window.BallsWindow; public class BallsPlay { public static void main(String[] args) { BallsWindow b = new BallsWindow(); b.Window(); } }
结果:
![](https://images2018.cnblogs.com/blog/1216362/201803/1216362-20180305153926349-1900205000.png)
编程后PSP:
PSP2.1 |
Personal Software Process Stages |
Time |
Planning |
计划 |
15min |
· Estimate |
· 估计这个任务需要多少时间 |
10h |
Development |
开发 |
10h |
· Analysis |
· 需求分析 (包括学习新技术) |
1h |
· Design Spec |
· 生成设计文档 |
1h |
· Design Review |
· 设计复审 (和同事审核设计文档) |
1h |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
1h |
· Design |
· 具体设计 |
2h |
· Coding |
· 具体编码 |
1h |
· Code Review |
· 代码复审 |
1h |
· Test |
· 测试(自我测试,修改代码,提交修改) |
1h |
Reporting |
报告 |
1h |
· Test Report |
· 测试报告 |
20min |
· Size Measurement |
· 计算工作量 |
20min |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
20min |
|
合计 |
10h |
缺陷记录日志
①界面不美观,字体大小没有调整的好