结对项目
| 这个作业属于哪个课程 | < 网工1934-软件工程 > |
|---|---|
| 这个作业要求在哪里 | 作业要求 |
| 这个作业的目标 | 实现一个自动生成小学四则运算题目的命令行程序 |
队员: 3119005393万天乐
本项目已上传github
|
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
|
Planning |
计划 |
100 |
200 |
|
· Estimate |
· 估计这个任务需要多少时间 |
60 |
70 |
|
Development |
开发 |
6*24*60 |
5*24*60 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
60 |
50 |
|
· Design Spec |
· 生成设计文档 |
20 |
20 |
|
· Design Review |
· 设计复审 (和同事审核设计文档) |
30 |
30 |
|
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
20 |
20 |
|
· Design |
· 具体设计 |
100 |
150 |
|
· Coding |
· 具体编码 |
4*24*60 |
4*24*60 |
|
· Code Review |
· 代码复审 |
100 |
150 |
|
· Test |
· 测试(自我测试,修改代码,提交修改) |
40 |
60 |
|
Reporting |
报告 |
20 |
20 |
|
· Test Report |
· 测试报告 |
10 |
30 |
|
· Size Measurement |
· 计算工作量 |
10 |
30 |
|
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 |
30 |
|
合计 |
|
6*24*60 |
5*24*60 |
三、解题思路
1、先实现生成式子的功能。
(1)先写好生成操作数和包含1~3个操作符的式子的四个函数,再通过一个函数一起调用,随机生成带括号的式子
(2)除号和乘号÷、×先用*、#代替
(3)C语言里面的除号和乘号÷、×不能直接从文件读出来,所以就放弃了从文件里读出来计算的想法,改为生成的时候,把式子放进数组再来计算,计算不小于0,才把数组存进文件,存进文件的时候把*、#这两个符号替换成÷、×
2、计算功能。
(1)只定义了一个分数结构体,因为想到计算的时候 整数也可以转化为分数,如2可以化为2/1
(2)定义两个栈,手撸栈的各个操作,一个栈用来压入分数,一个用来压入操作符
3、比较题目文件,判断答案文件中的对错。
(1)这个可以说是取巧了一下,因为文件的生成,帮随着答案的生成,所以比较的是 标准答案文件 和 新答案文件
(2)原本是想从文件里面再读出式子拿来计算,但是写进文件后有了符号÷、×,但是那两个符号÷、×读出来会出错,因为他们不是普通字符型数据的长度。
4、主函数。
用输入参数的方式在cmd运行,很好的分开了生成式子(同时生成答案)和比较答案这两个步骤
四、设计实现过程

五、代码说明
头文件和相关结构体和栈的定义:

栈的相关操作:

生成式子的相关函数:

优先级判断,中间值计算,化简,生成答案文件等函数:

判断答案文件对错函数:
带参数的主函数:
六、测试运行
命令行输入展示
生成模式 main.exe -n 10 -r 10
阅卷模式 main.exe -e Exercises.txt -a Answers.txt
1、测试生成

2、判断答案对错:

3、10000道题目

七、测试运行
这次结对项目,我是比较懒的,要不是在项目发出来两三天后老师开始一直催着我,可能后来项目的完成会变得比较紧张,在完成项目的过程中,也是有好的地方,比如在生成式子的那个部分,引用了网上的方法,给我带来了很大的方便,从中也可以get到一些不同于我的思路,也就顺便解决了出现的问题。


浙公网安备 33010602011771号