在做东西之前,第一件事情永远是分析
分析什么?分析程序逻辑
主菜单有 注册、登录、查询、退出功能
在登录之后 才可以进行 修改名字、修改密码、删除用户、添加员工、修改员工等等
思维导图
具体思路已经放出,每次输入都要考虑是否会有错误
把所有功能模块化,让他更简单,尽量减少重复的代码
User类
public class User {
private int username;
private int password;
private int uuid;
public User() {
}
public User(int username, int password,int uuid) {
this.uuid = uuid;
this.username = username;
this.password = password;
}
public int getUuid() { return uuid; }
public void setUuid(int uuid) { this.uuid = uuid; }
public int getUsername() {
return username;
}
public void setUsername(int username) {
this.username = username;
}
public int getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
}
主类
int index = 0;
static Scanner scanner = new Scanner(System.in);
static Demo demo = new Demo();
static EmployeeManager employeeManager = new EmployeeManager();
main函数
public static void main(String[] args) {
User [] users = new User[1];
demo.mainMenu(users);
}
mainMenu函数
public void mainMenu(User [] users) {
System.out.println("[!] 请选择功能:\n1、注册 2、登录 \n3、查询 4、退出");
System.out.print("[?] 请输入: ");
String flag = scanner.next();
switch (flag) {
case "1":
demo.registerUser(users);
break;
case "2":
demo.userLogin(users);
break;
case "3":
demo.searchUser(users);
break;
case "4":
System.exit(0);
break;
default:
System.out.println("[❌] 你输入了一个错误的内容,请重新输入!");
demo.mainMenu(users);
break;
}
}
registerUser函数
public void registerUser(User [] users) {
System.out.print("[!] 请输入账号:");
int username = scanner.nextInt();
if (demo.findUsername(users,username) ) {
System.out.println("[❌] 用户名已经存在,请重新注册!");
registerUser(users);
}
System.out.print("[!] 请输入密码:");
int password = scanner.nextInt();
if (users[users.length-1]!=null) {
users=demo.increaseUsers(users);
}
User user = new User(username,password,index+1001);
users[index] = user;
System.out.println("[V] 注册成功,编号:"+users[index].getUuid()+",账号:" + users[index].getUsername()+",密码:"+users[index].getPassword());
index++;
while (true) {
System.out.println("[?] 是否还要继续注册?(yes/no) 否将返回至主菜单");
int getYes = yesOrno();
if (getYes == 1) {
registerUser(users);
}
if (getYes == 0) {
mainMenu(users);
}
}
}
userLogin函数
public void userLogin(User [] users) {
System.out.print("[?] 请输入你要登录的账号: ");
int username = scanner.nextInt();
if (!demo.findUsername(users,username)) {
System.out.println("[❌] 没有找到该账号,可能你的输入存在问题!");
while (true) {
System.out.println("[?] 是否还要继续登录?(yes/no) 否将返回至主菜单");
int getYes = yesOrno();
if (getYes == 1) {
userLogin(users);
}
if (getYes == 0) {
mainMenu(users);
}
}
}
System.out.print("[?] 请输入账号的密码: ");
int password = scanner.nextInt();
if (!verifyPassword(users,username,password)) {
System.out.println("[❌] 登录失败!密码错误!请重新登录你的账号!(将返回至登录账号界面)");
userLogin(users);
}
System.out.println("[!] 登录成功!");
demo.loginSuccessMenu(users,findUsernameInUsers(users,username));
}
findUsername函数
public boolean findUsername(User [] users,int username) {
for (User u : users) {
if (u != null) {
if (u.getUsername() == username) {
return true;
}
}
}
return false;
}
findUsernameInusers
public User findUsernameInUsers(User [] users,int username) {
for (User u : users) {
if (u != null) {
if (u.getUsername() == username) {
return u;
}
}
}
return null;
}
increaseUsers函数
public User[] increaseUsers(User [] u) {
User [] tempUsers = new User[u.length+1];
for (int i = 0; i < u.length; i++) {
tempUsers[i]=u[i];
}
return tempUsers;
}
loginSuccessMenu函数
public void loginSuccessMenu(User [] users,User user) {
System.out.println("[!] "+user.getUsername()+" 欢迎你,请选择功能:\n1、修改名字 2、修改密码 \n3、删除账号 4、添加员工 ");
System.out.println("5、删除员工 6、修改员工 \n7、查询员工 8、返回主菜单");
System.out.print("[?] 请输入: ");
String flag = scanner.next();
switch (flag) {
case "1":
demo.changeUsername(users,user);
break;
case "2":
demo.changePassword(users,user);
case "3":
System.out.println("[!] 此操作将会彻底删除你的账户!");
while (true) {
System.out.println("[?] 你真的要删除账户吗?(yes/no) 否将返回至上一级菜单");
int getYes = yesOrno();
if (getYes == 1) {
demo.deleteUser(users,user);
}
if (getYes == 0) {
loginSuccessMenu(users,user);
}
}
case "4":
employeeManager.addEmployee();
loginSuccessMenu(users,user);
case "5":
employeeManager.deleteEmploy();
loginSuccessMenu(users,user);
case "6":
employeeManager.changeEmployee();
loginSuccessMenu(users,user);
case "7":
employeeManager.searchEmploy();
loginSuccessMenu(users,user);
case "8":
mainMenu(users);
default:
System.out.println("[❌] 输入错误,请重新选择!");
loginSuccessMenu(users,user);
}
}
searchUser函数
public void searchUser(User [] users) {
System.out.println("[!] 请输入你要查询的账户,将会返回是否存在!");
System.out.print("[?] 请输入: ");
int username = scanner.nextInt();
boolean isFound = findUsername(users,username);
if ( !isFound ) {
System.out.println("[❌] 账户没有找到!请检查是否输入正确!");
while (true) {
System.out.println("[?] 是否还要继续查询?(yes/no) 否将返回至主菜单");
int getYes = yesOrno();
if (getYes == 1) {
searchUser(users);
}
if (getYes == 0) {
mainMenu(users);
}
}
}
User u = findUsernameInUsers(users,username);
System.out.println("[V] 找到账户:"+username+",编号:"+u.getUuid());
while (true) {
System.out.println("[?] 是否还要继续查询?(yes/no) 否将返回至主菜单");
int getYes = yesOrno();
if (getYes == 1) {
searchUser(users);
}
if (getYes == 0) {
mainMenu(users);
}
}
}
yesOrno函数
public int yesOrno() {
System.out.print("[!] 请输入: ");
String flag = scanner.next();
switch (flag) {
case "yes":
return 1;
case "no":
return 0;
default:
System.out.println("[❌] 你输入了一个错误的内容,请重新输入!");
return -1;
}
}
VerifyPassword函数
public boolean verifyPassword(User [] users,int username,int password) {
for (User u : users) {
if (u != null) {
if (u.getUsername() == username && u.getPassword() == password) {
return true;
}
}
}
return false;
}
changeUsername函数
public void changeUsername(User [] users,User user) {
System.out.print("[?] 请输入你要修改成的名字: ");
int backUsername = user.getUsername();
user.setUsername(scanner.nextInt());
System.out.println("[!] 修改成功!编号:" + user.getUuid() + ",账号:" + user.getUsername() +" (原账号: "+backUsername+")"+ ",密码:" + user.getPassword());
while (true) {
System.out.println("[?] 是否还要继续修改?(yes/no) 否将返回至主菜单");
int getYes = yesOrno();
if (getYes == 1) {
loginSuccessMenu(users,user);
}
if (getYes == 0) {
mainMenu(users);
}
}
}
changePassword函数
public void changePassword(User [] users,User user) {
System.out.print("[?] 请输入你要修改成的密码: ");
int backPassword = user.getPassword();
user.setPassword(scanner.nextInt());
System.out.println("[!] 修改成功!编号:" + user.getUuid() + ",账号:" + user.getUsername() + ",密码:" + user.getPassword()+" (原密码: "+backPassword+")");
while (true) {
System.out.println("[?] 是否还要继续修改?(yes/no) 否将返回至主菜单");
int getYes = yesOrno();
if (getYes == 1) {
loginSuccessMenu(users,user);
}
if (getYes == 0) {
mainMenu(users);
}
}
}
deleteUser函数
public void deleteUser(User [] users,User user) {
int index = users.length;
for (int i = 0; i < users.length; i++) {
if (users[i] == user) {
users[i] = null;
index = i;
}
}
while (index < users.length-1) {
users[index] = users[index+1];
index++;
}
if (users.length != 1) {
User [] tempUsers = new User[users.length-1];
for (int i = 0; i < users.length-1; i++) {
tempUsers[i]=users[i];
}
users = tempUsers;
System.out.println("[!] 删除成功,自动返回至主菜单!");
mainMenu(users);
}
}
全部代码
主类代码
public class Demo {
int index = 0;
static Scanner scanner = new Scanner(System.in);
static Demo demo = new Demo();
static EmployeeManager employeeManager = new EmployeeManager();
public User[] increaseUsers(User [] u) {
User [] tempUsers = new User[u.length+1];
for (int i = 0; i < u.length; i++) {
tempUsers[i]=u[i];
}
return tempUsers;
}
public boolean findUsername(User [] users,int username) {
for (User u : users) {
if (u != null) {
if (u.getUsername() == username) {
return true;
}
}
}
return false;
}
public User findUsernameInUsers(User [] users,int username) {
for (User u : users) {
if (u != null) {
if (u.getUsername() == username) {
return u;
}
}
}
return null;
}
public void registerUser(User [] users) {
System.out.print("[!] 请输入账号:");
int username = scanner.nextInt();
if (demo.findUsername(users,username) ) {
System.out.println("[❌] 用户名已经存在,请重新注册!");
registerUser(users);
}
System.out.print("[!] 请输入密码:");
int password = scanner.nextInt();
if (users[users.length-1]!=null) {
users=demo.increaseUsers(users);
}
User user = new User(username,password,index+1001);
users[index] = user;
System.out.println("[V] 注册成功,编号:"+users[index].getUuid()+",账号:" + users[index].getUsername()+",密码:"+users[index].getPassword());
index++;
while (true) {
System.out.println("[?] 是否还要继续注册?(yes/no) 否将返回至主菜单");
int getYes = yesOrno();
if (getYes == 1) {
registerUser(users);
}
if (getYes == 0) {
mainMenu(users);
}
}
}
public boolean verifyPassword(User [] users,int username,int password) {
for (User u : users) {
if (u != null) {
if (u.getUsername() == username && u.getPassword() == password) {
return true;
}
}
}
return false;
}
public int yesOrno() {
System.out.print("[!] 请输入: ");
String flag = scanner.next();
switch (flag) {
case "yes":
return 1;
case "no":
return 0;
default:
System.out.println("[❌] 你输入了一个错误的内容,请重新输入!");
return -1;
}
}
public void userLogin(User [] users) {
System.out.print("[?] 请输入你要登录的账号: ");
int username = scanner.nextInt();
if (!demo.findUsername(users,username)) {
System.out.println("[❌] 没有找到该账号,可能你的输入存在问题!");
while (true) {
System.out.println("[?] 是否还要继续登录?(yes/no) 否将返回至主菜单");
int getYes = yesOrno();
if (getYes == 1) {
userLogin(users);
}
if (getYes == 0) {
mainMenu(users);
}
}
}
System.out.print("[?] 请输入账号的密码: ");
int password = scanner.nextInt();
if (!verifyPassword(users,username,password)) {
System.out.println("[❌] 登录失败!密码错误!请重新登录你的账号!(将返回至登录账号界面)");
userLogin(users);
}
System.out.println("[!] 登录成功!");
demo.loginSuccessMenu(users,findUsernameInUsers(users,username));
}
public void changeUsername(User [] users,User user) {
System.out.print("[?] 请输入你要修改成的名字: ");
int backUsername = user.getUsername();
user.setUsername(scanner.nextInt());
System.out.println("[!] 修改成功!编号:" + user.getUuid() + ",账号:" + user.getUsername() +" (原账号: "+backUsername+")"+ ",密码:" + user.getPassword());
while (true) {
System.out.println("[?] 是否还要继续修改?(yes/no) 否将返回至主菜单");
int getYes = yesOrno();
if (getYes == 1) {
loginSuccessMenu(users,user);
}
if (getYes == 0) {
mainMenu(users);
}
}
}
public void changePassword(User [] users,User user) {
System.out.print("[?] 请输入你要修改成的密码: ");
int backPassword = user.getPassword();
user.setPassword(scanner.nextInt());
System.out.println("[!] 修改成功!编号:" + user.getUuid() + ",账号:" + user.getUsername() + ",密码:" + user.getPassword()+" (原密码: "+backPassword+")");
while (true) {
System.out.println("[?] 是否还要继续修改?(yes/no) 否将返回至主菜单");
int getYes = yesOrno();
if (getYes == 1) {
loginSuccessMenu(users,user);
}
if (getYes == 0) {
mainMenu(users);
}
}
}
public void deleteUser(User [] users,User user) {
int index = users.length;
for (int i = 0; i < users.length; i++) {
if (users[i] == user) {
users[i] = null;
index = i;
}
}
while (index < users.length-1) {
users[index] = users[index+1];
index++;
}
if (users.length != 1) {
User [] tempUsers = new User[users.length-1];
for (int i = 0; i < users.length-1; i++) {
tempUsers[i]=users[i];
}
users = tempUsers;
System.out.println("[!] 删除成功,自动返回至主菜单!");
mainMenu(users);
}
}
public void loginSuccessMenu(User [] users,User user) {
System.out.println("[!] "+user.getUsername()+" 欢迎你,请选择功能:\n1、修改名字 2、修改密码 \n3、删除账号 4、添加员工 ");
System.out.println("5、删除员工 6、修改员工 \n7、查询员工 8、返回主菜单");
System.out.print("[?] 请输入: ");
String flag = scanner.next();
switch (flag) {
case "1":
demo.changeUsername(users,user);
break;
case "2":
demo.changePassword(users,user);
case "3":
System.out.println("[!] 此操作将会彻底删除你的账户!");
while (true) {
System.out.println("[?] 你真的要删除账户吗?(yes/no) 否将返回至上一级菜单");
int getYes = yesOrno();
if (getYes == 1) {
demo.deleteUser(users,user);
}
if (getYes == 0) {
loginSuccessMenu(users,user);
}
}
case "4":
employeeManager.addEmployee();
loginSuccessMenu(users,user);
case "5":
employeeManager.deleteEmploy();
loginSuccessMenu(users,user);
case "6":
employeeManager.changeEmployee();
loginSuccessMenu(users,user);
case "7":
employeeManager.searchEmploy();
loginSuccessMenu(users,user);
case "8":
mainMenu(users);
default:
System.out.println("[❌] 输入错误,请重新选择!");
loginSuccessMenu(users,user);
}
}
public void searchUser(User [] users) {
System.out.println("[!] 请输入你要查询的账户,将会返回是否存在!");
System.out.print("[?] 请输入: ");
int username = scanner.nextInt();
boolean isFound = findUsername(users,username);
if ( !isFound ) {
System.out.println("[❌] 账户没有找到!请检查是否输入正确!");
while (true) {
System.out.println("[?] 是否还要继续查询?(yes/no) 否将返回至主菜单");
int getYes = yesOrno();
if (getYes == 1) {
searchUser(users);
}
if (getYes == 0) {
mainMenu(users);
}
}
}
User u = findUsernameInUsers(users,username);
System.out.println("[V] 找到账户:"+username+",编号:"+u.getUuid());
while (true) {
System.out.println("[?] 是否还要继续查询?(yes/no) 否将返回至主菜单");
int getYes = yesOrno();
if (getYes == 1) {
searchUser(users);
}
if (getYes == 0) {
mainMenu(users);
}
}
}
public void mainMenu(User [] users) {
System.out.println("[!] 请选择功能:\n1、注册 2、登录 \n3、查询 4、退出");
System.out.print("[?] 请输入: ");
String flag = scanner.next();
switch (flag) {
case "1":
demo.registerUser(users);
break;
case "2":
demo.userLogin(users);
break;
case "3":
demo.searchUser(users);
break;
case "4":
System.exit(0);
break;
default:
System.out.println("[❌] 你输入了一个错误的内容,请重新输入!");
demo.mainMenu(users);
break;
}
}
public static void main(String[] args) {
User [] users = new User[1];
demo.mainMenu(users);
}
}
总结
通过思维导图,将所有要做的事情提前规划好
功能的实现,在修改、删除上,都需要使用查询,所以可以将查询单拿出来
在注册时,也要查询一遍是否有同样的名字
出现,如果出现了则需要换一个名字注册
所以在查询的功能上,可以定义为Boolean
类型,true
代表查询到了,false
则代表没有
在进行删除操作的时候,要注意一件事情,删除数据后,要将该位置之后的所有位置前移
同时,我也做了数组自减的方法,删除一条数据后,也会将数组的长度自减
注册的时候会自增
主类里面定义的yesOrno
是用来判断你到底输入了yes
还是no
,还是其他内容
因为我制作了在功能完毕后,提示是否还要继续的操作
我将登录的验证做成了一个单独的模块,即verifyPassword
,如果账号和密码相匹配
则返回值为true
,反之则为false
5 条评论
文章深入浅出,既有深度思考,又不乏广度覆盖,令人叹为观止。
催更快点更新
(ノ°ο°)ノ
az
我到杭州 想吃小笼包 我问路边大爷 哪里买杭州小笼包 大爷口齿不是特别清晰,他告诉我
超市里,杭包
棍之勇者在线bbd,00年土味情话被你玩出新高度