Java BankAccount app - joptionpane/输出/显示数据库中的数组列表对象



需要帮助处理大小写5 &7. 5显示所有对象,7搜索数据库/list/arraylist显示单个客户。不确定如何嵌套拉取所有字段或某些字段所需的方法。非常感谢任何帮助/建议。提前感谢,

    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;
 }
}

案例5 -列出所有客户

为了获得客户列表,您必须遍历包含客户信息的列表,并打印出他们的姓名。下面的for循环将为您完成此工作。

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

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

Case 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, find现在为true, index等于客户帐户在数据库中的位置。相反,您应该将键传递给数据库类中的inlist()方法,并使用该方法返回true或false(通过使用搜索方法的主体)。

最新更新