项目克隆地址:https://git.dev.tencent.com/Baiyl134/2017012177.git
目录:
一、需求分析
二、功能设计
三、测试运行
四、代码展示
五、PSP
六、自我总结
一、需求分析
(一)功能需求
基本功能:
- 程序可接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题。
- 每个数字在 0 和 100 之间,运算符在3个到5个之间;
- 每个练习题至少要包含2种运算符;
- 所出的练习题在运算过程中不得出现负数与非整数,比如3÷5+2=2.6,2-5+10=7等是不合法的;
- 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致;
- 当程序接收的参数为4时,以下为一个输出文件示例。
2019010203
13+17-1=29
11*15-5=160
3+10+4-16=1
15÷5+3-2=4
扩展功能:
- 支持有括号的运算式,包括出题与求解正确答案。
(二)程序需求
1、使用Java语言或者其他编程语言。
2、生成文件时请使用相对路径,生成的txt 文件需在项目的根目录下,可直接查看演示示例。
3、使用的JDK版本为 jdk8u161,使用的JRE版本为jre8u161。
4、不得使用除限定版本jdk与jre外的额外依赖包。
二、功能设计
(一)基本功能
1、保证输入的是数字或者特定字符,如果不符合要求,会有提示,并且可以重新输入。
2、当输入一个参数n,随机产生n道加减乘除算术题。保证生成的每个练习题至少要包含2种运算符。且保证在算数过程中,不出现负数,和小数。
3、将生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致;
4、为保证随机产生的四则运算更满足用户的需求,当输入参数n决定产生四则运算的个数时,另外输入一个参数m,决定产生的n道四则运算包含运算符的个数(3、4、5)
三、测试运行
为了便于客户操作,在运行代码时需要输入你要打印的题目的具体数量,程序会随机产生包含3-5个运算符的符合要求的四则运算式。
运行结果如下图:
遇到了乱码问题,可以在用命令提示符的时候加一步 javac -encoding UTF-8 Main.java,我加了之后也不好使,就直接将代码用文本文件打开另存为的时候将编码类型改为ANSI,之后运行就可以了。
运行结果如上,由于能力有限就没有实现附加功能,希望在之后的学习后可以完善。
四、代码展示
Main类:
import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { args = new String[1000]; try { String number2 = args[0]; int number = 0; while (number < 1 || number > 1000) { while (!(number2 != null && number2.matches ("^[0.0-9.0]+$"))) { Scanner input = new Scanner (System.in); System.out.print ("请输入正确的题目数量,类型为整数 (1-1000):"); number2 = input.next (); } number = Integer.parseInt ((number2)); if (number < 1 || number > 1000) { Scanner input = new Scanner (System.in); System.out.print ("请输入正确的题目数量,类型为整数 (1-1000):"); number2 = input.next (); } } CreatFile File = new CreatFile (); File.creatFile (number); } catch (Exception E) { throw new Exception ("输入有误!"); } } }
其他代码也就不一一展示了,可以通过仓库查看。
五、PSP
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
了解 |
10 |
20 |
了解作业要求,并安装相应的插件 |
10 |
20 |
计划 |
10 |
20 |
估计这个任务需要多少时间,并规划大致工作步骤 |
10 |
20 |
开发 |
400 |
600 |
· 需求分析 (包括学习新技术) |
200 |
300 |
· 具体设计 |
50 |
100 |
· 具体编码 |
100 |
100 |
· 测试(自我测试,修改代码,提交修改) |
50 |
100 |
报告 |
30 |
50 |
· 测试报告 |
10 |
20 |
· 事后总结, 并提出过程改进计划 |
20 |
30 |
六、自我总结
这一次的项目最初让我头疼,感觉自己什么都不会就要做一个个人项目,通过学习学长学姐的博客,我开始有了一点思路,但是理论并不是实践,随着自己上手的时间越久就越找不到方法,又开始了学习之路,由于基础不扎实,只实现了基本功能,对于分数这个附加功能只能放弃,在之后的学习过程中,我会不断完善自己的代码。