WOWOTOFFEE Do or Die

小学四则运算练习软件项目报告

 

coding.net源码地址
https://git.coding.net/wowomilkycandy/week2--Operation.git

 

 

1.需求分析

这次作业要求的是一个小学四则运算练习软件,需要随机生成n道四则运算。首先要求能获取随机数n,其次要求能生成3-5个运算符,运算符为+-*÷,生成相应的0-100之 间的整数。题目要求不能出现负数和非整数。

 

2.功能设计

基本功能   获取用户输入的题目数量,生成符合要求的四则运算式并得出答案,同时判断正误

扩展功能   无

 

3. 设计实现

        

涉及的函数

 1.获取习题数量的函数

    getNum()

    设置输入函数,获取输入的题目数量0-1000

2.main函数

    主要是实现调用函数,得出结果并写入的需求的

3.随机生成习题

 RandCreate()函数
主要是用来随机生成算式并写出的

 

 

 4、算法详解

 1.生成题目的算法

   先生成3-5个运算符,并且在其中进行控制,再生成运算数,运算数比运算符多一

   并且使用count来记录运算符的数量

     int count = 0, count_h = 0;// 记录运算符数量
     int[] arr = new int[6];// 记录运算数
     int[] arr_h = new int[6];
     char[] ch = { '+', '-', '*', '÷' };
     int[] chno = new int[5];// 记录运算符
     int[] chno_h = new int[5]        

  2.计算题目

  我用了file方法,是java.io中的方法,能够得出结果并写入result.txt

        

 1             if (arr[0] >= 0)    // 结果大于0
 2             {
 3                 n--;
 4 
 5                 for (int i = 0; i < count_h; i++) {
 6                     fw.write(String.valueOf(arr_h[i]));
 7                     fw.write(String.valueOf(ch[chno_h[i]]));
 8                 }
 9                 fw.write(String.valueOf(arr_h[count_h]));
10                 fw.write("=");
11                 fw.write(String.valueOf(arr[0]));
12                 fw.write("\r\n");
13                 fw.flush();
14             }

 

5.测试运行

        

    

         测试是有弊端的,目前我还没有解决,本来会生成有三个除号连起来得出答案为零的情况,我直接设置了不能有两个出号出现在一个式子内

        


觉得较为优秀的代码

 1 for (int i = 0; i < count; i++) {
 2                 if (chno[i] == 2)         // *
 3                 {
 4                     int a = arr[i] * arr[i + 1];
 5                     arr[i] = a;
 6                     count--;
 7                     for (int j = i; j < count; j++) {
 8                         chno[j] = chno[j + 1];
 9                         arr[j + 1] = arr[j + 2];
10                     }
11                     i--;
12                 } else if (chno[i] == 3)   //
13                 {
14                     int a = arr[i] / arr[i + 1];
15                     arr[i] = a;
16                     count--;
17                     for (int j = i; j < count; j++) {
18                         chno[j] = chno[j + 1];
19                         arr[j + 1] = arr[j + 2];
20                     }
21                     i--;
22                 }
23             }

乘除法的判断问题


6.总结

 

 

 

 

相比于其他同学来说,我可能会写,但是对于那些专业名词一窍不通,才会出现各种问题,比如静态函数中使用了非静态方法。还是要好好再学习一下java

 

7.PSP

 

PSP

任务内容

计划时间(min)

完成时间(min)

Planning

计划

20

20

 Estimate

 估计这个任务需要多少时间,并规划大致工作步骤

30

20

Development

开发

600

1800

Analysis

需求分析

20

25

Design Spec

生成文档

0

0

 Design Review

设计复审

0

0

Coding Standard

代码规范

5

5

Design

具体设计

60

180

Coding

具体编码

300

900

Code Review

代码复审

30

600

Test

测试

5

80

Reporting

报告

160

400

Test Report

测试报告

120

360

Size Measurement

计算工作量

10

10

Postmortem & Process Improvement Plan

事后总结, 并提出过程改进计划

30

30

 

 

 

2018.04.13  经过修改,能使用命令行参数进行测试了,截图当时忘了截

 

posted @ 2018-03-25 14:46  wowotoffee  阅读(184)  评论(1编辑  收藏  举报