文本用户界面,无法获得一种工作方法

时间:2012-11-26 15:19:41

标签: java text interface

我有一个使用BlueJ执行的任务,我给了一个名为HW4CustomerList的类,我必须为它创建一个基于文本的UI。我必须创建的类称为CustomerTUI,它包含一个名为addCustomer的方法,该方法将我的一个新的Customer对象添加到ArrayList中。特别是这种方法是我所困扰的。类规范说我不能采用任何参数(即无参数方法)。在以前的工作中,我们使用BlueJ'方法框'与对象交互并将它们添加到ArrayLists,但是我不知道是否可以在这个特定实例中使用它。请在下面找到我的代码,以获取CustomerTUI以及Customer类和HW4CustomerList类的代码。非常感谢提前。

CustomerTUI类:

import java.util.Scanner;

public class CustomerTUI
{
private HW4CustomerList customerList;
private Scanner myScanner;

public CustomerTUI()
{
    customerList = new HW4CustomerList();
    myScanner = new Scanner(System.in);
}

public void menu()
{
    int command;
    boolean running = true;

    while(running)
    {
        displayMenu();
        command = getCommand();
        execute(command);
    }
}

private void addCustomer()
{
    customerList.addCustomer();
}

private void displayMenu()
{
    System.out.println("            CustomerList program         ");
    System.out.println("=========================================");
    System.out.println("|Add a customer to the list..........[1]|");
    System.out.println("|Get number of customers.............[2]|");
    System.out.println("|Remove a customer from the list.....[3]|");
    System.out.println("|Show all customer details...........[4]|");
    System.out.println("|Show a specific customers details...[5]|");
    System.out.println("|Quit................................[6]|");
    System.out.println("=========================================");
}

private void execute(int command)
{
    if(command == 1)
    {
        addCustomer();
    }

    else if(command == 2)
    {
        getNumberOfCustomers();
    }

    else if(command == 3)
    {
        removeCustomer();
    }

    else if(command == 4)
    {
        showAllCustomers();
    }

    else if(command == 5)
    {
        showCustomer();
    }

    else if(command == 6)
    {
        quitCommand();
    }

    else
    {
        unknownCommand(command);
    }
}

private int getCommand()
{
    System.out.println("Enter the command of the function you wish to use: ");
    int command = myScanner.nextInt();
    return command;
}

private void getNumberOfCustomers()
{
    if(customerList.getNumberOfCustomers() == 1)
    {
        System.out.println("We have " + customerList.getNumberOfCustomers() + " customer.");
    }
    else
    {
        System.out.println("We have " + customerList.getNumberOfCustomers() + " customers.");
    }
}

private void quitCommand()
{
    System.out.println("The program is now closing down...");
    System.exit(0);
}

private void removeCustomer()
{
    String accNo;

    System.out.println("Enter the account number of the customer you wish to remove: ");
    accNo = myScanner.next();
    if (customerList.removeCustomer(accNo) == true)
    {
        System.out.println("Customer with account number " + accNo + " was successfully removed.");
    }
    else
    {
        System.out.println("Customer with account number " + accNo + " was NOT successfully removed.");
        System.out.println("Please try again.");
    }
}

private void showAllCustomers()
{
    customerList.getAllCustomers();
}

private void showCustomer()
{
    String accNo;

    System.out.println("Enter the account number of the customer you wish to view: ");
    accNo = myScanner.next();
    if(customerList.getCustomer(accNo) == false)
    {
        System.out.println("Could not find customer with account number " + accNo + ".");
    }
    else
    {
        return;
    }
}

private void unknownCommand(int command)
{
    System.out.println("Command number " + command + " is not valid. Please try again.");
}
}

HW4CustomerList类:

import java.util.*;

public class HW4CustomerList
{
private ArrayList<Customer> customers;    

public HW4CustomerList()
{
   customers = new ArrayList<Customer>();
}

public void addCustomer(Customer customer)
{
    customers.add(customer);
}

public int getNumberOfCustomers()
{
    return customers.size();
}

public boolean getCustomer(String accountNumber)
{
   for(Customer customer : customers)
   {
       if(accountNumber.equals(customer.getAccountNumber()))
       {
          customer.printCustomerDetails();
          return true;
      }
  }
  return false;
}


public void getAllCustomers()
{
    for(Customer customer : customers)
    {
        customer.printCustomerDetails();
        System.out.println("\n");
    }
}


public boolean removeCustomer(String accountNumber)
{
     int index = 0;
     for (Customer customer: customers)
     {
          if (accountNumber.equals(customer.getAccountNumber()))
        {
            customers.remove(index);
            return true;
        }
        index++;
    }
    return false;
}
}

1 个答案:

答案 0 :(得分:0)

我认为您需要做的就是在addCustomer()方法中创建一个新的Customer对象。这可能需要获得更多细节:

public void addCustomer()
{
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter customer name: ");
    String name = scanner.nextLine();
    //any additional details
    Customer customer = new Customer(name, otherParams);
    customers.add(customer);
}

希望有所帮助!