目录
1.设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,
一,团队简介及代码仓库项目地址
本次作业小团队成员如下:吴烨凯M23181003,毛贻欢M23183901。
代码仓库项目地址为:海军工程大学-何智勇/Fundamental-Operations - 码云 - 开源中国 (gitee.com)
分工情况可于里程碑中任务分工里查看。
整个过程中团队的部分工作状态如下(可在对应社区动态中查看):
二,解题思路
整个题目的解题思路如下:
首先思考的是如何进行四则运算程序的编写,即如何进行功能函数和主函数的编写,这也是最重要的地方,在这个步骤中,要思考各种客户需求、边界条件、约束条件,是整个项目中最主要的部分;
还需要注意的点是答案检查和反馈: 用户提交答案后,程序会自动检查答案的正确性,并提供明确的反馈,显示哪些题目回答正确,哪些回答错误。这种实时反馈有助于用户了解他们的表现
以及结果保存和导出: 该程序允许用户将生成的题目和正确答案保存到文件中,以供以后查看或导出。这对于教育或记录进度非常有用。
当程序编写完毕后,还要设计相应的单元测试模块和性能测试模块,并通过单元测试和性能测试的结果来修改,升级代码,以及考虑整个过程中的模块化设计和编写,以便于后续的检查和更新。
三,设计实现过程
1.设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,
2.关键函数流程图
流程图如下所示。
关键函数代码将在第四大点中附出。
3.单元测试是怎么设计的,分析单元测试的合理性与充分性
单元测试代码如下
import unittest
from unittest import TestCase
from unittest.mock import patch
from function import *
class TestGenerateQuestions(TestCase):
def test_generate_questions(self):
# 测试generate_questions函数
num_questions = 10
questions = generate_questions(num_questions)
# 测试题目数量与要求的数量是否相等
self.assertEqual(len(questions), num_questions)
for question in questions:
expression, answer = question
# 断言answer是一个浮点数并且大于等于0小于等于100
self.assertIsInstance(answer, float)
self.assertGreaterEqual(answer, 0)
self.assertLessEqual(answer, 100)
class TestValidateAnswer(TestCase):
def test_validate_answer_correct(self):
# 测试validate_answer函数在用户回答正确时的行为
question = ('2 + 3 + 4', 9)
user_answer = '9'
with patch('builtins.print') as mock_print:
# 调用validate_answer函数
validate_answer(question, user_answer)
# 断言print函数被调用一次,并且输出的内容为"回答正确!"
mock_print.assert_called_once_with("回答正确!")
def test_validate_answer_zero_correct(self):
# 测试validate_answer函数在用户回答0,且回答正确时的行为
question = ('2*2-4', 0)
user_answer = '0'
with patch('builtins.print') as mock_print:
# 调用validate_answer函数
validate_answer(question, user_answer)
# 断言print函数被调用一次,并且输出的内容为"回答正确!"
mock_print.assert_called_once_with("回答正确!")
def test_validate_answer_negative_answer(self):
# 测试validate_answer函数在用户回答负数时的行为
question = ('2 + 3 + 4', 9)
user_answer = '-1'
with patch('builtins.print') as mock_print:
# 调用validate_answer函数
validate_answer(question, user_answer)
# 断言print函数被调用一次,并且输出的内容为"回答错误!正确答案是: 9"