结对项目----四则运算“软件”升级版
结对项目----四则运算“软件”升级版
这个作业的要求来自于: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
- 实现的扩展要求(五个方向)
- 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
- 程序可以出单个整数阶乘的题目:如:4!=24
- 程序可以设置皮肤功能,可以改变界面的颜色即可。
- 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67
- 编辑分工
博主本人李先灿----负责窗体类sizeyunsuan1所有功能
- 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
- 程序可以设置皮肤功能,可以改变界面的颜色即可。
- 以及基本的点击事件等窗体功能、
队友郑泽锐----负责算法类subject所有功能
- 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
- 程序可以出单个整数阶乘的题目:如:4!=24
- 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67
- 部分代码实现
- 窗体类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 |
七、结对过程照片