<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了java實現銀行ATM管理系統的具體程式碼,供大家參考,具體內容如下
賬戶類、首頁設計
① 每個使用者一個賬戶物件,需要設計賬戶類,賬戶類至少包含(卡號、使用者名稱、餘額、取現額度、密碼)
② 需要定義一個ArrayList的集合用於儲存賬戶物件。
③ 需要展示歡迎頁包含2個功能:註冊開戶、登入賬戶。
① 開戶功能應該獨立定義成方法,並傳入當前集合物件給該方法。
public static void register(ArrayList<Account> accounts) {…}
② 需要提示使用者輸入個人資訊,開戶的卡號是系統自動生成的8位元數。
public static String createCardId(){…}
③ 注意:自動生成的卡號不能與其他使用者的卡號重複。
④ 最終把使用者開戶的資訊封裝成Account物件,存入到集合中。
分析
① 需要根據卡號去集合中查詢對應的賬戶物件。
② 如果找到了賬戶物件,說明卡號存在,繼續輸入密碼。
③ 如果密碼也正確,則登入成功。
分析
① 使用者登入成功後,需要進入使用者操作頁。
② 查詢就是直接展示當前登入成功的賬戶物件的資訊。
③ 退出賬戶是需要回到首頁的
分析
① 存款和取款都是拿到當前使用者的賬戶物件。
② 通過呼叫賬戶物件的set方法修改其餘額。
分析
① 轉賬功能要分析對方賬戶是否存在的問題。
② 還要分析自己的餘額是否足夠的問題。
分析
① 修改密碼就是把當前物件的密碼屬性使用set方法進行更新。
② 銷戶是從集合物件中刪除當前物件,並回到首頁。
輸出流
import java.util.ArrayList; import java.util.Random; import java.util.Scanner;
public class Bank { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList<Account> list = new ArrayList<>(); //首頁設計 while(true){//while死迴圈 System.out.println("========歡迎您進入萬和銀行ATM系統========"); System.out.println("1.登入賬戶"); System.out.println("2.註冊開戶"); System.out.println("請輸入命令1、2選擇對應的操作");
首頁介面選擇
//首頁介面選擇 String choice =sc.next(); switch (choice){//switch語句使輸入的指令進入不同的功能 case "1": System.out.println("========歡迎您進入萬和銀行使用者登入介面========"); login(list); break; case "2": System.out.println("========歡迎您進入萬和銀行使用者辦卡介面========"); register(list); break; case "後臺統計"://為後臺統計資料使用,主介面直接輸入「後臺統計」可以顯示系統所有成員資訊 System.out.println("========後臺統計========"); htlook(list); break; default: System.out.println("您輸入的數位有誤,請重新輸入"); } } }
1、使用者登入功能
// 1、使用者登入功能 public static void login(ArrayList<Account> list) { Scanner sc = new Scanner(System.in);//建立鍵盤錄入物件 System.out.println("請輸入您的卡號"); String idcard = sc.next(); int index = getIndex(list, idcard);//呼叫方法判斷後臺是否有該卡號 if (index == -1) { System.out.println("不存在該卡號,請重新輸入"); } else { for (int i = 0; i < list.size(); i++) { System.out.println("請您輸入您的密碼"); String password = sc.next(); if (password.equals(list.get(index).getPassword())){//如果輸入的卡號的索引index與該索引下的密碼一致則登入成功 System.out.println("萬和" + list.get(index).getUsername() +"貴賓,歡迎您進入系統,您的卡號:" + list.get(index).getId()); System.out.println(); while(true){//卡號密碼成功,進入使用者介面 System.out.println("==========歡迎您進入萬和銀行使用者操作介面=========="); 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("7 登出當前賬戶"); System.out.println("請輸入您要輸入的功能"); String choice = sc.next();//使用者輸入 switch (choice){ case "1": System.out.println("==========歡迎您進入萬和銀行使用者詳情介面========="); querymessage(list, index);//查詢個人資訊方法 break ; case "2": System.out.println("==========歡迎您進入萬和銀行使用者存款介面========="); inmoney(list, sc, index); //存款 break; case "3": System.out.println("==========歡迎您進入萬和銀行使用者取款介面========="); outmoney(list, sc, index); //取款 break; case "4": System.out.println("==========歡迎您進入萬和銀行使用者轉賬介面========="); transfer(list, sc, index);//轉賬功能 break; case "5": System.out.println("==========歡迎您進入萬和銀行使用者密碼修改介面========="); revisePassword(list, sc, index);//修改密碼 return; case "6": System.out.println("退出"); return;//結束整個方法,回到主介面 case "7"://使用者登出 System.out.println("==========歡迎您進入萬和銀行使用者登出介面========="); System.out.println("您確定要登出該賬戶?"); System.out.println("1 確定"); System.out.println("按任意鍵返回上一頁"); System.out.println("請輸入您要輸入的選項"); String choice0 = sc.next(); switch (choice0){ case "1": Account ac = list.get(index); while(true){ System.out.println("請輸入當前賬戶的密碼"); String key = sc.next(); if (key.equals(ac.getPassword())){ list.remove(index); System.out.println("登出成功,將返回主介面"); return; } } default: break; } break; } } }else { System.out.println("您輸入的密碼有誤,請確認"); } } } }
轉賬功能
//轉賬功能 private static void transfer(ArrayList<Account> list, Scanner sc, int index) { Account acc = list.get(index);//將集合list在index索引下的資料傳入acc int num = list.size();//獲取集合長度 if(num < 2){//如果集合長度小於二,不能轉賬 System.out.println("當前系統不足兩個,不能轉賬"); }else{ if(acc.getBalance() < 100){//餘額小於100,不能轉賬 System.out.println("餘額不足"); }else { while(true){ System.out.println("請輸入要轉賬的賬號"); String anotherId = sc.next(); int anotherIdIndex = getIndex(list,anotherId);//判斷賬號在系統中是否存在 if (anotherIdIndex == -1){//如果返回-1,不存在 System.out.println("您輸入的賬戶不存在,請重新確認"); }else{ Account acc1 = list.get(anotherIdIndex);//將剛剛輸入的索引下的資料傳入acc1,留作接下來修改 String name = acc1.getUsername(); char firstName = name.charAt(0);//獲取使用者名稱的姓氏 String xname = name.replace(firstName,'*');//將使用者名稱的姓氏變為*輸出 System.out.println("您當前要為" + xname + "轉賬"); System.out.println("請您輸入姓氏確認:"); String firstname = sc.next(); char chr = firstname.charAt(0);//輸入的姓氏和系統的姓氏對比 if(chr == firstName){//如果相等,都是char形式才能比較 System.out.println("輸入正確"); while(true){ System.out.println("請輸入要轉入的金額:"); double sendmoney = sc.nextDouble(); if(sendmoney < list.get(index).getEnchashment()){ System.out.println("您當前轉賬超過了當次限額!"); } else if(sendmoney > list.get(index).getBalance()){ System.out.println("您的餘額不足"); }else{ acc.setBalance(list.get(index).getBalance() - sendmoney);//對自己的金額扣錢 acc.setBalance(list.get(anotherIdIndex).getBalance() + sendmoney);//對別人的賬戶打款 System.out.println("轉賬成功"); return; } } } } } } } }
修改密碼
//修改密碼 private static void revisePassword(ArrayList<Account> list, Scanner sc, int index) { Account acc = list.get(index); while (true){ System.out.println("請您輸入當前賬戶密碼:"); String nowpassword = sc.next(); if (nowpassword.equals(acc.getPassword())){//看原來的密碼是否輸入正確 System.out.println("請您輸入新的密碼:"); String newpassword = sc.next(); list.get(index).setPassword(newpassword);//set功能將新的密碼寫入系統 System.out.println("密碼修改成功請您重新登入"); return; }else{ System.out.println("當前賬戶密碼不正確"); } } }
取款
//取款 private static void outmoney(ArrayList<Account> list, Scanner sc, int index) { Account acc = list.get(index); if (list.get(index).getBalance() < 100){ System.out.println("餘額不足100元,無法取出,請存入金額!"); }else{ while(true){ System.out.println("請輸入取款的金額"); double outmoney = sc.nextDouble(); if(outmoney < list.get(index).getEnchashment()){ System.out.println("您當前取款超過了當次限額!"); }else if(list.get(index).getBalance()- outmoney < 0){ System.out.println("您的賬戶餘額不足"); }else{ acc.setBalance(list.get(index).getBalance() - outmoney); System.out.println("您已取款成功!"); break; } } } }
查詢個人資訊方法
//查詢個人資訊方法 private static void querymessage(ArrayList<Account> list, int index) { System.out.println("您的賬戶資訊如下:"); for (int i1 = 0; i1 < list.size(); i1++) {//遍歷 Account acc = list.get(index);//將資料導進來 System.out.println("卡號:" + acc.getId()); System.out.println("姓名:" + acc.getUsername()); System.out.println("餘額:" + acc.getBalance()); System.out.println("當次取現額度:" + acc.getEnchashment()); } }
存款
//存款 private static void inmoney(ArrayList<Account> list, Scanner sc, int index) { System.out.println("請您輸入存款的金額"); double inmoney = sc.nextDouble(); Account acc = list.get(index); acc.setBalance(list.get(index).getBalance() + inmoney) ;//集合list中的值為index的索引下的餘額balance 加 剛剛存入的金額inmoney System.out.println("您已經存款成功"); }
2、使用者開戶功能
// 2、使用者開戶功能 public static void register(ArrayList<Account> list){ Scanner sc = new Scanner(System.in); System.out.println("請您輸入您的姓名:"); String username = sc.next(); String password; while(true){ System.out.println("請您輸入您的密碼:"); String password1 = sc.next(); System.out.println("請您再次確認密碼:"); String password2 = sc.next(); if (password1.equals(password2)){ password = password2; break; }else{ System.out.println("兩次密碼不一致,請重新輸入"); } } System.out.println(password); System.out.println("請設定當日取現額度:"); double enchashment = sc.nextDouble(); //自動生成八位數卡號並檢測是否重複 Random r = new Random(); String s = new String(); while(true) { for (int i = 0; i < 8; i++) { int num = r.nextInt(10); s += num; } int index = getIndex(list, s);//呼叫getIndex方法返回-1則沒有重複 if (index == -1){ break; } } //設定賬戶餘額 double balance = 0; Account acc = new Account(s,username,enchashment,password,balance); list.add(acc); System.out.println("萬和" + username + "貴賓,您的賬戶已經開卡成功,您的卡號是:" + s); }
//獲取集合中的使用者的索引and判斷集合中是否有該物件 private static int getIndex(ArrayList<Account> list, String s) { int index = -1;//假設新生成的卡號,在集合中不存在 for (int i = 0; i < list.size(); i++) {//遍歷集合,獲取每一個物件,準備進行查詢 Account ac = list.get(i);//類名 物件名 = 集合名.get(i); String idcard = ac.getId();//獲取每一個物件的學號叫id if(idcard.equals(s)){//判斷獲取過的id和新生成的s是否一樣,如果相同賦值給index index = i;//存在,讓index變數記錄物件的索引值 } } return index; } //檢視資訊(後臺統計) public static void htlook(ArrayList<Account> list){ for (int i = 0; i < list.size(); i++) { Account acc = list.get(i); System.out.println(acc.getId()+" " + acc.getEnchashment() + " " + acc.getUsername() + " " + acc.getPassword() + " " + acc.getBalance()); } } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45