面向物件銀行管理系統JAVA程式碼《上》
面向物件模擬銀行管理系統(java): 一般銀行賬戶分為:借記卡賬戶和信用卡賬戶
借記卡賬戶 DebitAccount :是指先存款後消費(或取現),沒有透支功能的銀行卡。 即儲存卡賬戶,餘額必須大於0。
信用卡賬戶 CreditAccount :信用卡是一種非現金交易付款的方式,
是簡單的信貸服務。在借記卡功能的基礎上可以透支,但是有透支額度, 即透支只能在一定的金額範圍內透支。
信用額度是指銀行在批准你的信用卡的時候給於你信用卡的一個最高透支的限額, 你只能在這個額度內刷卡消費,超過了這個額度就無法正常刷卡消費
本程式有五個類,一個賬戶父類,兩個子類賬戶(借記,信用),一個Bank類,還有一個類包含主方法
詳細程式程式碼及註釋如下:
package src.day01;
public class ACC {
//父類 ,以下是共有屬性和方法
//卡號
protected static long id;
// 名字
protected static String name;
// 身份證
protected static String personId;
//電子郵件
protected static String email;
// 密碼
protected static long password;
//餘額
protected static double balance;
public ACC(){
}
public ACC(long id,String name,String personId,String email,long password,double balance ){ this.id = id;
this.name = name;
this.personId = personId;
this.email = email;
this.password = password;
this.balance = balance;
}
// 存款方法
public static void deposit(double money){
balance += money;
System.out.println("存款成功,你存入的金額為:" + money);
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPersonId() {
return personId;
}
public void setPersonId(String personId) {
this.personId = personId;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public long getPassword() {
return password;
}
public void setPassword(long password) {
this.password = password;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
package src.day01;
import java.util.*;
public class Bank {
//先定義 兩個動態陣列,其中ban用來儲存借記卡資料,ba用來儲存信用卡資料 static Vector ban = new Vector();
static Vector ba = new Vector();
//i指借記卡卡號,每增加一個使用者,i自增1
//j指借記卡卡號,每增加一個使用者,j自增1
private static long i = {{110000000:0}};
private static long j = {{610000000:0}};
public Bank(){
}
//判斷使用者辦理借記卡還是信用卡的相關業務
public static void justy(int ch){
boolean k = true ;
while(k){
if(ch ==1){
System.out.println("你將要辦理借記卡業務:");
break;
}else if(ch ==2){
System.out.println("你將要辦理信用卡業務:");
break;
}else{
System.out.println("輸入指令錯誤,請重新輸入:");
k=false;
}
}
}
//開戶方法
public static void register(int ch){
justy(ch);
Scanner re = new Scanner(System.in);
System.out.println("請輸入開戶的使用者名稱:");
String na =re.next();
long key;
//兩次密碼不同的話迴圈 進行
p: while (true){
System.out.println("請輸入密碼:");
long pa = re.nextLong();
System.out.println("請再次輸入密碼:");
long pa1 = re.nextLong();
if(pa==pa1 ){
key = pa1;
break ;
}else{
System.out.println("兩次不相同,請重新輸入");
continue p;
}
}
System.out.println("請輸入身份證號:");
String perId = re.next();
System.out.println("請輸入email地址:");
String em = re.next();
System.out.println("請輸入開戶金額:");
double bal = re.nextDouble();
//儲存和輸出過程,將以上輸入的正確資料儲存到相應的陣列中
if(ch==1){ DebitAcc De = new DebitAcc(i,na,perId,em,key,bal);
ban.add(De);
System.out.println("恭喜你開戶成功:你的卡號為" + i);
i++;
}else if(ch==2){
CreditAcc Cr = new CreditAcc(j,na,perId,em,key,bal);
ba.add(Cr);
System.out.println("恭喜你開戶成功:你的卡號為" + j); j++;
}
System.out.println( "使用者名稱: " + na );
System.out.println("身份證:"+ perId );
System.out.println("email:" +em );
System.out.println("開戶金額:" + bal );
}
//使用者子選單
public static void MenuCu(){
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("歡迎使用銀行系統");
System.out.println("請輸入指令:1、開戶 2 、登陸 3、退出到上級"); int choice = sc.nextInt();
switch(choice){
case 1:
openAccount();
break;
case 2:
logIn();
break;
case 3:
return;
default :
System .out .println("輸入指令錯誤,請重新輸入");
break;
}
}
}
//開戶方法總方法
private static void openAccount(){
System.out.println("你將要辦理開戶業務:");
System.out.println("請輸入你要選擇的銀行卡型別: 1、借記卡 2、信用卡 ");
Scanner op = new Scanner(System.in);
int ch = op.nextInt();
register(ch);
}
//使用者登陸總方法
public static void logIn( ){
System.out.println("歡迎進入使用者登陸介面,請選擇你要登陸的卡號型別: 1、借記卡 2、 信用卡" );
boolean o = true;
boolean p =false;
Scanner lo = new Scanner(System.in);
int ch = lo.nextInt();
justy(ch);
l: while(o) {
System.out.println("請輸入你的卡號:");
long user = lo. nextLong();
if(ch==1){
//呼叫對應陣列的卡號群與輸入卡號匹配,以下同理
for(int i = 0;i<Bank.ban.size();i++){
DebitAcc d = (DebitAcc)Bank.ban.get(i);
if(user == d.id){
System.out.println("請輸入密碼:");
long password = lo.nextLong();
//對密碼進行正誤判斷,正則p為true,可向下進行,false則直接返回輸入卡號命令,即只有輸密碼一次機會
p = pass(password) ;
while(p){
d.menu1();
break;
}
}else{
//卡號不存在進行的操作
System.out.println("該卡號不存在,是否重新輸入:1、繼續2、返回上一級");
int c =lo.nextInt();
if(c==1){
continue l;
}else{
return;
}
}
}
}else {
for(int j =0;j<Bank.ba.size();j++){
CreditAcc c = (CreditAcc)Bank.ba.get(j);
if(user==c.id){
System.out.println("請輸入密碼:");
long password = lo.nextLong();
p = pass(password) ;
while(p){
c.menu1();
break;
}
}else{
System.out.println("該卡號不存在,請重新輸入:");
continue l;
}
}
}
}
}
//密碼正誤判斷方法
public static boolean pass( long password){
if(password !=DebitAcc.password){
System.out.println("密碼錯誤!重新輸入:");
return false;
}else{
return true;
}
}
//管理員操作選單
public static void menuAd(){
Scanner mc = new Scanner(System.in);
while(true){
System.out.println("歡迎使用銀行系統");
System.out.println("請輸入指令:1、檢視所有使用者餘額 2 、檢視信用卡使用者總信用額度 3、退出到上級");
int m =mc.nextInt();