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.3 KiB

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

项目概述

本项目是一个基于C++开发的中小学数学卷子自动生成程序,面向小学、初中和高中数学老师,能够根据不同学段的难度要求自动生成数学题目并保存为试卷文件。

功能特性

1. 用户登录系统

  • 预设小学、初中、高中各3个教师账号
  • 用户名密码验证机制
  • 根据账户类型自动识别出题难度

2. 智能题目生成

  • 小学题目2-3个操作数数值范围1-50支持加减乘除和括号运算
  • 初中题目3-4个操作数数值范围1-100支持加减乘除和括号运算,并能计算平方和开根号
  • 高中题目4-5个操作数数值范围1-100支持加减乘除和括号运算,并能计算平方和开根号而且题目中至少有一个sin,cos或tan运算符

3. 题目管理

  • 自动避免同一教师生成重复题目
  • 按教师账号创建独立文件夹
  • 以时间戳命名保存试卷文件(年-月-日-时-分-秒.txt

4. 灵活的类型切换

  • 登录后可切换不同学段出题类型
  • 支持命令行快速切换

预设账号信息

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

编译和运行

编译要求

  • C++17 或更高版本
  • 支持 <filesystem> 库的编译器(如 GCC 8+ 或 Clang 7+

编译方法

使用 Makefile推荐

cd src
make

手动编译

cd src
g++ -std=c++17 -Wall -Wextra -O2 -o math_exam_generator main.cpp

运行程序

cd src
./math_exam_generator

使用说明

1. 登录

启动程序后,输入用户名和密码,用空格隔开:

请输入用户名和密码(用空格隔开): 张三1 123

2. 生成试卷

登录成功后输入要生成的题目数量10-30题

准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户重新登录20

3. 切换类型

在登录状态下,可以切换出题类型:

切换为初中

4. 退出登录

输入 -1 可退出当前用户,重新登录:

准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户重新登录-1

文件结构

项目根目录/
├── doc/                    # 文档目录
│   ├── README.md          # 本项目的详细说明
│   └── README_root.md     # 根目录的README
└── src/                    # 源代码目录
    ├── Makefile           # 编译配置文件
    ├── app.cpp            # 应用逻辑
    ├── auth.cpp           # 用户认证模块
    ├── exam.cpp           # 试卷生成模块
    ├── include/           # 头文件目录
    ├── login.cpp          # 登录逻辑
    ├── main.cpp           # 主程序入口
    ├── math_exam_generator.exe # 编译后的可执行文件
    └── utils.cpp          # 工具函数

注:程序运行时,会在src目录下自动生成paper文件夹,用于存放用户生成的试卷。

src/
└── paper/
    └── [用户名]/              # 自动生成的用户文件夹
        └── 年-月-日-时-分-秒.txt  # 生成的试卷文件

试卷格式示例

1. 25 + 18 - 7 = ?

2. 42 - 15 + 23 = ?

3. 8 + 17 - 9 + 14 = ?

4. 36 * 4 - 20 = ?

5. 16^2 - 4 = ?

6. 2^3 - 1 = ?

7. sin(30°) = ?

8. cos(60°) = ?

9. tan(45°) +2= ?

技术特点

  • 面向对象设计:使用类封装功能模块
  • STL容器:使用 vector、map、set 等容器管理数据
  • 文件系统操作:使用 C++17 filesystem 库进行文件管理
  • 随机数生成使用现代C++随机数生成器
  • 异常处理:对用户输入进行验证和异常处理

开发环境

  • 编程语言C++17
  • 编译器GCC 8+ / Clang 7+ / MSVC 2019+
  • 操作系统Windows / Linux / macOS

版本控制

本项目使用Git进行版本控制

  • main 分支:稳定版本
  • develop 分支:开发版本

作者

软件2301班 - 沈永佳