From ce8dd17ebcd844ec7ee2b1deed5794d19a61bd96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=98=A0=E6=B1=9F?= <15547749+cyj-050209@user.noreply.gitee.com> Date: Thu, 9 Oct 2025 11:39:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=A6=96=E6=AC=A1=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E9=9C=80=E8=A6=81=E9=80=89=E6=8B=A9=E6=95=99=E8=82=B2?= =?UTF-8?q?=E9=98=B6=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/users.json | 3 +- src/main/java/mathlearning/model/User.java | 7 +++ .../mathlearning/service/UserService.java | 10 ++++ src/main/java/mathlearning/ui/LoginFrame.java | 49 +++++++++++++++++-- 4 files changed, 64 insertions(+), 5 deletions(-) diff --git a/data/users.json b/data/users.json index 2bf6bd3..78be335 100644 --- a/data/users.json +++ b/data/users.json @@ -4,5 +4,6 @@ "passwordHash" : "$2a$12$fAWGM2CJSSiulyFbDWyRyefrBWr9emYrMdkD.Rw2LPKFaYQeYYW9K", "registrationDate" : [ 2025, 10, 8, 21, 0, 37, 863490500 ], "verificationCode" : "926911", - "verified" : true + "verified" : true, + "type" : "初中" } ] \ No newline at end of file diff --git a/src/main/java/mathlearning/model/User.java b/src/main/java/mathlearning/model/User.java index 57b7887..6ee96a3 100644 --- a/src/main/java/mathlearning/model/User.java +++ b/src/main/java/mathlearning/model/User.java @@ -1,5 +1,7 @@ package mathlearning.model; +import com.fasterxml.jackson.databind.BeanProperty; + import java.time.LocalDateTime; public class User { @@ -9,6 +11,7 @@ public class User { private LocalDateTime registrationDate; private String verificationCode; private boolean verified; + private String type; public User() {} @@ -18,6 +21,7 @@ public class User { this.verificationCode = verificationCode; this.verified = false; this.registrationDate = LocalDateTime.now(); + this.type = null; } // Getters and setters @@ -38,4 +42,7 @@ public class User { public String getUsername() { return username; } public void setUsername(String username) {this.username = username; } + + public String getType() { return type; } + public void setType(String type) { this.type = type; } } diff --git a/src/main/java/mathlearning/service/UserService.java b/src/main/java/mathlearning/service/UserService.java index 978cf3c..f9c0c95 100644 --- a/src/main/java/mathlearning/service/UserService.java +++ b/src/main/java/mathlearning/service/UserService.java @@ -189,6 +189,16 @@ public class UserService { return true; } + public boolean updateUserType(String email, String type) { + User user = users.get(email); + if (user == null) { + return false; + } + user.setType(type); + saveUsers(); + return true; + } + public boolean validatePassword(String password) { if (password.length() < 6 || password.length() > 10) { return false; diff --git a/src/main/java/mathlearning/ui/LoginFrame.java b/src/main/java/mathlearning/ui/LoginFrame.java index 8084d74..d42000c 100644 --- a/src/main/java/mathlearning/ui/LoginFrame.java +++ b/src/main/java/mathlearning/ui/LoginFrame.java @@ -114,9 +114,50 @@ public class LoginFrame extends JFrame{ private void openMainFrame(String email) { User user = userService.getUser(email); - // 这里先简单显示一个消息,后续可以扩展为主界面 - JOptionPane.showMessageDialog(this, - "欢迎 " + user.getUsername() + "!\n登录成功,主界面功能待实现。", - "登录成功", JOptionPane.INFORMATION_MESSAGE); + // 如果用户类型为空,让用户选择类型 + if (user.getType() == null || user.getType().isEmpty()) { + String[] types = {"小学", "初中", "高中"}; + String selectedType = (String) JOptionPane.showInputDialog( + this, + "欢迎 " + user.getUsername() + "!\n请选择您的教育阶段:", + "选择教育阶段", + JOptionPane.QUESTION_MESSAGE, + null, + types, + types[0] // 默认选择第一个 + ); + + // 如果用户选择了类型(没有点击取消) + if (selectedType != null) { + // 更新用户类型 + boolean updated = userService.updateUserType(email, selectedType); + if (updated) { + // 更新本地user对象 + user.setType(selectedType); + JOptionPane.showMessageDialog(this, + "登录成功!\n教育阶段:" + selectedType, + "登录成功", JOptionPane.INFORMATION_MESSAGE); + } else { + JOptionPane.showMessageDialog(this, + "登录成功!\n但教育阶段设置失败", + "登录成功", JOptionPane.WARNING_MESSAGE); + } + } else { + // 如果用户取消选择,可以设置默认类型或者保持为空 + userService.updateUserType(email, "小学"); + user.setType("小学"); + JOptionPane.showMessageDialog(this, + "登录成功!\n已为您选择默认教育阶段:小学", + "登录成功", JOptionPane.INFORMATION_MESSAGE); + } + } else { + // 如果已经有类型,直接显示欢迎信息 + JOptionPane.showMessageDialog(this, + "欢迎 " + user.getUsername() + "!\n登录成功。\n教育阶段:" + user.getType(), + "登录成功", JOptionPane.INFORMATION_MESSAGE); + } + + // 后续可以在这里打开主界面 + // openMainApplicationWindow(user); } }