change some questions

develop
Nie 6 days ago
parent 12ede05ab9
commit ea222b2912

@ -72,11 +72,54 @@ src/
## 快速开始
### 环境要求
- Java 8 或更高版本
- 至少100MB可用磁盘空间
- 支持命令行操作的操作系统
#### 系统平台要求
- **操作系统**Windows 10/11、macOS 10.14+、Linux Ubuntu 18.04+ 或其他支持Java的命令行操作系统
- **Java版本**Java 17 或更高版本推荐Java 21或Java 23
- **磁盘空间**至少100MB可用磁盘空间
- **内存要求**至少512MB可用内存
#### 环境配置
1. **Java环境检查**
```bash
java -version
javac -version
```
确保两个命令都能正确显示版本信息
2. **字符编码设置**(重要):
- 在Windows PowerShell中运行前必须先设置UTF-8编码
```powershell
[Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
```
- 在CMD中使用`chcp 65001`设置UTF-8编码
- Linux/macOS系统通常默认支持UTF-8
3. **路径配置**
- 确保Java的bin目录已添加到系统PATH环境变量中
- 项目路径中不要包含中文或特殊字符
#### 运行参数
- **默认参数**:程序运行无需额外参数
- **内存设置**可选如需处理大量题目可设置JVM内存
```bash
java -Xmx512m -cp bin App
```
- **编码强制设置**(如遇到乱码):
```bash
java -Dfile.encoding=UTF-8 -cp bin App
```
### 编译项目
#### 终端运行前准备
**重要**在运行程序前请先在终端中执行以下命令设置UTF-8编码
```powershell
# Windows PowerShell必须执行
[Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
```
```bash
# 进入项目目录
cd 1
@ -84,17 +127,23 @@ cd 1
# 编译所有Java源文件
javac -d bin src/*.java
# 或者使用批处理方式Windows
# Windows系统也可使用
javac -d bin src\*.java
```
### 运行程序
```bash
# 运行主程序
# 运行主程序(确保已执行上述编码设置)
java -cp bin App
# 或者指定类路径
java -classpath bin App
# 完整命令示例(包含编码设置和运行):
[Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
cd 1
java -cp bin App
```
## 使用指南
@ -186,4 +235,4 @@ java -classpath bin App
---
*最后更新2025年9月27日*
*最后更新2025年9月28日*

@ -1,14 +1,12 @@
package src;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class App {
private static final Scanner scanner = new Scanner(System.in);
private static final Map<String, User> users = User.getPresetUsers();
private static final FileManager fileManager = new FileManager();
private static final FileManager FILE_MANAGER = new FileManager();
private static QuestionGenerator currentGenerator;
private static String currentUsername;
@ -38,21 +36,19 @@ public class App {
System.out.println("当前选择为 " + userType + " 出题");
// 加载已存在的题目用于查重
Set<String> existingQuestions = fileManager.loadExistingQuestions(currentUsername);
Set<String> existingQuestions = FILE_MANAGER.loadExistingQuestions(currentUsername);
for (String question : existingQuestions) {
currentGenerator.addToGenerated(question);
}
// 主循环
boolean stayLoggedIn = true;
while (stayLoggedIn) {
while (true) {
System.out.println("\n准备生成 " + currentGenerator.getCurrentType()
+ " 数学题目,请输入生成题目数量(输入-1将退出当前用户重新登录");
String input = scanner.nextLine().trim();
if (input.equals("-1")) {
stayLoggedIn = false;
System.out.println("退出当前用户...");
break;
}
@ -81,7 +77,7 @@ public class App {
private static User login() {
while (true) {
System.out.println("\n请输入用户名和密码用空格隔开");
System.out.println("如果需要注册新用户,请输入'register'");
System.out.println("如果需要注册新用户,请输入'注册'");
System.out.println("如果需要退出程序,请输入'-1'");
String input = scanner.nextLine();
String[] credentials = input.split("\\s+");
@ -92,7 +88,7 @@ public class App {
}
// 处理注册请求
if (credentials[0].equalsIgnoreCase("register")) {
if (credentials[0].equalsIgnoreCase("注册")) {
handleRegistration();
continue;
}
@ -226,7 +222,7 @@ public class App {
}
// 重新加载已存在的题目用于查重
Set<String> existingQuestions = fileManager.loadExistingQuestions(currentUsername);
Set<String> existingQuestions = FILE_MANAGER.loadExistingQuestions(currentUsername);
for (String question : existingQuestions) {
currentGenerator.addToGenerated(question);
}
@ -246,7 +242,7 @@ public class App {
}
try {
fileManager.saveQuestions(currentUsername, questions);
FILE_MANAGER.saveQuestions(currentUsername, questions);
System.out.println("题目生成完成!");
} catch (Exception e) {
System.out.println("保存文件时出错: " + e.getMessage());

@ -77,7 +77,7 @@ public class FileManager {
StringBuilder questionBuilder = new StringBuilder();
while ((line = reader.readLine()) != null) {
if (line.trim().isEmpty()) {
if (questionBuilder.length() > 0) {
if (!questionBuilder.isEmpty()) {
// 移除题号
String question = questionBuilder.toString().replaceAll("^\\d+\\.\\s*", "");
existingQuestions.add(question.trim());
@ -88,7 +88,7 @@ public class FileManager {
}
}
// 处理最后一个题目
if (questionBuilder.length() > 0) {
if (!questionBuilder.isEmpty()) {
String question = questionBuilder.toString().replaceAll("^\\d+\\.\\s*", "");
existingQuestions.add(question.trim());
}

@ -23,7 +23,7 @@ public class HighSchoolGenerator extends QuestionGenerator {
private String generateSingleQuestion() {
int operatorCount = generateOperatorCount();
StringBuilder questionBuilder = new StringBuilder();
boolean hasTrigFunction = false;
boolean hasTrigFunction;
// 生成第一个操作数或三角函数
hasTrigFunction = processFirstOperandOrTrig(questionBuilder);

@ -23,7 +23,7 @@ public class MiddleSchoolGenerator extends QuestionGenerator {
private String generateSingleQuestion() {
int operatorCount = generateOperatorCount();
StringBuilder questionBuilder = new StringBuilder();
boolean hasAdvancedOperator = false;
boolean hasAdvancedOperator;
// 生成第一个操作数
int firstOperand = generateOperand();

@ -21,11 +21,11 @@ public abstract class QuestionGenerator {
// 生成操作符数量
protected int generateOperatorCount() {
return random.nextInt(5) + 1; // 1-5个操作符
return random.nextInt(5); // 1-5个操作符
}
protected int generateOperatorCount_one() {
return random.nextInt(4) + 2; // 2-5个操作符
return random.nextInt(4) + 1; // 2-5个操作符
}
// 检查题目是否重复

Loading…
Cancel
Save