2016012045 +小学四则运算联系项目报告

  2016012045 +x小学四则运算联系项目报告

代码仓库地址:https://git.coding.net/Enther/operation.git

一.需求分析。

此项目主要是为面向小学生的小学数学四则运算练习所用,所以归纳出以下几点要求:

(1)     对于每个数而言不能过大,且其中不涉及小数与负数,即仅考虑100内整数形式的运算。

(2)     题目中最少包含两个运算符且保证不一样,且涉及加减乘除。

(3)     程序中需要输入参数n作为随机产生题目数量。

二.功能设计。

此项目目前仅完成了基本功能,即

  1. 对参数合法性的判断。
  2. 自动生成n个运算时且其中运算符不同。
  3. 保存在指定目录下。

三.设计实现。

整体思路:本来试图运用建两个栈将数字与操作符分开的方式,利用场调度算法和逆波兰算法实现中缀便后缀计算后缀的情况。但在调试过程中出现bug。目前还需要进行改进。

此次作业仅仅实现三个运算数的情况,通过将不同的两个运算符列举,进而实现需要功能。但在真正操作中发现,这种方法的缺点在于需要考虑很多不同情况之下可能的结果,虽然现在在实现基本功能上现在还没有体现出来,但在增加操作数后,需要考虑的问题会成倍增加

设计函数:answer函数用来调用参数;

Calculate函数用来计算和列举方法;

四,代码展示。

这段代码用于将三个操作数的不同运算状况分类计算:
    public static void calculate(){
    String[] ope = {"+","-","*","/"};
    int x = (int) (Math.random() *100);// 产生100以内的随机数
    int y = (int) (Math.random() *100);
    int a = (int) (Math.random()*4);
    int sum,p1,p11,p2,p3;{
    switch(a){
    case 0://第一个运算符为加号
         String[] ope1 = {"-","*","÷"};
         int z = (int) (Math.random() *100);
         int b=(int) (Math.random()*3);
          String q = x + ope[a] + y;
         if (b==0){//先加后减
             p1=x+y;
                if(p1>=z){
                    q=q+ope1[b]+z;
                    sum=x+y-z;
                    q=q+"="+sum;
                    answer(q);
                   return ;
                }else{
                   answer("");
                   return ;
                }
         }
                else if(b==1){//第一个运算符为加号,第二个运算符为乘号  先乘后加
                    p1=y*z;
                    sum=x+p1;
                    q=q+"="+sum;
                    answer (q);
                    return;
                  }
                else{ //第一个运算符为加号,第二个运算符为除号  保证整除
                   z = (int) (Math.random() * 10) + 1;
                   y= (int) (Math.random() * 8) *z ;
                   if(z!=0&&y>z&&y%z==0){
                   p11=y/z;
                   sum=x+p11;
                   q=q+"="+sum;
                   answer (q);
                   return;
                }else{
                    answer(q);
                }
                }
    case 1:// 如果是“-”,保证a比b大,避免出现负数
        if (x < y) {
            int temp = x;
            x = y;
            y = temp;
        }
         q = x + ope[a] + y;
         String[] ope2 = { "+","*", "÷" };
         int c = (int) (Math.random()*3);
         int z1=(int)(Math.random()*100);
         if (c==0){
              sum=x-y;
             q=q+ope2[c]+z1;
             sum=sum+z1;
             answer (q);
             return ;

         }
         else if(c==1){
            p2=y*z1;
             if(x>=p2){
           q=q+ ope2[c]+z1;
           sum=x-p2;
           answer(q);
             return ;
         }else{
             answer(q);
             return ;
         }
         }
    case 2://第一个运算符为乘号
        String[] ope3 = { "+","-", "÷" };
        int d = (int) (Math.random()*3);
         int z2=(int)(Math.random()*100);
          q = x + ope[a] + y;
         if(d==0){
            sum=x*y+z2;
         }else if(d==1){
             if(x*y>=z2)
             {
                sum=x*y-z2;
                q=q+ ope3[d]+z2;
                q=q+"="+sum;
             }
             else{
                 answer(q);
                 return ;
                 }
         }
             else{
                 p3=x*y;
                 z2 = (int) (Math.random() * 10) + 1;
                  p3= (int) (Math.random() * 8) *z2 ;
                  sum=p3/z2;
                  q=q+ ope3[d]+z2;
                  q=q+"="+sum;
                 }
    case 3://第一个运算符为除数
         y = (int) (Math.random() * 10) + 1;
         x = (int) (Math.random() * 8) * y;
         String[] ope4= {"+","-","*"};
          q = x + ope[a] + y;
         int e= (int) (Math.random()*3);
         int z3= (int) (Math.random()*100);
         if(e==0){
            sum=x/y+z3;
            q=q+ope4[e]+z3;
            q=q+"="+sum;
         }
         else if(e==1){
             if(x/y>=z3){
                 sum=x/y-z3;
                 q=q+ope4[e]+z3;
                 q=q+"="+sum;
         }
             else{
                 answer(q);
                 }
         }
             else{
                 sum=x/y*z3;
                 q=q+ope4[e]+z3;
                 q=q+"="+sum;
                 answer(q);
             }
                   }
              }
    }

result.txt 的截图

五,PSP展示。

PSP2.1


任务内容


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


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


Planning


计划


8


10


·        Estimate


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


8


6


Development


开发


1000


2000


·        Analysis


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


20


30


·        Design Spec


·         生成设计文档


10


10


·        Design Review


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


5


5


·        Coding Standard


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


3


5


·        Design


·         具体设计


10


20


·        Coding


·         具体编码


800


1600


·        Code Review


·         代码复审


10


40


·        Test


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


15


40


Reporting


报告


10


30


·         Test Report


·         测试报告


5


10


·         Size Measurement


·         计算工作量


1


1


·         Postmortem & Process Improvement Plan


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


5


15

 六.不足与改进。  目前的代码还很简单,甚至在算法方面还欠缺不少。由于对Java语言的不熟悉导致花费较长时间温习。此次本想运用的建栈由于考虑不全导致现在还有许多bug。这次提交的作业运用的方法比较简单,但不适用于太多操作符和运算数的情况。Java需要加强,代码能力也需要继续磨砺。

原文地址:https://www.cnblogs.com/wanggg123/p/8647545.html

时间: 2024-10-07 03:11:09

2016012045 +小学四则运算联系项目报告的相关文章

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

github地址:https://github.com/myGitHub1018/Student_comput 一.需求分析 1.由用户输入参数n,然后随机产生n道加减乘除练习题: 2.每个数字在 0 和 100 之间,运算符在3个到5个之间: 3.运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式: 4.将学号与生成的n道练习题及其对应的正确答案输出到文件"result.txt"中,文件目录与程序目录一致. 例如:当程序接收的参数为4时,输出如下:

201571030319 201571030322 小学四则运算结对项目

GitHub源码地址:https://github.com/nigulasiletai/Demo2 1.需求分析: (1)随机选择20道混合运算: (2)用户输入答案,给出结果: (3)程序检查答案结果,正确计5分,错误不计分: (4)20道测试题结束给出总分: (5)带括号算式,真分数算式: (6)程序允许用户进行多轮测试,给出多轮测试分数柱状图: (7)程序记录用户答题结果,当程序退出再启动的时候,可为用户显示最后一次结果,并询问用户可否进行新一轮测试: (8)测试有记时功能,动态显示答题后

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

 小学四则运算练习软件项目报告 项目克隆地址:https://git.coding.net/chenf640/workhome2_2.git 目录: 一.需求分析 二.功能设计 三.设计实现 四.算法详解 五.测试运行 六.代码展示 七.psp 八.总结 -------------------------------------------------- 一.需求分析 (一)功能需求  基本功能: 程序可接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题. 每个数字

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

2016012075+小学四则运算练习软件项目报告 一.需求分析 二.功能设计 三.设计实现 四.算法详解 五.测试详解 六.代码展示 七.总结 八.PSP展示 coding.net地址:https://git.coding.net/sparkleStar/arithmetic.git,代码在Main.java中 一.需求分析 1.编写目标 使用Java编程语言,独立完成一个3到5个运算符的四则运算练习的命令行软件开发. 2.基本功能需求 (1)程序可接收一个输入参数n,然后随机产生加减乘除(分

201571030335/201571030320《小学四则运算练习软件》结对项目报告

源码链接地址:  https://github.com/woaichimangguo(我的201571030335) https://github.com/mashifang(小伙伴的201571030320) 一. 需求分析: (1)由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分. (2)题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下: (3)程序为用户提供三种进阶四

201571030121《小学四则运算练习软件软件需求说明》结对项目报告

201571030107/201571030121<小学四则运算练习软件软件需求说明>结对项目报告 结对小伙伴:冯晓(201571030107) 任务一 首先,我们进行了实例体验,把我们已经上线的<小学生四则运算网站>链接发给我们调研的人,在他们体验过我们的程序后在填写需求分析调查问卷,这样可以更好的得到一个反馈,让我们的需求分析更加清楚. 网站链接:http://123.56.24.117:8080/ 其次,我们主要采取了精准的问卷调查方式来进行需求分析,调查的主要对象为老师和有

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

项目报告目录: 一.感想 二.需求分析 三.功能设计 四.设计实现 五.算法详解 六.测试运行 七.总结反思 八.PSP展示 代码仓库地址:https://git.coding.net/Vsmile1997/symx.git测试效果见src下生成的result.txt文件 一.感想 我把感想写在第一部分,是想首先谈谈完成这个项目的体验和感悟.重新梳理程序的代码思路,满满的完成任务的成就感和如释重负的轻松感. 从拿到作业的起初,我把问题过度放大了.Java?我还要重新拿起那本大厚书学习Java?出

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

需求分析 首先明确项目需要,一个可以定做小学四则运算的程序.所以需要我们能够随机生成不同的四则运算,范围应在100以内,包含"+,-,*,÷"四种操作.要求:不存在小数,题目尽量不重复. 功能设计 基本功能应当包括,读入用户想要定制的算式数,以及对应的运算符数量,然后生成对应数目和难度的四则运算式子.并由程序自己计算,给出相应的答案. 扩展功能可以用:在算式中包含括号,计算存在真分数的式子. 设计实现 由计算机生成随机的第一个数字.运算符.后续数字.完成计算.显示结果等等. 在生成后续

2015710301120/201571030119《小学四则运算练习软件》结对项目报告

一.项目源码 Github地址:https://github.com/myGitHub1018/Student_Comput3.git 二.项目报告 1.需求分析 (1)由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分: (2)题库文件可采用实验二的方式自动生成,也可以手工编辑生成,文本格式如下: (3)程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做).带括号算式.真分数算式