20240619

1. 创建用户类

package ltp20240619;

public class User {

   String userName;
   String password;
   boolean isLogin;

   /*
   return 1: 已在线
   return 2: 登录成功
   return 3: 密码错误
    */

    public int login(String loginPwd) {

        if (password.equals(loginPwd)) {
            if (isLogin) {
                return 1;
            }
            isLogin = true;
            return 2;

        }
        return 3;
    }

    public void logout() {
        isLogin = false;
    }

}

先设置用户的属性:用户名、密码和登录状态

在表示用户登录的代码中,1表示已经在线,2表示登录成功,3表示密码错误,4表示用户未注册。创建一个方法login,用来判断用户的登录状态。如果既定的密码等于输入的密码,则显示用户已经登录或者用户登录成功,否则显示密码错误。然后再创建一个退出的登录的方法logout。

2.创建用户服务类

package ltp20240619;

public class UserService {

    int maxSize = 5;
    // 存储用户的列表
    User[] userList = new User[maxSize];
    // 实时的用户个数
    int userSize = 0;

    /*
    用户登录
     */
    public int userLogin(String name, String pwd) { // 输入用户名和密码

        // 查找是否被注册过
        for (int i = 0; i < userSize; i++) {
            User user = userList[i];
            if (user.userName.equals(name)) {
                return user.login(pwd);
            }
        }
        return 4;// 用户未注册
    }

    /*
    用户注册
     */
    public int register(String name, String pwd) { // 用户注册时设置用户名和密码

        for (int i = 0; i < userSize; i++) {
            User user = userList[i];
            if (user.userName.equals(name)) {
                return 1; // 用户已注册
            }
        }

        if (userSize >= maxSize) {
            return 2; // 注册人数已达上限,等待服务扩容,暂停注册
        }

        User user = new User();
        user.userName = name;
        user.password = pwd;
        userList[userSize] = user;
        userSize++;
        return 3;// 注册成功

    }
}

先设置用户的最大注册数量,这里设置为5,然后设置一个列表来存储每个用户,然后设置一个变量来实时监测用户的个数。

然后创建一个方法userLogin来模拟用户登录的逻辑。首先查找用户有没有注册,通过for循环检索userList里的用户名是否与输入的用户名有对应,如果有则说明注册成功,再让用户去输入密码接着按照用户类里面的代码逻辑运行;如果没有则显示未注册。

然后创建一个方法register来模拟用户注册的逻辑。在表示用户注册的代码中,1表示用户已注册,2表示注册人数已达上限,3表示注册成功。首先同样用for循环来检查某个用户名有没有被注册,若已注册则直接返回。其次,如果继续进行的话,检查注册数量是否已经达到上限,如果已经达到上限则直接返回。然后,如果某个用户名既没有被注册,此时注册人数也没有达到上限,则正常进行注册步骤。先用用户类User创建一个新的对象user,然后将user的用户名userName和密码password分别设置为对应的输入结果,然后将存储用户的列表userList的第userSize个元素用现在创建的user替换,最后userSize由于新注册了一个用户需要数值上加一,最后返回,表示注册成功。

3.创建登录监听类

package ltp20240619;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class LoginListener implements ActionListener {

    JTextField nameIn2;
    JTextField pwdIn2;

    UserService userService = new UserService();

    public void actionPerformed(ActionEvent e) {

        // 获取点击按钮时按钮上的文本
        String ac = e.getActionCommand();
        System.out.println("点击了按钮" + ac);

        // 获取输入框上的文本
        String name = nameIn2.getText();
        String pwd = pwdIn2.getText();
        System.out.println("账号:" + name);
        System.out.println("密码:" + pwd);

        if (ac.equals("登录")) {
            // 调用登录服务方法,获取登录反馈编码,根据编码作出反应
            int loginCode = userService.userLogin(name, pwd);
            switch (loginCode) {
                case 1:
                    JOptionPane.showMessageDialog(null,
                            name + "用户已在线,请勿重复登录");
                    break;
                case 2:
                    JOptionPane.showMessageDialog(null,
                            name + "用户登录成功");
                    break;
                case 3:
                    JOptionPane.showMessageDialog(null,
                            name + "用户密码验证错误");
                    break;
                case 4:
                    JOptionPane.showMessageDialog(null,
                            name + "用户未注册,请先注册");
                    break;
            }

        }else if (ac.equals("注册")) {
            int registerCode = userService.register(name, pwd);
            switch (registerCode) {
                case 1:
                    JOptionPane.showMessageDialog(null,
                            name + "用户已注册,请勿重复注册");
                case 2:
                    JOptionPane.showMessageDialog(null,
                            name + "注册人数已达上限,等待服务扩容,暂停注册");
                case 3:
                    JOptionPane.showMessageDialog(null,
                            name + "用户注册成功");
                    break;
            }

        }

    }

}

首先声明一个名为LoginListener的公共类,实现ActionListener接口,这个接口用来处理动作事件。

然后在声明两个文本框,用来接受用户名和密码。然后再创建一个UserService的实例,用来处理用户服务。

然后创建一个方法actionPerformed用来实现ActionListener,当按钮被点击时会被调用。创建一个变量ac来获取按钮上面的信息,被点击了以后程序里面会显示该按钮被点击。然后再创建两个变量name和pwd,来分别获取输入框上面的文本。如果被点击的时登录按钮,则调用灯笼裤服务方法,获取灯笼裤反馈编码1,2,3,4,根据编码来分别作出反应。如果被点击的是注册按钮,则调用注册服务方法,获取反馈编码1,2,3,根据编码来分别作出反应。

4.用户交互类

package ltp20240619;

import javax.swing.*;
import java.awt.*;

public class LoginUI {

    public void showUI() {

        // 创建窗体对象
        JFrame jf = new JFrame();
        jf.setTitle("登录界面");
        jf.setSize(350, 450);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 点击关闭按钮时,退出进程
        FlowLayout fl = new FlowLayout();
        jf.setLayout(fl);
        jf.setLocation(500, 200);

        // 图片
        ImageIcon icon = new ImageIcon(
                "C:\\Users\\13663\\OneDrive\\桌面\\Icon.png"
        );
        JLabel iconJla = new JLabel(icon);

        // 账号
        jf.add(iconJla); // 标签,可以显示文本或图片
        JLabel nameJla = new JLabel("账号:");
        jf.add(nameJla);
        JTextField nameIn = new JTextField(30);
        jf.add(nameIn);

        // 密码
        JLabel pwdJla = new JLabel("密码:");
        jf.add(pwdJla);
        JPasswordField pwdIn = new JPasswordField(30);
        jf.add(pwdIn);

        // 登录与注册
        JButton btnLogin = new JButton("登录");
        jf.add(btnLogin);
        JButton btnRegister = new JButton("注册");
        jf.add(btnRegister);

        // 所有组件显示到屏幕上
        jf.setVisible(true);

        // 加载监听
        LoginListener loginL = new LoginListener();
        btnLogin.addActionListener(loginL);
        btnRegister.addActionListener(loginL);
        loginL.nameIn2 = nameIn; // 将nameIn指向的地址 复制一份给 nameIn2
        loginL.pwdIn2 = pwdIn;


    }

    public static void main(String[] args) {

        LoginUI loginUI = new LoginUI();
        loginUI.showUI();
    }

}

声明一个类LoginUI,来实现用户交互。首先创建一个方法showUI,来产生用户交互界面。首先用JFrame来创建窗体对象,分别设置标题、大小、关闭方式、flow布局、窗口位置。其次分别插入图片、账号的标志和输入框、密码的标志和输入框、登录和注册的按钮,最后设置将所有组件显示在屏幕上。

然后加载监听。首先创建一个LoginListener的实例loginL,然后为用户注册和登录增加监听器loginL。接着将账号和密码文本框的引用赋值给监听器的相应字段,以便在事件处理方法中访问它们的内容。

最后使用主方法来调用整个用户交互界面。

你可能感兴趣的:(java,开发语言)