我的Java语言学习日志1_"简单的银行管理系统实现"
程序员文章站
2022-06-23 22:38:28
设计步骤:注意:本篇代码,直接建两个类( Bank_Account、BankManage)在BankManage往里面填方法就行。是为了让和我一样自学朋友可以更快的接受。但是代码优化的空间还是很大的(比如判断ID合法性完全可以写成一个方法,由于是为了学习打的代码,全是用的逻辑语,以后有空再改改吧), ......
设计步骤:
注意:本篇代码,直接建两个类( bank_account、bankmanage)在bankmanage往里面填方法就行。是为了让和我一样自学朋友可以更快的接受。但是代码优化的空间还是很大的(比如判断id合法性完全可以写成一个方法,由于是为了学习打的代码,全是用的逻辑语,以后有空再改改吧),望使用的朋友可以融汇贯通下。运行在最后的accounttest测试类中。
欢迎思考型的白嫖党,拒绝拿来主义的伸手党!
一、总体架构:
(1)设计 bank_account类与bankmanage类,前者储存数据,后者实现方法
注意:从(3)bankmanage类主体之后的代码均为可以直接单独用的方法,每个方法中可以单独拿出来的部分我也没有优化,是最独立的,可以直接看(当然方法调用是离不开方法的,稍微看下,应该能懂吧,都有注释)
目录:
- bank_account类:
- bankmanage类主体
- 管理员登录方法
- 主界面方法
- 返回主页面的方法
- 显示所有账户的方法
- 添加账户的方法
- 存钱的方法
- 取钱的方法
- 转账的方法
- 修改密码的方法
- 注销账户的方法
- accounttest测试类
二、实现代码
(2) bank_account类:
package com.chen.bankmanager; public class bank_account { string aname; //账户名 float balance; //账户余额 int password; //账户密码 int aid; //账户id bank_account[] accounts = new bank_account[3]; public void inputaccounts(){ //为测试显示账户功能,预存部分 for (int i=0;i<accounts.length;i++) { accounts[i]=new bank_account(); //对象数组使用前必须实例化 accounts[i].aname="预存账户"; accounts[i].aid=i+1; accounts[i].password=666; accounts[i].balance=0; } } }
(3)bankmanage类主体(其他方法往里面挨个填即可):
在这里插入代码片 package com.chen.bankmanager; import java.lang.reflect.array; import java.util.arrays; import java.util.scanner; public class bankmanager extends bank_account { }
(4)管理员登录方法:
//管理员登录页面 public void registerinterface(){ int password = 666; int i=2; scanner input =new scanner(system.in); system.out.println("=============="); system.out.println("您好,管理员登陆前请输入密码:"); int inpassword = input.nextint(); if(inpassword==password){ inputaccounts(); system.out.println("登陆成功"); fristinterface(); }else { do { system.out.println("密码错误:还有" + i + "机会"); if(i==0){ system.out.println("系统锁死!"); break; } inpassword = input.nextint(); if(inpassword==password){ break; } i--; }while (i>=0); if(inpassword==password) { inputaccounts(); system.out.println("登陆成功"); fristinterface(); //主页面的方法 } } }
(5)主界面方法:
//主界面 public void fristinterface(){ scanner input=new scanner(system.in); system.out.println("=============="); system.out.println("0、显示所有账户"); system.out.println("1、添加用户"); system.out.println("2、存钱"); system.out.println("3、取钱"); system.out.println("4、转账"); system.out.println("5、修改密码"); system.out.println("6、销户"); system.out.println("=============="); system.out.println("请选择:"); int x=input.nextint(); if(x==0) { showallaccountinfo(); //显示所有账户的方法 }else if(x==1) { addaccountinfo(); //增加账户的方法 }else if(x==2){ saveaccountmoney(); //存钱的方法 }else if(x==3){ getmoney(); //取钱的方法 }else if(x==4){ transmoney(); //转钱的方法 }else if(x==5){ updatepwd(); //改密码的方法 }else if(x==6){ deletepwd(); //删除账户的方法 } }
(6)返回主页面的方法
public void back(){ scanner input =new scanner(system.in); system.out.println("=========================="); system.out.println("返回用户界面0:"); int x = input.nextint(); if (x==0) { fristinterface(); } }
(7)显示所有账户的方法
//显示所有账户方法 public void showallaccountinfo(){ for(int i=0;i<accounts.length;i++){ if(accounts[i]!=null) { system.out.print("编号:" + (i + 1)); system.out.print(" 账户名:" + accounts[i].aname); system.out.print(" 账户id:" + accounts[i].aid); system.out.print(" 账户密码:" + accounts[i].password); system.out.print(" 账户余额:" + accounts[i].balance); system.out.println(); } } back(); }
(8)添加账户的方法
//添加账户的方法 public void addaccountinfo(){ scanner input =new scanner(system.in); system.out.println("================"); system.out.println("请输入新账号id(请勿输入1,2,3):"); int inputid=input.nextint(); //判断合法性 for (int i=0;i<accounts.length;i++) { if(inputid==accounts[i].aid){ system.out.println("已存在账户,不允许开户!非法操作,退出程序"); system.exit(0); } } system.out.println("账户合法,继续执行:"); int flag=0; //判断数组十分有空位 //处理数组有空位时的录入 for (int i=0;i<accounts.length;i++) { if(accounts[i]==null) { flag=1; system.out.println("请输入账户名:"); accounts[i].aname=input.next(); accounts[i].aid=inputid; system.out.println("请输入账户密码:"); accounts[i].password=input.nextint(); system.out.println("请输入账户余额:"); accounts[i].balance=input.nextfloat(); break; } } //处理没有空位时 if(flag==0) { bank_account[] new_accounts= new bank_account[accounts.length+20]; system.arraycopy(accounts,0,new_accounts,0,accounts.length); for (int i=accounts.length;i<new_accounts.length;i++) { if (new_accounts[i]==null) { new_accounts[i] = new bank_account(); system.out.println("请输入账户名:"); new_accounts[i].aid = inputid; new_accounts[i].aname = input.next(); system.out.println("请输入账户密码:"); new_accounts[i].password = input.nextint(); system.out.println("请输入账户余额:"); new_accounts[i].balance = input.nextfloat(); break; } } accounts=new_accounts; } back(); }
(9)存钱的方法
//存钱代码 public void saveaccountmoney(){ scanner input= new scanner(system.in); system.out.println("请输入需要存钱的账户id:"); int intputid=input.nextint(); int flag=0; int j=1;//记录下标 do { //整体循环 for (int i = 0; i < accounts.length; i++) { //确定合法性 if (intputid == accounts[i].aid) { flag = 1; j = i + 1; break; } } if (flag == 0) { //错误情况解决 system.out.println("不存在此账户,请重输(0)或返回(1):"); int x = input.nextint(); if (x == 0) intputid = input.nextint(); else if (x==1) { fristinterface(); break; } }else { //正确情况 do { system.out.println("请输入金额:"); float money = input.nextfloat(); if (money<=0){ //金额判断 system.out.println("输入金额不合法!重新输入:"); }else { system.out.println("请输入密码:"); int password=input.nextint(); if (password==accounts[j-1].password){ //密码判断 accounts[j-1].balance+=money; system.out.println("余额为:"+accounts[j-1].balance); back(); }else { system.out.println("密码错误!你还有1次机会:"); password=input.nextint(); if(password!=accounts[j-1].password){ system.out.println("密码错误!关闭程序!"); system.exit(0); }else { accounts[j-1].balance+=money; system.out.println("余额为:"+accounts[j-1].balance); back(); } } } }while (j!=0); } }while(j!=0); }
(10)取钱的方法
//取钱代码 public void getmoney(){ scanner input= new scanner(system.in); system.out.println("请输入需要取钱的账户id:"); int intputid=input.nextint(); int flag=0; int j=1;//记录下标 do { //整体循环 for (int i = 0; i < accounts.length; i++) { //确定合法性 if (intputid == accounts[i].aid) { flag = 1; j = i + 1; break; } } if (flag == 0) { //错误情况解决 system.out.println("不存在此账户,请重输(0)或返回(1):"); int x = input.nextint(); if (x == 0) intputid = input.nextint(); else if (x==1) { fristinterface(); break; } }else { //正确情况 do { system.out.println("请输入金额:"); float money = input.nextfloat(); if (money>accounts[j-1].balance){ //金额判断 system.out.println("余额仅剩:"+accounts[j-1].balance+" 重新输入:"); }else { system.out.println("请输入密码:"); int password=input.nextint(); if (password==accounts[j-1].password){ //密码判断 accounts[j-1].balance-=money; system.out.println("余额为:"+accounts[j-1].balance); back(); }else { system.out.println("密码错误!你还有1次机会:"); password=input.nextint(); if(password!=accounts[j-1].password){ system.out.println("密码错误!关闭程序!"); system.exit(0); }else { accounts[j-1].balance-=money; system.out.println("余额为:"+accounts[j-1].balance); back(); } } } }while (j!=0); } }while(j!=0); }
(11)转账的方法
//转账代码 public void transmoney(){ scanner input=new scanner(system.in); int j=1; //发起下标记录 int l=1; //接受下标记录 int flag01 =0; //发起账户目标 int flag02 =0; //目标账户 system.out.println("请先输入转账账户id:"); int inputid01=input.nextint(); //发起账户 do { for (int i=0;i<accounts.length;i++){ //判断合法性 if (accounts[i].aid==inputid01) { flag01=1; j=i+1; break; } } if(flag01==1){ system.out.println("合法账户,请继续输入对方账户:"); int inputid02=input.nextint(); for (int i=0;i<accounts.length;i++){ //判断合法性 if (accounts[i].aid==inputid02) { flag02=1; l=i+1; break; } } if(flag02==1){ //正确情况下金额输入 system.out.println("请输入金额:"); do{ float money=input.nextfloat(); if(money>accounts[j-1].balance){ system.out.println("金额超值,剩余:"+accounts[j-1].balance+"请重新输入:"); }else { //成功状态下密码输入 system.out.println("请输入密码:"); int password=input.nextint(); if(password!=accounts[j-1].password){ system.out.println("密码错误,你还有一次机会:"); password=input.nextint(); if(password!=accounts[j-1].password){ system.out.println("密码错误,程序结束!"); system.exit(0); } else { //密码二次正确情况 accounts[j-1].balance-=money; accounts[l-1].balance+=money; system.out.println("账户剩余:"+accounts[j-1].balance); system.out.println("对方账户剩余:"+accounts[l-1].balance); back(); } }else { //密码一次正确的情况 accounts[j-1].balance-=money; accounts[l-1].balance+=money; system.out.println("账户剩余:"+accounts[j-1].balance); system.out.println("对方账户剩余:"+accounts[l-1].balance); back(); } } }while (j!=0); }else{ //目标账户错误 system.out.println("账户不存在,请确认后再次登录:"); back(); } }else { system.out.println("账户不存在,请重新输入(0)或者返回(1):"); int x= input.nextint(); if (x==0){ inputid01=input.nextint(); }else { fristinterface(); } } }while(j!=0); }
(12)修改密码的方法
//修改密码 public void updatepwd(){ scanner input = new scanner(system.in); system.out.println("请输入需要改密的账户id:"); int inputid = input.nextint(); int flag=0; int j=1; //账户下标 do { for (int i = 0; i < accounts.length; i++) { if (inputid == accounts[i].aid) { //id找到 flag = 1; j=i+1; break; } } if(flag==0){ system.out.println("账户有误,重新输入:"); inputid = input.nextint(); }else{ //id正确的情况 system.out.println("合法账户,输入原密码:"); int password01=input.nextint(); if(password01==accounts[j-1].password){ //密码正确,输入新密码 do { system.out.println("请输入新密码:"); int password02=input.nextint(); system.out.println("请再次输入新密码:"); int password03=input.nextint(); if(password02==password03&&password02!=password01){ //密码核对 accounts[j-1].password=password02; system.out.println("密码修改成功!"); back(); }else if(password02==password01){ system.out.println("新密码不能和旧密码相同,请重新输入:"); }else if(password02!=password03){ system.out.println("两次密码不同请重新输入:"); } }while (j!=0); }else{ system.out.println("密码错误,程序终止!"); system.exit(0); } } }while (j!=0); }
(13)注销账户的方法
//注销账户代码 public void deletepwd(){ system.out.println("请输入需要删除的账户id:"); scanner input = new scanner(system.in); int inputid=input.nextint(); int flag = 0; int j=1; //下标记录 for (int i = 0; i < accounts.length; i++) { //测试id合法性 if (inputid == accounts[i].aid) { flag = 1; j=i+1; break; } } if(flag==1){ system.out.println("合法账户,请输入密码:"); int password = input.nextint(); if(password==accounts[j-1].password) //密码通过 { for(int i=j-1;i<accounts.length-1;i++){ accounts[i]=accounts[i+1]; } accounts=arrays.copyof(accounts,accounts.length-1); system.out.println("删除成功"+(j-1)); back(); }else { system.out.println("密码错误!程序终止!"); system.exit(0); } }else { system.out.println("账户不存在!"); back(); } }
(14)accounttest测试类
package com.chen.bankmanager; public class accounttest extends bankmanager{ public static void main(string[] arg){ bankmanager bank = new bankmanager(); bank.registerinterface(); } }