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

github地址:https://github.com/nanxiangnuanzhi/sizeyunsuan

一、需求分析:

  • 由用户输入参数n;
  • 程序随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间;
  • 每个练习题至少要包含2种运算符,所出的练习题在运算过程中不得出现负数与非整数;
  • 练习题生成好后,将学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt中,不输出额外信息文件目录与程序目录一致。
  • 当程序接收的参数为4时,以下为输出文件示例:

    

 

 

 

二、功能设计:

  • 由用户输入参数n;
  • 程序随机产生n道加减乘除练习题并能输出正确结果;
  • 每个数字在 0 和 100 之间,运算符在3个到5个之间,每个练习题至少要包含2种运算符;
  • 所出的练习题在运算过程中不出现负数与非整数。
  • 练习题生成好后,将学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt中,文件目录与程序目录一致。

三、设计实现:

  • 主函数读入练习题数目;
  • 运用sym函数创建数字、运算符号,random()函数生成伪随机数和四则运算符号集,产生随机数和运算符并将其组合放入数组中;
  • 将数组中的随机数和运算符组合后放入动态数组中;
  • 调用栈,用两个栈来实现算符优先,一个栈用来保存需要计算的数据numStack,一个用来保存计算优先符priStack,来进行计算练习题答案;
  • 将结果输入到文件“result.txt”中。

四、测试运行:

  • Eclipse窗口运行结果:

  • cmd窗口运行结果:

 

五、核心代码:

生成运算式:

 1 //产生运算式
 2  private static String generateCal() {
 3    int symNum = (int)(Math.random()*3)+3;       //随机生成3-5之间的符号数
 4      
 5     //随机生成运算符号 
 6      char[] c ={'+','-','*','/'};   //四则运算符号集
 7      Random random=new Random();     
 8      for(int i = 0;i < symNum;i++){
 9          int index=random.nextInt(c.length); //得到一个随机下表
10          symbol[i]=c[index];
11      } 
12      
13      //随机生成运算数字 
14      for(int i = 0;i < symNum + 1;i++){
15          number[i]=(int)(Math.random()*100)+1;; //得到一个随机下表         
16      }
17     // System.out.println(Arrays.toString(number));    
18      
19      //组合运算式
20      String cal = "";int i;
21      for( i = 0;i < symNum;i++)
22      {
23          cal = cal + String.valueOf(number[i]) + String.valueOf(symbol[i]);
24      }
25      cal = cal + String.valueOf(number[i]);
26     // System.out.println (cal);
27      return cal;
28  }
29  
30  private static char[] symbol = new char[5];
31  private static int[] number = new int[6];
32  
33  public static void main(String args[]) throws IOException {  
34     // System.out.println("***请输入要输入出题的道数***");
35      Scanner s =new Scanner (System.in);
36      int n=s.nextInt();   //生成题数
37      
38      File fp=new File(".//result.txt");
39      PrintWriter pfp= new PrintWriter(fp);

六、总结:

     由于我们的JAVA课程是在大二学习的 ,时间比较久,本人基础也较差,故没有能力独立完成实验,只能在网上进行了部分程序参考,随机生成运算式部分是在请教同学后完成的。此次实验由于不熟练,耗费时间特别多,最后最终基本完成了实验要求内。在以后的实验中,会认真学习,好好提高自己的编程能力,争取能早日独立完成实验。

七、展示PSP:

PSP2.1

任务内容

计划完成需要的时间(min)

实际完成需要的时间(min)

Planning

计划

10

11

·       Estimate

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

10

7

Development

开发

200

300

·      Analysis

  需求分析 (包括学习新技术)

30

40

·       Design Spec

·  生成设计文档

10

15

·       Design Review

·  设计复审 (和同事审核设计文档)

10

15

·       Coding Standard

  代码规范 (为目前的开发制定合适的规范)

10

10

·       Design

  具体设计

10

12

·       Coding

  具体编码

100

150

·       Code Review

·  代码复审

10

8

·       Test

·  测试(自我测试,修改代码,提交修改)

20

44

Reporting

报告

60

98

··       Test Report

·  测试报告

40

70

·       Size Measurement

  计算工作量

10

13

·       Postmortem & Process Improvement Plan

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

10

15

---恢复内容结束---

posted @ 2018-03-21 08:10  南巷暖栀  阅读(242)  评论(1编辑  收藏  举报