软件工程第二次结对作业四则运算自动生成器网页版


一、题目要求

本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题。

  • 我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:

    • 能够自动生成四则运算练习题
    • 可以定制题目数量
    • 用户可以选择运算符
    • 用户设置最大数(如十以内、百以内等)
    • 用户选择是否有括号、是否有小数
    • 用户选择输出方式(如输出到文件、打印机等)
    • 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)

二、分工情况

本次我在队伍中担任驾驶员,完成全部代码编程工作(除测试代码外)。

现在项目已经全部(包括测试部分)上传至coding:点击链接


三、设计思路

  • IDE : Sublime3

  • 开发语言:JavaScript、Html、Css

  • 运行环境:Google Chrome浏览器

  • 测试工具:Mocha(摩卡)框架

  • 函数介绍:

    • creat()    -->页面button监听函数
    • Symbol()  -->符号类型构造函数
    • randomArithmetic()  --> 自动生成四则式函数
    • getArithmetic()  --> 四则式是否带括号过滤函数
    • showArithmetic()  --> 显示四则运算式函数
    • Test()  --> 测试函数

四、执行展示



五、主要代码

(1)creat()

function creat(){
document.getElementsByClassName("userSelect")[0].style.display = "none";
document.getElementsByClassName("button")[0].style.display = "none";
document.getElementsByClassName("show")[0].style.display = "block"; /*
flag -- 是否需要括号 -- 0:需要、1:不需要
amount -- 题目数量
n -- 操作数个数
max -- 操作数最大数值
isInteger -- 是否是整数 -- 0:不是整数、1:是整数
symbolMax -- 是否包含乘除法 -- 2:不包含、4:包含 */
var amount = document.getElementById("list").num.value;
console.log("amount = "+amount);
var n = document.getElementById("list").length.value;
console.log("n = "+ n);
var symbolMax = document.getElementById("list").conclude.value;
console.log("symbolMax = "+symbolMax);
var max = document.getElementById("list").rang.value;
console.log("max = "+max);
var flag = document.getElementById("list").brackets.value;
console.log("flag = "+ flag);
var isInteger = document.getElementById("list").integer.value;
console.log("isInter = "+ isInteger);
showArithmetic(flag,amount,n,max,isInteger,symbolMax);
}

(2)randomArithmetic()

function randomArithmetic(n,max,isInteger,symbolMax){
//console.log(n);
var digitalNum = n;
var symbolNum = n - 1; for(var i = 0; i < digitalNum; i++){
if(isInteger == 0){//生成整数
randomDigital[i] =Math.floor(Math.random()*max);
}else{
//生成小数
var randomDitem = Math.random()*max;
randomDigital[i] = randomDitem.toFixed(2);
}
}
for(var j = 0; j < symbolNum; j++){
var item = Math.floor(Math.random()*symbolMax);
var randomSitem = new Symbol();
switch(item){
case 0:
randomSitem.name = '+';
randomSitem.value = 0;
randomSymbol.push(randomSitem);
break;
case 1:
randomSitem.name = '-';
randomSitem.value = 0;
randomSymbol.push(randomSitem);
break;
case 2:
randomSitem.name = '*';
randomSitem.value = 2;
randomSymbol.push(randomSitem);
break;
case 3:
randomSitem.name = '/';
randomSitem.value = 2;
randomSymbol.push(randomSitem);
break;
}
}
//console.log(randomDigital);
//console.log(randomSymbol);
}

(3)getArithmetic()

function getArithmetic(flag){
var str =""; if(flag == 0){
//不需要括号
var i = 0;
//console.log("done1");
for( i = 0; i < randomDigital.length-1; i++){
str = str + randomDigital[i] + randomSymbol[i].name;
}
//console.log("done2");
str = str + randomDigital[i];
}else{
//需要括号
var i = 0;
var lock = 0;
for(i = 0; i < randomDigital.length-2; i++){ if(randomSymbol[i].value < randomSymbol[i+1].value){
str ='('+ str + randomDigital[i] + randomSymbol[i].name;
lock = 1;
//console.log(str);
}else{
str = str + randomDigital[i];
if(lock == 1){
str = str + ')' + randomSymbol[i].name;
lock = 0;
}
else{
str = str + randomSymbol[i].name;
}
//console.log(str);
}
}
str = str + randomDigital[i]
if(lock == 1){
str = str + ')';
}
str = str + randomSymbol[i].name + randomDigital[i+1];
lock = 0;
}
//console.log(str);
return str;
}

六、心得总结

从第一次的结对作业到第二次完成,我们在合作中增添了许多默契,这次的作业里,我负责实现作业要求的主要功能和编程,周磊同学负责完成项目的测试和代码审查部分,从合作中体验到结对编程通过代码的分享合作编程可以提高很大的效率。

本次的项目我个人是感觉还有很多需要改进的地方,有一点遗憾之处,例如函数功能的完善、界面亲和力、多终端使用等等,对比我之前的阿超Javascrpit幼儿园级还是有了一些改进的。希望在下一次的团队作业中项目做到更加完善。

(幼儿园毕业)Javascript小学级随机生成四则运算的更多相关文章

  1. 基于c编写的关于随机生成四则运算的小程序

    基于http://www.cnblogs.com/HAOZHE/p/5276763.html改编写的关于随机生成四则运算的小程序 github源码和工程文件地址:https://github.com/ ...

  2. 结对作业——随机生成四则运算(Core 第7组)

    结对作业 ——随机生成四则运算(core第7组) 吕佳玲 PB16060145 涂涵越 PB16060282 GITHUB地址 https://github.com/hytu99/homework_2 ...

  3. 用Java随机生成四则运算

    代码链接:https://github.com/devilwjy/Code.Demo 需求分析: 1.程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符 ...

  4. JavaScript通过正则随机生成电话号码

    没有接口,就只能自己模拟Json数据了 恰好需要模拟一些电话号码,我又懒得自己随便写, 不如写一个小功能就用来实现随机生成电话号码 <!DOCTYPE html> <html lan ...

  5. 软件工程课堂作业(二)续——升级完整版随机产生四则运算题目(C++)

    一.设计思想: 1.根据题目新设要求,我将它们分为两类:一类是用户输入数目,根据这个数目改变一系列后续问题:另一类是用户输入0或1,分情况解决问题. 2.针对这两类要求,具体设计思路已在上篇博文中写出 ...

  6. 随机生成四则运算式2-NEW+PSP项目计划(补充没有真分数的情况)

    PS:这是昨天编写的随机生成四则运算式2的代码:http://www.cnblogs.com/wsqJohn/p/5264448.html 做了一些改进. 补:在上一次的运行中并没有加入真分数参与的运 ...

  7. Android:随机生成算数四则运算简单demo(随机生成2~4组数字,进行加减乘除运算)

    首先创建一个新的Android工程,下面是页面布局: Java代码: 我们先来分析一下如何完成的步骤: 1.首先,先完成生成随机数.(包括随机生成几组数字,范围为多少的数字,四则运算符号等): 2.要 ...

  8. JavaScript随机生成信用卡卡号的方法

    这段JS代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负. var visaPrefixList = new Array( "4 ...

  9. 随机生成30道四则运算-NEW

    补充:紧跟上一个随机生成30道四则运算的题目,做了一点补充,可以有真分数之间的运算,于是需要在原来的基础上做一些改进. 首先指出上一个程序中的几个不足:1.每次执行的结果都一样,所以不能每天给孩子出3 ...

随机推荐

  1. 03-01_WebLogic一些概念名词

    WebLogic一些概念名词 域(Domain) 管理服务器(Administrative Server) 被管服务器(Managed Server,受管服务器) 集群(Cluster) 机器(Mac ...

  2. 使用Amanda ZRM备份远程MySQL数据库

    本文写道最后的时候,我才发现ZRM for MySQL的一个致命问题,就我目前的理解和测试来看,它恢复数据的时候是采取覆盖的方式,举个例子,假定某台数据库服务器上有两个数据库test1,test2,你 ...

  3. Huawei 常用基本配置命令一

    华为交换机的三种视图: 用户视图, 系统视图, 接口视图 用户视图: 刚开始登入交换机时的视图,一般看到的是尖括号<> . save // 配置完交换机后保存当前配置的命令 system- ...

  4. 题解 P1550 【[USACO08OCT]打井Watering Hole】

    题面(翻译有点问题,最后一句话) 农民John 决定将水引入到他的n(1<=n<=300)个牧场.他准备通过挖若 干井,并在各块田中修筑水道来连通各块田地以供水.在第i 号田中挖一口井需要 ...

  5. Beta版本项目计划

    小队名称:PHILOSOPHER 小组成员 [组长]金盛昌(201421122043).刘文钊(20142112255).陈笑林(201421122042) 张俊逸(201421122044).陈志建 ...

  6. 【python27】猜随机数的小游戏

    游戏规则: 猜一个随机数,如果猜对了就给出相应的猜成功提示语(自定义文字),如果猜大或者是猜小了,给出对应的提示,但总的猜次数为三次,每猜错一次重新猜时,给用户提示所剩余的猜次数 实现如下: # -* ...

  7. [Python2]介绍关于Uiautomator的watcher使用场景及使用方法

    [官方的介绍]: Watcher You can register watcher to perform some actions when a selector can not find a mat ...

  8. python2.7 threading RLock/Condition文档翻译 (RLock/Condition详解)

    RLock Objects 可重入锁是一个同步原语,它可以被同一个线程多次获取.在内部,除了原始锁使用的锁定/解锁状态之外,它还使用“线程拥有”和“递归级别”的概念.在锁定状态下,某些线程拥有锁:在未 ...

  9. php输出日志

    error_log('你要输出的信息', 3, 'E:\work\jiajiayue\Application\Api\Controller\1.txt');die; php error_log记录日志 ...

  10. 理解RHEL上安装oracle的配置参数 :/etc/security/limits.conf, /etc/profile, /etc/pam.d/login

    无论安装什么版本的Oracle,在安装之前,都需要配置 /etc/pam.d/login   /etc/profile   /etc/security/limits.conf这三个文件 那这三个文件究 ...