(幼儿园毕业)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 ...
随机推荐
- 动态修改css文件中,具体的class中的个别属性值。
function setStyleSheetObjCssClassProperty(pStyleSheetObj, pSelectorText, pProperty, pValue) { var pS ...
- pip 设置国内源
最近使用 pip 安装包,动辄十几 k 甚至几 k 的下载速度,确实让人安装的时候心情十分不好.所以还是要给 pip 换一个国内的源.可以显著的提升安装速度.有更多的时间来研究算法. 下面,列一下收集 ...
- 阿里云 IOT 对接设备开发 C# 开发设备对接阿里云 IOT平台
一,创建阿里云 IOT 产品.设备 目前阿里云每月赠送 100 万条流量,可以免费使用基础版.高级版,开通后即可免费使用. 阿里云 IOT 平台地址 https://iot.console.aliyu ...
- PyQt5--Signal&Slot
# -*- coding:utf-8 -*- ''' Created on Sep 14, 2018 @author: SaShuangYiBing ''' import sys from PyQt5 ...
- CF700E:Cool Slogans(SAM,线段树合并)
Description 给你一个字符串,如果一个串包含两个可有交集的相同子串,那么这个串的价值就是子串的价值+1.问你给定字符串的最大价值子串的价值. Input 第一行读入字符串长度$n$,第二行是 ...
- php 基于redis计数器类
本文引自网络 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 本文将使用其incr(自增),get(获取), ...
- [转]改善C#程序的建议4:C#中标准Dispose模式的实现
需要明确一下C#程序(或者说.NET)中的资源.简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类: 托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象: 非托管资源:不 ...
- 多Tomcat多JDK版本的Window服务添加配置方式
本文所讲的配置方式只适合Windows系统,所牵扯的软件2个解压的jdk,2个解压的tomcat. 1.环境初始化 将两个jdk和tomcat解压到我们指定的目录下.修改两个tomcat的端口:必须修 ...
- Vue购物车
index.html <!DOCTYPE html><html> <head> <meta charset="utf-8&quo ...
- Splay 平衡树
摘自大佬文章 https://www.luogu.org/blog/user19027/solution-p3369 维护一个数据结构1.插入 x 数2.删除 x 数(若有多个相同的数,因只删除一个) ...