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

作业要求源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213

 一、结对编程

  一)结对编程成员详情:

成员姓名 胡雄柏 张劲
学号 201606120022 201606120014
博客园地址 https://www.cnblogs.com/trojans/ http://www.cnblogs.com/zjby/

   二)工作时的照片:

  三)编程分工:

    胡雄柏:1)表达式里含有负整数(负整数最小不小于-100),负数需要带括号,用户输入的结果不用带括号;

        2)程序可以设置皮肤功能,可以改变界面的颜色即可。

    张   劲: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         });
View Code

  阶乘运算:

 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     }
View Code

  点击确认按钮:

 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         });
View Code


六、运行效果截图

   一)表达式含有不小于-100的负整数,负数带括号:

   二)修改程序背景颜色:

    

   三)用户答题结束提示所用时间:

   四)阶乘题目:

   五)容错

    输入不合法字符时:

     

   未填写题目数量并点击确定按钮就点击确认答案时:

    

七、代码提交

   源代码及其可执行文件已提交到我的GitHub仓库。

  这是我的GitHub仓库地址:https://github.com/Trojanpa/test

八、总结

   

猜你喜欢

转载自www.cnblogs.com/trojans/p/9784816.html
今日推荐