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

仓库地址:https://git.coding.net/Mr_hat/mao1.git

修改后的仓库地址:https://git.coding.net/Mr_hat/mao1.git

正文:

1.需求分析

  1.程序可接收一个输入参数n,然后随机产生n道加减乘除练习题

  2.每个数字在 0 和 100 之间

  3.运算符在3个到5个之间,且每个练习题至少要包含2种运算符

  4.练习题在运算过程中不得出现负数与非整数

  5.学号与生成的练习题及对应答案要输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致

2.功能设计

  1.基本功能:根据用户输入的参数n自动生成n道符合需求的的练习题,并自动生成答案,并将式子与答案传输到特定文件当中

  2.扩展功能:由于本人的技术不是很扎实,所以扩展功能目前还没法实现,但是一定会继续学习实现这个功能的

3.设计实现

  我一共建了三个类,分别是Main、Question、Transport,功能如下:

  Main类:用于接收用户给出的参数n,调用Question类

  Question类:用于生成练习题并计算出每道练习题的答案,调用Transport类

  Transport类:供Question类调用,将学号与练习题输出到指定文件中

  三类关系:

  

  首先我使用math.random函数生成随机数,由于需求规定,我将随机数定义为正整数输出,之后我直接调用js的eval函数,更加快捷的算出了练习题的答案并输出。

4.算法详解

  拿到题目之后我百度查询了一下要用到哪些方法,无意间发现了用js能够更加简单的解决这个问题,没有用到调度场算法和逆波兰表达式,所以并没有具体的算法详解

5.测试运行

          先在eclipse中运行并给参数赋值30

     

             打开result文件,显示了学号和30道练习题

          

6.代码展示

 获取参数并调用Question类生成练习题

public class Main {
    @SuppressWarnings("resource")
    public static void main(String[] args) throws ScriptException{
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入题目的个数
");
        int n=sc.nextInt();
        new Question(n);
    }
}
    //实例化
    private void init(){
        random=new Random();
        ar=new ArrayList<String>();
        manager = new ScriptEngineManager();
        se = manager.getEngineByName("js");
    }
//生成随机题库并给出答案并输出
    private void ques() throws ScriptException{
        String qu = null;
        for(int i=0;i<n;i++){
            qu="";
            int time=t();
            for(int j=0;j<time;j++){
                qu=qu+ti();
                if(j<time-1){
                    qu=qu+type(ope());
                }
            }
            
            double result=Double.valueOf(se.eval(qu.toString()).toString()) ;
            if(result%1!=0 || result<0 || result>400){
                i--;
                continue;
            }
            ar.add(qu);            
        }
        wtf=new Transport("result.txt", ar, n);//输出
        
    }
//生成运算符
    private String type(int n){
        if(n==0){
            return "+";
        }else if(n==1){
            return "-";
        }else if(n==2){
            return "*";
        }else{
            return "/";
        }
    }

7.总结

  说实话,这次的作业量和作业难度的确有点重,不过作业还是得写,这两周不断的百度查资料,可是这次作业还是有很大的不足,也正是因为这次的作业让我意识到自己和别的同学的差距有多大,也意识到自己当初没有好好学语言是多么的错误,既来之则安之,只能从现在开始恶补,不然这个差距不止不会改变甚至会越来越大。不过说实话,上两次作业的成绩一出,心里还是挺失落的,如果说第一次作业是没有看清楚作业要求导致分数偏低,不过第二次作业真的是认真看了要求,花了很长时间去写,但是看到分数之后还是挺失落的,后来静下来想想,众口难调,只要自己在学习过程中真正学到了东西,那就足够了。

8.PSP

PSP2.1

任务内容

计划共完成需要的时间(h)

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

Planning

计划

5

4

·        Estimate

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

5

4

Development

开发

13

14

·        Analysis

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

0.5

0.5

·        Design Spec

·         生成设计文档

1

1

·        Design Review

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

1.5

2

·        Coding Standard

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

1

1.5

·        Design

·         具体设计

2

2

·        Coding

·         具体编码

4

5

·        Code Review

·         代码复审

1

0.5

·        Test

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

2

1.5

Reporting

报告

3.5

2.5

·         Test Report

·         测试报告

2

1

·         Size Measurement

·         计算工作量

1

1

·         Postmortem & Process Improvement Plan

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

0.5

0.5

原文地址:https://www.cnblogs.com/mzj666/p/8642484.html