# 数学试卷自动生成程序 一个在命令行运行的数学试卷生成器,支持小学/初中/高中三种难度,按用户维度避免题目重复。 ## 目录 - [功能特点](#功能特点) - [运行环境要求](#运行环境要求) - [快速开始(推荐分发)](#快速开始推荐分发) - [使用说明](#使用说明) - [账户信息](#账户信息) - [题目难度说明](#题目难度说明) - [小学](#小学) - [初中](#初中) - [高中](#高中) - [文件保存](#文件保存) - [项目结构](#项目结构) - [开发与构建(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 与两个启动脚本,解压即用。