|
|
|
|
@ -0,0 +1,93 @@
|
|
|
|
|
# 中小学数学试卷自动生成系统
|
|
|
|
|
|
|
|
|
|
## 项目简介
|
|
|
|
|
基于 Python 的跨平台命令行工具,支持:
|
|
|
|
|
- 小学 / 初中 / 高中 三个难度
|
|
|
|
|
- 自动生成不重复数学题(含根号、平方、三角函数)
|
|
|
|
|
- 自动保存到本地 `papers/{用户名}/` 目录
|
|
|
|
|
- 带括号随机化、整除校验、题目去重
|
|
|
|
|
|
|
|
|
|
## 依赖
|
|
|
|
|
| 需求 | 版本 |
|
|
|
|
|
| ---------- | ------------------------------------------ |
|
|
|
|
|
| **Python** | ≥ 3.8(64 位) |
|
|
|
|
|
| **操作系统** | Windows / macOS / Linux |
|
|
|
|
|
| **第三方库** | **无**(使用标准库:random、datetime、os、typing、abc) 仅当需要运行build.py生成.exe可执行文件时需要安装pyinstaller|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
1. 克隆或下载代码到本地
|
|
|
|
|
2. 在项目根目录运行:
|
|
|
|
|
```bash
|
|
|
|
|
python MainSystem.py
|
|
|
|
|
```
|
|
|
|
|
3. 按提示输入用户名、密码、题目数量即可生成试卷。
|
|
|
|
|
|
|
|
|
|
## 目录结构
|
|
|
|
|
```
|
|
|
|
|
.
|
|
|
|
|
├── src/ # 源代码目录
|
|
|
|
|
│ ├── MainSystem.py # 入口 & 主控
|
|
|
|
|
│ ├── user.py # 用户实体
|
|
|
|
|
│ ├── paper_manager.py # 抽象基类 & 公共功能
|
|
|
|
|
│ └── question_generator.py
|
|
|
|
|
├── doc/
|
|
|
|
|
│ └── README.md # 项目说明(本文件)
|
|
|
|
|
├── papers/ # 自动生成试卷(git 忽略)
|
|
|
|
|
│
|
|
|
|
|
├── build.py # 一键打包脚本
|
|
|
|
|
└── .gitignore # Git 排除规则
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 预置账号
|
|
|
|
|
| 用户名 | 密码 | 难度 |
|
|
|
|
|
|--------|------|------|
|
|
|
|
|
| 张三1 | 123 | 小学 |
|
|
|
|
|
| 张三2 | 123 | 小学 |
|
|
|
|
|
| 张三3 | 123 | 小学 |
|
|
|
|
|
| 李四1 | 123 | 初中 |
|
|
|
|
|
| 李四2 | 123 | 初中 |
|
|
|
|
|
| 李四3 | 123 | 初中 |
|
|
|
|
|
| 王五1 | 123 | 高中 |
|
|
|
|
|
| 王五2 | 123 | 高中 |
|
|
|
|
|
| 王五3 | 123 | 高中 |
|
|
|
|
|
|
|
|
|
|
## 核心类图
|
|
|
|
|
```mermaid
|
|
|
|
|
classDiagram
|
|
|
|
|
BasePaperManager <|-- PrimaryPaperGenerator
|
|
|
|
|
BasePaperManager <|-- JuniorPaperGenerator
|
|
|
|
|
BasePaperManager <|-- SeniorPaperGenerator
|
|
|
|
|
MainSystem *-- BasePaperManager
|
|
|
|
|
MainSystem *-- User
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 特性列表
|
|
|
|
|
- 题目去重(同用户历史试卷比对)
|
|
|
|
|
- 运算符权重随机
|
|
|
|
|
- 自动加括号(概率可控)
|
|
|
|
|
- 整除校验(小学)
|
|
|
|
|
- 平方 / 平方根 / 三角函数(初高中)
|
|
|
|
|
- 时间戳文件名(Windows 安全)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 自定义规则
|
|
|
|
|
继承 `BasePaperManager` 并实现:
|
|
|
|
|
```python
|
|
|
|
|
def get_operators(self) -> List[str]: ...
|
|
|
|
|
def generate_single_question(self) -> str: ...
|
|
|
|
|
```
|
|
|
|
|
即可新增难度。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Git 忽略
|
|
|
|
|
`.gitignore` 已包含:
|
|
|
|
|
```
|
|
|
|
|
papers/
|
|
|
|
|
__pycache__/
|
|
|
|
|
*.pyc
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|