Java数据结构与算法之数组应用——用户登陆与注册数组实现

/*
 * 需求:
 * 通过使用对象数组,来完成用户的注册和登陆功能。
 * 
 * 分析:
 * note1:初步思路:
 *          1,由于使用对象数组,则首先应该有对象。
 *              结合题目要求,该对象应具有用户名和密码两个属性。
 *          2,利用数组,将对象封装起来,形成存储该结构的容器。
 *          3,由于目前只有注册和登陆,故数组的操作中,只需要实现查找和插入的动作。
 */

//UserData.java

package com.wayne.practice;

public class UserData {
    private String username;
    private String password;

    public UserData() {
    }

    public UserData(String username, String password) {
        super();
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public boolean equals(Object obj) {

        if (this == obj)
            return true;

        if ((obj != null) && (obj.getClass() == UserData.class)) {
            UserData userData = (UserData) obj;

            if ((this.getUsername().equals(userData.getUsername()))
                    && (this.getPassword().equals(userData.getPassword())))
                return true;
        }

        return false;
    }

    @Override
    public String toString() {
        return "UserData [username=" + username + ", password=" + password + "]";
    }

}

//UserDataArray.java

package com.wayne.practice;

public class UserDataArray {
    private UserData[] userDatas;
    private int userNums;

    public UserDataArray() {
    }

    public UserDataArray(int maxNum) {
        userDatas = new UserData[maxNum];
        userNums = 0;
    }

    // 获取用户的注册数
    public int getUserNums() {
        return userNums;
    }

    // 增加用户
    public void insertUserData(UserData userData) {
        userDatas[userNums] = userData;
        userNums++;
    }

    // 查找用户
    public boolean findUserData(UserData userData) {

        for (int index = 0; index < userNums; index++) {
            if (userData.equals(userDatas[index]))
                return true;
        }
        return false;
    }

    // 显示用户
    public void displayUserData() {
        for (int index = 0; index < userNums; index++)
            System.out.println(userDatas[index].toString());
    }

    // 删除用户
    public boolean deleteUserData(UserData userData) {
        int goalPos;

        // 先遍历整个数组,获取需要删除的对象的位置
        for (goalPos = 0; goalPos < userNums; goalPos++)
            if (userData.equals(userDatas[goalPos]))
                break;

        if (goalPos == userNums)
            return false;
        else {
            for (int i = goalPos; i < userNums; i++)
                userDatas[i] = userDatas[i + 1];

            userNums--;
            return true;
        }
    }
}

//UserLoginRegisterApp.java

package com.wayne.practice;

import java.util.Scanner;

public class UserLoginRegisterApp {

    public static final int maxUserNums = 3;// 设置最大用户数

    public static void main(String[] args) {

        // 初始化一个长度为3的UserData对象的数组
        UserDataArray userDataArray = new UserDataArray(maxUserNums);

        while (true) {
            System.out.println("欢迎来到乌托邦!");
            System.out.println("1.注册\t2.登陆\t3.退出");
            System.out.print("请选择你的操作:");

            Scanner scUserInput = new Scanner(System.in);
            String userOerator = scUserInput.nextLine();

            switch (userOerator) {
            case "1":// 注册环节
                if (userDataArray.getUserNums() == maxUserNums) {
                    System.out.println("不好意思,注册名额已经注册满了!");
                    System.out.println("现在将转向主界面!");
                } else {
                    UserData userData = new UserData();
                    System.out.print("请输入用户名:");
                    String userName = scUserInput.nextLine();
                    System.out.print("请输入密码:");
                    String userPwd = scUserInput.nextLine();
                    userData.setUsername(userName);
                    userData.setPassword(userPwd);

                    if (!userDataArray.findUserData(userData)) {
                        userDataArray.insertUserData(userData);
                        System.out.println("恭喜你注册成功!现在请重新登陆下!");
                    } else {
                        System.out.println("该用户已存在,请登陆或者更换用户名");
                    }

                    System.out.println("现在跳转到主界面。。。。");
                }
                break;

            case "2":// 登陆环节
                UserData userData = new UserData();
                System.out.print("请输入用户名:");
                String userName = scUserInput.nextLine();
                System.out.print("请输入密码:");
                String userPwd = scUserInput.nextLine();
                userData.setUsername(userName);
                userData.setPassword(userPwd);

                if (userDataArray.findUserData(userData)) {
                    System.out.println("恭喜登陆成功,开始尽情享受屌丝生活吧!");
                    System.exit(0);
                } else {
                    System.out.println("用户名和密码不匹配,请重新登陆或注册!");
                    System.out.println("现在跳转到主界面。。。。");
                }
                break;

            case "3":
                System.out.println("你确定要退出么?y or n?");
                String userChoose = scUserInput.nextLine();
                if ("y".equals(userChoose)) {
                    System.out.println("既然你决心离去,我也不好挽留!!!");
                    System.exit(0);
                } else {
                    System.out.println("我知道你是选错了。。。。");
                    System.out.println("请重新做出你的选择!!!!");
                }
                break;
            default:
                System.out.println("你输入了非法字符,我崩溃了!!!!!");
                System.exit(-1);
                break;
            }
        }
    }

}

你可能感兴趣的:(用户注册及登陆应用)