標籤:編號 ado 工商銀行 提示資訊 png int 餘額 als 密碼
編程實現:
a) 使用者類:帳號(int)、姓名(String)、密碼(int:6位元字)、地址(String)、存款餘額(double)、註冊時間(date)、開戶行(與銀行的名稱對應,String)
b) 地址類:國家(String)、省份(String)、街道(String)、門牌號(String)
c) 銀行類:能儲存100個使用者的庫([ ])、本銀行名稱(比如:中國工商銀行的昌平支行,String)
i. 銀行功能
添加使用者(傳入參數:使用者,傳回值:整型值(1:成功,2:使用者已存在,3:使用者庫已滿))
a) 商務邏輯:先檢查該使用者的帳號在庫裡是否存在。若不存在則在使用者庫裡添加一個該使用者並返回代號1,若存在則返回代號2。另外在添加使用者的時候檢測使用者庫是否登入滿,若已滿則返回代號3
存錢(傳入值:使用者的帳號,存取的金額。傳回值:布爾類型值)
a) 商務邏輯:先根據傳入的帳號資訊查詢使用者庫裡是否有該使用者。若沒有則返回false,若有,則將該使用者的金額存進去。
取錢(傳入值:使用者的帳號,使用者密碼,取錢金額。傳回值:整型值(0:正常,1:帳號不存在,2:密碼不對,3:錢不夠))
a) 商務邏輯:先根據帳號資訊來查詢該使用者是否存在,若不存在,則返回代號1,若存在,則繼續判斷密碼是否正確,若不正確,則返回代號2。若帳號密碼都正確,則繼續判斷目前使用者的金額是否滿足要取出的錢,若不滿足,則返回代號3,若滿足,則將該使用者的金額減去。
轉賬(傳入值:轉出的帳號,轉入的帳號,轉出帳號的密碼,轉出的金額。傳回值:0:正常,1:帳號不對,2密碼不對,3錢不夠)
a) 商務邏輯:先查詢使用者庫是否存在轉出和轉入的帳號,若不存在則返回代號,1,若帳號都存在則繼續判斷轉出帳號的密碼是否正確,若不正確,則返回2,若正確則繼續判斷要轉出的金額是否足夠,若不夠則返回3,否則正常轉出,轉出的帳號金額要相對應的減少,轉入的金額相對應的增加。
查詢賬戶功能(傳入值:帳號,帳號密碼,傳回值:空)
a) 商務邏輯:先根據帳號判斷使用者庫是否存在該使用者,若不存在則列印提示資訊:該不存在。否則繼續判斷密碼是否正確。若不正確則列印相對應的錯誤資訊。若帳號和密碼都正確,則將該使用者的資訊都列印出來,比如:當前帳號:xxxx,密碼:xxxxxx,餘額:xxxx元,使用者居住地址:xxxxxxxxxxxxx,當前賬戶的開戶行:xxxxxxxxxx.
d) 介面類:在執行該入口程式時,就列印銀行業務選擇菜單:比如:
i.
ii. 然後就開始處理各種輸入操作,直到業務處理完成!
答案:
1、地址類
class Address{
private String country;//國家
private String province;//省份
private String street;//街道
private String id;//門排號
public Address(){}public Address(String country,String province,String street,String id){ this.country = country; this.province = province; this.street = street; this.id = id;}public void setCountry(String country){ this.country = country;}public String getCountry(){ return this.country;}public void setProvince(String province){ this.province = province;}public String getProvince(){ return this.province;}public void setStreet(String street){ this.street = street;}public String getStreet(){ return this.street;}public void setId(String id){ this.id = id;}public String getId(){ return this.id;}
}
2、使用者類
class User{
private int code;//帳號
private String name;//姓名
private int password;//密碼
private Address address;//地址
private double money;//存款餘額
private Date date;//註冊時間
private String openBankName;//開戶行
public User(){}public User(int code,String name,int password,Address address,double money,Date date,String openBankName){ this.code = code; this.name = name; this.password = password; this.address = address; this.money = money; this.date = date; this.openBankName = openBankName;}public void setCode(int code){ this.code = code;}public int getCode(){ return this.code;}public void setName(String name){ this.name = name;}public String getName(){ return this.name;}public void setPassword(int password){ this.password = password;}public int getPassword(){ return this.password;}public void setAddress(Address address){ this.address = address;}public Address getAddress(){ return this.address;}public void setMoney(double money){ this.money = money;}public double getMoney(){ return this.money;}public void setDate(Date date){ this.date = date;}public Date getDate(){ return this.date;}public void setOpenBankName(String openBankName){ this.openBankName = openBankName;}public String getOpenBankName(){ return this.openBankName;}
}
3、銀行類
class Bank{
private String bankName ;
static User[] users = new User[100];//銀行裡的使用者庫public Bank(){}public Bank(String bankName){ this.bankName = bankName;}public void setBankName(String bankName){ this.bankName = bankName;}public String getBankName(){ return this.bankName;}/** 檢查使用者是否存在*/public boolean checkUser(int code){ for (User u : users){ if (u != null){ if (u.getCode() == code){ return true; } } } return false;}/** 檢查使用者是否已滿*/public boolean isFullUser(){ for (User user : users){ if (user == null){ return false; } } return true;}/** 檢查使用者和密碼是否正確*/public boolean checkUserAndPassword(int userCode, int password){ if (checkUser(userCode)){ for (User u : users){ if (u.getCode() == userCode){ if (u.getPassword() == password){ return true; } } } } return false;}/** 檢查錢是否夠*/public boolean checkMoney(int userCode,double money){ for (User u : users){ if (u.getCode() == userCode){ if (u.getMoney() >= money){ return true; }else{ break; } } } return false;}/** 添加使用者的方法*/public int addUser(User user){ if (checkUser(user.getCode())){ return 2; }else if (isFullUser()){ return 3; }else{ for (int i = 0;i < users.length ; i++){ if (users[i] == null){ users[i] = user; return 1;
// break;
}
}
}
return 1;
}
/** 存錢方法*/public boolean saveMoney(int userCode,double money){ if (!checkUser(userCode)){ return false; }else{ for (User u : users){ if (u.getCode() == userCode){ u.setMoney(u.getMoney() + money); } } } return true;}/** 取錢方法*/public int takeMoney(int userCode,int password,double takeMoney){ if (!checkUser(userCode)){ return 1; }else if (!checkUserAndPassword(userCode,password)){ return 2; }else if (!checkMoney(userCode,takeMoney)){ return 3; }else{ for (User u : users){ if (u.getCode() == userCode){ u.setMoney(u.getMoney() - takeMoney); break; } } } return 0;}/** 轉賬方法*/public int transferMoney(int outCode,int inCode,int outpassword,double outMoney){ if (!checkUser(outCode) && checkUser(inCode)){ return 1; }else if (!checkUserAndPassword(outCode,outpassword)){ return 2; }else if (!checkMoney(outCode,outMoney)){ return 3; }else{ saveMoney(inCode,outMoney); takeMoney(outCode,outpassword,outMoney); } return 0;}/** 查詢賬戶*/public void selectUser(int userCode,int password){ if (!checkUser(userCode)){ System.out.println("該使用者不存在!"); }else if (!checkUserAndPassword(userCode,password)){ System.out.println("密碼錯誤!"); }else{ User u = null; Address address = null; for (User user : users){ if (user.getCode() == userCode){ u = user; address = u.getAddress(); break; } } System.out.println("當前賬戶為:\t" + u.getName() + "\n帳號為:" + userCode + "\n密碼:" + password + "\n餘額:" + u.getMoney() + "\n使用者當前居住地址:\t" + address.getCountry() + address.getProvince() + "市" + address.getStreet() + address.getId() + "號!"); }}
}
4、頁面類比類
class Page{
public static void welcomePage(){
System.out.println("**");
System.out.println(" 中國工商銀行 ");
System.out.println(" 賬戶管理系統 ");
System.out.println(" V1.0 ");
System.out.println("**");
System.out.println(" 1.開戶 ");
System.out.println(" 2.存錢 ");
System.out.println(" 3.取錢 ");
System.out.println(" 4.轉賬 ");
System.out.println(" 5.查詢 ");
System.out.println(" 6.bye! ");
System.out.println("**");
}
}
5、具體的測試類別
import java.util.Date;
import java.util.Scanner;
public class Demo{
private static Scanner sc = new Scanner(System.in);
private static Bank bank = new Bank("中國工商銀行沙河支行");
public static void main(String[] args){
Page.welcomePage();
System.out.print("請輸入業務編號:");
int num = sc.nextInt();
if (num == 1){
System.out.print("請輸入賬戶號:");
int code = sc.nextInt();
System.out.print("\n請輸入使用者名稱:");
String name = sc.next();
System.out.print("\n請輸入密碼:");
int password = sc.nextInt();
System.out.print("\n請輸入輸入居住的地址,首先輸入國家:");
String country = sc.next();
System.out.print("\n請輸入省份:");
String province = sc.next();
System.out.print("\n請輸入街道:");
String street = sc.next();
System.out.print("\n請輸入門牌號:");
String id = sc.next();
System.out.print("\n請輸入您的賬戶的初始餘額:");
double money = sc.nextDouble();
Address address = new Address(country,province,street,id); User user = new User(code,name,password,address,money,new Date(),bank.getBankName()); int n = bank.addUser(user); if (n == 2){ System.out.println("對不起,您輸入的賬戶已存在,無法開戶,請帶好證件到營業廳視窗辦理!"); }else if (n == 3){ System.out.println("對不起,當前銀行的使用者數已滿,請到其他銀行辦理業務!"); }else if (n == 1){ System.out.println("恭喜你,開戶成功下面是您的開戶資訊:"); bank.selectUser(code,password); } }else if (num == 2){ }else if (num == 3){ }else if (num == 4){ }else if (num == 5){ }else if (num == 6){ System.out.println("Bye~~"); System.exit(0); }}
}
java物件導向練習---銀行業務類比(數組+物件導向)