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.
|
|
7 months ago | |
|---|---|---|
| .. | ||
| README.md | 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
操作流程
-
用户登录
请输入用户名和密码(用空格隔开,输入quit退出程序): 张三1 123 -
选择题目数量
准备生成小学数学题目,请输入生成题目数量(10-30,输入-1退出登录): 20 -
切换难度(在出题阶段)
切换为初中
预设账户
| 难度 | 用户名 | 密码 |
|---|---|---|
| 小学 | 张三1, 张三2, 张三3 | 123 |
| 初中 | 李四1, 李四2, 李四3 | 123 |
| 高中 | 王五1, 王五2, 王五3 | 123 |
代码特点
🏗️ 设计模式应用
- 工厂模式:题目生成器创建
- 策略模式:不同难度题目生成算法
- 抽象工厂:题目生成器接口设计
🔧 技术实现
- 面向对象编程
- 异常处理机制
- 正则表达式处理
- 文件编码处理(UTF-8)
- 跨平台兼容性
📝 代码规范
- 清晰的类职责划分
- 详细的注释说明
- 统一的命名规范
- 模块化的功能设计
扩展性说明
程序具有良好的扩展性,可以轻松:
- 添加新的难度级别
- 增加新的题目类型
- 修改题目生成规则
- 扩展用户管理系统
注意事项
- 程序会自动创建
math_papers目录存储试卷 - 题目查重基于用户级别,不同用户可能看到相同题目
- 三角函数角度范围为0°-100°,可根据需要调整
- 支持中文用户名和题目内容显示