Войти / Зарегистрироваться

Я пытаюсь стать лучше в java, тестируя себя с разными небольшими проектами, а не читая о них в книге. Я сделал простую систему входа / регистрации, чтобы разобраться в наследовании и абстрактных классах. Весь мой код ниже. Не стесняйтесь критиковать код и говорить мне, что бы вы сделали лучше. Моя причина для этого в том, что я просто хочу посмотреть, как другие люди подойдут к такого рода проектам, и, надеюсь, я чему-нибудь научусь.

//RegLogSysDriver.java

public class RegLogSysDriver {
    public static void main(String[] args) {
        RegLogSystem system = new RegLogSystem();
        system.run();
    }
}

//RegLogSystem.java

import java.util.Scanner;
public class RegLogSystem {
    //Instance variables
    Scanner input = new Scanner(System.in);
    String regOrLogInput;
    String name, dateOfBirth, email, password;
    
    //Methods
    public void run() {
        boolean keepGoing = true;
        while(keepGoing==true) {
            System.out.println("Do you wish to (l)ogin or (r)egister");
            regOrLogInput = input.nextLine();
            
            if(regOrLogInput.contentEquals("l")) {
                System.out.println("Enter email:n");
                email = input.nextLine();
                System.out.println("Enter password:n");
                password = input.nextLine();
                LoginForm lForm = new LoginForm(email, password);
                lForm.executeForm();
            }else if(regOrLogInput.contentEquals("r")) {
                System.out.println("Enter name:n");
                name = input.nextLine();
                System.out.println("Enter date of birth e.g. (03/04/2000):n");
                dateOfBirth = input.nextLine();
                System.out.println("Enter email:n");
                email = input.nextLine();
                System.out.println("Enter password:n");
                password = input.nextLine();
                RegisterForm rForm = new RegisterForm(name, dateOfBirth, email, password);
                rForm.executeForm();
            }
            System.out.println("Do you wish to shutdown the system, (y)es or (n)o?");
            String inputText = input.nextLine();
            if(inputText.contentEquals("y")) {
                keepGoing = false;
            }
        }
    }
}

//LoginForm.java

public class LoginForm extends Form{
        public LoginForm(String email, String password) {
            super(email, password);
        }
    
        @Override
        public void executeForm() {
            if(getDataBase().isUserRegistered(getEmail(), getPassword())) {
                User newUser = getDataBase().getUser(getEmail(), getPassword());
                WelcomePage welPage = new WelcomePage(newUser);
                welPage.outputMessage();
                welPage.logoutMessage();
            }else {
                //put error handling here in time.
                System.out.println("User is not registered");
            }
            
            
        }
}

//RegisterForm.java

public class RegisterForm extends Form{

    private String name;
    private String dateOfBirth;
    
    public RegisterForm(String name, String dateOfBirth, String email, String password) {
        super(email, password);
        this.name = name;
        this.dateOfBirth = dateOfBirth;
    }
    
    public String getName() {
        return this.name;
    }
    
    public String getDateOfBirth() {
        return this.dateOfBirth;
    }

    @Override
    public void executeForm() {
        User newUser = new User(getName(), getDateOfBirth(), getEmail(), getPassword());
        getDataBase().addUserToDatabase(newUser);
        WelcomePage welPage = new WelcomePage(newUser);
        welPage.outputMessage();
        welPage.logoutMessage();
        
    }

    
}

//Form.java

public abstract class Form {
    private String emailEntry;
    private String passwordEntry;
    private Database dataBase;
    
    protected Form(String emailEntry, String passwordEntry) {
        this.dataBase = new Database();//both forms are going to need access to the same database
        this.emailEntry = emailEntry;
        this.passwordEntry = passwordEntry;
    }
    
    public String getEmail() {
        return this.emailEntry;
    }
    
    public String getPassword() {
        return this.passwordEntry;
    }
    
    public Database getDataBase() {
        return this.dataBase;
    }
    
    public abstract void executeForm();
}

//User.java

public class User {
    private String name;
    private String dateOfBirth;
    private String email;
    private String password;
    
    
    public User(String name, String dateOfBirth, String email, String password) {
        this.name = name;
        this.dateOfBirth = dateOfBirth;
        this.email = email;
        this.password = password;
    }
    
    
    
    public User() {
        
    }



    public String getEmail() {
        return this.email;
    }
    
    public String getPassword() {
        return this.password;
    }
    
    public String getName() {
        return this.name;
    }
    
    public String getDateOfBirth() {
        return this.dateOfBirth;
    }
}

//Database.java

import java.util.ArrayList;

public class Database {
    private static ArrayList<User> dataBase = new ArrayList<User>();
    
    static {
        dataBase.add(new User("Tom", "12/02/09", "t@gmail.com", "pass"));
        dataBase.add(new User("Bryan", "01/01/01", "b@gmail.com", "password"));
        dataBase.add(new User("Tarence", "15/22/20", "tt@gmail.com", "passwordismypassword"));
    }
    

    
    public boolean isUserRegistered(String email, String password) {
        boolean returnVal = false;
        for(User regedUser : dataBase) {
            if(regedUser.getEmail().contentEquals(email)&&regedUser.getPassword().contentEquals(password)) {
                returnVal = true;
            }
        }
        return returnVal;
    }
    
    public User getUser(String email, String password) {
        User returnVal = new User();
        for(User regedUser : dataBase) {
            if(regedUser.getEmail().contentEquals(email)&&regedUser.getPassword().contentEquals(password)) {
                returnVal = regedUser;
            }
        }
        return returnVal;
    }
    
    public void addUserToDatabase(User newUser) {
        dataBase.add(newUser);
    }
}

//WelcomePage.java

import java.util.Scanner;

public class WelcomePage {
    private User loggedInUser;
    private Scanner input = new Scanner(System.in);
    
    public WelcomePage(User loggingInUser) {
        this.loggedInUser = loggingInUser;
    }
    
    public void outputMessage() {
        System.out.println("Hi "+loggedInUser.getName());
    }
    
    public void logoutMessage() {
        boolean keepGoing = true;
        while(keepGoing==true) {
            System.out.println("Do you wish to logout, (y)es or (n)o");
            String inputText = input.nextLine();
            if(inputText.contentEquals("y")) {
                keepGoing=false;
            }
        }
        
    }
}

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *