一、问题描述
请编一个小软件,实现四则运算(《构建之法》中开篇的题目),并具有以下功能:
(1)能根据题目回答情况,自动判别答案的正误,完成最后总成绩的统计、输出;
(2)题目不要出现重复;
(3)可定制题目数量和打印方式;
(4)可以控制下列参数:是否有乘除法、是否有括号、数值范围、加减法有无负数、除法有无余数、是否支持分数(真分数、假分数......)、是否支持小数(精确到多少位)、打印时每行的间隔
二、需求分析
1、引言
1.1 目的
软件需求规格说明描述了“四则运算系统”1.0版本的软件功能性需求和非功能性需求,这一文档计划有实现系统功能和验证系统功能中的项目团队成员来使用。除非在其他地方另有说明,这里指定的所有需求都具有高优先级,而且都要在1.0版本中得以实现。 该系统主要实现了自动生成四则运算(加减乘除)题目的功能,基本按照老师的要求完成系统。
1.2 背景
本次四则运算软件的开发是在高级软件工程的课程学习基础上,完成的功能分析和实现。开发者为武国胜,指导老师为李爱萍老师。
1.3 术语
软件需求分析(Software Reguirement Analysis )是研究用户需求得到的 东西,完全理解用户对软件需求的完整功能,确认用户软件功能需求,建立可确 认的、可验证的一个基本依据。
软件需求分析是一个项目的开端,也是项目实施最重要的关键点。据有关的机构分析结果表明,设计的软件产品存在不完整性、不正确性等问题80%以上是需求分析错误所导致的,而且由于需求分析错误造成根本性的功能问题尤为突出。因此,一个项目的成功软件需求分析是关键的一步。
软件需求分析的主要实现目标: 1) 对实现软件的功能做全面的描述,帮助用户判断实现功能的正确性、一致性和完整性,促使用户在软件设计启动之前周密地、全面地思考软件需求; 2) 了解和描述软件实现所需的全部信息,为软件设计、确认和验证提供一个基准; 3) 为软件管理人员进行软件成本计价和编制软件开发计划书提供依据;
需求分析的具体内容可以归纳为六个方面:软件的功能需求,软件与硬件或 其他外部系统接口,软件的非功能性需求,软件的反向需求,软件设计和实现上 的限制,阅读支持信息。
软件需求分析应尽量提供软件实现功能需求的全部信息,使得软件设计人员 和软件测试人员不再需要需求方的接触。 这就要求软件需求分析内容应正确、完 整、一致和可验证。此外,为保证软件设计质量,便于软件功能的休整和验证,软件需求表达无岔意性,具有可追踪性和可修改性。
1.4 预期读者与阅读建议
预期读者若为编题人员,阅读建议为仔细阅读概述,编写目的,文档约定,系统功能介绍和维度指标说明,根据功能为孩子设定题目类型和做题时间;预期读者若为做题人,阅读建议为仔细阅读相应界面指导,做练习题;预期读者若为参加需求评审的人员,阅读建议为仔细阅读全部内容,并测试相应的功能;预期读者若为系统设计人员,阅读建议为仔细阅读全部内容;预期读者若为系统测试人员,阅读建议为仔细阅读文档约定,系统功能介绍和维度指标说明。<br>
1.5 参考资料
1.《软件工程基础》赵一丁北京邮电大学出版社
2.《软件需求》 劳森 (作者), 刘晓晖 (译者) 电子工业出版社
3.《软件需求工程:原理和方法》金芝,刘璘,金英 科学出版社
4.《实用软件工程》第三版 殷人昆清华大学出版社
2、项目概述
2.1:系统功能
能够规定题目数目;能够决定整数运算还是分数运算;能够对输入的答案进行判别正误,并给出正确率;可以让出题者决定题目是否需要括号,并自定义带括号的题目。
2.2业务描述:
期望系统能够给吃四则运算的题目,可以根据不同需求,产生不同的几个题目,使得答题者可以进行答题,并了解自己的答题正确与否,能够更好的解决他们的问题。
2.3用户的特点
用户为需要进行四则运算练习的答题者,这些答题者的特点是对运算的方法和策略了解不够深刻,需要大量的练习运算来提升自己的算数能力,所以四则运算系统应运而生。
2.4运行环境
Microsoft Visual c++ 6.0软件 windows 10系统
2.5设计和实现上的限制
数量不能超过千道,输入框中,输入其他字符会出现错误,界面展示不好。
3、功能描述优先级
首先,进入软件后操作界面提示是否需要四则运算的括号,若为是,则需要出题人自定义带括号的题目;若为否,提示输入出题数目,输入后再提示题目的数字为整数还是小数。
接着系统会自动出题,并且题目不会重复,答题者答题结束后,系统会自动判别正误,并给出正确率。
功能点 | 子功能 | 优先级 | 内容描述 |
---|---|---|---|
设置题目数量 | 生成题目 | 1 | 设置题目数量 |
设置题目类型 | 判断类型 | 2 | 根据相应类型设置不同类型的题目 |
判断答案正确性 | 给出正确与否及正确率 | 3 | 根据输入结果判断正误 |
4、非功能需求
4.1:系统性能要求
a.时间特性
可以在任意时间使用,响应时间与电脑配置有关,一般在2,3秒左右
b.精度要求
时间主要以分钟为单位,在答题界面以秒数为单位显示时间,在输入框中尽量不要输入太大数字,避免系统崩溃。
c.系统有效性
可以连续长时间运行,前提是设置时间的长短
d.容错性
在不输入时间的情况下,可以正常出题。
e.可扩充性
4.2系统备份与恢复要求:
无
5.其他需求
数据库需求:无 国际:UTF-8
三、程序设计
程序流程图
程序源代码见 https://github.com/BAYMMAX/four-arithmetic-operation
四、开发过程
按照四则运算变成要求,这次采用c++设计与实现。整个程序都在一个cpp文件中,而且都在一个main函数中,程序开始时就想要将程序分割为一个个调用函数,鉴于能力有限,对于各个函数之间的值传递不熟练,且涉及到很多数组,所以暂且写在了有限几个个函数里面。
关于判断情况的说明。函数主要使用了for循环,首先判断是否需要括号参与四则运算,如果需要则进行自定义编程,否则的话按照思路继续判断出题数目,接着判断是否需要分数参与运算,随后系统会自动出题,并给出写题者答题正确的结果和正确率。
关于出题数量和打印方式的限制没有解决,以及数值范围未能解决。
五、PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(小时) |
实际耗时(小时) |
Planning |
计划 |
2 |
3 |
· Estimate |
· 估计这个任务需要多少时间 |
2 |
3 |
Development |
开发 |
48 |
72 |
· Analysis |
· 需求分析 (包括学习新技术) |
2 |
3 |
· Design Spec |
· 生成设计文档 |
2 |
4 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
2 |
4 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
1 |
1 |
· Design |
· 具体设计 |
12 |
24 |
· Coding |
· 具体编码 |
24 |
24 |
· Code Review |
· 代码复审 |
1 |
1 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
4 |
4 |
Reporting |
报告 |
5 |
5 |
· Test Report |
· 测试报告 |
2 |
2 |
· Size Measurement |
· 计算工作量 |
1 |
1 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
2 |
2 |
合计 |
|
55 |
80 |