结对项目

这个作业属于哪个课程 网工1934-软件工程
这个作业要求在哪里 作业要求
这个作业的目标 实现一个自动生成小学四则运算题目的命令行程序

队员:
3119005317陈浩然 GitHub:https://github.com/change247/change.github.io
3119005362蔡君福 GitHub:https://github.com/smbol/3119005362
3119005381林嘉远 GitHub:https://github.com/aiqingxianjin/skr

一、PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
Estimate 估计这个任务需要多少时间 930 1330
Development 开发
Analysis 需求分析(包括学习新技术) 120 100
Design Spec 生成设计文档 90 145
Design Review 设计复审 150 205
Coding Standard 代码规范(为目前的开发制定合适的规范) 20 20
Design 具体设计 250 300
Coding 具体代码 250 300
Code Review 代码复审 115 110
Test 测试(自我测试,修改代码,提交修改) 15 100
Reporting 报告 10 20
Test Repor 测试报告 10 10
Size Measurement 计算工作量 10 10
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 10 10
合计 930 1330

二、效能分析

本次我们编程所用到的函数:

因为算法的核心是如何生成运算表达式,所以自然而然在运行时他们占用CPU较多,如图所示

三、核心算法

我们几个采用的算法比较简单粗暴,这也是因为我们在做作业之前没有仔细思考并且上网查询资料,只是三个人简单讨论了一波就直接开始编程,所以我们在结束项目之后进行了深刻的反思。

算法如下图所示:

主要是看到了题目说要求每条算式不超过3个运算符,所以我们将这个要求分成了三种情况。首先是只含有一个运算符的,这种情况相对较简单;然后是两个运算符,这时候就要讨论符号的优先级,看第一个符号是加减还是乘除,在判断第二个符号;以此类推,便能得到三个运算符的结果。

所以我们的代码使用了许多的if else结构和switch case的选择结构,用于讨论运算符的个数。

四、代码说明

函数:

主函数:

五、运行测试

首先输入-n与-r确定好题目个数和数字大小(不超过r)
然后打开Exercises.txt做题,做完题之后在DOS命令输入你刚刚做题的文本文件名(即Exercises.txt),然后再输入参考答案的文件名(Answers.txt)进行比较,最后就会生成一个Grade.txt文件来显示出哪些题做对了,哪些题做错了。
下图故意写错几道题以用于测试



在生成10000道题目时,不知什么原因,有时可以有时不行。

项目小结

本次作业最失败的点是我们没有充分地思考就开始了编程,以至于想出了如此繁琐的一种算法,虽然最终实现了目标,但是对我们能力的提升上并没有太大的帮助。在下一次的项目中我一定要多思考,没有思路的时候一定要上上网看看别人是如何做的,后来我们在编程到一半的时候才看到了一种叫逆波兰式的算法(逆波兰式算法),是使用栈来实现的,十分方便,省去了许多非必要的判断。可惜我们当时在弯路上走得太远了,没办法回头了,所以只能继续写下去。自己选的路,含着泪也要走下去。

posted @ 2021-10-25 20:38  change247  阅读(73)  评论(0编辑  收藏  举报