需要案例5& 7. 5显示所有对象,7搜索数据库/列表/ 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;
}
}
答案 0 :(得分: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,现在为true,索引等于数据库中客户帐户的位置。您应该将密钥传递给数据库类中的inlist()方法,并使用它返回true或false(通过使用搜索方法的主体)。