结对项目----四则运算“软件”升级版

结对项目----四则运算“软件”升级版

这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2232

队友的github远程仓库的地址为:https://github.com/lengdongd/lengdong/tree/master/caculateTest

一、程序基本功能要求

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

二、程序扩展功能

  • 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
  • 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
  • 用户答题结束以后,程序可以显示用户答题所用的时间
  • 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  • 用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名
  • 程序可以出单个整数阶乘的题目:如:4!=24
  • 程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
  • 程序可以设置皮肤功能,可以改变界面的颜色即可。

三、结对过程

 

  • 编译开发环境:IntelliJ IDEA 2017.2.3 x64
  • 编程语言:Java
  • 实现的扩展要求(五个方向)
  1. 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
  2. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  3. 程序可以出单个整数阶乘的题目:如:4!=24
  4. 程序可以设置皮肤功能,可以改变界面的颜色即可。
  5. 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67
  • 编辑分工

         博主本人李先灿----负责窗体类sizeyunsuan1所有功能

  1. 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  2. 程序可以设置皮肤功能,可以改变界面的颜色即可。
  3. 以及基本的点击事件等窗体功能、

        队友郑泽锐----负责算法类subject所有功能

  1. 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
  2. 程序可以出单个整数阶乘的题目:如:4!=24
  3. 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67
  • 部分代码实现
  1. 窗体类sizeyunsuan部分代码

 

 1  Mydeframe (){
 2             JMenuBar menuBar = new JMenuBar();   //创建菜单栏
 3             this.setJMenuBar(menuBar);    //将菜单栏添加到JFrame
 4             JMenu menu = new JMenu("操作");  //创建菜单
 5             menuBar.add(menu);             //将菜单添加到菜单栏上
 6             //创建两个菜单项
 7             JMenuItem item1 = new JMenuItem("开始");
 8             JMenuItem item2 = new JMenuItem("更换背景");
 9             menu.add(item1);
10             menu.addSeparator();
11             menu.add(item2);
12             this.setTitle("简易四则运算");
13             this.setSize(500,500);//设置面板大小
14             this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//关闭子窗口
15             this.add(jpanel);
16             label.setFont(new Font("宋体", Font.BOLD, 16));
17             label.setBounds(100, 30, 130, 30);
18             textFields.setBounds(240, 30, 90, 30);
19             queding.setFont(new Font("宋体", Font.BOLD, 16));
20             queding.setBounds(360, 30, 80, 30);//确认
21             jpanel.add(queding);
22             queding.setEnabled(false);
23             jpanel.add(textFields);
24             jpanel.add(label);
25             item1.addActionListener(new AbstractAction() {
26                 @Override
27                 public void actionPerformed(ActionEvent e) {
28                    p = n = (int) Double.parseDouble(textFields.getText());
29                     Subject subject = new Subject(n);
30                     subject1 = subject;
31                     for (int i = 0; i < n; i++) {
32                         if (n > 5 || n < 1) {
33                             //如果题目个数大于5或小于1,会弹出提示框
34                             JOptionPane.showMessageDialog(null, "输入的题目个数不能大于5或者小于1", "注意", JOptionPane.INFORMATION_MESSAGE);
35                             break;
36                         } else {
37                             queding.setEnabled(true);
38                             jLabels[i] = new JLabel("式子:");
39                             jTextFields[i] = new JTextField(8);
40                             jLabels[i].setFont(new Font("宋体", Font.BOLD, 18));
41                             jLabels[i].setForeground(Color.ORANGE);
42                             jLabels[i].setBounds(50, zuobiaoY, 140, 80);
43                             jTextFields[i].setBounds(360,zuobiaoY+26,90,30);
44                             jpanel.add(jTextFields[i]);
45                             zuobiaoY = zuobiaoY + 50;
46                             jpanel.add(jLabels[i]);
47                             jLabels[i].setText(subject.subject[i]);
48                             //L5.setForeground(Color.red);
49                             jTextFields[i].setText(null);
50                         }
51                     }
52                 }
53             });

 

四、运行截图

 1.首界面

2.答题界面

 

3.回答结果提示框以及答题对的总体数

4.背景色

 

五、总结

 在本次结对编程中,学到了很多,发现结对编程的好处在于两个人可以讨论并解决问题,而且解决的速度会比个人编程的快很多。

六、过程耗时估计与时间统计表

 

PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 计划 8 6
· Estimate 估计这个任务需要多少时间 12 10
Development 开发 60 40
· Analysis 需求分析 (包括学习新技术) 8 10
· Design Spec 生成设计文档 0 0
· Design Review 设计复审 3 5
· Coding Standard 代码规范 4 3
· Design 具体设计 10 13
· Coding 具体编码 35 25
· Code Review 代码复审 10 9
· Test 测试(自我测试,修改代码,提交修改) 10 20
Reporting 报告 9 6
· 测试报告 0 0
· 计算工作量 5 2
· 并提出过程改进计划 0 0

七、结对过程照片

 

posted on 2018-10-29 11:20  李先灿  阅读(165)  评论(0编辑  收藏  举报

导航