zoukankan      html  css  js  c++  java
  • 2016012052+小学四则运算练习软件项目报告

    仓库地址:https://git.coding.net/lalala175/sizeyunsuan2.git


     

    一、需求分析

    1、输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题,

    2、要求每个数字在 0 和 100 之间,运算符在3个到5个之间,且每个练习题至少要包含2种运算符。

    3、所出的练习题在运算过程中不得出现负数与非整数。

    4、将学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中。


     

    二、功能设计

    基本功能:实现用户输入参数n,产生n道四则运算,并产生结果

    扩展功能:所出题目中支持带括号的运算,和真分数的运算

    三、设计实现

    首先先生成规定范围内的随机数,不考虑括号给出运算式,再判断运算符的优先级,加入括号,考虑括号内的运算的计算。

    类:Main类:主类,接收命令行参数并启动程序。

    优先级类:此类是一个带参的有返回值的类,返回值是一个int型。通过返回来的int的大小,来判断符号的优先级。

    公因数类:此类是一个带参的有返回值的类,返回值是一个int型,此整数是两个数的最大公因数。通过辗转相除法计算两个数的最大公因数,为了化简分数。

    四、算法详解

    1、生成规定范围内的随机数字和运算符

     Random random=new Random();
            char op;
            int x=0;
            while(true) {
                int f3=0;
                int f4=0;
                if(x==n)
                    break;//生成所要求的式子后退出循环
                int y2 = random.nextInt(4);
                if(y2!=0) {
                    char[] fuhao=new char[]{'+','-','*','÷'};    
                    String sh="";//定义算式
                    int sum=0;
                    int m=random.nextInt(3)+3;//3-5个运算符
                    int y=random.nextInt(4);
                    op=fuhao[y];
                    int nu1=random.nextInt(100);//规定数字范围
                    int nu2=random.nextInt(100);

    2、整式计算方法

                     if(op=='÷') {
                        if(nu2==0)//保证除数不为0
                            nu2++;
                        while(nu1 % nu2 != 0) { //保证整除
                            nu1=random.nextInt(100);
                            nu2=random.nextInt(99)+1;
                        }
                        sum=nu1/nu2;
                    }
                    if(op=='-') {
                        while(nu1<nu2) {//没有负数
                            nu1=random.nextInt(100);
                            nu2=random.nextInt(100);
                        }
                        sum=nu1-nu2;
                    }
                    if(op=='*') {
                        sum=nu1*nu2;
                    }
                    if(op=='+'){
                        sum=nu1+nu2;                    
                    }
                    sh=nu1+""+op+""+nu2;

    3、判断优先级

     public static int kuohao(char c){// 判断优先级
                if (c == '(')
                    return 0;
                if (c == '+' || c == '-')
                    return 1;
                if (c == '*' || c == '÷')
                    return 2;
                return -1;
            }

    五、结果展示

    六、psp展示  

    PSP2.1

    任务内容

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

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

    Planning

    计划

    20

    30

    ·        Estimate

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

    20

    30

    Development

    开发

    650

    1230

    ·        Analysis

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

    100

    150

    ·        Design Spec

    ·         生成设计文档

    10

    10

    ·        Design Review

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

    5

    5

    ·        Coding Standard

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

    5

    5

    ·        Design

    ·         具体设计

    10

    20

    ·        Coding

    ·         具体编码

    500

    1000

    ·        Code Review

    ·         代码复审

    10

    20

    ·        Test

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

    15

    30

    Reporting

    报告

    20

    25

    ·         Test Report

    ·         测试报告

    10

    10

    ·         Size Measurement

    ·         计算工作量

    5

    10

    ·         Postmortem & Process Improvement Plan

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

    5

    5

    七、不足与改进

    1、首先由于自己基础不好,刚开始的时候,遇到了很多困难,很多都不懂,然后自己慢慢在网上学习,看看其他同学的代码,然后慢慢尝试模仿其他同学的代码自己在一点一点的敲,真的感觉还蛮困难的,在这其中,我借鉴了夏江华同学的代码,自己一点点的去理解,理解他的思想,看明白他的代码,明白每一步具体要干什么,然后在自己动手一点点的敲出来,感觉真的是蛮不容易的,出各种各样的错误。直到现在我还有一个问题还没解决,就是再有带括号的运算时会出现负数。

    2、其次我想说的是经过了这次项目,也意识到自己存在很多的问题,感觉到自己掌握的东西实在太少了,编程能力太差了,实在太菜了,感觉把以前学习的东西都还给老师了,经过这次项目,我一定会努力学习,争取下次再做项目时,可以自己独立的写出来,自己有独立的思维,感觉把以前学习的东西都还给老师了,以后我会努力提升自己的代码能力,希望下一次我可以做得更好。

     

  • 相关阅读:
    Python自动化学习笔记(九)——Python的面向对象
    Python自动化学习笔记(八)——接口开发、发送网络请求、发送邮件、写日志
    MRWordCount
    环境变量追加命令
    hadoop退役旧数据节点
    Hadoop服役新数据节点
    Namenode文件损坏
    NameNode故障处理
    NN和2NN工作机制
    hdfs读写流程
  • 原文地址:https://www.cnblogs.com/wxz0000/p/8646085.html
Copyright © 2011-2022 走看看