**一丶需求分析**
- 本次实验采用结对编程方式,设计开发一个小学生四则运算练习软件,使之具有以下功能:
- 由计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分;
- 题库自动生成;
- 程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做)、带括号算式、真分数算式练习;
- 程序允许用户进行多轮测试,提供用户多轮测试分数柱状图,示例如下:
- ![](img/Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.002.png)
- 程序记录用户答题结果,当程序退出再启动的时候,可为用户显示最后一次测试的结果,并询问用户可否进行新一轮的测试;
- 测试有计时功能,测试时动态显示用户开始答题后的消耗时间。
- 程序人机交互界面是GUI界面(WEB页面、APP页面都可),界面支持中文简体(必做)/中文繁体/英语,用户可以进行语种选择。
**二丶软件设计:使用类图**
![](img/Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.003.png)
**三丶核心功能代码**
![](img/Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.004.png) 出题
![](img/Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.004.png) 界面
**四丶程序运行**
**1.登陆页面**
![](img/Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.005.png)
**2.点击开始答题进行答题**
![](img/Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.006.png)
![](img/Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.007.png)
![](img/Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.008.png)
**3.点击再来一次重新答题**
.![](img/Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.009.png)
**五丶结对过程**
**六丶PSP**
|PSP2.1|任务内容|计划共完成需要的时间(min)|实际完成需要的时间(min)|
| :- | :- | :- | :- |
|**Planning**|**计划**|**30**|**20**|
|Estimate|· 估计这个任务需要多少时间,并规划大致工作步骤|30|20|
|**Development**|**开发**|**1200**|**1100**|
|Analysis|需求分析 (包括学习新技术)|50|50|
|Design Spec|生成设计文档|50|50|
|Design Review|设计复审 (和同事审核设计文档)|100|100|
|Coding Standard|代码规范 (为目前的开发制定合适的规范)|50|50|
|Design|具体设计|200|100|
|Coding|具体编码|500|600|
|Code Review|代码复审|50|50|
|Test|测试(自我测试,修改代码,提交修改)|200|100|
|**Reporting**|**报告**|**44**|**30**|
|Test Report|测试报告|14|2|
|Size Measurement|计算工作量|10|8|
|Postmortem & Process Improvement Plan|事后总结 ,并提出过程改进计划|20|20|
**七、题目要求**
1、通过单元测试代码,测试加法是否能正确工作;
2、通过单元测试代码,测试加减乘除功能。
3、通过单元测试代码,测试计算类对于各种参数的支持:
` `a. 输入是有错误的,例如 “1 ++ 2”,
` `b. 在数值范围是 -1000 .. 1000 的时候,传进去 “10000 + 32768”,
` `c. 或者是 “ 248 / 0” 怎么办?
` `d. 怎么告诉函数的调用者 “你错了”? 把返回的字符串定义为 “-1” 来表示?
` `e. 那么如果真的计算结果是 “-1” 又怎么处理呢?
4、通过增量修改的方式,改进程序, 完成对各种错误情况的处理。
**二、实验步骤**
需求分析
通过单元测试代码,测试程序加减乘除功能是否正确工作,对于格式错误、数值溢出、除零异常是否能检测的到。
设计测试框架,模拟测试数据
测试加减乘除功能
```java
TEST_METHOD(TestAdd) //测试加法
{
Test.CheckInput("1/2+4");
Assert::AreEqual(test11,Test.add());
}
TEST_METHOD(TestAdd1)
{
Test.CheckInput("3+1/3");
Assert::AreEqual(test12, Test.add());
}
TEST_METHOD(TestAdd2)
{
Test.CheckInput("2+4");
Assert::AreEqual(test13, Test.add());
}
TEST_METHOD(TestAdd3)
{
Test.CheckInput("1/2+1/4");
Assert::AreEqual(test14, Test.add());
}
TEST_METHOD(TestSub) //测试减法
{
Test.CheckInput("1/2-1/3");
Assert::AreEqual(test21, Test.sub());
}
TEST_METHOD(TestSub1)
{
Test.CheckInput("1/3-2");
Assert::AreEqual(test22, Test.sub());
}
TEST_METHOD(TestSub2)
{
Test.CheckInput("2-1/3");
Assert::AreEqual(test23, Test.sub());
}
TEST_METHOD(TestSub3)
{
Test.CheckInput("5-3");
Assert::AreEqual(test24, Test.sub());
}
TEST_METHOD(TestMul) //测试乘法
{
Test.CheckInput("1×2");
Assert::AreEqual(test31, Test.mul());
}
TEST_METHOD(TestMul1)
{
Test.CheckInput("1/2×2");
Assert::AreEqual(test32, Test.mul());
}
TEST_METHOD(TestMul2)
{
Test.CheckInput("2×1/3");
Assert::AreEqual(test33, Test.mul());
}
TEST_METHOD(TestMul3)
{
Test.CheckInput("1/3×1/2");
Assert::AreEqual(test34, Test.mul());
}
TEST_METHOD(TestDiv) //测试除法
{
Test.CheckInput("1/2÷2");
Assert::AreEqual(test41, Test.div());
}
TEST_METHOD(TestDiv1)
{
Test.CheckInput("4÷1/2");
Assert::AreEqual(test42, Test.div());
}
TEST_METHOD(TestDiv2)
{
Test.CheckInput("1/2÷2/3");
Assert::AreEqual(test43, Test.div());
}
TEST_METHOD(TestDiv3)
{
Test.CheckInput("1÷2");
Assert::AreEqual(test44, Test.div());
}
```
单元测试加法功能
```java
string Calc::add()
{
size_t iPos = g_szInput.find('+');
g_szX = g_szInput.substr(0, iPos);
g_szY = g_szInput.substr(iPos+1, g_szInput.length()-1-iPos);
size_t iPosInX = g_szX.find('/');
g_iFirNer = stoi(g_szX.substr(0, iPosInX));
if (iPosInX == -1)
{
g_iFirDer = 1;
}
else
{
g_iFirDer = stoi(g_szX.substr(iPosInX+1, g_szInput.length() - 1 - iPosInX));
}
size_t iPosInY = g_szY.find('/');
g_iSecNer = stoi(g_szY.substr(0, iPosInY));
if (iPosInY == -1)
{
g_iSecDer = 1;
}
else
{
g_iSecDer = stoi(g_szY.substr(iPosInY+1, g_szInput.length() - 1 - iPosInY));
}
simplify(g_iFirNer, g_iFirDer, g_iSecNer, g_iSecDer);
g_iRusNer = g_iFirNer*g_iSecDer + g_iFirDer*g_iSecNer;
g_iRusDer = g_iFirDer*g_iSecDer;
init(g_iRusNer, g_iRusDer); //约分成真分数
g_szRusDer = "";
g_szRusNer = "";
if (g_iRusDer == 1)
{
g_szRusNer += to_string(g_iRusNer);
return g_szRusNer;
}
else{
g_szRusDer += to_string(g_iRusDer);
g_szRusNer += to_string(g_iRusNer);
return g_szRusNer + "/" + g_szRusDer;
}
}
```
测试结果
![](img/Aspose.Words.0eb6f152-637f-40b6-99ba-fa853986dbb6.002.png)
**八、PSP**
| PSP2.1 | Personal Software Process Stages | Estimated time(h) | actual time(h) |
| :-------------- | :----------------------------------- | :------------------ | :--------------- |
| Planning | 计划 | 1 | 1.5 |
| Estimate
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
计算机从题库文件中随机选择20道加减乘除混合算式,用户输入算式答案,程序检查答案是否正确,每道题正确计5分,错误不计分,20道题测试结束后给出测试总分;题库自动生成;程序为用户提供三种进阶四则运算练习功能选择:百以内整数算式(必做)、带括号算式、真分数算式练习;程序允许用户进行多轮测试,提供用户多轮测试分数柱状图
资源推荐
资源详情
资源评论
收起资源包目录
基于pythonGUI开发小学生四则运算练习软件(附源码).zip (22个子文件)
xxscalculate
sizeyunsuanGUI-master
.settings
org.eclipse.jdt.core.prefs 598B
text.umr 1KB
src
ahmetjanWord
QuestionPanel.java 3KB
SetAQuestion.java 2KB
MyPanel.java 2KB
GetRandomDigit.java 565B
ArithmeticResult.java 3KB
Main.java 106B
Topic.java 381B
LICENSE 1KB
img
Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.007.png 17KB
Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.006.png 9KB
Aspose.Words.0eb6f152-637f-40b6-99ba-fa853986dbb6.002.png 22KB
Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.001.png 12KB
Aspose.Words.0eb6f152-637f-40b6-99ba-fa853986dbb6.001.png 543B
Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.002.png 9KB
Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.005.png 4KB
Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.009.png 17KB
Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.008.png 21KB
Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.003.png 75KB
Aspose.Words.b94b0172-eec6-483e-9117-b8c05e5ecaa1.004.png 174B
README.md 9KB
共 22 条
- 1
资源评论
- 正版胡一星2023-07-28这个软件的源码结构清晰,注释详细,很适合学习Python GUI编程的初学者参考学习。
- 葡萄的眼泪2023-07-28使用这个软件可以帮助小学生提高四则运算的能力,让他们更加轻松地掌握基础数学知识。
- 琉璃纱2023-07-28这个小学生四则运算练习软件非常实用,界面简洁易用,适合小学生学习使用。
- 南小鹏2023-07-28这个软件提供了一种有趣的方式让小学生练习四则运算,非常贴合小学生的学习需求。
- H等等H2023-07-28根据我的试用体验,这个软件的界面设计简单却不失美观,功能实用且稳定,是一个不错的小学生辅助学习软件。
程序员奇奇
- 粉丝: 3w+
- 资源: 297
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功