|
|
# 数学试卷自动生成程序
|
|
|
|
|
|
一个在命令行运行的数学试卷生成器,支持小学/初中/高中三种难度,按用户维度避免题目重复。
|
|
|
|
|
|
## 目录
|
|
|
- [功能特点](#功能特点)
|
|
|
- [运行环境要求](#运行环境要求)
|
|
|
- [快速开始(推荐分发)](#快速开始推荐分发)
|
|
|
- [使用说明](#使用说明)
|
|
|
- [账户信息](#账户信息)
|
|
|
- [题目难度说明](#题目难度说明)
|
|
|
- [小学](#小学)
|
|
|
- [初中](#初中)
|
|
|
- [高中](#高中)
|
|
|
- [文件保存](#文件保存)
|
|
|
- [项目结构](#项目结构)
|
|
|
- [开发与构建(IntelliJ IDEA)](#开发与构建intellij-idea)
|
|
|
- [常见问题与排查](#常见问题与排查)
|
|
|
- [注意事项](#注意事项)
|
|
|
|
|
|
## 功能特点
|
|
|
- 支持三个教学阶段:小学、初中、高中
|
|
|
- 预设 9 个教师账户(每个阶段 3 个账户)
|
|
|
- 自动生成不重复的数学题目(以用户为维度)
|
|
|
- 按用户分类保存题目文件
|
|
|
- 支持类型切换功能(无需重新登录即可切换难度)
|
|
|
|
|
|
## 运行环境要求
|
|
|
- 已安装 Java(推荐 JDK 18;JDK 17 也可)。
|
|
|
- Windows 命令行环境(PowerShell 或 CMD)。
|
|
|
|
|
|
## 快速开始(推荐分发)
|
|
|
将以下文件打包并发送给使用者:
|
|
|
- projecttest.jar(已构建的可运行 JAR)
|
|
|
- 运行数学试卷生成器.bat(中文名启动脚本)
|
|
|
|
|
|
使用方式:
|
|
|
1. 解压后保证 .bat 与 projecttest.jar 在同一文件夹。
|
|
|
2. 双击任意一个 .bat 即可启动;脚本会自动寻找 JAVA_HOME 或 PATH 中的 java.exe,并以 UTF-8 输出。
|
|
|
3. 如未安装 Java,脚本会给出提示,请先安装 JDK 17/18 并配置环境变量。
|
|
|
|
|
|
## 使用说明
|
|
|
程序启动后将显示提示:
|
|
|
- 输入题目数量(10–30)生成试卷;
|
|
|
- 输入“切换为 小学/初中/高中”来切换难度;例如:切换为 初中;
|
|
|
- 输入 -1 退出当前用户并重新登录;
|
|
|
- 同一用户生成的题目不会重复。
|
|
|
|
|
|
## 账户信息
|
|
|
### 小学账户
|
|
|
- 用户名:张三1,密码:123
|
|
|
- 用户名:张三2,密码:123
|
|
|
- 用户名:张三3,密码:123
|
|
|
|
|
|
### 初中账户
|
|
|
- 用户名:李四1,密码:123
|
|
|
- 用户名:李四2,密码:123
|
|
|
- 用户名:李四3,密码:123
|
|
|
|
|
|
### 高中账户
|
|
|
- 用户名:王五1,密码:123
|
|
|
- 用户名:王五2,密码:123
|
|
|
- 用户名:王五3,密码:123
|
|
|
|
|
|
## 题目难度说明
|
|
|
- 不同阶段的题目难度与运算比例不同:小学加减比例高,高中乘除比例高。
|
|
|
- 括号会根据是否改变运算顺序而决定是否出现。
|
|
|
|
|
|
### 小学
|
|
|
- 运算符:+、-、*、/
|
|
|
- 操作数:1–5 个
|
|
|
- 数值范围:1–100
|
|
|
- 运算结果不会出现负数
|
|
|
|
|
|
### 初中
|
|
|
- 包含小学所有运算
|
|
|
- 新增:平方运算、开根号运算
|
|
|
- 题目中至少包含一个平方或开根号运算
|
|
|
- 题目中的开根号运算都是可以计算出来的
|
|
|
|
|
|
### 高中
|
|
|
- 包含初中所有运算
|
|
|
- 新增:sin、cos、tan 三角函数
|
|
|
- 题目中至少包含一个三角函数运算
|
|
|
- 题目中的三角函数都是可以运算出来的
|
|
|
|
|
|
## 文件保存
|
|
|
- 生成的题目会保存在 `math_papers` 文件夹下
|
|
|
- 每个用户有独立的文件夹
|
|
|
- 文件名格式:`年-月-日-时-分-秒.txt`
|
|
|
- 每道题目有题号,题目之间空一行
|
|
|
|
|
|
## 项目结构
|
|
|
- META-INF/MANIFEST.MF:清单文件(Main-Class: MathPaperGenerator)。
|
|
|
- out/production/projecttest:模块编译输出(.class)。
|
|
|
- out/artifacts/projecttest_jar/projecttest.jar:构建产物(JAR)。
|
|
|
- run_math_paper_english.bat、运行数学试卷生成器.bat:启动脚本。
|
|
|
- math_papers/:生成的试卷与历史记录(按用户分文件夹)。
|
|
|
|
|
|
## 开发与构建(IntelliJ IDEA)
|
|
|
1. 项目结构(Ctrl+Alt+Shift+S):
|
|
|
- Project SDK 设为 JDK 18(或 17);Project language level 与 Bytecode version 保持一致。
|
|
|
- Modules > Sources:将 d:\projecttest 标记为 Sources Root;.idea 与 math_papers 标记为 Excluded。
|
|
|
- Modules > Paths:选择“继承项目编译输出路径”,输出到 d:\projecttest\out。
|
|
|
2. 构建项目:Build > Build/Rebuild Project,确认 out/production/projecttest 下生成 .class。
|
|
|
3. 构件(Artifacts):projecttest:jar
|
|
|
- 输出布局包含“模块输出(projecttest)”与 META-INF(MANIFEST.MF)。
|
|
|
- Build > Build Artifacts > Build projecttest:jar,生成 JAR 于 out/artifacts/projecttest_jar/。
|
|
|
4. 运行:
|
|
|
- 命令行:`java -jar d:\projecttest\out\artifacts\projecttest_jar\projecttest.jar`
|
|
|
- 或双击两个 .bat 启动脚本。
|
|
|
|
|
|
## 常见问题与排查
|
|
|
- 不支持的标志: 21:JDK 与语言级别不匹配。将 Project SDK/Language level/Bytecode 统一到 18(或 17)。
|
|
|
- 没有为模块指定输出路径:在 Modules > Paths 中启用“继承项目编译输出路径”。
|
|
|
- 没有主清单属性:确认 META-INF/MANIFEST.MF 存在并包含 `Main-Class: MathPaperGenerator`;构件输出布局包含清单与模块输出。
|
|
|
- 找不到主类:主类名必须与清单一致,且 .class 已编译到 out/production/projecttest。
|
|
|
|
|
|
## 注意事项
|
|
|
- 题目数量必须在 10–30 之间
|
|
|
- 同一用户生成的题目不会重复
|
|
|
- 程序会自动创建必要的文件夹
|
|
|
- 支持中文界面,操作简单直观
|
|
|
|
|
|
如需重新打包分发版,直接使用 zip:`MathPaperGenerator_release.zip`,包含 JAR 与两个启动脚本,解压即用。 |