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.
MathLearningSoftware/src/com/mathlearning/service/UserService.java

134 lines
3.5 KiB

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<User> 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<User> loadUsers() {
List<User> 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());
}
}
}