设计实现一个“用户注册登录”系统,实现用户登录、用户注册和查看用户信息等功能,其中用户登录需包含动态验证码功能,怎么写代码
时间: 2024-02-22 12:58:22 浏览: 22
好的,下面是一个简单的代码实现,仅供参考:
1. 用户类的实现:
```java
public class User {
private String username;
private String password;
private String email;
private String phone;
private Date registerTime;
private Date lastLoginTime;
public User(String username, String password, String email, String phone, Date registerTime, Date lastLoginTime) {
this.username = username;
this.password = password;
this.email = email;
this.phone = phone;
this.registerTime = registerTime;
this.lastLoginTime = lastLoginTime;
}
// getter and setter methods
}
```
2. 用户管理类的实现:
```java
public class UserManager {
private List<User> userList;
private Map<String, String> captchaMap;
public UserManager() {
userList = new ArrayList<>();
captchaMap = new HashMap<>();
}
public void register(String username, String password, String email, String phone) {
// check if username already exists
for (User user : userList) {
if (user.getUsername().equals(username)) {
throw new RuntimeException("Username already exists.");
}
}
// generate register time
Date registerTime = new Date();
// create new user
User newUser = new User(username, password, email, phone, registerTime, null);
userList.add(newUser);
}
public void login(String username, String password, String captcha) {
// check if username and password are correct
User user = null;
for (User u : userList) {
if (u.getUsername().equals(username) && u.getPassword().equals(password)) {
user = u;
break;
}
}
if (user == null) {
throw new RuntimeException("Invalid username or password.");
}
// check captcha
String savedCaptcha = captchaMap.get(username);
if (savedCaptcha == null || !savedCaptcha.equals(captcha)) {
throw new RuntimeException("Invalid captcha.");
}
// update last login time
user.setLastLoginTime(new Date());
}
public User getUser(String username) {
for (User user : userList) {
if (user.getUsername().equals(username)) {
return user;
}
}
return null;
}
public void sendCaptcha(String username, String email) {
// generate captcha
Random random = new Random();
String captcha = String.format("%06d", random.nextInt(1000000));
captchaMap.put(username, captcha);
// send email
// ...
System.out.println("Captcha sent to email: " + email);
}
}
```
3. 用户界面的实现:
```java
public class UserInterface {
private UserManager userManager;
private Scanner scanner;
public UserInterface(UserManager userManager) {
this.userManager = userManager;
scanner = new Scanner(System.in);
}
public void run() {
while (true) {
System.out.println("1. Register");
System.out.println("2. Login");
System.out.println("3. View user info");
System.out.println("4. Exit");
System.out.print("Enter your choice: ");
int choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1:
register();
break;
case 2:
login();
break;
case 3:
viewUserInfo();
break;
case 4:
return;
default:
System.out.println("Invalid choice.");
}
}
}
private void register() {
System.out.print("Enter username: ");
String username = scanner.nextLine();
System.out.print("Enter password: ");
String password = scanner.nextLine();
System.out.print("Enter email: ");
String email = scanner.nextLine();
System.out.print("Enter phone: ");
String phone = scanner.nextLine();
try {
userManager.register(username, password, email, phone);
System.out.println("Registration successful.");
} catch (Exception e) {
System.out.println("Registration failed: " + e.getMessage());
}
}
private void login() {
System.out.print("Enter username: ");
String username = scanner.nextLine();
System.out.print("Enter password: ");
String password = scanner.nextLine();
System.out.print("Enter captcha: ");
String captcha = scanner.nextLine();
try {
userManager.login(username, password, captcha);
System.out.println("Login successful.");
} catch (Exception e) {
System.out.println("Login failed: " + e.getMessage());
}
}
private void viewUserInfo() {
System.out.print("Enter username: ");
String username = scanner.nextLine();
User user = userManager.getUser(username);
if (user == null) {
System.out.println("User not found.");
} else {
System.out.println("Username: " + user.getUsername());
System.out.println("Email: " + user.getEmail());
System.out.println("Phone: " + user.getPhone());
System.out.println("Register time: " + user.getRegisterTime());
System.out.println("Last login time: " + user.getLastLoginTime());
}
}
private void sendCaptcha() {
System.out.print("Enter username: ");
String username = scanner.nextLine();
User user = userManager.getUser(username);
if (user == null) {
System.out.println("User not found.");
return;
}
userManager.sendCaptcha(username, user.getEmail());
}
}
```
注意,在上述代码中,动态验证码的实现部分没有完整实现,需要根据实际情况进行修改。同时,还需要实现数据库的设计和连接,这部分代码也没有包含在内。