结对作业
这个作业属于哪个课程 | 班级的链接 |
---|---|
这个作业要求在哪里 | 作业要求的链接 |
这个作业的目标 | 生成四则运算题目的算法 |
项目成员 | 杨川钡 3219005496 |
1.GitHub链接
2.效能分析
-
JProfiler测试性能
可能调用二叉树方法进行查重能够提高性能,可惜我对于二叉树算法的理解还不够透彻,还在持续学习中。
3.设计实现过程
设有五个模块,分别是主模块、运算符号模块、运算数模块、生成算数模块和存入文档模块。
-
主模块
类:main
在main中接收r与n的数值,且处理当r或n小于等于0时的异常。
-
运算符号模块
类:Symbol
Symbol类是获得运算符号的模块,Symbo的package里分别由加减乘除四个类,类里定义了符号的名字、序号和优先级,序号是为了后续查重设置的,优先级用于计算结果。
以加号为例:
-
运算数模块
类:Operand
题目中有要求运算数如果是分数应该是真分数或者带分数,且生成的题目中如果存在形如e1÷ e2的子表达式,那么其结果应是真分数。
因此为了实现这一要求,定义了Operand(运算数)这一类。因为时间原因,未能实现约分得到最简单真分数。
通过比较分数与分母的大小来判断运算数该呈现的格式。如以下代码:
-
生成算数模块(核心模块)
类:GenerateArithmetic
这个模块中包含了生成题目、计算题目等方法
因为最近在复习数据机构,刚复习了List,所以对这种方法比较熟悉,但是还是缺少了一些方向,因此在网络上搜索查找了一些相关的算法和函数,找到了在生成四则运算的算法中List的使用方法。
以下为示意图:
-
存入文档模块
类:QAFiles
将生成的题目和答案分别保存在Questions.txt和Answers.txt中
4.代码说明
//获取符号的序号,以便为符号集排序
for(Symbol symbol : SymList2){
SymNOCollection.add(symbol.getNO());
}
quickSort(operCollection,0,operCollection.size() - 1);
quickSort(SymNOCollection,0,SymNOCollection.size() - 1);
//运算式的数字个数,最多4个,最少2个。
Integer num = getRandomNumber(3) + 2;
//运算符的个数
Integer opNum = num - 1;
//括号内包含运算符的个数与位置.
Integer bracNum = null;
5.测试运行
命令行输入测试:
answers和questions文档存储:
模块异常处理说明
当输入的r和n为负数时:
代码:
测试结果:
当未输入r或n时:
代码:
测试结果:
6.PSP
*PSP2.1* | *Personal Software Process Stages* | *预估耗时(分钟)* | *实际耗时(分钟)* |
---|---|---|---|
Planning | 计划 | 20 | 20 |
· Estimate | · 估计这个任务需要多少时间 | 60 | 50 |
Development | 开发 | 240 | 240 |
· Analysis | · 需求分析 (包括学习新技术) | 120 | 280 |
· Design Spec | · 生成设计文档 | 30 | 20 |
· Design Review | · 设计复审 | 30 | 60 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 40 | 20 |
· Design | · 具体设计 | 90 | 120 |
· Coding | · 具体编码 | 600 | 660 |
· Code Review | · 代码复审 | 60 | 90 |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 120 |
Reporting | 报告 | 60 | 60 |
· Test Repor | · 测试报告 | 60 | 60 |
· Size Measurement | · 计算工作量 | 10 | 20 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 60 |
· 合计 | 1510 | 1880 |
7.项目小结
勉强完成了,但是还是有bug(容易生成题目失败)没有解决完成,希望以后学习了更多以后能够完善这个缺口。
虽然是个人完成了作业,但在整个完成作业的过程中向舍友和班里同学请教了很多,很感谢他们不厌其烦地指导我,当然还有非常重要的网络的力量哈哈哈。
挺可惜没有找到队友的,希望以后能体验一下小组作业时和伙伴一起合作的感觉。
参考网址: