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

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

 

 一、结对编程

  一)结对编程成员详情:

成员本人队友
姓名胡雄柏张劲
学号201606120022201606120014
博客园地址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 StudentTime 
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

  四则运算具体运算改进:

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

 

六、运行效果截图

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

   二)修改程序背景颜色:

    

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

   四)阶乘题目:

   五)容错

    输入不合法字符时:

     

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

    

 

七、代码提交

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

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

 

八、总结

   在这次结对编程过程中,我用到的是以前所学的知识(算是对知识的巩固了),也学到了其他的新的知识。这次的项目是结合我的上一次的作业做的,这次项目虽然完成了,但仍然存在其不足之处,我会在后期不断改进的。

 

转载于:https://www.cnblogs.com/trojans/p/9784816.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值