(幼儿园毕业)Javascript小学级随机生成四则运算
软件工程第二次结对作业四则运算自动生成器网页版
一、题目要求
本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题。
- 我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:
- 能够自动生成四则运算练习题
- 可以定制题目数量
- 用户可以选择运算符
- 用户设置最大数(如十以内、百以内等)
- 用户选择是否有括号、是否有小数
- 用户选择输出方式(如输出到文件、打印机等)
- 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)
二、分工情况
本次我在队伍中担任驾驶员,完成全部代码编程工作(除测试代码外)。
现在项目已经全部(包括测试部分)上传至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小学级随机生成四则运算的更多相关文章
- 基于c编写的关于随机生成四则运算的小程序
基于http://www.cnblogs.com/HAOZHE/p/5276763.html改编写的关于随机生成四则运算的小程序 github源码和工程文件地址:https://github.com/ ...
- 结对作业——随机生成四则运算(Core 第7组)
结对作业 ——随机生成四则运算(core第7组) 吕佳玲 PB16060145 涂涵越 PB16060282 GITHUB地址 https://github.com/hytu99/homework_2 ...
- 用Java随机生成四则运算
代码链接:https://github.com/devilwjy/Code.Demo 需求分析: 1.程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符 ...
- JavaScript通过正则随机生成电话号码
没有接口,就只能自己模拟Json数据了 恰好需要模拟一些电话号码,我又懒得自己随便写, 不如写一个小功能就用来实现随机生成电话号码 <!DOCTYPE html> <html lan ...
- 软件工程课堂作业(二)续——升级完整版随机产生四则运算题目(C++)
一.设计思想: 1.根据题目新设要求,我将它们分为两类:一类是用户输入数目,根据这个数目改变一系列后续问题:另一类是用户输入0或1,分情况解决问题. 2.针对这两类要求,具体设计思路已在上篇博文中写出 ...
- 随机生成四则运算式2-NEW+PSP项目计划(补充没有真分数的情况)
PS:这是昨天编写的随机生成四则运算式2的代码:http://www.cnblogs.com/wsqJohn/p/5264448.html 做了一些改进. 补:在上一次的运行中并没有加入真分数参与的运 ...
- Android:随机生成算数四则运算简单demo(随机生成2~4组数字,进行加减乘除运算)
首先创建一个新的Android工程,下面是页面布局: Java代码: 我们先来分析一下如何完成的步骤: 1.首先,先完成生成随机数.(包括随机生成几组数字,范围为多少的数字,四则运算符号等): 2.要 ...
- JavaScript随机生成信用卡卡号的方法
这段JS代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负. var visaPrefixList = new Array( "4 ...
- 随机生成30道四则运算-NEW
补充:紧跟上一个随机生成30道四则运算的题目,做了一点补充,可以有真分数之间的运算,于是需要在原来的基础上做一些改进. 首先指出上一个程序中的几个不足:1.每次执行的结果都一样,所以不能每天给孩子出3 ...
随机推荐
- commons-pool 解析
首先抛出个常见的长连接问题: 1 都知道连接MySQL的应用中大多会使用框架例如 c3p0 ,dbcp proxool 等来管理数据库连接池. 数据库连接池毫无疑问都是采用长连接方式. 那么MySQ ...
- InfoPath读取List到重复表
标题设置好了 添加一个按钮 更改ID 点击编写代码 然后添加引用 并更改下域的名字 添加如下代码 public void LoadBtn_Clicked(object sender, Clicked ...
- 将目录结构输出为json格式(zTree)
# -*- coding: UTF-8 -*- import json,os path = 'E:\\BACKUP' #返回空目录 def path_to_dict(path): d = {'name ...
- Hadoop 高可用(HA)的自动容灾配置
参考链接 Hadoop 完全分布式安装 ZooKeeper 集群的安装部署 0. 说明 在 Hadoop 完全分布式安装 & ZooKeeper 集群的安装部署的基础之上进行 Hadoop 高 ...
- Qt在控件未显示时如何获取正确的控件尺寸
因为打算全屏显示一个对话框,而对话框内有几个QLabel的尺寸要在确定QLabel可用的最大尺寸后,再根据内容调整一次,所以在对话框构造函数内就想确定QLabel的最大尺寸,但因为QWidget::u ...
- SVN 图标不显示的解决办法
SVN 的图标没办法显示了.经搜索,发现需要修改注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Sh ...
- PyQt5--QPixmap
# -*- coding:utf-8 -*- ''' Created on Sep 20, 2018 @author: SaShuangYiBing Comment: ''' import sys f ...
- 数据结构习题Pop Sequence的理解----小白笔记^_^
Pop Sequence(25 分) Given a stack which can keep M numbers at most. Push N numbers in the order of 1, ...
- ArcMap 导入Excel坐标数据
1 准备Excel坐标数据集合 2 ArcMap加入Excel数据 将excel文件放入arcmap工作区的物理路径下 在工作区的根图层上点键,选择添加数据,找到excel文件并选择相应的工作薄 ...
- 开发指南专题十四:JEECG微云高速开发平台MiniDao 介绍
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhangdaiscott/article/details/27068645 开发指南专题十四:J ...