仓库地址:
正文:
1.需求分析
1.程序可接收一个输入参数n,然后随机产生n道加减乘除练习题
2.每个数字在 0 和 100 之间
3.运算符在3个到5个之间,且每个练习题至少要包含2种运算符
4.练习题在运算过程中不得出现负数与非整数
5.学号与生成的练习题及对应答案要输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致
2.功能设计
1.基本功能:根据用户输入的参数n自动生成n道符合需求的的练习题,并自动生成答案,并将式子与答案传输到特定文件当中
2.扩展功能:由于本人的技术不是很扎实,所以扩展功能目前还没法实现,但是一定会继续学习实现这个功能的
3.设计实现
我一共建了三个类,分别是Main、Question、Transport,功能如下:
Main类:用于接收用户给出的参数n,调用Question类
Question类:用于生成练习题并计算出每道练习题的答案,调用Transport类
Transport类:供Question类调用,将学号与练习题输出到指定文件中
三类关系:
首先我使用math.random函数生成随机数,由于需求规定,我将随机数定义为正整数输出,之后我直接调用js的eval函数,更加快捷的算出了练习题的答案并输出。
4.算法详解
拿到题目之后我百度查询了一下要用到哪些方法,无意间发现了用js能够更加简单的解决这个问题,没有用到调度场算法和逆波兰表达式,所以并没有具体的算法详解
5.测试运行
先在eclipse中运行并给参数赋值30
打开result文件,显示了学号和30道练习题
6.代码展示
获取参数并调用Question类生成练习题
public class Main { @SuppressWarnings("resource") public static void main(String[] args) throws ScriptException{ Scanner sc=new Scanner(System.in); System.out.println("请输入题目的个数\n"); int n=sc.nextInt(); new Question(n); } }
//实例化 private void init(){ random=new Random(); ar=new ArrayList<String>(); manager = new ScriptEngineManager(); se = manager.getEngineByName("js"); }
//生成随机题库并给出答案并输出 private void ques() throws ScriptException{ String qu = null; for(int i=0;i<n;i++){ qu=""; int time=t(); for(int j=0;j<time;j++){ qu=qu+ti(); if(j<time-1){ qu=qu+type(ope()); } } double result=Double.valueOf(se.eval(qu.toString()).toString()) ; if(result%1!=0 || result<0 || result>400){ i--; continue; } ar.add(qu); } wtf=new Transport("result.txt", ar, n);//输出 }
//生成运算符 private String type(int n){ if(n==0){ return "+"; }else if(n==1){ return "-"; }else if(n==2){ return "*"; }else{ return "/"; } }
7.总结
说实话,这次的作业量和作业难度的确有点重,不过作业还是得写,这两周不断的百度查资料,可是这次作业还是有很大的不足,也正是因为这次的作业让我意识到自己和别的同学的差距有多大,也意识到自己当初没有好好学语言是多么的错误,既来之则安之,只能从现在开始恶补,不然这个差距不止不会改变甚至会越来越大。不过说实话,上两次作业的成绩一出,心里还是挺失落的,如果说第一次作业是没有看清楚作业要求导致分数偏低,不过第二次作业真的是认真看了要求,花了很长时间去写,但是看到分数之后还是挺失落的,后来静下来想想,众口难调,只要自己在学习过程中真正学到了东西,那就足够了。
8.PSP
PSP2.1 |
任务内容 |
计划共完成需要的时间(h) |
实际完成需要的时间(h) |
Planning |
计划 |
5 |
4 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
5 |
4 |
Development |
开发 |
18.5 |
19.5 |
· Analysis |
· 需求分析 (包括学习新技术) |
0.5 |
0.5 |
· Design Spec |
· 生成设计文档 |
1 |
1 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
1.5 |
2 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
1 |
1.5 |
· Design |
· 具体设计 |
2 |
2 |
· Coding |
· 具体编码 |
4 |
5 |
· Code Review |
· 代码复审 |
1 |
0.5 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
2 |
1.5 |
Reporting |
报告 |
2 |
3 |
· Test Report |
· 测试报告 |
2 |
1 |
· Size Measurement |
· 计算工作量 |
1 |
1 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
0.5 |
0.5 |