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.

50 lines
1.5 KiB

package com.quizgenerator.system;
import com.quizgenerator.entity.User;
import com.quizgenerator.service.QuestionService;
import com.quizgenerator.service.UserService;
/** 应用程序的主入口类,负责启动和协调整个问答流程. */
public class QuizApplication {
private final LoginHandler loginHandler;
private final MainMenuHandler mainMenuHandler;
private final ConsoleUi consoleUi;
/** 构造 QuizApplication 实例. 负责初始化所有必要的服务和处理器. */
public QuizApplication() {
// 1. 初始化
UserService userService = new UserService();
QuestionService questionService = new QuestionService();
this.consoleUi = new ConsoleUi();
// 2. 初始化处理器
this.loginHandler = new LoginHandler(userService, consoleUi);
this.mainMenuHandler = new MainMenuHandler(questionService, consoleUi);
}
/** 启动并运行应用程序的主循环. 这个方法会持续运行,处理用户登录和主菜单交互. */
public void run() {
consoleUi.displayWelcomeMessage();
while (true) {
// 3. 处理登录流程
User currentUser = loginHandler.performLogin();
// 4. 进入主菜单循环
if (currentUser != null) {
consoleUi.displayLoginSuccess(currentUser);
mainMenuHandler.handleMainMenu(currentUser);
}
}
}
/**
* 应用程序的入口点.
*
* @param args 命令行参数 (未使用).
*/
public static void main(String[] args) {
QuizApplication app = new QuizApplication();
app.run();
}
}