gpt4 book ai didi

Java - 以用户或管理员身份登录?遗产

转载 作者:行者123 更新时间:2023-12-02 03:44:19 26 4
gpt4 key购买 nike

我的应用程序上有一个登录系统,其中有一组预定义的用户,如下所示:

User user = new User("tommy", "tommy", false);
User user2 = new User("phil2", "phil2", false);
User user3 = new User("phil", "phil", true);
Admin admin = new Admin("benji", "benji", true);

然后将这些添加到用户数组中

userArray.add(user);...

logIn() 方法会循环遍历并在尝试登录时检查其凭据。

用户可以按预期登录,但是如何让管理员帐户登录?请注意,管理员仍然是用户,只是一种特殊类型的用户,登录时具有不同的菜单目前,管理员帐户未被识别为用户。

在我的用户类中,我有这样的:管理员继承自用户,因为它是用户:

public class Admin extends User {           
public Admin(String username, String password, boolean av) {
super(username, password,av);
}

LogIn() 看起来像这样:

public void LogIn() {
Scanner in = new Scanner(System.in);
System.out.println(" Welcome to the system \n Enter your Username and Password to continue \n Username: ");
String temp = in.nextLine();
System.out.println(" Password: ");
String temp2 = in.nextLine();

//while(LOCount != 3){
for (int i = 0; i < userArray.size(); i++) {
if (userArray.get(i).CheckUsername(temp) && userArray.get(i).CheckPassword(temp2)) {
// if(userArray.get(i) instanceof User.Admin){
UserMenu();

根据要求检查用户名()和检查密码():

public Boolean CheckPassword(String password) {         
return this.password.equals(password);
}

public Boolean CheckUsername(String username) {
return this.username.equals(username);
}

我是继承方面的新手,因此我将不胜感激,谢谢!

最佳答案

您应该避免instanceof。你可以这样做:

public interface Menu {
void show();
}

public class UserMenu implements Menu {
@Override
public void show() {
//show user menu
}
}

public class AdminMenu implements Menu {
@Override
public void show() {
//show admin menu
}
}

public class User {

private String username;
private String password;

public Menu getMenu() {
return new UserMenu();
}

public boolean authenticate(String username, String pass) {
return this.username.equals(username) && this.password.equals(pass);
}
//getters & setters
}

public class Admin extends User {
//Constructor
@Override
public Menu getMenu() {
return new AdminMenu();
}
}

在您的 logIn() 方法中:

for (int i = 0; i < userArray.size(); i++) {
User user = userArray.get(i);
if (user.authenticate(username, password)) {
user.getMenu().show();
//for look must finish, maybe with break?
}
}

希望有帮助。

关于Java - 以用户或管理员身份登录?遗产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36478067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com