作业要求源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213
一、结对编程
一)结对编程成员详情:
成员 | 本人 | 队友 |
姓名 | 胡雄柏 | 张劲 |
学号 | 201606120022 | 201606120014 |
博客园地址 | https://www.cnblogs.com/trojans/ | http://www.cnblogs.com/zjby/ |
二)工作时的照片:
三)编程分工:
胡雄柏:1)用户界面
2)表达式里含有负整数(负整数最小不小于-100),负数需要带括号,用户输入的结果不用带括号;
3)程序可以设置皮肤功能,可以改变界面的颜色即可。
张 劲:1)用户答题结束以后,程序可以显示用户答题所用的时间;
2)程序可以出单个整数阶乘的题目。
二、开发环境、编程软件、使用语言
系统:Windows10系统
编程软件及其版本:IntelliJ IDEA 2018.2.2 x64
使用语言:java
三、需求分析
一)基本需求
1.从个人项目出发,将程序改造成一个带用户界面的程序;
2.自动生成题目,单个题目最多不能超过4个运算符,操作数小于100;
3.用户可以输入答案;
4.判断并提示用户输入答案的对错,显示正确答案。
二)选取的四个扩展方向
1.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8
2.程序可以设置皮肤功能,可以改变界面的颜色即可。
3.用户答题结束以后,程序可以显示用户答题所用的时间
4.程序可以出单个整数阶乘的题目:如:4!=24
四、估计、记录时间
Personal Software Process Stages | Time Senior Student | Time | |
Planning | 计划 | 1 | 0.5 |
Estimate | 估计这个任务需要多少时间 | 70 | 72 |
Development | 开发 | 60 | 65 |
Analysis | 需求分析 (包括学习新技术) | 1 | 0.5 |
Design Spec | 生成设计文档 | 0.5 | 0.5 |
Design Review | 设计复审 | 1 | 1 |
Coding Standard | 代码规范 | 0.5 | 0.5 |
Design | 具体设计 | 2 | 3 |
Coding | 具体编码 | 5 | 4 |
Code Review | 代码复审 | 3 | 2 |
Test | 测试(自我测试,修改代码,提交修改) | 4 | 5 |
Presentation | 报告 | 2 | 1 |
Test report | 测试报告 | 3 | 0.5 |
Computational effort | 计算工作量 | 0.5 | 0.5 |
Propose process improvement plan | 并提出过程改进计划 | 1 | 0.5 |
五、部分代码
修改背景颜色:
1 Button whiteBut = new Button("设置为白色"); 2 Button purpleBut = new Button("设置为紫色"); 3 Button blueBut = new Button("设置为蓝色"); 4 Button yellowBut = new Button("设置为黄色"); 5 Button redBut = new Button("设置为红色"); 6 Button orangeBut = new Button("设置为橙色"); 7 Button greenBut = new Button("设置为绿色"); 8 whiteBut.setCursor(Cursor.HAND); 9 whiteBut.setOnMouseClicked(event -> { 10 tabPane.setStyle("-fx-background-color: white"); 11 }); 12 purpleBut.setCursor(Cursor.HAND); 13 purpleBut.setOnMouseClicked(event -> { 14 tabPane.setStyle("-fx-background-color: #ff00ff"); 15 }); 16 blueBut.setCursor(Cursor.HAND); 17 blueBut.setOnMouseClicked(event -> { 18 tabPane.setStyle("-fx-background-color: #5555ff"); 19 }); 20 yellowBut.setCursor(Cursor.HAND); 21 yellowBut.setOnMouseClicked(event -> { 22 tabPane.setStyle("-fx-background-color: #ffff88"); 23 }); 24 redBut.setCursor(Cursor.HAND); 25 redBut.setOnMouseClicked(event -> { 26 tabPane.setStyle("-fx-background-color: #ff5555"); 27 }); 28 orangeBut.setCursor(Cursor.HAND); 29 orangeBut.setOnMouseClicked(event -> { 30 tabPane.setStyle("-fx-background-color: orange"); 31 }); 32 greenBut.setCursor(Cursor.HAND); 33 greenBut.setOnMouseClicked(event -> { 34 tabPane.setStyle("-fx-background-color: #55FF55"); 35 });
阶乘运算:
1 //阶乘运算函数 2 private static long factorial(long factorialData) { 3 if (factorialData == 0) { 4 return 1; 5 } else { 6 long factorialReturnResult = factorialData * factorial(factorialData - 1); 7 return factorialReturnResult; 8 } 9 } 10 11 //随机产生阶乘运算题目 12 private static void factorialRandTitle() { 13 long factorialData = (long) (Math.random() * 21); 14 factorialResult = factorial(factorialData); 15 titleString = factorialData + "! ="; 16 }
点击确认按钮:
1 submitBtn.setOnMouseClicked(event -> { 2 try { 3 startDoTestTime = System.currentTimeMillis(); 4 titleNum = Integer.parseInt(titleNumText.getText().trim()); 5 submitBtn.setDisable(true); 6 titleNumText.setDisable(true); 7 randomTitle(); 8 titleText.setText(titleString); 9 nextTitleBtn.setDisable(false); 10 rightRateLab.setText("正确率:" + correctRate + "%\t" + "得分:" + correctAnswerNum * 10); 11 } catch (Exception e) { 12 Alert alert = new Alert(Alert.AlertType.WARNING, "要求输入正整数,请按要求输入!"); 13 alert.setTitle("不合法输入"); 14 alert.setHeaderText(""); 15 alert.show(); 16 } 17 });
四则运算具体运算改进:
1 //四则运算具体运算 2 private static void calculate(int data1, int op, int data2) { 3 switch (op) { 4 case 0://如果是加 5 calculateResult = data1 + data2; 6 break; 7 case 1://如果是减 8 calculateResult = data1 - data2; 9 break; 10 case 2://如果是乘 11 calculateResult = data1 * data2; 12 break; 13 case 3://如果是除 14 calculateResult = data1 / data2; 15 break; 16 } 17 }
六、运行效果截图
一)表达式含有不小于-100的负整数,负数带括号:
二)修改程序背景颜色:
三)用户答题结束提示所用时间:
四)阶乘题目:
五)容错
输入不合法字符时:
未填写题目数量并点击确定按钮就点击确认答案时:
七、代码提交
项目源代码及其可执行文件皆已提交到我的GitHub仓库。
这是我的GitHub仓库地址:https://github.com/Trojanpa/test
八、总结
在这次结对编程过程中,我用到的是以前所学的知识(算是对知识的巩固了),也学到了其他的新的知识。这次的项目是结合我的上一次的作业做的,这次项目虽然完成了,但仍然存在其不足之处,我会在后期不断改进的。