-1

在案例 5 和 7 方面需要一些帮助。5 显示所有对象,7 搜索数据库/列表/数组列表以显示单个客户。不确定如何嵌套提取所有字段或某些字段所需的方法。非常感谢任何帮助/建议。提前致谢,

    package bankaccount;

import javax.swing.JOptionPane;

public class BankAccountTest 
{
public static void main (String[] args)
{
    Database db = new Database();
    Database deleted = new Database();
    boolean done = false;
    while (!done)

    {
        int activity = IO.getInt("Please choose one of the following:"+
         "\n 1 to create new account"+ "\n 2 to delete an account"+
        "\n 3 to withdraw from an account"+"\n 4 to deposit to an account"+
         "\n 5 to list all customers"+"\n 6 to list all deleted customers"+
         "\n 7 to display single account "+"\n 8 to exit this program");

    switch(activity)
    {

  case 1:

  //Create new account
  String LastName = IO.getString("Please type last name: ");
  String FirstName = IO.getString("Please type first name: ");
  Name n = new Name (LastName,FirstName);

  //Create address object
  String street = IO.getString("Please type your address: ");
  String city = IO.getString("Please type your city: ");
  String state = IO.getString("Please type your state: ");
  String zipcode = IO.getString("Please type your zipcode: ");
  Address addr = new Address (street,city,state,zipcode);
/*        //Create Account number
  Random randomGenerator = new Random();
  int randomInt = randomGenerator.nextInt(2000000000);
  AccountNum accno = new AccountNum(randomInt);
*/     //Create customer object
  String accno = IO.getString("Please enter the account number: ");
  Customer c = new Customer(n,addr,accno);
        //Create bankaccount object 
 double amt = IO.getDouble("Please type the opening account balance: ");
  BankAccount b = new BankAccount(c, amt);
  db.add(b);
  break;


  case 2:

  // Delete an account / copy account info to deleted database
   String key = IO.getString("Enter account number to delete: ");
       db.search(key); 
     if (db.inlist())
  {
        deleted.add(db.remove(db.getindex()));
  } else 
  {
   //Display not found
    IO.notFound();
  }
  break;


  case 3:

  // withdraw from an account
    key = IO.getString("Enter account number to withdraw from: ");
    db.search(key);
   if (db.inlist())
  {
     double amount = IO.getDouble("Enter an amount to withdraw : ");
     b.withdraw(amount);
     JOptionPane.showMessageDialog(null, "Current balance is: "+b.balance);

  } else 
     {
         IO.notFound();
     }
  break;  


 Case 5:

  //Display single account
  if(db.list.isEmpty())
  { 
    String s = "The list is empty";
    JTextArea text = new JTextArea(s, 6, 20);
    JScrollPane pane = new JScrollPane(text); 
    JOptionPane.showMessageDialog(null, pane,
                "Current Customers", JOptionPane.INFORMATION_MESSAGE);
  }

  for (int i = 0; i < db.list.size(); i++)
  {
   // JOptionPane.showMessageDialog(null, " "+db.list.size());  
    String s = "These exists in the list: ";
    JTextArea text = new JTextArea(s, 6, 20);
    JScrollPane pane = new JScrollPane(text); 
    JOptionPane.showMessageDialog(null, pane,
                "Current Customers List", JOptionPane.INFORMATION_MESSAGE);
  }
  break;

 case 7:
  // Display single account 
   key = IO.getString("Enter account number show: ");
   db.search(key);
   if (db.inlist())
  {
    JOptionPane.showMessageDialog(null, "Account information: "
                                    +db.getaccount().getbalance());
  } else 
     {
         IO.notFound();
     }
  break;  

  case 8:

  // exit program
      done=true;
      break;

 default:
 JOptionPane.showMessageDialog(null, "Invalid choice, please choose again ", 
                                "ERROR",JOptionPane.ERROR_MESSAGE);
    }
   }           
  }
  }

班级

package bankaccount;

public class BankAccount 
{
Customer cust;
double balance;

BankAccount (Customer c,double b)     
   {
        cust = c;
     balance = b;
   }

 void deposit (double amt)
   {
     balance = balance + amt;
   }

 void withdraw (double amt)
   {
     balance = balance - amt;
   }

 double getbalance ()
   {
    return balance;
   }

 Customer getcustomer ()
   {
    return cust;
   }
    }

&

package bankaccount;

public class Customer 
{
 Name name;
 Address addr;
 String accno;

 Customer (Name n, Address addy, String acc)
 {
     name = n;
     addr = addy;
     accno = acc;
 }

 Name getname()
 {
     return name;
 }

 Address getAddress()
 {
     return addr;
 }

 String getAccountNumber()
 {
     return accno;
 }

 void changeAccountNumber(String acc)
 {
     accno = acc;
 }
 }   

&

package bankaccount;

import java.util.ArrayList;

public class Database 
{
    int index;
    boolean found;
    ArrayList<BankAccount> list;
    BankAccount acc;

Database()
{
 list = new ArrayList<BankAccount>();
}

void add(BankAccount b)
{
   list.add(b);
}

BankAccount remove (int i)
{
    return list.remove(i);
}

 BankAccount getaccount()
{
    return acc;
}

ArrayList getlist()
{
    return list;
}

int getindex()
{
    return index;
}

boolean inlist()
{
    return found;
}

void search (String key)
{
    found = false;
    int i = 0;
    //int.length = list.size();

    while (i < list.size() && !found)
    { BankAccount b = list.get(i);
       if (key.equals(b.getcustomer().accno))
  {
  acc = b; found = true; index = i;
  }
else
  {
  i++;
  }
    }
}
}

&

package bankaccount;

public class Address 
{
 String street;
 String city;
 String state;
 String zipcode;     

  Address (String str, String cty, String st, String zip)
 {
     street = str;
     city = cty;
     state = st;
     zipcode = zip;
 }

 static String getstreet(String street)
 {
     return street;
 }

 public String getcity()
 {
     return city;
 } 

 public String getstate()
 {
     return state;
 }

 public String getzip()
 {
     return zipcode;
 }
}
4

1 回答 1

0

案例 5 - 列出所有客户

为了获得客户列表,您必须遍历包含客户信息的列表,并打印出他们的姓名。以下 for 循环应该为您执行此操作。

for(int i = 0; i< Database.list.size();i++)
{
  System.out.println(Database.list.get(i).getName();
}

请注意,这应该打印出名称列表,它不会将它们放在您的 JOptionPane 中。

案例 7 -

您目前有一些语法错误。让我们从头开始,跟踪整个程序。

db.search(key);

好的,这是通过数据库并搜索指定的键。

void search (String key)
{
    found = false;
    int i = 0;
    //int.length = list.size();

    while (i < list.size() && !found)
    { BankAccount b = list.get(i);
        if (key.equals(b.getcustomer().accno))
  {
   acc = b; found = true; index = i;
  }
 else
  {
  i++;
  }
    }
}

这段代码什么都不做,它将 b 设置为 acc,found 现在为 true,并且 index 等于客户帐户在您的数据库中的位置。您应该将密钥传递给数据库类中的 inlist() 方法,并使用它来返回 true 或 false(通过使用搜索方法的主体)。

于 2013-05-30T04:02:05.097 回答