案例:
模擬實現ATM機的功能:
功能描述:
實現使用者程登入及建立,實現查詢餘額,取出,存款,轉賬等
1、測試類:public class Atm {
public static void main(String[] args) {
Method me =new Method();
me。start();
}12345
2、使用者類:public class Usr { private String account ;//賬戶
private String cood;//密碼
private long balance;//餘額
public Usr(String account,String cood,long balance) { this。cood=cood; this。account=account; this。balance=balance;
} public Usr() {
} public void setCood(String cood) { this。cood=cood;
} public String getCood() { return cood;
} public void setAccount(String account) { this。account=account;
} public String getAccount() { return account;
} public void setBalance(long balance) { this。balance=balance;
} public long getBalance() { return balance;
} @Override
public boolean equals(Object obj) { return super。equals(obj);
} @Override
public String toString() { return “Usr{” + “account=‘” + account + ’\‘’ + “, cood=‘” + cood + ’\‘’ + “, balance=” + balance + ‘}’;
}
}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
3、方法類:import java。util。ArrayList;
import java。util。Random;
import java。util。Scanner;public class Method {
Random ran = new Random();
ArrayList list = new ArrayList();
Scanner sc = new Scanner(System。in);
Usr usr = new Usr(); public void method00() { //建立4個初始賬戶
Usr usr1 = new Usr(“123456”, “666666”, 100000);
Usr usr2 = new Usr(“888888”, “666666”, 200000);
Usr usr3 = new Usr(“666666”, “666666”, 300000);
Usr usr4 = new Usr(“999999”, “666666”, 400000);
list。add(usr1);
list。add(usr2);
list。add(usr3);
list。add(usr4);
} public void start() {
method00();
System。out。println(“這裡建立了4個供測試的賬戶分別是:”);
System。out。println(list。get(0));
System。out。println(list。get(1));
System。out。println(list。get(2));
System。out。println(list。get(3));
System。out。println(“歡迎使用本公司ATM機,請選擇您需要的服務”);
method01();
} public void method01() { // 選擇服務編號
System。out。println(“1。登陸 2。建立賬戶 3。退出”); int a = shuRu(1, 3); switch (a) { case 1: // 有賬戶,直接登陸;
dl(); break; case 2: // 無賬戶,建立賬戶
cj(); break; case 3: break;
}
} public int shuRu(int min, int max) { //輸入
int aa = 0; while (true) {
String str = sc。nextLine(); try { int a = Integer。valueOf(str); if (a >= min && a
aa = a; break;
} else {
System。out。println(“請輸入正確的服務編號”);
}
} catch (Exception e) {
System。out。println(“輸入不合法,請您輸入正確的服務編號”);
}
} return aa;
} public int shuRu(int min) { //輸入
int aa = 0; while (true) {
String str = sc。nextLine(); try { int a = Integer。valueOf(str); if (a >= min && a
aa = a; break;
} else {
System。out。println(“請輸入合理的金額,您最小的操作金額為100元”);
}
} catch (Exception e) {
System。out。println(“輸入不合法”);
}
} return aa;
} public void cj() { // 建立賬戶
System。out。println(“請輸入您的六位密碼,您共有三次輸入機會”);
String str1 = method020101(); if (str1 == “”) {
System。out。println(“您的輸入機會以用完,請重新選擇服務”);
method01();
} else {
System。out。println(“請確認您的六位密碼,您共有三次確認機會”);
String str2 = method020101(); if (str1 == “”) {
System。out。println(“您的輸入機會以用完,請重新選擇服務”);
method01();
} else {
boolean a = method020102(str1, str2); //比較兩次輸入
if (a) {
String str3 = sczh();
usr。setAccount(str3);
usr。setCood(str1);
list。add(usr);
System。out。println(“恭喜您,您的賬戶建立成功,賬號為:” + str3 + “您的密碼為:” + str1);
fw(str3, str1);
} else {
System。out。println(“您兩次輸入的密碼不同,請選擇您需要的服務”);
method01();
}
}
}
} public String method020101() { // 輸入密碼
String str = “”; for (int a = 3; a >= 1; a——) {
String str1 = sc。nextLine(); try { int aa = Integer。valueOf(str1); if (str1。length() == 6) {
str = str1;
a = 0;
} else { if (a > 1) {
System。out。println(“請您輸入6位密碼,您還有” + (a - 1) + “次機會”);
} else { break;
}
}
} catch (Exception e) { if (a > 1) {
System。out。println(“輸入格式不合法,請輸入6位數字,例如666666”);
}
}
} return str;
} public boolean method020102(String str1, String str2) { //比較兩次輸入
boolean a; if (str1。equals(str2)) {
a = true;
} else {
a = false;
} return a;
} public String sczh() { //隨機生成賬戶
String str = “”; for (int b = 0; b < 6; b++) { int a = ran。nextInt(10);
str += a;
} for (int a = 0; a < list。size(); a++) { if (str。equals(list。get(a)。getAccount())) {
System。out。println(“該賬戶以存在,請重新選擇服務編號”);
method01(); break;
}
} return str;
} public void dl() { //登入
System。out。println(“尊敬的客戶,您好,請輸入您的賬戶,您共有三次輸入機會”);
String zz;
String str; for (int a = 3; a >= 1; a——) {
str = sc。nextLine(); try { int aa = Integer。valueOf(str); if (str。length() == 6) { for (int cc = 0; cc < list。size(); cc++) { if (str。equals(list。get(cc)。getAccount())) {
System。out。println(“請輸入您的六位密碼”);
String str1 = method020101(); if (str1。equals(list。get(cc)。getCood())) {
zz = list。get(cc)。getAccount();
System。out。println(“登入成功,請選擇您需要的服務”);
fw(zz, str1);
a = 0; break;
} else {
System。out。println(“密碼輸入錯誤,請重新選擇服務編號”);
method01();
a = 0;
cc = list。size(); break;
}
} else if (!str。equals(list。get(cc)。getAccount()) && cc == list。size() - 1) {
System。out。println(“賬戶不存在,請重新輸入”);
}
}
} else { if (a > 1) {
System。out。println(“輸入錯誤,請重新輸入您的賬戶,您還有” + (a - 1) + “次機會”);
} else {
System。out。println(“您的輸入機會以用完,請重新選擇服務”);
method01();
a = 0; break;
}
}
} catch (Exception e) { if (a > 1) {
System。out。println(“輸入格式錯誤,請重新輸入您的賬戶,您還有” + (a - 1) + “次機會”);
} else {
System。out。println(“您的輸入機會以用完,請重新選擇服務”);
method01();
a = 0; break;
}
}
}
} public void fw(String account, String cood) {
System。out。println(“尊敬的客戶,您好,請選擇您需要的服務:1。修改密碼 2。存款 3。取款 4。查詢餘額 5。轉賬 0。退出”); int a = shuRu(0, 5); int b = czzh(account, cood, a); switch (a) { case 1:
fw1(account, cood, b); break; case 2:
fw2(account, cood, b); break; case 3:
fw3(account, cood, b); break; case 4:
fw4(account, cood, b); break; case 5:
fw5(account, cood, b); break; case 0:
System。out。println(“服務結束,歡迎您的下次使用”);
}
} public void fw1(String account, String cood, int b) {
System。out。println(“您確定要修改您的密碼,1、確定 2、返回”); int bb = shuRu(1, 2); switch (bb) { case 1:
System。out。println(“請輸入您的原密碼”);
String str = method020101();
boolean aa = method020102(str, cood); if (aa) {
System。out。println(“請輸入您的新密碼”);
String str1 = method020101();
System。out。println(“請確認您的新密碼”);
String str2 = method020101();
boolean a = method020102(str1, str2); if (a) {
list。get(b)。setCood(str1);
System。out。println(“您的密碼修改成功,您的新密碼為:” + str1);
fw(account, cood);
} else {
System。out。println(“您兩次輸入的密碼不同,請重新選擇服務”);
fw(account, cood);
}
} else {
System。out。println(“您的密碼輸入錯誤,請重新選擇服務”);
fw(account, cood);
} break; case 2:
fw(account, cood); break;
}
} public void fw2(String account, String cood, int b) {//不可能這個賬戶不存在,所以沒有進行判斷
System。out。println(“請輸入您要存入的金額”); int a = shuRu(100);
list。get(b)。setBalance((list。get(b)。getBalance()) + a);
System。out。println(“存款成功,您的餘額為:” + list。get(b)。getBalance());
fw(account, cood);
} public void fw3(String account, String cood, int b) {
System。out。println(“請輸入你要取出的金額”); int a = shuRu(100); if (a
list。get(b)。setBalance((list。get(b)。getBalance()) - a);
System。out。println(“取款成功,您的餘額為:” + list。get(b)。getBalance());
fw(account, cood);
} else {
System。out。println(“您的餘額不足,請確認餘額”);
fw(account, cood);
}
} public void fw4(String account, String cood, int b) {
System。out。println(“您的餘額為:” + list。get(b)。getBalance());
fw(account, cood);
} public void fw5(String account, String cood, int b) {
System。out。println(“請輸入對方的賬戶”);
String str = fw501();
boolean a = fw0502(str); if (a) {
System。out。println(“請輸入您要轉賬的金額”); int c = shuRu(100); if (c
list。get(b)。setBalance(list。get(b)。getBalance() - c);
System。out。println(“轉賬成功,您的餘額為:” + list。get(b)。getBalance());
fw(account, cood);
} else {
System。out。println(“您的餘額不足,請確認您的餘額後重試”);
fw(account, cood);
}
} else {
System。out。println(“賬戶不存在,請確認後再操作”);
fw(account, cood);
}
} public String fw501() {
String str; while (true) {
String str1 = sc。nextLine(); try { int aa = Integer。valueOf(str1); if (str1。length() == 6) {
str = str1; break;
} else {
System。out。println(“請輸入正確的六位賬戶”);
}
} catch (Exception e) {
System。out。println(“格式錯誤,請輸入正整數”);
}
} return str;
} public boolean fw0502(String str) {
boolean aa = false; for (int a = 0; a < list。size(); a++) { if (str。equals(list。get(a)。getAccount())) {
aa = true;
}
} return aa;
} public int czzh(String account, String cood, int a) { //查詢賬戶在集合中是第幾號元素
int aa = -1; for (int b = 0; b < list。size(); b++) { if (account。equals(list。get(b)。getAccount())) {
aa = b;
}
} return aa;
}
}
如有不同看法,歡迎留下您寶貴的意見!