当前位置: 首页 > news >正文

软工第三次作业

软工第三次作业 - 结对编程

一、结对信息

  • 姓名1:伊尔番·艾山
  • 学号1:3123004762
  • 姓名2:梁子恒
  • 学号2:312300746
  • GitHub仓库:https://github.com/IrErV123/Primary-Math-Exercise-Generator

二、PSP表格

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

三、设计实现

3.1 需求分析

本项目旨在开发一个小学四则运算题目生成器,主要功能包括:

  1. 生成指定数量的四则运算题目
  2. 支持真分数运算
  3. 避免重复题目
  4. 控制数值范围
  5. 自然语言处理生成题目

3.2 架构设计

采用模块化设计,主要包含以下模块:

  • 题目生成模块:负责生成各类运算题目
  • 分数处理模块:处理分数运算和化简
  • 重复检测模块:确保题目唯一性
  • 输入输出模块:处理命令行参数和文件输出

3.3 核心算法

分数生成算法

def generate_fraction():"""生成真分数"""denominator = random.randint(2, 10)numerator = random.randint(1, denominator - 1)return Fraction(numerator, denominator)

题目去重算法

采用表达式标准化方法,将不同形式但结果相同的表达式识别为重复。

3.4 类图设计

主要类包括:

  • ExerciseGenerator:题目生成器主类
  • FractionHandler:分数处理类
  • ExpressionValidator:表达式验证类

四、测试用例

4.1 单元测试

测试用例1:分数运算正确性

def test_fraction_calculation():# 测试分数加法result = calculate_fraction("1/2 + 1/3")expected = Fraction(5, 6)assert result == expected# 测试分数减法result = calculate_fraction("2/3 - 1/4")expected = Fraction(5, 12)assert result == expected

测试用例2:重复检测

def test_duplicate_detection():expressions = ["1 + 2", "2 + 1", "3 - 1"]unique_expressions = remove_duplicates(expressions)assert len(unique_expressions) == 2

测试用例3:数值范围控制

def test_range_control():exercises = generate_exercises(range_limit=10, count=100)for exercise in exercises:numbers = extract_numbers(exercise)assert all(0 <= num <= 10 for num in numbers)

4.2 集成测试

测试场景1:命令行参数处理

  • 输入:python myapp.py -n 10 -r 20
  • 期望输出:生成10道题目,数值范围不超过20

测试场景2:文件输出功能

  • 输入:指定输出文件路径
  • 期望输出:题目正确写入文件

4.3 性能测试

  • 大数据量测试:生成10000道题目,耗时控制在30秒内
  • 内存使用测试:确保内存占用不超过100MB

五、项目小结

5.1 项目收获

  1. 技术技能提升

    • 掌握了Python分数运算库的使用
    • 学会了表达式解析和评估
    • 提高了算法设计能力
  2. 团队协作经验

    • 学会了Git协作开发流程
    • 提高了代码review的能力
    • 加强了沟通协调能力
  3. 软件工程实践

    • 体验了完整的软件开发生命周期
    • 学会了需求分析和设计文档编写
    • 掌握了单元测试和集成测试方法

5.2 遇到的问题及解决方案

  1. 分数运算精度问题

    • 问题:浮点数运算存在精度误差
    • 解决:使用Python的Fraction类进行精确分数运算
  2. 题目重复检测难题

    • 问题:"1+2"和"2+1"本质相同但形式不同
    • 解决:实现表达式标准化算法,统一表达式格式
  3. 大数据量性能问题

    • 问题:生成大量题目时效率低下
    • 解决:优化算法,使用集合进行快速去重

5.3 改进建议

  1. 功能扩展

    • 增加更多运算类型(乘方、开方等)
    • 支持更复杂的表达式结构
    • 添加图形化用户界面
  2. 性能优化

    • 使用多线程提高生成效率
    • 实现更高效的去重算法
    • 添加缓存机制
  3. 用户体验

    • 增加进度条显示
    • 提供更友好的错误提示
    • 支持批量操作

六、目录结构

Primary-Math-Exercise-Generator/
├── README.md                 # 项目说明文档
├── requirements.txt          # 项目依赖包
├── myapp.py                 # 主程序入口
├── src/                     # 源代码目录
│   ├── __init__.py
│   ├── generator.py         # 题目生成核心模块
│   ├── fraction_handler.py  # 分数处理模块
│   ├── validator.py         # 表达式验证模块
│   └── utils.py            # 工具函数模块
├── tests/                   # 测试代码目录
│   ├── __init__.py
│   ├── test_generator.py    # 生成器测试
│   ├── test_fraction.py     # 分数运算测试
│   └── test_validator.py    # 验证器测试
├── docs/                    # 文档目录
│   ├── design.md           # 设计文档
│   └── api.md              # API文档
├── examples/                # 示例文件
│   ├── Exercises.txt       # 示例题目文件
│   └── Answers.txt         # 示例答案文件
└── .gitignore              # Git忽略文件

七、运行说明

7.1 环境要求

  • Python 3.7+
  • 依赖包:见requirements.txt

7.2 安装步骤

git clone https://github.com/IrErV123/Primary-Math-Exercise-Generator.git
cd Primary-Math-Exercise-Generator
pip install -r requirements.txt

7.3 使用方法

# 生成10道题目,数值范围不超过20
python myapp.py -n 10 -r 20# 生成题目并指定输出文件
python myapp.py -n 50 -r 100 -o exercises.txt

GitHub仓库链接:https://github.com/IrErV123/Primary-Math-Exercise-Generator

完成时间:2025年10月10日

http://www.hskmm.com/?act=detail&tid=28082

相关文章:

  • 全球化部署几种方案
  • 基于MATLAB的路面裂缝检测识别
  • HDU6794:Tokitsukaze and Multiple
  • 当下环境通缩分析
  • 使用qt读取系统字体库,并进行英文名称映射
  • gitlab配置aws的s3作为docker镜像的存储
  • 阿克曼函数
  • 10.10
  • shell脚本监控ssl证书到期时间
  • AI如何通过卫星图像识别刺猬栖息地
  • rust 模块和引用
  • moectf2025-reverse-wp
  • 国标GB28181网页直播平台EasyGBS如何构建智慧社区一体化视频监控方案?
  • TypeScript Declaration Merging(声明合并)使用说明
  • 第七章 手写数字识别V5
  • 关于根据距离列表排序sql
  • 2025年高适配铝型材厂家推荐:深圳市方达铝业领衔,3家企业覆盖多场景
  • 注册c模块到lua中使用
  • DNA权威书籍
  • 220V转5V500mA非隔离电源芯片WT5105
  • linux基础-find查找
  • 220V转12V电机水泵供电驱动WT5105
  • 禁止或启用键盘修改输入法
  • ansys安装时无法修改安装路径--灰色无法修改
  • Qwen2.5-VL技术报告
  • 攸米知识付费小程序管理系统:一站式知识变现解决方案
  • citus设置密码
  • 实践与认识及其发展规律
  • 2025 年最新推荐氨糖厂家排行榜:四期临床验证 + 蓝帽认证,帮你选出优质氨糖软骨素 / 氨糖钙 / 氨糖钙片厂家
  • 完整教程:阿里云瓴羊发布企业级AI智能体服务平台AgentOne,成就AI时代的“超级公司”