首页
登录 | 注册

第五次作业:四则运算之升级版

本次作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2232

我的github远程仓库的地址:https://github.com/mgf69/hard

结对同伴的学号姓名:201606120103 黄佳芸

 

一、基本要求:

  • 生成题目,单个题目最多不能超过4个运算符,操作数小于100。
  • 用户可以输入答案
  • 若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。

 

二、扩展方向:

  • 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66,或保持分数形式:8/3
  • 用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数
  • 用户答题结束以后,程序可以显示用户答题所用的时间
  • 程序可以设置皮肤功能,可以改变界面的颜色即可。

 

三、详细设计:

(1)随机生成问题集合

第五次作业:四则运算之升级版
第五次作业:四则运算之升级版
function randomQus(qusNum, maxNum) {
  var countArry = [qusNum]
  var charArry = []
  var correctAnswer = [qusNum]
  for (var k = 0; k < qusNum; k++) {
    countArry[k] = ''
  }
  for (var j = 0; j < qusNum; j++) {
    var n = getRandomNum(1, 3) //随机获得运算符的个数
    var numberOfCount = new Array(n + 1)
    var CountStr
    for (var i = 0; i <= n; i++) {
      var IsInt = getRandomNum(0, 1) //随机判断生成整数运算还是分数运算
      var molecule = getRandomNum(1, maxNum)
      var denominator = getRandomNum(1, maxNum)
      if (IsInt) numberOfCount[i] = getRandomNum(1, maxNum)
      //随机获得整数数组
      else numberOfCount[i] = TrueFract(molecule, denominator) //随机获得分数数组
    }
    for (var i = 0; i < n; i++) {
      var m = getRandomNum(0, 3) //随机选择运算符
      countArry[j] += numberOfCount[i] + arry[m] //随机数字和随机运算符拼接
    }
    countArry[j] += numberOfCount[n]
    //计算式子,若小于0,则把存放该式子的位置清空,重新生成式子
    var molecule = getMolecule(countIt(countArry[j]))
    var denominator = getDenominator(countIt(countArry[j]))
    var sum = eval(molecule / denominator)
    if (sum < 0) {
      countArry[j] = ''
      j--
    } else {
      var num = countIt(countArry[j])
      correctAnswer[j] = num
      console.log(num)
    }
  }
  var info = {
    question: countArry,
    answer: correctAnswer
  }
  return info
  console.log(info)
}
随机生成问题集合

(2)计算式子

第五次作业:四则运算之升级版
第五次作业:四则运算之升级版
function countIt(params) {
  //console.log(eval(params));
  var num = params.split(/[\+\-\×\÷]/)
  var operator = params.match(/[\+\-\×\÷]/g)
  //先计算乘法除法
  for (var i = 0; i < operator.length; i++) {
    //console.log(operator[i]);
    //获取运算符
    var char = operator[i]
    if (char == '×' || char == '÷') {
      operator.splice(i, 1)
      //获取运算符左右的数字
      var numL = num[i]
      num.splice(i, 1)
      var numR = num[i]
      num.splice(i, 1)
      var sum = playCount(numL, numR, char)
      num.splice(i, 0, sum)
      i--
    }
  }
  //再计算加减法
  while (operator != false) {
    //获取运算符
    var char = operator[0]
    operator.splice(0, 1)
    //获取运算符左右的数字
    var numL = num[0]
    num.splice(0, 1)
    var numR = num[0]
    num.splice(0, 1)
    var sum = playCount(numL, numR, char)
    num.splice(0, 0, sum)
  }
  return sum
}
计算式子

(3)计算填入答案

第五次作业:四则运算之升级版
第五次作业:四则运算之升级版
document.getElementById('completedBtn').onclick = function() {
    if(text1.value == "")
    {
        alert("请输入题目个数!!");
    }else{
        document.getElementById('comment').innerHTML = ''
        var trueNum = 0
        var falseNum = 0
        var myAnswer = document.getElementsByClassName('myAnswer')
        var correctAnswer = document.getElementsByClassName('correctAnswer')
        for(i = 0; i < correctAnswer.length; i++) {
            if(myAnswer[i].value == correctAnswer[i].innerHTML) {
                trueNum++
            } else {
                falseNum++
            }
            correctAnswer[i].style.display = 'inline-block'
        }
        document.getElementById('comment').innerHTML +=
            '你答对的个数为:' + trueNum + '<br>' + '你答错的个数为: ' + falseNum
    }
}
计算填入答案

 

四、项目分工:

我的工作量:

  • 页面设计
  • 题目处理
  • 分数处理
  • 计时器

第五次作业:四则运算之升级版

 

五、时间规划:

 

PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 计划 8 6
· Estimate 估计这个任务需要多少时间 8 6
Development 开发 40 40
· Analysis 需求分析 (包括学习新技术) 6 10
· Design Spec 生成设计文档 5 6
· Design Review 设计复审 4 6
· Coding Standard 代码规范 3 3
· Design 具体设计 10 12
· Coding 具体编码 36 21
· Code Review 代码复审 7 9
· Test 测试(自我测试,修改代码,提交修改) 13 21
Reporting 报告 9 6
· 测试报告 3 2
· 计算工作量 2 1
· 并提出过程改进计划 3 3

 

六、截图:

 第五次作业:四则运算之升级版

 


相关文章

  • Day1----Python学习之路笔记(1)
    学习路线 Day1 Day2 Day3 Day4 Day5 ...待续 一.了解开发语言 1.高级语言:Python,Java,C++,C#,PHP,JS,Go,Ruby,SQL,Swift,Perl,Objective-C,R等等: 2. ...

2019 cecdns.com webmaster#cecdns.com
12 q. 0.074 s.
京ICP备10005923号