随笔缘由:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213

githup缘由:https://github.com/tianshizhao/tianshizhao

一、基本要求

从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:

  • 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
  • 用户可以输入答案
  • 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少

二、我们做的扩展方向

  1. 用户答题结束以后,程序可以显示用户答题所用的时间
  2. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  3. 程序可以出单个整数阶乘的题目:如:4!=24
  4. 程序可以设置皮肤功能,可以改变界面的颜色即可(按钮点击实现八种颜色随机切换)
  5. 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。

三、开发环境下调试:Intelij IDEA

       

四、估计实现所需时间,记录结对编程时间。

 

PSP2.1 Personal Software Process Stages Time Senior Student Time
Development 开发 50 60
· Analysis 需求分析 (包括学习新技术) 30 35
· Design Spec 生成设计文档 0 0
· Design Review 设计复审 0 0
· Coding Standard 代码规范 5 8
· Design 具体设计 30 35
· Coding 具体编码 45 60
· Code Review 代码复审 3 5
· Test 测试(自我测试,修改代码,提交修改) 5 8
Reporting 报告 0 0

 

五、代码实现

  窗体代码

 

 1 JSJ()
 2     {
 3         super("简易计算器升级版");
 4         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 5         this.setSize(1000,500);
 6         A =new JLabel("输入题目数目:");
 7         B=new JLabel("时间:");
 8         C =new JLabel("设置时间(小于120秒):");
 9         D =new JLabel("题目:");
10         E =new JLabel("答案:");
11         F =new JLabel("判断:");
12         number =new JTextField(10);
13         button1 =new JButton("产生题目");
14         button4 =new JButton("改背景");
15         button4.addActionListener(this);
16         n =new JTextField(10);
17         useranswer =new JTextField(10);
18         useranswer.addActionListener(this);
19         flase =new JTextField(15);
20         ShowTime =new JTextField(10);
21         ShowTime.addActionListener(this);
22         settingtime =new JTextField(10);
23         settingtime.addActionListener(this);
24         Timer timertask = new Timer(1000, this);
25         this.timer = timertask;
26         button3 =new JButton("提交");
27         button3.addActionListener(this);
28         button2 =new JButton("下一题");
29         button2.addActionListener(this);
30         number.addActionListener(this);
31         button1.addActionListener(this);
32         G1 =new JPanel();
33         G2 =new JPanel();
34         G3 =new JPanel();
35         getContentPane().add(G1,"North");
36         getContentPane().add(G2,"Center");
37         getContentPane().add(G3,"South");
38         G3.add(button4);
39         G3.add(menubar);
40         G1.add(C);
41         G1.add(settingtime);
42         G1.add(A);
43         G1.add(number);
44         G2.add(button1);
45         G2.add(D);
46         G2.add(n);
47         G2.add(E);
48         G2.add(useranswer);
49         G2.add(F);
50         G2.add(flase);
51         G3.add(B);
52         G3.add(ShowTime);
53         G3.add(button3);
54         G3.add(button2);
55         this.setResizable(false);
56         this.setVisible(true);
57     }

 

 

 

 

     提交答案后检测正确或错误

 

 1            if(e.getSource()==menubar.getMenu(1))
 2             {
 3             }
 4             else if(e.getSource()== button3)
 5             {
 6                 s =decimal.format(sum);
 7                 if(Float.parseFloat(s)==Float.parseFloat(useranswer.getText()))
 8                 {
 9                     right++;
10                     flase.setText("输入的答案正确!");
11                     flase.setForeground(Color.red);
12                 }
13                 else
14                 {
15                     wrong++;
16                     flase.setText("错误!正确答案为"+Float.parseFloat(s));
17                     flase.setForeground(Color.BLUE);
18                 }
19             }

 

    题目数量不能超过5道题 时间不能超过120秒

 1 try
 2             {
 3                 ShowTime.setText(String.valueOf(settingtime.getText()));
 4 
 5                 int n1=120,n2=5;
 6                 if(n1<(Integer.parseInt(ShowTime.getText())))
 7                 {
 8                     JOptionPane.showMessageDialog(null, "时间不能超过120秒!");
 9                     this.setVisible(false);
10                 }
11                 if(n2<(Integer.parseInt(number.getText())))
12                 {
13                     JOptionPane.showMessageDialog(null, "选择题数不能超过5个!");
14                     this.setVisible(false);
15 
16                 }
17                 timer.start();
18 
19             }
20             catch(NullPointerException o)
21             {
22                 System.out.print("输入有误");
23             }
24             yunsuan();
25             ShowTime.setText(String.valueOf(settingtime.getText()));
26         }

 

 

六、运行结果截图

 

 

 

 

 

七、分工与合作

        1、结对成员

 

  2、扩展方向

  1. 用户答题结束以后,程序可以显示用户答题所用的时间(张志涛)
  2. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数(张志涛)
  3. 程序可以出单个整数阶乘的题目:如:4!=24(田仕钊)
  4. 程序可以设置皮肤功能,可以改变界面的颜色即可(按钮点击实现八种颜色随机切换)(田仕钊)
  5. 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。(田仕钊)

 

 、总结心得

   负责的两个扩展方向比较简单,很快就可以解决了,主要是窗体方面,以前学JAVA的时候老师有讲过,那时懵懵懂懂过去

        没有学好怎么运用窗体,就这样卡在窗体的代码里,好在回想起老师对窗体的讲解,这样一来容易看懂了网上的参考代码,

        看多几次代码后自己也跟着写就容易成功了。看来基础还是不够扎实。要多多看书多加练习。

 

九、照片