面向对象模拟银行管理系统(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;
private static long
j = 610000000;
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();
//存储和输出过程,将以上输入的正确数据存储到相应的数组中
DebitAcc(i,na,perId,em,key,bal);
if(ch==1){
DebitAcc
De
=
new
ban.add(De);
System.out.println
("恭喜你开户成功:你的卡号为" + i);
}else if(ch==2){
i++;
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
//卡号不存在进行的操作
System.out.println("该卡号不存在,是否重新输入:
1、继续 2、返回上一级");
int c =lo.nextInt();
if(c==1){
continue l;
}else{
}
return;
}
}
}else {
for(int j =0;j