结对作业

这个作业属于哪个课程 班级的链接
这个作业要求在哪里 作业要求的链接
这个作业的目标 生成四则运算题目的算法
项目成员 杨川钡 3219005496

1.GitHub链接

我的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(容易生成题目失败)没有解决完成,希望以后学习了更多以后能够完善这个缺口。
虽然是个人完成了作业,但在整个完成作业的过程中向舍友和班里同学请教了很多,很感谢他们不厌其烦地指导我,当然还有非常重要的网络的力量哈哈哈。
挺可惜没有找到队友的,希望以后能体验一下小组作业时和伙伴一起合作的感觉。
参考网址:

Intellij Idea 将java项目打包成jar
jar打包成exe程序

posted @ 2021-10-26 01:57  擦粑粑纸  阅读(39)  评论(0编辑  收藏  举报