0

我是java新手,我需要一些帮助。我想在命令行中创建一个登录屏幕。我有一个菜单类,首先我希望用户选择是否要登录、注册或退出。我在注册案例中,他在其中输入了他的电子邮件、密码和他的身份,即买家或所有者(它们都是用户类的子类)。买方和所有者是我的 java 项目的两个类别。我曾想过制作一个额外的类 Person(User 的子类),带有变量 String email、int password、User identity,我想当 eshop 的用户在 identity 变量中写“Buyer”时,身份变成了买家,所以我可以将他添加到数组列表中

如果有人认为我应该做不同的事情,我很高兴听到。

import java.util.ArrayList;
import java.util.Scanner;

public class Menu{

    Eshop Eshop = null;
    ArrayList<Item> itemsList = new ArrayList<>();
    ArrayList<Buyer> buyersList = new ArrayList<>();
    User buyer = null;
    User Owner = null;
    boolean exit;//false

   /* public static void main(String[] args){
        Menu menu = new Menu(); 
        menu.runMenu();
    }
TEMPORARY MAIN TO RUN THE METHODS OF MENU CLASS
    */

    Menu()
    {
    }
    Menu(Eshop Eshop, User owner, ArrayList<Item> itemslist, ArrayList<User> buyerslist){
     this.Eshop=Eshop;
     this.Owner=owner;
     itemsList = itemslist;
     buyersList = buyerslist;
    }

    public void runMenu(){
        printHeader();

        while(!exit){
            printMenu();
            int choice = getInput();
            performAction(choice);
        }        
    }

    public int getInput(){
        Scanner kb = new Scanner(System.in);
        int choice=-1;
        while(choice<1 || choice >3){
            try{
                System.out.print("\n\nEnter your choice:");
               choice = Integer.parseInt(kb.nextLine());
            }

            catch(NumberFormatException e){
                System.out.println("Invalid selection plz try again.");
            }
        }
        return choice;
    }

    public void printHeader(){
        System.out.println("+-------------------------------------------+");
        System.out.println("|                                           |");
        System.out.println("|         Welcome to our Eshop Menu         |");//+Eshop.getname();
        System.out.println("|                                           |");
        System.out.println("+-------------------------------------------+");
    }

    public void printMenu(){
        System.out.println("\nPlease make a selection:");
        System.out.println("1)Login ");
        System.out.println("2)Sign up");
        System.out.println("3)Exit!!!!");
    }

    public void enteremail()
    {
        Scanner keyboard = new Scanner(System.in);
        Scanner codeboard = new Scanner(System.in);
        Scanner identityboard = new Scanner(System.in);
        String email=null,identity=null;
        int code=0;

        System.out.println("\n\nEnter your email:");
        email=keyboard.nextLine();
        System.out.println("\nEnter your code:");
        code=codeboard.nextInt();
        System.out.println("\nEnter what you are Buyer or Owner");
        identity=identityboard.nextLine();

        Person p1= new Person(email,code,identity);

        if(identity.equals("Buyer"))
            buyersList.add(p1);//HERE IS MY PROBLEM HOW I MAKE THE IDENTITY OF PERSON CLASS TO BUYER

    }

    private void performAction(int choice){
        switch(choice){
            case 3:
                exit = true;
                System.out.println("Sta tsakidia!!!");
            case 2:

        }
    }
}//THIS IS THE MENU CLASS


import java.util.ArrayList;
import java.io.*;

public class Person extends User{
    int password=0;
    String identity;
    ArrayList <Person> personList=new ArrayList<Person>();

    Person(String email,int password,String identity)
    {
        this.email=email;
        this.password=password;
        this.identity=identity;
    }

    public void Register(Person a)
    {
        personList.add(a);
    }

    public void setemail(String email)
    {
        this.email=email;
    }

    public String getemail()    
    {
        return email;
    }

    public void setpassword(int password)
    {
        this.password=password;
    }

    public int getpassword()
    {
        return password;
    }

    public void setidentity(String identity)
    {
        this.identity=identity;
    }

    public String getidentity()
    {
        return identity;
    }

}// THIS IS THE PERSON CLASS



公共类所有者扩展用户{私有布尔isAdmin;

Owner(String name,String email)
{
    this.name=name;
    this.email=email;
    this.isAdmin=true;
}

}//所有者类

import java.io.*;

public class Buyer extends User
{
    private int bonus=0,distance=0;
    private double transfercost=0;//metaforika
    protected buyerCategory category;//katigoria
    private int pointcounter=0;//pointer twn agorwn 
    enum buyerCategory//Enum gia tin katigoria
    {
       BRONZE, SILVER,GOLD 
    }

   Buyer(String name, String email,int bonus, ShoppingCart cart,int distance)//DHMIOURGOS
    {
        this.name=name;
        this.email=email;
        this.bonus=bonus;
        if(bonus>=0 && bonus<100)
            category=buyerCategory.BRONZE;
        else if(bonus>100 && bonus<200)  
            category=buyerCategory.SILVER;
        else if(bonus<0)
            throw new IllegalArgumentException("Bonus has to positive or 0");
        else 
            category=buyerCategory.GOLD;
        this.category=category;
        if(distance>=0 && distance<10)
            transfercost=5;
        else if(distance>=10 && distance<100)
            transfercost=10;
        else if(distance>=100)
            transfercost=25;
        else
            System.out.println("Prepei na baleis thetiko distance");//Thelei exception

        /*if(category == buyerCategory.SILVER)
            transfercost=transfercost/2;
        if(category == buyerCategory.GOLD)
            transfercost=0;
          */
    }

    public void setbuyerCategory(Buyer buyer)
    {
       int temp;
       temp=buyer.getbonus();        
       if (temp>=0 && temp<100)
            category= buyerCategory.BRONZE;
       if (temp>100 && temp<200)            
                category= buyerCategory.SILVER;
                //transfercost = transfercost/2;                
       if (temp>200)            
                category= buyerCategory.GOLD;
                //transfercost = 0;

    }

    public void awardBonus(Buyer buyer,ShoppingCart cart)
    {
        cart.CountShoppingCart(cart);

        System.out.println("H aksia tis paraggelias sou einai:\t"+cart.calculateNet());

        int ten=(int) cart.calculateNet()/10;
       /*if (cart.gettotalprice()>=20 && cart.gettotalprice()<50)  

            temp=buyer.getbonus()+20;                        
       else if(cart.gettotalprice()>=50 && cart.gettotalprice()<100)                  
            temp=buyer.getbonus()+50;           
       else if (cart.gettotalprice()>100)                            
            temp=buyer.getbonus()+100;               
       else               //ligotero apo 20
            temp=buyer.getbonus()+0;    
       */


        int temp= buyer.getbonus()+ten;
        setbonus(temp);

        setbuyerCategory(buyer);

       if(category == buyerCategory.GOLD)
            transfercost=0;
       if(category == buyerCategory.SILVER)
            transfercost=transfercost/2;
    }

    public void placeOrder(ShoppingCart so1,ItemOrdered ItemO,int quantity)
    {
        quantity=ItemO.getquantity();
        so1.addItemOrdered(ItemO);
    }

    public String getname()
    {
        return name;
    }

    public String getemail()
    {
        return email;
    }

    public void setbonus(int bonus)
    {
        this.bonus=bonus;
    }

    public int getbonus()
    {
        return bonus;            
    }

    public buyerCategory getCategory()
    {
        return category;
    }

    public int getdistance()
    {
        return distance;
    }

    public double gettransfercost()
    {
        return transfercost;
    }

    void print()
    {
        System.out.println("H stoixeia tou pelati einai:\nCategory:" +getCategory()+"\t\tName:" +getname()+ "\t\tEmail:"+getemail()+"\t\tBonus:" +getbonus()+"\t\tTransfercost:"+gettransfercost());
    }

}


4

0 回答 0