/*
* 需求:
* 通过使用对象数组,来完成用户的注册和登陆功能。
*
* 分析:
* 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;
}
}
}
}