package com.mathlearning.service; import com.mathlearning.model.User; import java.io.*; import java.util.ArrayList; import java.util.List; public class UserService { private static final String USER_DATA_FILE = "data/users.txt"; private List users; public UserService() { this.users = loadUsers(); } public boolean registerUser(String email, String registrationCode) { // Check if email already exists for (User user : users) { if (user.getEmail().equals(email)) { return false; } } User newUser = new User(email, registrationCode); users.add(newUser); saveUsers(); return true; } public boolean completeRegistration(String email, String password) { for (User user : users) { if (user.getEmail().equals(email) && !user.isRegistered()) { user.setPassword(password); user.setRegistered(true); saveUsers(); return true; } } return false; } public boolean login(String email, String password) { for (User user : users) { if (user.getEmail().equals(email) && user.isRegistered() && user.getPassword().equals(password)) { return true; } } return false; } public boolean changePassword(String email, String oldPassword, String newPassword) { for (User user : users) { if (user.getEmail().equals(email) && user.getPassword().equals(oldPassword)) { user.setPassword(newPassword); saveUsers(); return true; } } return false; } public User getUserByEmail(String email) { for (User user : users) { if (user.getEmail().equals(email)) { return user; } } return null; } public boolean updateUser(User updatedUser) { for (int i = 0; i < users.size(); i++) { if (users.get(i).getEmail().equals(updatedUser.getEmail())) { users.set(i, updatedUser); saveUsers(); return true; } } return false; } private List loadUsers() { List userList = new ArrayList<>(); try { File file = new File(USER_DATA_FILE); if (!file.exists()) { return userList; } BufferedReader reader = new BufferedReader(new FileReader(file)); String line; while ((line = reader.readLine()) != null) { String[] parts = line.split("\\|"); if (parts.length >= 4) { User user = new User(parts[0], parts[1]); user.setPassword(parts[2]); user.setRegistered(Boolean.parseBoolean(parts[3])); userList.add(user); } } reader.close(); } catch (IOException e) { System.out.println("加载用户数据失败: " + e.getMessage()); } return userList; } private void saveUsers() { try { File file = new File(USER_DATA_FILE); file.getParentFile().mkdirs(); BufferedWriter writer = new BufferedWriter(new FileWriter(file)); for (User user : users) { String line = user.getEmail() + "|" + user.getRegistrationCode() + "|" + (user.getPassword() != null ? user.getPassword() : "") + "|" + user.isRegistered(); writer.write(line); writer.newLine(); } writer.close(); } catch (IOException e) { System.out.println("保存用户数据失败: " + e.getMessage()); } } }