随笔缘由:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213
githup缘由:https://github.com/tianshizhao/tianshizhao
一、基本要求
从个人项目出发,将程序改造成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:
- 自动生成题目,单个题目最多不能超过4个运算符,操作数小于100。
- 用户可以输入答案
- 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少
二、我们做的扩展方向
- 用户答题结束以后,程序可以显示用户答题所用的时间
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
- 程序可以出单个整数阶乘的题目:如:4!=24
- 程序可以设置皮肤功能,可以改变界面的颜色即可(按钮点击实现八种颜色随机切换)
- 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过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、结对成员
- 本人——201606120045张志涛:
- 队友——201606120041田仕钊(https://www.cnblogs.com/tianshizhao/p/9846335.html)
2、扩展方向
- 用户答题结束以后,程序可以显示用户答题所用的时间(张志涛)
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数(张志涛)
- 程序可以出单个整数阶乘的题目:如:4!=24(田仕钊)
- 程序可以设置皮肤功能,可以改变界面的颜色即可(按钮点击实现八种颜色随机切换)(田仕钊)
- 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。(田仕钊)
八、总结心得
负责的两个扩展方向比较简单,很快就可以解决了,主要是窗体方面,以前学JAVA的时候老师有讲过,那时懵懵懂懂过去
没有学好怎么运用窗体,就这样卡在窗体的代码里,好在回想起老师对窗体的讲解,这样一来容易看懂了网上的参考代码,
看多几次代码后自己也跟着写就容易成功了。看来基础还是不够扎实。要多多看书多加练习。
九、照片