0


java 课程设计——银行管理系统

银行管理系统(java)

环境
idea2020
jdk1.8

能实现的功能:
1.注册账户
2.登录
3.查询账户信息
4.存款
5.取款
6.向另一个账户转账
7.修改账户密码
8.注销账户

项目结构

项目结构

项目演示

1.主页面:

在这里插入图片描述
2.注册账号:
(1)输入用户名,密码,确认密码,取现额度。
(2)当两次密码输入不一致,系统提示重新输入,直到两次输入一致才能完成账户注册。
(3)卡号由系统随机生成一串8位数字,生成的卡号不会不重复。
(4)完成账户注册后,切换到主菜单,接下来进行登录操作。
在这里插入图片描述
3.登录界面
(1)当系统中没有账户时,不能登录(为了测试方便,首先写好了一个账户在代码中,可以删除或者注销账户后测试):
在这里插入图片描述
(2)注册账户后登录:登录时验证卡号,密码,任何输入错误都会提示重新输入,直到输入正确后才能登录进操作菜单。
没有任何错误的登录:
在这里插入图片描述
有错误的登录:
在这里插入图片描述
4.操作主菜单有7个功能
(1)查询:显示登录账号的卡号,用户名,余额,取现额度。
在这里插入图片描述
(2)存款:输入存款金额,并且将存款后的账户信息重新输出出来。
在这里插入图片描述

(3)取款:输入取款金额,判断是否超过单次限额?判断是否超过余额?并且给出相应的提示信息,直到能取出钱,取出钱后给出取款后账户信息。
在这里插入图片描述

(4)向另一个账户转账:前提是必须已经有了有两个账户
没有两个账户
在这里插入图片描述
有两个账户:依次验证对方卡号是否正确?验证对方姓/姓名?转账金额是否小于余额?
都验证成功后才完成转账操作,最后提示当前账户余额。
在这里插入图片描述

(5)修改账户密码:验证原始密码,成功后输入两次新密码必须相同,验证成功后设置新密码,设置完成后自动退出账户,回到主菜单,需要重新登录才能继续操作。
在这里插入图片描述

(6)退出:退出账号,回到主菜单界面。
在这里插入图片描述

(7)注销账户:将当前账户(对象)从对象集合中删除。
销户不成功的情况:没有输入y,账户还有余额
在这里插入图片描述
销户成功:账户余额为0,确认销户后,再一次登录卡号已经不存在。
在这里插入图片描述

全部代码:

1.定义账户类Account:用于存储账户的基本信息

publicclassAccount{/**
     * 成员变量
     */privateStringCardId;//卡号privateStringUserName;//用户名privateStringPassword;//登录密码privatedouble money;//余额privatedouble quotaMoney;//取钱额度publicAccount(){}publicAccount(String cardId,String userName,String password,double quotaMoney){CardId= cardId;UserName= userName;Password= password;this.quotaMoney = quotaMoney;}publicAccount(String cardId,String userName,String password,double money,double quotaMoney){CardId= cardId;UserName= userName;Password= password;this.money = money;this.quotaMoney = quotaMoney;}publicStringgetCardId(){returnCardId;}publicvoidsetCardId(String cardId){CardId= cardId;}publicStringgetUserName(){returnUserName;}publicvoidsetUserName(String userName){UserName= userName;}publicStringgetPassword(){returnPassword;}publicvoidsetPassword(String password){Password= password;}publicdoublegetMoney(){return money;}publicvoidsetMoney(double money){this.money = money;}publicdoublegetQuotaMoney(){return quotaMoney;}publicvoidsetQuotaMoney(double quotaMoney){this.quotaMoney = quotaMoney;}}

2.定义自助银行类ATMSystem类:用于完成银行的各种功能

importjavafx.scene.transform.Scale;importjava.util.ArrayList;importjava.util.Random;importjava.util.Scanner;publicclassATMSystem{publicstaticvoidmain(String[] args){//创建一个集合对象,存储账户信息ArrayList<Account> accounts =newArrayList<>();//为了测试方便,写好的一个账户信息(以下三行可以删除)Scanner sc=newScanner(System.in);Account account=newAccount("12345678","123","123",0,100);
        accounts.add(account);//主菜单while(true){System.out.println("-----------欢迎来到ATM系统----------------");System.out.println("1.登录账号");System.out.println("2.注册账号");System.out.print("请选择你的操作:");int command=sc.nextInt();switch(command){case1:login(accounts,sc);break;case2:register(accounts,sc);break;default:System.out.println("输入命令不存在");}}}/**
     * 注册
     * @param accounts
     * @param sc
     */privatestaticvoidregister(ArrayList<Account> accounts,Scanner sc){System.out.println("===============欢迎进入开户界面=====================");System.out.print("请输入用户名:");String userName = sc.next();String password =null;String password1 =null;while(true){System.out.print("请输入密码:");
            password = sc.next();System.out.print("请确认密码:");
            password1 = sc.next();if(password.equals(password1)){break;}else{System.out.println("两次密码不一致,请重新输入");}}System.out.print("请设置当日取现额度:");Double quotaMoney = sc.nextDouble();//随机8位不重复账号(独立方法)String cardId=getRandomId(accounts);Account account=newAccount(cardId,userName,password,quotaMoney);
        accounts.add(account);System.out.println("恭喜你"+userName+"先生/女士,开户成功,您的卡号为:"+cardId);}/**
     * 生成随机8位不重复账号
     * @param accounts
     * @return
     */privatestaticStringgetRandomId(ArrayList<Account> accounts){Random r=newRandom();while(true){String cardId="";for(int i =0; i <8; i++){
                cardId+=r.nextInt(10);//0-9}Account acc =getAccountByCardId(accounts, cardId);if(acc==null){//卡号没有重复return cardId;}else{returnnull;}}}/**
     * 根据卡号判断是否存在账户
     * @param accounts
     * @param cardId
     * @return
     */privatestaticAccountgetAccountByCardId(ArrayList<Account> accounts,String cardId){for(int i =0; i < accounts.size(); i++){Account a=accounts.get(i);if(a.getCardId().equals(cardId)){return a;}}returnnull;//查无此账号!}/**
     * 用户登录
     * @param accounts
     * @param sc
     */privatestaticvoidlogin(ArrayList<Account> accounts,Scanner sc){//登录System.out.println("===============欢迎进入登录界面=====================");if(accounts.size()==0){System.out.println("该系统中无任何账户,请先开户");return;//结束这个方法}while(true){System.out.print("请输入卡号:");String cardId= sc.next();//根据卡号找账户对象存在?Account acc=getAccountByCardId(accounts,cardId);if(acc!=null){//卡号存在while(true){System.out.print("请输入密码:");String password= sc.next();if(acc.getPassword().equals(password)){System.out.println("恭喜你!"+acc.getUserName()+"登录成功!"+"卡号:"+acc.getCardId());//查询,转账,取款功能showCommand(accounts,acc,sc);return;//干掉登录方法//break;}else{System.out.println("密码错误!请重新输入");}}// break;}else{System.out.println("该账户卡号不存在!");}}}/**
     * 登陆后的操作界面
     * @param accounts
     * @param acc
     * @param sc
     */privatestaticvoidshowCommand(ArrayList accounts,Account acc,Scanner sc){//操作界面while(true){System.out.println("===============登陆成功欢迎进入用户操作界面=====================");System.out.print("1.查询");System.out.print("2.存款");System.out.print("3.取款");System.out.print("4.转账");System.out.print("5.修改密码");System.out.print("6.退出");System.out.print("7.注销当前账户");System.out.print("请选择你的操作:");int command1=sc.nextInt();switch(command1){case1:query(acc);//展示break;case2:depositMoney(acc,sc);//存钱break;case3:drawMoney(acc,sc);//取钱break;case4:zhuanzhang(accounts,acc,sc);//转账break;case5:updatePassword(acc,sc);//修改密码return;//重新登录case6:System.out.println("退出成功,欢迎下次光临");return;//干掉当前show方法case7:if(deleteAccount(accounts,acc,sc)){;//销户return;}else{break;}default:System.out.println("输入命令不存在");}}}/**
     * 展示账户信息
     * @param acc
     */privatestaticvoidquery(Account acc){System.out.println("===============您的账户信息如下===============");System.out.println("卡号:"+acc.getCardId());System.out.println("姓名:"+acc.getUserName());System.out.println("余额:"+acc.getMoney());System.out.println("当日取现额度"+acc.getQuotaMoney());}/**
     * 存款
     * @param acc
     */privatestaticvoiddepositMoney(Account acc,Scanner sc){System.out.println("======================存钱=========================");System.out.print("请输入存款金额:");
        acc.setMoney(sc.nextDouble()+acc.getMoney());System.out.println("存款成功!");query(acc);}/**
     * 取钱
     * @param acc
     * @param sc
     */privatestaticvoiddrawMoney(Account acc,Scanner sc){System.out.println("======================取钱=========================");if(acc.getMoney()<100){System.out.println("账户余额小于100元,不能取出");return;}else{while(true){System.out.print("请输入要取款的金额:");double money = sc.nextDouble();if(money > acc.getQuotaMoney()){//超过单次超过限额System.out.println("超过单次限额,每次最多取款 "+ acc.getQuotaMoney()+"元");}else{if(money > acc.getMoney()){//超过余额System.out.println("账户余额不足,账户余额为"+acc.getMoney()+"元");}else{System.out.println("取款"+money+"成功");
                        acc.setMoney(acc.getMoney()- money);query(acc);return;//干掉这个方法}}}}}/**
     * 转账:必须有>=两个账户
     * @param
     * @param acc
     * @param sc
     */privatestaticvoidzhuanzhang(ArrayList accounts,Account acc,Scanner sc){System.out.println("======================转账=========================");//1.自己有钱?if(accounts.size()<2){System.out.println("当前系统账户不足2个,无法转账");return;}//有两个账户?if(acc.getMoney()==0){System.out.println("自己都没钱,就别转了");return;}while(true){System.out.print("请输入对方卡号:");String cardId = sc.next();if(acc.getCardId().equals(cardId)){System.out.print("无法向自己账户转钱!");continue;//结束当前执行,死循环进入下一次}Account a=getAccountByCardId(accounts,cardId);//这个卡号存在?if(a==null){System.out.print("不存在该账户,请重新输入:");}else{//存在String userName = a.getUserName();String after = userName.substring(1);while(true){System.out.print("您当前将为*"+after+"转账!请输入姓氏确认:");String before=sc.next();if(userName.startsWith(before)){//if(userName.substring(0,1).equals(before)){System.out.println("账户验证成功");while(true){System.out.print("请输入转账金额:");Double money=sc.nextDouble();if(money>acc.getMoney()){System.out.print("余额不足,您当前余额为"+acc.getMoney()+"。  ");}else{
                                acc.setMoney(acc.getMoney()- money);
                                a.setMoney(a.getMoney()+ money);System.out.println("转账成功!您的账户余额为"+acc.getMoney());return;}}}else{System.out.println("验证失败!请重新输入");}}}}}/**
     * 改密码
     * @param acc
     * @param sc
     */privatestaticvoidupdatePassword(Account acc,Scanner sc){System.out.println("====================修改密码=========================");while(true){System.out.print("请输入原始密码:");String oldPassword = sc.next();if(acc.getPassword().equals(oldPassword)){while(true){System.out.print("请输入新密码");String newPassword = sc.next();System.out.print("请确认新密码");String newPassword1 = sc.next();if(newPassword.equals(newPassword1)){
                        acc.setPassword(newPassword);System.out.println("密码修改成功!请重新登录");return;}else{System.out.println("两次输入不一致!");}}}else{System.out.print("输入的原密码输入错误,");}}}/**
     * 注销(删除)账户
     * @param accounts
     * @param acc
     * @param sc
     */privatestaticbooleandeleteAccount(ArrayList accounts,Account acc,Scanner sc){System.out.println("====================注销账户=========================");System.out.print("您真的要销户吗?y/n");String next = sc.next();switch(next){case"y":if(acc.getMoney()>0){System.out.println("您的账户还有"+acc.getMoney()+"元,不予许销户");}else{System.out.println("账户销户完成!");
                    accounts.remove(acc);returntrue;}break;default:System.out.println("账户继续保留!");}returnfalse;}}

还有可以改进的地方比如:转账限额没判断,都是一样的。
看不懂可以联系qq:2559347978交流

标签: java 前端 服务器

本文转载自: https://blog.csdn.net/qq_46026355/article/details/125729286
版权归原作者 qq_46026355 所有, 如有侵权,请联系我们删除。

“java 课程设计——银行管理系统”的评论:

还没有评论