首页 > 其他 > 详细

结对作业1

时间:2018-09-19 01:14:19      阅读:373      评论:0      收藏:0      [点我收藏+]

211606369 蔺皓雯 211606349 蔡晨旸

小学三年级数学题MathExam369

一、预估与实际

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 600 760
? Estimate ? 估计这个任务需要多少时间 600 760
Development 开发
? Analysis ? 需求分析 (包括学习新技术) 60 50
? Design Spec ? 生成设计文档 30 30
? Design Review ? 设计复审 20 10
? Coding Standard ? 代码规范 (为目前的开发制定合适的规范) 30 20
? Design ? 具体设计 20 20
? Coding ? 具体编码 300 360
? Code Review ? 代码复审 60 60
? Test ? 测试(自我测试,修改代码,提交修改) 120
Reporting 报告 20 30
? Test Repor ? 测试报告 20 30
? Size Measurement ? 计算工作量 10 10
? Postmortem & Process Improvement Plan ? 事后总结, 并提出过程改进计划 20
合计 760

二、需求分析

我通过上网查阅的方式了解到,小学三数学有如下的几个特点:

  • (1)一位数的乘、除法; 0的乘法;连乘;除数是一位数的除;0除以一个数用乘法验算除法;连除。
  • (2)两位数的乘、除法;个乘数是两位数的乘法(另一个乘数一般不超过三位数);
  • 除数是两位数的除法;?连乘、连除的简便算法。
  • (3)四则混合运算。;小括号的使用。

经过分析,我认为,这个程序应当:

  • 运算符在2~4个,且至少两个不同的运算符
  • 可以加括号
  • 减法运算的结果不能有负数
  • 除法运算除数不能为0,不能有余数
  • 保留1、2年级的出题要求

三、设计

1. 设计思路

  • 首先要初始化文件函数,创建文件输出流,将题目和答案存入out.txt文件
  • 使用随机数生成题目和算式
  • 输出题目和结果

  • 关键函数的流程图
    技术分享图片

2. 实现方案

  • 准备工作:先在Github上创建仓库,克隆到本地,fork到自己的仓库,下载到本地仓库
    -技术关键点:创建文件输出流,生成四则混合运算,要有括号

四、编码

  • 在编写完运算以后,要将题目和答案都存入文件
  • 要加入括号,输入的参数顺序可以变,运算符的个数要确定,结果不能有负数,因为时间比较仓促再加上知识点比较薄弱,只能用最笨的方法一步一步写,导致bug太多,输出的结果也有很多问题。

1. 调试日志

  • 在for循环里输出最后答案的式子没能写入到文件里,
  • 导致计算结果出现了问题,目前正在不断优化中

    2. 关键代码

        String c[] ={"+","-","×","÷"};
        byte contentInBytes[];
        
        Random rand=new Random();
        for (int i=0;i<=n;i++) {
            int a=rand.nextInt(c.length);
            String resultChar=c[a];//运算符号存入resultChar
            
            if (grade==1) {
                for (int i1=0;i1<=n;i1++) {
                    left=rand.nextInt(100);
                    right=rand.nextInt(100);//左右百内随机数
                    String b= left+resultChar+right+"=";//题目
                    //又一套,存题目
                    
                    if(resultChar=="+"){ 
                        re3=left+right;
                        String d=left+resultChar+right+"="+re3;
                      
                    }else if(resultChar=="-"){
                        re3=left-right;
                        String e=left+resultChar+right+"="+re3;
                       
                    }
                }
            }
            if (grade==2) {
                for (int i2=0;i2<=n;i2++) {
                    if(resultChar=="+"){
                        left=rand.nextInt(10000);
                        right=rand.nextInt(10000);
                        String b= left+resultChar+right+"=";
                        
                        if((left%100==0 || left%1000==0 || left<=100)&&(right%100==0 || right%1000==0 || right<=100)) {
                            re3=left+right;
                            String e=left+resultChar+right+"="+re3;
                           
                        }
                        if(left%100==0 && left>=100 && (right%100==0 || right%10==0)) {
                            re3=left+right;
                            String f=left+resultChar+right+"="+re3;
                            
                        }
                    }else if(resultChar=="-"){
                        left=rand.nextInt(10000);
                        right=rand.nextInt(10000);
                        String b= left+resultChar+right+"=";
                        
                        if((left%100==0 || left%1000==0 || left<=100)&&(right%100==0 || right%1000==0 || right<=100)) {
                            re3=left-right;
                            String g=left+resultChar+right+"="+re3;
                            
                        }
                        if(left%100==0 && left>=100 && (right%100==0 || right%10==0)) {
                            re3=left-right;
                            String h=left+resultChar+right+"="+re3;
                            
                        }
                    }else if(resultChar=="×"){
                        left=rand.nextInt(10)+1;
                        right=rand.nextInt(10)+1;
                        String b= left+resultChar+right+"=";
                        re3=left-right;
                        String j=left+resultChar+right+"="+re3;
                        
                    }else if(resultChar=="÷"){
                        left=rand.nextInt(10)+1;
                        right=rand.nextInt(10)+1;
                        String b= left+resultChar+right+"=";
                        
                        re2=left/right;
                        re1=left%right;
                        String k=left+resultChar+right+"=";
                        
                        if(re1==0) { 
                            re3=left/right;
                            String l=left+resultChar+right+"="+re3;
                        }
                        else {
                            String m=left+resultChar+right+"="+(re1+"..."+re2);
                            
                        }   
                    }
                }
            }
            if (grade==3) {
                for (int i3=0;i3<=n;i3++) {
                    if(resultChar=="+"){
                        left=rand.nextInt(10000);
                        right=rand.nextInt(10000);
                        re3=left+right;
                        String o= left+resultChar+right+"="+re3;
                        
                    }
                    if(resultChar=="-") {
                        left=rand.nextInt(10000);
                        right=rand.nextInt(10000);
                        re3=left-right;
                        String o= left+resultChar+right+"="+re3;
                        
                    }
                    if(resultChar=="×") {
                        left=rand.nextInt(1000)+100;
                        right=rand.nextInt(100)+10;
                        re3=left*right;
                        String o= left+resultChar+right+"="+re3;
                        
                    }
                    if(resultChar=="÷") {
                        left=rand.nextInt(1000)+100;
                        right=rand.nextInt(100)+10;
                        re3=left/right;
                        String o= left+resultChar+right+"="+re3;
                        
                        re2=left/right;
                        re1=left%right;
                        if(re1==0) { 
                            String p=left+resultChar+right+"="+re3;
                        }
                        else {
                            String p=left+resultChar+right+"="+(re1+"..."+re2);
                            
                        }   

因为

3. 代码规范

请给出本次实验使用的代码规范:

  • 类名首字母应该大写。每个单词的首字母大写。
  • 避免异常
  • 人工检查代码是否存在错误
  • 包名必须小写
  • 避免类似的名字,或者仅仅是大小写不同的名字
  • 如果变量名是集合,变量名应用负数 如int [] students
  • 如果是大括号内为空,则简洁地写成{}即可,不需要换行;
  • 任何运算符左右必须加一个空格。 运算符包括赋值运算符=、逻辑运算符&&、加减乘除符号、三目运行符等。
  • 单行字符数限不超过 120 个

五、测试

测试例 结果
6 2 题目答案已生成请查看out.txt 正确
10000 3 参数过大
5 3 题目答案已生成请查看out.txt 正确

六、总结

  • 因为时间的不充裕,每门科目都有作业加上自己的时间规划不完美,以及和搭档的首次配合效果不理想,我们分工不明确
  • 导致了改代码花费了太多时间,却是以最简单的方法写了很冗长的代码,错误太多,我们会改进,
  • 我们对栈和调度场算法与逆波兰表达式的知识不是很熟悉,导致只能用以前的基础知识写代码,费时费力,说到底都是我们知识匮乏造成的
  • 这次不知道加上括号使用,四则混合运算出现了很多错误,我们会努力改进代码。

技术分享图片

结对作业1

原文:https://www.cnblogs.com/hwlc--/p/9657384.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!