这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | <和同伴探讨学习共同完成一个四则运算的项目> |
结对人:
3119005331 凌龙
3119005327 梁力恒
Github项目地址
Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|
计划 | 590 | 275 |
估计这个任务需要多少时间 | 1205 | 1330 |
开发 | 495 | 915 |
需求分析 (包括学习新技术) | 180 | 120 |
生成设计文档 | 60 | 15 |
设计复审 (和同事审核设计文档) | 30 | 10 |
代码规范 (为目前的开发制定合适的规范) | 20 | 10 |
具体设计 | 300 | 120 |
具体编码 | 360 | 600 |
代码复审 | 15 | 15 |
测试(自我测试,修改代码,提交修改) | 120 | 300 |
报告 | 60 | 120 |
测试报告 | 60 | 20 |
计算工作量 | 20 | 10 |
事后总结, 并提出过程改进计划 | 30 | 10 |
合计 | 1255 | 1350 |
在函数使用图中可以看到byte数组,String类使用了较多此,使用时间较长。byte数组是因为在读取和写出文件的过程中使用其来进行读写;
而String类则是因为在判断一个新表达式是否与已产生的表达式重复的算法中使用String类型来存储数据,且使用了循环来实现。
在出题模块中,通过读取命令行参数中的出题数目和数值范围,通过随机函数生成中缀表达式。在生成过程中判断是否出现负值以及出现假分数的情况,
然后将其和之前生成的式子进行比较判断是否存在重复的表达式。计算题目答案时,将生成的中缀表达式转换成逆波兰式进行运算,因为逆波兰式更符合
计算机的运算习惯。
在阅卷模式中,读取命令行参数中的文件名,然后根据文件名读取相应目录中的文件,以及在指定目录中输出阅卷结果。在阅卷中,把答案文件和
标准答案文件读取并拆分成字符串数组,一一进行对比并同时记录正确的和错误的题即可。
一些主要的代码展示:
main方法,判断命令行参数的类型用于选择相应的模块。
生成中缀表达式的方法,该过程中进行了负值和假分数的判断,采用了递归的方法对不合格的表达式进行重新生成。
将中缀表达式转换成逆波兰式的方法,使用了数组当做栈来临时存储表达式中的字符。
计算逆波兰式的方法,使用栈的结构来存储数字,最后会在栈顶产生最后的结果。
生成10个题目,范围为10时,并进行阅卷的结果:
当阅卷结果为全对时:
当阅卷结果为全错时:
生成10000个题目:
凌龙:在本次的结对项目中,学习到了很多在该实验中需要了解的算法,例如对逆波兰式的运用等。在编完完成进行测试的过程中,由于频繁地使用数组和集合,
因此遇到了很多的异常出现,例如角标越界,空指针,空栈等异常。过程中发现了很多代码不够严谨的情况,通过对一个一个异常的修补,更加完善了代码。对我
以后的编码起到了很好的帮助。在项目的完成过程中,一起对一个难点进行思考,最终得到解决的感觉鼓舞人心。
梁力恒:通过这次项目,我学会了很多。起初以为项目十分简单,上手才发现有很多需要研究的地方,比如算式的生成,括号的运算等等。重点在于算式的查重,需要投入大量时间来研究。完成项目后,感觉自己对结对项目更加熟悉了。