个人作业1
作业链接:https://coding.net/u/Idun/p/first/git/tree/master/
需求分析
1.设置题目数和数值范围
2.随机生成含有1-3个运算符题目
3.判断输入结果
功能设计
1.生成算式:从浏览器的text标签中获取题目数和数值范围,根据这两个个数随机生成符合要求的算式
2.结果判断:使用data- 标签存储答案,将输入的结果同答案对比,以改变边框颜色的方式实现反映结果正误
设计实现
1.算式生成:将运算符放入数组,以随机数下标的形式取得数组中的运算符。在算式生成前,通过随机数确定运算符个数,使用switch-case函数根据运算符个数确定算式格式。将生成的标签插入浏览器
2.判断:通过按键触发的函数监听输入值和自定义属性data-result对比,从而改变边框颜色来判断正误
代码说明
生成函数
function make() {
//n和r分别用于存放题目数和范围数
var n = document.querySelector('#n').value;
var r = document.querySelector('#r').value;
//存放四则运算符
var char = ['+', '-', '*', '/'];
if(parseInt(n) == n && parseInt(r) == r) {
//标记循环次数的标量
var tag = 0;
while(tag < n) {
//随机运算符数量
var charNumber = Math.round(Math.random() * 2) + 1;
var number = [];
for(var i = 0; i < charNumber + 1; i++) {
number.push(Math.ceil(Math.random() * r))
}
//根据运算符数量定义对应的算式
switch(charNumber) {
case 1:
var str = number.shift() + char[Math.round(Math.random() * 3)] + number.shift() ;
break;
case 2:
var str = number.shift() + char[Math.round(Math.random() * 3)] + number.shift() + char[Math.round(Math.random() * 3)] + number.shift();
break;
case 3:
var str = number.shift() + char[Math.round(Math.random() * 3)] + number.shift() + char[Math.round(Math.random() * 3)] + number.shift() + char[Math.round(Math.random() * 3)] + number.shift();
break;
}
var str1 = '<label>' + str + '</label>' + '=' + '<input onkeyup="result(event)" type="text" data-result="' + eval(str) + '" /><hr />'
//将字符串插入浏览器
document.querySelector('section').innerHTML += str1;
tag++;
}
} else {
alert('题目数必须小于10000,范围必须为自然数');
}
}
判断函数
function result(event) {
//通过event.target获取被输入的标签,从而获取输入的值
if(event.target.value) {
//将输入值和结果对比,相同则为绿色边框,否则为红色边框
if(event.target.value == event.target.dataset.result) {
event.target.style.border = '2px solid green';
} else {
event.target.style.border = '2px solid red';
}
} else {
//当没有输入的内容时,将边框变回原来的样式
event.target.style.border = '1px solid grey';
}
}
运行测试
PSP
PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 计划 5 10
Estimate 估计这个任务的时间 1 1
Development 开发 300 420
Analysis 需求分析 2 5
Design Spec 生成设计文档 10 5
Design Review 设计复审 2 1
Coding standard 代码规范 5 1
Design 具体设计 30 20
Coding 具体编码 120 180
Code Review 代码复审 5 10
Test 测试 45 80
Reporting 报告 20 35
测试报告 20 25
计算工作量 5 5
提出过程改进计划 10 15
项目小结
这个项目对我来说有点困难。因为对编程的不熟悉,简化了很多功能,但是不管怎么说还是写出了一个能用的程序,这也刺激我在以后的时间里更加努力,提高自己的动手能力。