修改登录逻辑

main
Teptao 5 months ago
parent d32dddf014
commit 035125dbfb

@ -79,10 +79,10 @@ public class Application {
*
*/
private void handleLoggedInState() throws IOException {
String currentLevelName = sessionManager.getCurrentLevelName();
String currentLevel = sessionManager.getCurrentLevelName();
System.out.printf(
"当前选择为%s出题。请输入生成题目数量10-30或输入 '切换为XX',或输入 '-1' 退出登录:%n",
currentLevelName);
currentLevel);
String input = scanner.nextLine().trim();
if ("-1".equals(input)) {
@ -90,10 +90,7 @@ public class Application {
} else if (isSwitchCommand(input)) {
handleSwitchLevel(input);
} else if (isNumeric(input)) {
int count = Integer.parseInt(input);
if(validateGenerateCount(count)) {
handleGenerateProblems(count);
}
handleGenerateProblems(input);
} else {
System.out.println("无效的选项,请重新输入");
}
@ -116,7 +113,8 @@ public class Application {
}
}
private void handleGenerateProblems(int count) throws IOException {
private void handleGenerateProblems(String input) throws IOException {
int count = Integer.parseInt(input);
User currentUser = sessionManager.getCurrentUser();
System.out.println("正在加载历史题目,请稍候...");
Set<String> history = fileService.loadAllProblemHistory(currentUser);
@ -125,11 +123,10 @@ public class Application {
System.out.println("正在生成 " + count + " 道不重复的新题目...");
IProblemGenerator generator = sessionManager.getCurrentGenerator();
List<Equation> newProblems = generator.generate(count, history);
//命令行显示生成题目
// 命令行显示生成题目
for (int i = 0; i < newProblems.size(); i++) {
String problemLine = (i + 1) + ". " + newProblems.get(i).toString();
System.out.println(problemLine);
// 满足题目之间空一行的格式要求
System.out.println();
}
@ -143,15 +140,15 @@ public class Application {
}
private boolean isNumeric(String str) {
return str != null && str.matches("-?\\d+");
}
private boolean validateGenerateCount(int count) {
if (count < 10 || count > 30) {
System.out.println("生成数量必须在10到30之间。");
return false;
if (str != null && str.matches("\\d+")){
int count = Integer.parseInt(str);
if (count < 10 || count > 30) {
System.out.println("生成数量必须在10到30之间。");
return false;
}
return true;
}
return true;
return false;
}
public static void main(String[] args) throws IOException {

@ -17,7 +17,7 @@ public class AuthService {
*
* @param username
* @param password
* @return User Optional
* @return ture,false
*/
public Optional<User> login(String username, String password) {
Optional<User> userOptional = userRepository.findByUsername(username);

@ -9,6 +9,7 @@ public final class SessionManager {
private User currentUser;
private IProblemGenerator currentGenerator;
private String currentLevel;
private SessionManager() {
// 私有构造函数,防止外部实例化
@ -74,6 +75,8 @@ public final class SessionManager {
}
private void setGeneratorByLevel(String level) {
String tempLevel = this.currentLevel;
this.currentLevel = level;
switch (level) {
case "小学":
this.currentGenerator = new ElementaryProblemGenerator();
@ -86,6 +89,7 @@ public final class SessionManager {
break;
default:
System.out.println("错误的难度等级: " + level);
this.currentLevel = tempLevel;
}
}
@ -95,13 +99,6 @@ public final class SessionManager {
* @return "小学"
*/
public String getCurrentLevelName() {
if (currentGenerator instanceof HighSchoolProblemGenerator) {
return "高中";
} else if (currentGenerator instanceof MiddleSchoolProblemGenerator) {
return "初中";
}else if (currentGenerator instanceof ElementaryProblemGenerator) {
return "小学";
}
return "未知";
return currentLevel;
}
}
Loading…
Cancel
Save