import java.util.Scanner;
import userAccountInformation.csv;
public class AtmMachine {
private double availableBalance;
private double totalBalance;
Scanner input = new Scanner(System.in);
public int userAccount() {
System.out.print("Please enter your account number: ");
int account;
account = input.nextInt();
validateInput();
return account;
}
public int userPin() {
System.out.print("Please enter your pin number: ");
int pin;
pin =input.nextInt();
validateInput();
return pin;
}
public void startAtm() {
userAccount();
userPin();
drawMainMenu();
}
public void drawMainMenu() {
int selection;
System.out.println("\nATM main menu:");
System.out.println("1 - View account balance");
System.out.println("2 - Withdraw funds");
System.out.println("3 - Add funds");
System.out.println("4 - Terminate transaction");
System.out.print("Choice: ");
selection =input.nextInt();
switch(selection) {
case 1:
viewAccountInfo();
break;
case 2:
withdraw();
break;
case 3:
addFunds();
break;
case 4:
System.out.println("Thank you for using this ATM!!! goodbye");
}
}
public void viewAccountInfo() {
System.out.println("Account Information:");
System.out.println("\t--Total balance: $"+totalBalance);
System.out.println("\t--Available balance: $"+availableBalance);
drawMainMenu();
}
public void deposit(int depAmount) {
System.out.println("\n***Please insert your money now...***");
totalBalance =totalBalance +depAmount;
availableBalance =availableBalance +depAmount;
}
public void checkNotSufficientFunds(int withdrawAmount) {
if(totalBalance -withdrawAmount < 0)
System.out.println("\n***ERROR!!! Insufficient funds in you accout***");
else {
totalBalance =totalBalance -withdrawAmount;
availableBalance =availableBalance -withdrawAmount;
System.out.println("\n***Please take your money now...***");
}
}
public void addFunds() {
int addSelection;
System.out.println("Deposit funds:");
System.out.println("1 - $20");
System.out.println("2 - $40");
System.out.println("3 - $60");
System.out.println("4 - $100");
System.out.println("5 - Back to main menu");
System.out.print("Choice: ");
addSelection =input.nextInt();
switch(addSelection) {
case 1:
deposit(20);
drawMainMenu();
break;
case 2:
deposit(40);
drawMainMenu();
break;
case 3:
deposit(60);
drawMainMenu();
break;
case 4:
deposit(100);
drawMainMenu();
break;
case 5:
drawMainMenu();
break;
}
}
public void withdraw() {
int withdrawSelection;
System.out.println("Withdraw money:");
System.out.println("1 - $20");
System.out.println("2 - $40");
System.out.println("3 - $60");
System.out.println("4 - $100");
System.out.println("5 - Back to main menu");
System.out.print("Choice: ");
withdrawSelection =input.nextInt();
switch(withdrawSelection) {
case 1:
checkNotSufficientFunds(20);
drawMainMenu();
break;
case 2:
checkNotSufficientFunds(40);
drawMainMenu();
break;
case 3:
checkNotSufficientFunds(60);
drawMainMenu();
break;
case 4:
checkNotSufficientFunds(100);
drawMainMenu();
break;
case 5:
drawMainMenu();
break;
}
}
public static void main(String args[]) {
AtmMachine myAtm = new AtmMachine();
myAtm.startAtm();
}
}
validateInput() {
}
但有人可以帮助我编写validateInput()方法,以便它: 1.检查帐号和密码,并根据用户的文本文件进行验证。允许三次尝试。
除了帮助我改变它以便:
* 我遇到问题的地方: *将一个文本文件合并到代码中,以便我可以检查它并在需要时更新它/编写validateInput()方法。
我认为这需要大量的工作,所以任何帮助都值得赞赏...
答案 0 :(得分:2)
有很多方法可以将文件读入Java。我更喜欢使用以下内容:
阅读文件:
ArrayList<Account> accounts = new ArrayList<Account>();
try {
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new FileReader("C:\\readFile.txt"));
String line;
while ((line = br.readLine()) != null) {
accounts.Add(new Account(line));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (Exception ex) {
e.printStackTrace();
}
}
}
您必须决定格式,然后使用tokenizer或其他解析器从您读过的字符串中提取信息。我建议您在项目中设置类(例如Account类 - 属性:AccountNumber,Pin ,平衡等)。请记住添加一个Account(String)构造函数和一个toString()方法,以便从字符串中轻松创建一个帐户,并将该帐户转换为字符串,以便存储在文本文件中。
要将帐户写回您的文件(在每笔交易结束时或程序关闭时,您的选择),请执行以下操作:
BufferedWriter bufferedWriter = null;
try {
//Construct the BufferedWriter object
bw = new BufferedWriter(new FileWriter(filename));
//Start writing to the output stream
for (int i=0; i<accounts.size(); i++) {
bw.write(accounts.get(i).toString());
bw.newLine();
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
//Close the BufferedWriter
try {
if (bw!= null) {
bw.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}