-1

ケース 5 と 7 のヘルプが必要です。5 はすべてのオブジェクトを表示し、7 はデータベース/リスト/アレイリストを検索して 1 人の顧客を表示します。すべてのフィールドまたは特定のフィールドをプルするために必要なメソッドをネストする方法がわかりません。どんな助け/アドバイスも本当に感謝しています。前もって感謝します、

    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 を返す必要があります (search メソッドの本体を使用して)。

于 2013-05-30T04:02:05.097 に答える