(1)想象現實世界中的相關操作沙及哪些物體呢?一個是儲戶,一個是ATM機,因
此根據面向物件中的抽象原則,可將其抽象為兩個類:代表儲戶的賬戶資訊類,代表銀行
ATM機的ATM類,外加一個主類(負責實體化其他類的物件),
(2)Account類記錄儲戶的卡號,姓名、密碼和賬戶余額等資訊,并提供get方法獲取每
個屬性的值,對賬戶余額屬性提供sub_Balance()方法和add_Balance()方法以模擬余額增
加、減少的功能,
注意:為加強對屬性資料的控制訪問,考慮將其定義為private,
(3)ATM類模擬ATM機的主要功能,根據對銀行ATM機的了解,考慮設計以下主
要方法,
① Welcome()方法:歡迎顯示功能,
② Load_Sys()方法:登錄功能,
③ SysOpter()方法:根據用戶輸入進行任務調度,
④ Inqu_Info()方法:查詢用戶賬戶,
5 BetBalance()方法:取款,
AddBalance():存款,
⑦ isBalance()方法:判斷余額是否足夠,
⑧ isRight()方法:判斷卡號、密碼是否正確,
Account.java
/*Account類封裝儲戶資訊及部分功能*/
import java.io.*;
public class Account {
private String number=null; //卡號
private String name=null; //客戶姓名
private String password=null; //客戶密碼
private double money=0.0; //余額
/*構造方法,以生成多個儲戶資訊*/
public Account(String number,String name,String password,double money) {
this.number=number;
this.name=name;
this.password=password;
this.money=money;
}
protected String get_number() {
return number;
}
protected String get_Name() {
return name;
}
protected String get_Password() {
return password;
}
public double get_Money() {
return money;
}
protected void sub_Balance(double mon) {
money-=mon;
} //余額減少
protected void add_Balance(double mon) {
money+=mon;
} //余額增加
}
ATM.java
import java.io.*;
class ATM {
Account act;
Account act2;
public ATM() {
act=new Account("000","text","111",5000);
act2=new Account("222","text","333",5000);
}
/*********歡迎界面*********/
protected void Welcome() {
String str="---------------------";
System.out.print(str+"\n");
System.out.print("1.取款."+"\n"+"2.查詢."+"\n"+"3.存款."+"\n"+"4.退出系統"+"\n"+"5.轉賬");
System.out.print(str+"\n");
}
/*********登錄系統
* @throws Exception *********/
protected void Load_Sys() throws Exception {
String card,pwd;
int counter=0;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); //創建標準輸入和輸出流
do {
System.out.println("請輸入您的卡號:");
card=br.readLine(); //讀取鍵盤資訊
System.out.println("請輸入您的密碼:");
pwd=br.readLine();
if(!isRight(card,pwd)) {
System.out.println("您的卡號和密碼有誤:");
counter++;
}else
SysOpter();
}while(counter<3);
System.exit(1); //應用退出
}
protected void SysOpter()throws Exception{
int num;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("請選擇您要操作的專案(1-5):");
num=br.read(); //num為ascll碼轉換的整數
switch(num) {
case 49:
BetBalance();
break;
case 50:
Inqu_Info();
break;
case 51:
AddBalance();
case 53:
ZhuanZhang();
case 52:
Exit_Sys();
break;
}
System.exit(1);
}
/**********資訊查詢**********/
protected void Inqu_Info()throws Exception{
System.out.print("------------------------\n"+"賬號:"+act.get_number()+"姓名;"+act.get_Name()+"余額:"+act.get_Money()+"\n"+"------------------------\n");
SysOpter();
}
/**********取款**************/
public void BetBalance() throws Exception{
String str=null,str1;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
do {
System.out.println("請輸入取款專案:");
str=br.readLine();
double qu=Double.valueOf(str).doubleValue(); //將字串轉換為double型別
if(qu>act.get_Money()) {
System.out.println("余額不足,請重新輸入你要取的數目:");
}else {
act.sub_Balance(qu);
System.out.println("取款成功,您賬戶的余額為:"+act.get_Money());
Welcome();
SysOpter();
}
}while(true);
}
public void AddBalance() throws Exception{
String str=null,str1;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
do {
System.out.println("請輸入存款專案:");
str=br.readLine();
double qu=Double.valueOf(str).doubleValue();
act.add_Balance(qu);
System.out.println("存款成功,您賬戶的余額為:"+act.get_Money());
Welcome();
SysOpter();
}while(true);
}
public boolean isBalance() {
if (act.get_Money()<0) {
return false;
}
return true;
}
protected boolean isRight(String card,String pwd) {
if (act.get_number().equals(card)&&act.get_Password().equals(pwd))
return true;
else
return false;
}
protected boolean isRight2(String card,String pwd) {
if (act2.get_number().equals(card)&&act.get_Password().equals(pwd))
return true;
else
return false;
}
protected void Exit_Sys() {
System.out.println("感謝您使用本系統,再見!");
System.exit(1);
}
/*轉賬功能*/
protected void ZhuanZhang() throws Exception {
String card,pwd;
int counter=0;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
do {
System.out.println("請輸入您要轉賬的卡號:");
card=br.readLine();
System.out.println("請輸入您的密碼:");
pwd=br.readLine();
if(!isRight2(card,pwd)) {
System.out.println("您的轉賬卡號和密碼有誤:");
counter++;
}else
do {
System.out.println("請輸入轉賬的金額:");
String str = br.readLine();
double qu=Double.valueOf(str).doubleValue();
if(qu>act.get_Money()) {
System.out.println("余額不足,請重新輸入你要轉賬的數目:");
}else {
act.sub_Balance(qu);
double qu1=Double.valueOf(str).doubleValue();
act2.add_Balance(qu1);
System.out.println("轉賬成功,您賬戶的余額為:"+act.get_Money());
System.out.println("存款成功,賬戶2的余額為:"+act2.get_Money());
Welcome();
SysOpter();
}
}while(true);
}while(counter<3);
System.exit(1);
}
}
ATMTest.java
public class ATMTest {
public static void main(String[] args) throws Exception{
ATM atm=new ATM();
atm.Welcome();
atm.Load_Sys();
}
}
運行結果:





轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/151187.html
標籤:其他
