Java实现简单登录系统

要求

通过list存放3个用户的信息:用户名,密码,姓名。循环输入用户名密码,判断用户是否登录成功。不成功则最多输入5次后提示失败次数过多,成功则提示:欢迎回来,xxx(用户姓名)!

流程

1.新建Java项目

2.删除main类,右键src新建一个包(Package),命名:LoginSystem

3.右键LoginSystem,新建两个包(entiy,service)和一个类(Application)

4.右键entiy新建一个类,命名User;右键service新建一个接口(UserService)与类(UserServiceImpl)

代码实现

User类

package LoginSystem.entiy;

/**
 * User 类用于表示用户的信息,包含用户名、密码和姓名
 */
public class User {
    private final String uname;  // 用户名
    private final String cipher;  // 密码
    private final String name;  // 姓名

    /**
     * 构造函数,用于创建 User 对象并初始化其属性
     * 
     * @param uname  用户名
     * @param cipher 密码
     * @param name   姓名
     */
    public User(String uname, String cipher, String name) {
        this.uname = uname;
        this.cipher = cipher;
        this.name = name;
    }

    /**
     * 获取用户名
     * 
     * @return 用户名
     */
    public String getUname() {
        return uname;
    }

    /**
     * 获取密码
     * 
     * @return 密码
     */
    public String getCipher() {
        return cipher;
    }

    /**
     * 获取姓名
     * 
     * @return 姓名
     */
    public String getName() {
        return name;
    }
}

UserService接口

package LoginSystem.service;

/**
 * UserService 接口定义了用户登录的方法
 */
public interface UserService {

    /**
     * 登录方法,根据传入的用户名和密码判断登录是否成功
     * 
     * @param uname  用户名
     * @param cipher 密码
     * @return 如果登录成功返回 true,否则返回 false
     */
    boolean login(String uname, String cipher);
}

UserServiceImpl类

package LoginSystem.service;

import LoginSystem.entiy.User;

import java.util.ArrayList;
import java.util.List;

/**
 * UserServiceImpl 类实现了 UserService 接口,用于处理用户登录的逻辑
 */
public class UserServiceImpl implements UserService {

    private final List<User> userList;  // 存储用户列表
    private int round;  // 记录尝试登录的次数

    /**
     * 构造函数,初始化用户列表和尝试次数
     *
     * @param user1 第一个用户对象
     * @param user2 第二个用户对象
     * @param user3 第三个用户对象
     */
    public UserServiceImpl(User user1, User user2, User user3) {
        this.userList = new ArrayList<>();
        this.userList.add(user1);
        this.userList.add(user2);
        this.userList.add(user3);
        this.round = 0;  // 初始化为 0
    }

    /**
     * 登录方法的实现
     *
     * @param uname  输入的用户名
     * @param cipher 输入的密码
     * @return 如果登录成功返回 true,否则返回 false
     */
    @Override
    public boolean login(String uname, String cipher) {
        round++;  // 尝试次数加 1

        // 遍历用户列表
        for (User user : userList) {
            // 如果用户名匹配
            if (user.getUname().equals(uname)) {
                // 如果密码也匹配
                if (user.getCipher().equals(cipher)) {
                    System.out.println("欢迎回来," + user.getName() + "!");
                    return true;
                } else {  // 密码错误
                    System.out.println("登陆失败,密码错误,您还有 " + (5 - round) + " 次机会。");
                    return false;
                }
            } else {  // 用户名不匹配
                // 如果密码匹配(用户名错误但密码正确的情况)
                if (user.getCipher().equals(cipher)) {
                    System.out.println("登陆失败,用户名错误,您还有 " + (5 - round) + " 次机会。");
                } else {  // 用户名和密码都错误
                    System.out.println("登陆失败,用户名和密码错误,您还有 " + (5 - round) + " 次机会。");
                }
                return false;
            }
        }
        return false;
    }
}

Application类

package LoginSystem;

import LoginSystem.entiy.User;
import LoginSystem.service.UserService;
import LoginSystem.service.UserServiceImpl;

import java.util.Scanner;

/**
 * Application 类是程序的入口点,用于处理用户登录的交互逻辑
 */
public class Application {
    public static void main(String[] args) {
        // 创建三个用户
        User u1 = new User("2021033868", "0618", "小撒");
        User u2 = new User("2021033867", "12345678", "小刘");
        User u3 = new User("2021033869", "zcr", "小瑞");

        // 创建用来登陆的服务对象
        UserService us = new UserServiceImpl(u1, u2, u3);

        Scanner sc = new Scanner(System.in);
        int round = 0;  // 记录登录尝试的次数

        // 当尝试次数小于 5 时,循环让用户输入用户名和密码进行登录
        while (round < 5) {
            System.out.print("请输入用户名:");
            String uname = sc.next();
            System.out.print("请输入密码:");
            String cipher = sc.next();

            // 调用服务对象的登录方法,如果登录成功则退出循环
            if (us.login(uname, cipher)) {
                break;
            }
            round++;  // 尝试次数加 1
        }

        // 如果尝试次数达到 5 次,则提示失败次数过多
        if (round == 5) {
            System.out.println("失败次数过多!");
        }
    }
}

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值