首页IT科技基于java银行管理系统开题报告(java 课程设计——银行管理系统)

基于java银行管理系统开题报告(java 课程设计——银行管理系统)

时间2025-04-30 06:51:21分类IT科技浏览3592
导读:银行管理系统(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:用于存储账户的基本信息

public class Account { /** * 成员变量 */ private String CardId;//卡号 private String UserName;//用户名 private String Password;//登录密码 private double money;//余额 private double quotaMoney;//取钱额度 public Account() { } public Account(String cardId, String userName, String password, double quotaMoney) { CardId = cardId; UserName = userName; Password = password; this.quotaMoney = quotaMoney; } public Account(String cardId, String userName, String password, double money, double quotaMoney) { CardId = cardId; UserName = userName; Password = password; this.money = money; this.quotaMoney = quotaMoney; } public String getCardId() { return CardId; } public void setCardId(String cardId) { CardId = cardId; } public String getUserName() { return UserName; } public void setUserName(String userName) { UserName = userName; } public String getPassword() { return Password; } public void setPassword(String password) { Password = password; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } public double getQuotaMoney() { return quotaMoney; } public void setQuotaMoney(double quotaMoney) { this.quotaMoney = quotaMoney; } }

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

import javafx.scene.transform.Scale; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class ATMSystem { public static void main(String[] args) { //创建一个集合对象   ,存储账户信息 ArrayList<Account> accounts =new ArrayList<>(); //为了测试方便           ,写好的一个账户信息(以下三行可以删除) Scanner sc=new Scanner(System.in); Account account=new Account("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){ case 1: login(accounts,sc); break; case 2: register(accounts,sc); break; default: System.out.println("输入命令不存在"); } } } /** * 注册 * @param accounts * @param sc */ private static void register(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=new Account(cardId,userName,password,quotaMoney); accounts.add(account); System.out.println("恭喜你"+userName+"先生/女士,开户成功                  ,您的卡号为:"+cardId); } /** * 生成随机8位不重复账号 * @param accounts * @return */ private static String getRandomId(ArrayList <Account> accounts) { Random r=new Random(); 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{ return null; } } } /** * 根据卡号判断是否存在账户 * @param accounts * @param cardId * @return */ private static Account getAccountByCardId(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; } } return null;//查无此账号! } /** * 用户登录 * @param accounts * @param sc */ private static void login(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 */ private static void showCommand(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){ case 1: query(acc);//展示 break; case 2: depositMoney(acc,sc);//存钱 break; case 3: drawMoney(acc,sc);//取钱 break; case 4: zhuanzhang(accounts,acc,sc);//转账 break; case 5: updatePassword(acc,sc);//修改密码 return;//重新登录 case 6: System.out.println("退出成功         ,欢迎下次光临"); return;//干掉当前show方法 case 7: if(deleteAccount(accounts,acc,sc)){;//销户 return; }else{ break; } default: System.out.println("输入命令不存在"); } } } /** * 展示账户信息 * @param acc */ private static void query(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 */ private static void depositMoney(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 */ private static void drawMoney(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 */ private static void zhuanzhang(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 */ private static void updatePassword(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 */ private static boolean deleteAccount(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); return true; } break; default: System.out.println("账户继续保留!"); } return false; } }

还有可以改进的地方比如:转账限额没判断   ,都是一样的                 。

看不懂可以联系qq:2559347978交流

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
wordpress采集手机壁纸(WordPress文章采集工具:让你轻松搞定内容更新) 易优商城(易优CMS:打造专属网站的最佳选择)