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

时间:2023-02-14 13:11:53

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

Github的仓库主页链接地址:https://github.com/huicunzhang/sizeyunsuan

一、需求分析:

1. 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。

2. 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运 算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。

3. 练习题生成好后,将自己的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。

二、功能设计:

     1. 学生输入一个数n,随机产生n道四则混合运算练习题;

     2. 每个算式中的数字在0~100之间,运算符在3~5个之间;

     3. 每个练习题中的运算符至少是两种以上,且运算过程中不得出现负数和非整数;

     4. 将练习题打印出来,学生在后面输入答案;

     5. 将自己的学号和n道练习题及其正确答案输出在文件“result.txt”中。

三、设计实现:

      创建文件result.txt 产生四个随机数 → 生成运算符号固定的表达式 → 将练习题及其正确答案写入文件

四、测试运行:

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

 

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

 

五、核心代码:

//将学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中
        File writename = new File("result.txt"); 
        writename.createNewFile(); 
        BufferedWriter out = new BufferedWriter(new FileWriter(writename));
        out.write("***************************\r\n"); 
        out.write("201571030334\r\n"); 
//产生四个0~100的随机数
            int num1=(int)(Math.random()*100);
            int num2=(int)(Math.random()*100);
            int num3=(int)(Math.random()*100);
            int num4=(int)(Math.random()*100);
 //生成表达式,运算符是固定的,不是随机产生
                case 4:
                    while(true) {
                        num2 = (int) (Math.random()*100 + 1);//保证分母不为零
                        num4 = (int) (Math.random()*100 + 1);
                        if(num1%num2==0)
                        {
                            if(num3%num4==0)
                             System.out.println(num1 + "/" + num2 +"+"+ num3+"/"+num4+" = " );
                             out.write(num1 + "/" + num2 +"+"+ num3+"/"+num4+" = " +(num1/num2+num3/num4)+"\r\n");
                             break;
                        }
                    }
                case 5:
                    if(num1*num2>num3*num4)//保证差不为负数
                    System.out.println(num1+"*"+num2+"-"+num3+"*"+num4+"=");
                    out.write(num1+"*"+num2+"-"+num3+"*"+num4+"="+(num1*num2-num3*num4)+"\r\n");
                    break;
                case 6:
                    while(true){
                        num2 = (int) (Math.random()*100 + 1);
                        if(num1%num2==0)
                             System.out.println(num1 + "/" + num2 +"+"+ num3+"*"+num4+" = " );
                             out.write(num1 + "/" + num2 +"+"+ num3+"*"+num4+" = " +(num1/num2+num3*num4)+"\r\n");
                             break;
                    }

六、总结:

      第一次交作业时,我的程序根本没运行出来,因为到了作业截止时间,所以就交了一份不完整的作业。后面老师延迟了一下,经 过这几天的时间,终于做出来了,虽然不是完美的,但它实现了基本的功能。经过这次作业充分的揭露了我编程的水平到底有多差,以前欠的账都要在这几天还了。说不会其实只是自己对自己的不负责任,所以日后我会更加努力去弥补自己以前犯的错。虽然这次作业,自己遇到很多困难,但这些困难都给了我不一样的收获。

七、展示PSP

PSP2.1

任务内容

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

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

Planning

计划

10

12

·       Estimate

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

10

12

Development

开发

380

632 

··       Analysis

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

10

20

·       Design Spec

  生成设计文档

5

10 

·       Design Review

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

5

3

·       Coding Standard

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

10

14 

·       Design

  具体设计

20

15 

·       Coding

  具体编码

300

500

·       Code Review

  代码复审

10

10 

·       Test

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

20

60 

Reporting

报告

12

40 

··       Test Report

  测试报告

5

30

·       Size Measurement

  计算工作量

2

·       Postmortem & Process Improvement Plan

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

5

 5