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
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();
|
|
}
|
|
}
|