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.

4.0 KiB

ExamGenerator 项目

本项目是一个 数学试题自动生成系统,支持 小学、初中、高中 三个年级的数学题目。 系统采用 抽象类 + 子类继承 的设计模式,分别实现不同年级的出题逻辑,并支持用户登录、题目查重和自动保存功能。


📂 项目结构

ExamGenerator/
├── main.py                    # 主入口程序
├── exam_generator.py          # 考试生成器核心逻辑(含查重)
├── account_manager.py         # 用户账户管理模块
├── history_manager.py         # 历史管理模块(负责保存/读取历史题目)
├── generators/                # 出题生成器目录
│   ├── base_generator.py      # 抽象类:出题生成器基类
│   ├── primary_generator.py   # 小学出题生成器
│   ├── junior_generator.py    # 初中出题生成器
│   └── senior_generator.py    # 高中出题生成器
└── exams/                     # 保存生成的试卷目录

功能介绍

用户登录

  • 支持小学、初中、高中账号登录
  • 登录后自动进入对应出题模式

出题生成

  • 小学:四则运算
  • 初中:四则运算 + 平方/开方
  • 高中:四则运算 + 三角函数

历史查重

  • HistoryManager 只负责保存和读取历史题目
  • 查重逻辑已集成在 ExamGenerator._generate_and_save_questions,生成题目时会自动避免重复

题目保存

  • 生成的题目自动保存为 .txt 文件
  • 文件名格式:YYYY-MM-DD-HH-MM-SS.txt

使用方法

运行项目(开发环境)

cd ExamGenerator
python main.py

登录系统

  • 输入用户名和密码(例如:张三1 123
  • 系统会识别年级,并提示你输入要生成的题目数量

生成题目

  • 输入 10-30 之间的数字,生成对应数量的数学题
  • 输入 -1 可退出当前用户
  • 输入 切换为 小学/初中/高中 可切换出题难度

技术亮点

  • 抽象类设计:使用 BaseQuestionGenerator 定义统一接口,小学/初中/高中继承实现
  • 模块化结构:按功能拆分文件,便于维护和扩展
  • 查重机制优化:查重逻辑整合进 ExamGeneratorHistoryManager 仅负责保存/读取
  • 可扩展性强:后续可新增 “大学” 出题生成器,只需继承抽象类即可

⚠️ 注意事项

  • 默认账号信息存放在 exam_generator.py
  • 生成的题目文件会自动存放在 exams/用户名/ 目录下
  • Python 版本需 >= 3.8

发布与运行Release 版本)

Windows 平台

  1. 打包:

    pyinstaller --onefile main.py
    

    生成的 main.exe 位于 dist/ 目录。

  2. 运行方式:

    main.exe
    

Linux 平台

  1. 打包:

    pyinstaller --onefile main.py
    

    生成的可执行文件在 dist/main

  2. 运行方式:

    ./main
    
    • 确保执行权限:chmod +x main
    • 注意 Linux 路径分隔符为 /

参数设置

发布版本运行时,需要在交互过程中输入以下参数:

  • 用户名

    • 例如:张三1
    • 用于识别所属年级(小学/初中/高中)
  • 密码

    • 默认均为 123(可在 exam_generator.py 中修改)
  • 题目数量

    • 输入范围:10 - 30
    • 系统会生成对应数量的题目
    • 输入 -1 退出当前用户
  • 切换难度

    • 输入 切换为 小学 / 切换为 初中 / 切换为 高中
    • 可在运行中调整题目难度

开发环境 vs 发布环境

  • 开发环境:本地运行,需 Python >= 3.8
  • 发布环境打包成可执行文件Windows 为 .exeLinux 为二进制文件),用户无需安装 Python
  • 跨平台差异:注意路径分隔符和执行权限的不同