MathExam
MathExam
一、预估与实际
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 575 | 605 |
| • Estimate | • 估计这个任务需要多少时间 | 575 | 605 |
| Development | 开发 | 550 | 565 |
| • Analysis | • 需求分析 (包括学习新技术) | 60 | 60 |
| • Design Spec | • 生成设计文档 | 20 | 20 |
| • Design Review | • 设计复审 | 10 | 10 |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 10 | 25 |
| • Design | • 具体设计 | 60 | 30 |
| • Coding | • 具体编码 | 180 | 120 |
| • Code Review | • 代码复审 | 30 | 20 |
| • Test | • 测试(自我测试,修改代码,提交修改) | 180 | 300 |
| Reporting | 报告 | 25 | 20 |
| • Test Repor | • 测试报告 | 10 | 10 |
| • Size Measurement | • 计算工作量 | 5 | 5 |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 10 | 5 |
| 合计 | 605 |
二、需求分析
我通过百度的方式了解到,小学一年级数学有如下的几个特点:
- 特点1:认识100以内的数
- 特点2:不知道负数
- 特点3:认识0
小学二年级数学有如下的几个特点: - 特点1:学会9*9乘法表
- 特点2:有余数除法
经过分析,我认为,这个程序应当: - 小学1年级
- 使用的数字小于100
- 和小于100
- 差大于等于0
- 小学二年级
- 乘法使用9*9乘法表内的数字
- 除法除数不能为0
三、设计
1. 设计思路
- 这个程序有1个类,4个函数【main(),gradeOne(),gradeTwo().outPut()】,在主函数中调用gradeOne(),gradeTwo().outPut()
- 算法的关键的关键是随机数和判断用户输入的参数
2. 实现方案
- 准备工作:先在Github上创建仓库,克隆到本地...
- 技术关键点:参数个数的识别,符号的随机
四、编码
- 获取用户输入的参数
- 使用random函数随机生成100以内的数和0-1的数,用0,1表示符号
- 生成随机题目
- 输出到out.txt文档中
- 输出学号姓名时间
- 修改参数的不是正整数的时候的提示
1. 调试日志
- 若只输入一个参数则会报错,应给grade一个初始值。
- Random函数的随机是根据种子来随机的若种子一样则随机数一样缺省是当前的毫秒
- 将text file encoding设置为UTF-8后cmd无法直接编译要用javac -encoding UTF-8才能编译
2. 关键代码
static Random fuhao = new Random();
static Random num1 = new Random();
static Random num2 = new Random();
for (int i = 0; i < n; i++) {
if (c[i] == 0) {
// 随机加法
while (a[i] + b[i] > 100) {
// 如果和大于100重新随机
a[i] = num1.nextInt(100);
b[i] = num2.nextInt(100);
}
} else {
// 随机减法
while (a[i] - b[i] < 0) {
// 如果差小于0重新随机
a[i] = num1.nextInt(100);
b[i] = num2.nextInt(100);}
}
}
3. 代码规范
请给出本次实验使用的代码规范:
- 第一条在 if/else/for/while/do 语句中必须使用大括号。即使只有一行代码,避免采用单行的编码方式:if (condition) statements;
- 第二条类型与中括号紧挨相连来定义数组;
- 第三条IDE的text file encoding设置为UTF-8;
- 第四条注释的双斜线与注释内容之间有且仅有一个空格;
- 第五条不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。
- 第六条单行字符数限制不超过120个,超出需要换行,换行时遵循如下原则:
- 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进,参考示例。
- 运算符与下文一起换行。
- 方法调用的点符号与下文一起换行。
- 方法调用时,多个参数,需要换行时,在逗号后进行。
- 在括号前不要换行.
- 第七条注意 Math.random() 这个方法返回是 double 类型,注意取值的范围 0≤x<1(能够取到零值,注意除零异常),如果想获取整数类型的随机数,不要将 x 放大 10 的若干倍然后取整,直接使用 Random 对象的 nextInt 或者 nextLong 方法。
- 第八条if/for/while/switch/do等保留字与括号之间都必须加空格。
五、测试
| 测试id | 测试内容 | 输入数据 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 1 | 输入1个参数 | 10 | 输出10道1年级题 | 符合预期 |
| 2 | 输入参数过大 | 11111 | "请输入0-500的题目数" | 符合预期 |
| 3 | 输入字符串 | poi | "您输入的不是正整数,请输入正整数" | 符合预期 |
| 4 | 输入小数 | 7.77 | "您输入的不是正整数,请输入正整数" | 符合预期 |
| 5 | 输入000000000001 | 000000000001 | 输出1道1年级题 | 符合预期 |
| 6 | 输入2个参数 | 10 2 | 输出10道2年级题 | 符合预期 |
| 7 | 第二个参数输入字符串 | 10 shimakaze | "您输入的不是正整数,请输入正整数" | 符合预期 |
| 8 | 第二个参数大于2 | 10 10 | "现只支持1-2年级,请输入1-2的数字" | 符合预期 |
六、总结
- 使用了“软件开发的基本策略:分而治之”;
- 对于第一次设计和代码规范还是略有不足,望下次吸取这次的经验教训
MathExam的更多相关文章
- MathExam小学一二年级计算题生成器V1.0
MathExam小学一二年级计算题生成器v1.0 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning ...
- MathExam第二次作业
第二次作业:MathExam 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 20 30 • ...
- MathExam任务一
小学一二年级数学计算题 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 35 • Es ...
- MathExam Lv2
一个大气又可爱的算术题----211606360 丁培晖 211606343 杨宇潇 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) ...
- MathExam V2.0
# 隔壁村小学的小朋友都羡慕哭了2.0版 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 1 ...
- 作业MathExam
MathExam233 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 600 650 • ...
- MathExam作业
作业 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 50 40 • Estimate • ...
- MathExam第二次作业(升级版)
MathExamLv2——林华伟 211506319 陈珍 211406263 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实 ...
- 作业1MathExam
自己取一个大气又可爱的标题 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 720 1000 ...
随机推荐
- jquery使用FormData提交数据
在jquery中,使用ajax提交表单数据. FormData可以很方便地获取到表单中的所有数据. 注意: ajax中的data参数为FormData类型时,contentType就不要设置成appl ...
- 牛客网练习赛44-B(快速幂+模拟)
题目链接:https://ac.nowcoder.com/acm/contest/548/B 题意:计算m/n小数点后k1位到k2位,1≤m≤n≤109,1<=k1<=k2<=109 ...
- ucore-lab1-练习3report
练习3.分析bootload进入保护模式的过程 0. BIOS通过读取硬盘主引导扇区到内存,并跳转到对应内存中的位置,也就是从’%cs=0 $pc=0x7c00‘进入并执行bootloader,boo ...
- 转)服务器安装部署ESXI6.0
1.制作一个ESXI6.0的系统安装盘 2.服务器启动后加载VMware ESXi 6.0的ISO文件,开始安装. 3.ESXi引导装入程序,VMware ESXi引导过程,在屏幕上方显示的版本号.内 ...
- f5会话保持导致站点访问故障
1.环境: vs Service Port为443和80,vip为10.160.100.66,pool为10.160.45.42/43的8080.80的vs重新到443. 2.问题: 单独访问源站都没 ...
- 动态替换iframe的src及动态改变iframe的高度
实现效果:点击左侧右侧内容变化,但左侧保持不变(如折叠等) 动态替换iframe的src <iframe width="100%" frameBorder="0&q ...
- android闪退日志收集
写一个工具类,然后直接引用,简单粗暴. package com.socialsecurity.main.exception; import java.io.File; import java.io.F ...
- Dockerfile里指定执行命令用ENTRYPOING和用CMD有何不同?
结论:运行时机不太一样. RUN是在Build时运行的,先于CMD和ENTRYPOINT.Build完成了,RUN也运行完成后,再运行CMD或者ENTRYPOINT. ENTRYPOINT和CMD的不 ...
- sap 给集团分配一个逻辑系统
1.进入事务代码 SALE定义一个新的逻辑系统 2.通过事务代码RZ10 进入之后, 将参数login/no_automatic_user_sapstar 修改为“0”, 然后重启SAP服务生效 3. ...
- JFinal Web开发学习(八)后台集成H-ui-admin前端框架
h-ui-admin是一个很不错的前端框架h-ui实现的一个后台管理系统的前端. 1.在WebRoot目录下新建admin目录 2.下载h-ui-admin(当前最新是2.5版本)并解压至admin文 ...