- 編程實現:
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[10];
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);
}
}
}