尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

软工第三次作业

软工第三次作业
📅 发布时间:2026/6/18 23:34:09

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

一、结对信息

  • 姓名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日

相关新闻

  • 全球化部署几种方案
  • HDU6794:Tokitsukaze and Multiple
  • 当下环境通缩分析

最新新闻

  • 深入理解Linux终端控制:tcgetattr与termios结构体实战指南
  • Ultralytics RegionCounter工业级计数落地实践
  • Windows系统优化终极指南:三分钟让你的电脑快如新机!
  • 2022 AI工程化落地实操指南:从大模型到可控生成与指令微调
  • MPC857T勘误文档解析:嵌入式开发中规避硬件设计陷阱的关键
  • 团队冲刺7

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号