You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
柳意 e676b18f84
修改说明文档1
7 months ago
..
README.md 修改说明文档1 7 months ago

README.md

中小学数学卷子自动生成程序

项目概述

这是一个面向小学、初中和高中不同难度级别的数学题目自动生成系统。程序能够根据用户选择的难度级别,生成符合教学要求的数学试卷,并自动保存到文件中。

功能特性

🎯 核心功能

  • 多难度级别:支持小学、初中、高中三个难度级别
  • 智能题目生成:根据不同学段生成相应类型的数学题目
  • 自动查重:避免为同一用户生成重复题目
  • 文件管理:自动按用户和时间戳保存试卷
  • 用户认证:内置预设用户账户系统

📚 题目类型

  • 小学:加减乘除运算,支持括号
  • 初中:引入平方、开方运算
  • 高中:包含三角函数运算

系统架构

类结构设计

1. 抽象接口

IQuestionGenerator(ABC)
  • generate_question(): 生成题目抽象方法
  • get_level(): 获取难度级别抽象方法

2. 具体生成器实现

PrimaryQuestionGenerator - 小学题目生成器

  • 支持:加减乘除、括号运算
  • 操作数2-5个
  • 数字范围1-100

MiddleQuestionGenerator - 初中题目生成器

  • 支持:平方、开方运算
  • 操作数1-5个
  • 包含至少一个特殊运算符

HighQuestionGenerator - 高中题目生成器

  • 支持:三角函数(sin/cos/tan)
  • 角度范围0°-100°
  • 确保每个题目包含三角函数

3. 支持类

MathUtils - 数学工具类

  • 随机数生成
  • 正数结果保证

QuestionGeneratorFactory - 工厂模式

  • 根据难度创建对应的生成器

UserManager - 用户管理

  • 预设账户验证
  • 用户权限管理

FileManager - 文件管理

  • 试卷存储
  • 题目查重
  • 文件组织

MathPaperGenerator - 主控制器

  • 程序流程控制
  • 用户交互处理

核心算法说明

题目生成逻辑

小学题目

# 操作数数量随机选择
num_operands = random.choice([2, 3, 4, 5])

# 括号添加概率30%
if num_operands >= 3 and random.random() < 0.3:
    return self._generate_with_parentheses(nums, operators)

查重机制

def is_duplicate(self, username, question):
    """基于用户和题目内容的复合查重"""
    normalized_question = re.sub(r'\s+', ' ', question.strip())
    return (username, normalized_question) in self.generated_questions

文件组织结构

math_papers/
├── 张三1/
│   └── 2025-09-29-15-44-04.txt
├── 李四1/
│   └── 2025-09-29-15-45-11.txt
└── 王五1/
    └── 2025-09-29-15-47-03.txt

使用说明

启动程序

python my_personal_project2.py

操作流程

  1. 用户登录

    请输入用户名和密码用空格隔开输入quit退出程序: 张三1 123
    
  2. 选择题目数量

    准备生成小学数学题目请输入生成题目数量10-30输入-1退出登录: 20
    
  3. 切换难度(在出题阶段)

    切换为初中
    

预设账户

难度 用户名 密码
小学 张三1, 张三2, 张三3 123
初中 李四1, 李四2, 李四3 123
高中 王五1, 王五2, 王五3 123

代码特点

🏗️ 设计模式应用

  • 工厂模式:题目生成器创建
  • 策略模式:不同难度题目生成算法
  • 抽象工厂:题目生成器接口设计

🔧 技术实现

  • 面向对象编程
  • 异常处理机制
  • 正则表达式处理
  • 文件编码处理UTF-8
  • 跨平台兼容性

📝 代码规范

  • 清晰的类职责划分
  • 详细的注释说明
  • 统一的命名规范
  • 模块化的功能设计

扩展性说明

程序具有良好的扩展性,可以轻松:

  • 添加新的难度级别
  • 增加新的题目类型
  • 修改题目生成规则
  • 扩展用户管理系统

注意事项

  1. 程序会自动创建 math_papers 目录存储试卷
  2. 题目查重基于用户级别,不同用户可能看到相同题目
  3. 三角函数角度范围为0°-100°可根据需要调整
  4. 支持中文用户名和题目内容显示