Java實(shí)現(xiàn)簡(jiǎn)單控制臺(tái)版ATM系統(tǒng)
本文實(shí)例為大家分享了Java實(shí)現(xiàn)簡(jiǎn)單控制臺(tái)版ATM系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
ATM系統(tǒng)項(xiàng)目
ATM系統(tǒng)要實(shí)現(xiàn)的功能
1.查詢(xún):賬號(hào)必須存在,密碼(三次機(jī)會(huì),不對(duì)就鎖卡)
2.取款:賬號(hào)必須存在,密碼(三次機(jī)會(huì),不對(duì)就鎖卡),取款金額不能大于存款
3.存款:賬號(hào)必須存在,存款金額不能低于0
4.轉(zhuǎn)帳:你的賬戶(hù),轉(zhuǎn)款賬戶(hù)都必須存在,密碼(三次機(jī)會(huì),不對(duì)就鎖卡),轉(zhuǎn)賬金額不能超過(guò)余額
5.鎖卡:賬號(hào)必須存在,使用密碼凍結(jié)
6.解卡:賬號(hào)必須存在,只能使用身份證號(hào)進(jìn)行解鎖
7.補(bǔ)卡:使用身份證進(jìn)行補(bǔ)卡
8.改密:愿密碼進(jìn)行改密,也可以使用身份證進(jìn)行改密
9.退出: 保存數(shù)據(jù)
項(xiàng)目分析
可分為四個(gè)對(duì)象,第一個(gè) 銀行卡對(duì)象(Card 存儲(chǔ)銀行卡信息);第二個(gè) 用戶(hù)對(duì)象(Person 存儲(chǔ)用戶(hù)信息);第三個(gè) 功能對(duì)象( Controller 具體的操作功能類(lèi));視圖對(duì)象( Views 顯示操作界面)。從而可分為四個(gè)類(lèi)
代碼
Card類(lèi)
封裝卡的屬性(卡號(hào),密碼,余額,鎖卡狀態(tài))
public class Card { ? ?//封裝卡的屬性 ? ?private String cardid; ? ?private String password; ? ?private double money; ? ?private boolean islock; ? ?//設(shè)置封裝的各屬性的set、get方法 ? ?public String getCardid() { ?? ?return cardid; ? ?} ? ?public void setCardid(String cardid) { ?? ?this.cardid = cardid; ? ?} ? ?public String getPassword() { ?? ?return password; ? ?} ? ?public void setPassword(String password) { ?? ?this.password = password; ? ?} ? ?public double getMoney() { ?? ?return money; ? ?} ? ?public void setMoney(double money) { ?? ?this.money = money; ? ?} ? ?public boolean isIslock() { ?? ?return islock; ? ?} ? ?public void setIslock(boolean islock) { ?? ?this.islock = islock; ? ?} ? ? ? ?//重寫(xiě) to String方法 ? ?@Override ?? ?public String toString() { ?? ??? ?return "Card [cardid=" + cardid + ", password=" + password + ", money=" + money + ", islock=" + islock + "]"; ?? ?} ?? ? ?? ?//構(gòu)造卡的無(wú)參和有參構(gòu)造方法 ? ?? ?public Card() { ?? ??? ?super(); ?? ??? ? ?? ?} ?? ??? ? ?? ?public Card(String cardid, String password, double money, boolean islook) { ?? ??? ?super(); ?? ??? ?this.cardid = cardid; ?? ??? ?this.password = password; ?? ??? ?this.money = money; ?? ??? ?this.islock = islock; ?? ?} ? ? }
Person類(lèi)
封裝用戶(hù)信息(用戶(hù)名,身份證號(hào),手機(jī)號(hào)碼,卡)
public class Person { ?? ?private String name; ?? ?private String userid; ?? ?private String phone; ?? ?private Card[] card; ?? ? ?? ?//設(shè)置封裝的各屬性的set、get方法 ?? ?public String getName() { ?? ??? ?return name; ?? ?} ?? ?public void setName(String name) { ?? ??? ?this.name = name; ?? ?} ?? ?public String getUserid() { ?? ??? ?return userid; ?? ?} ?? ?public void setUserid(String userid) { ?? ??? ?this.userid = userid; ?? ?} ?? ?public String getPhone() { ?? ??? ?return phone; ?? ?} ?? ?public void setPhone(String phone) { ?? ??? ?this.phone = phone; ?? ?} ?? ?public Card[] getCard() { ?? ??? ?return card; ?? ?} ?? ?public void setCard(Card[] card) { ?? ??? ?this.card = card; ?? ?} ?? ??? ? ?? ?//重寫(xiě) to String方法 ?? ?@Override ?? ?public String toString() { ?? ??? ?return "Person [name=" + name + ", userid=" + userid + ", phone=" + phone + ", card=" + card+ "]"; ?? ?} ?? ?//構(gòu)造無(wú)參和有參方法 ? ?? ?public Person() { ?? ??? ?super(); ?? ?} ?? ? ?? ?public Person(String name, String userid, String phone, Card[] card) { ?? ??? ?super(); ?? ??? ?this.name = name; ?? ??? ?this.userid = userid; ?? ??? ?this.phone = phone; ?? ??? ?this.card = card; ?? ?}?? ? }
Controller類(lèi)
創(chuàng)建三個(gè)默認(rèn)賬戶(hù)信息,并構(gòu)造操作方法
public class Controller { ? ? ?Scanner sc = new Scanner(System.in); ? ? ?Card c = new Card() ; //生成卡 ? ? ? ? ? ?//創(chuàng)建三組信息 ? ? ?Card c1 = new Card("1","666666",1000,false); ?//默認(rèn)賬戶(hù)1 ? ? ?Card c2 = new Card("2","666666",1500,false); ?//默認(rèn)賬戶(hù)2 ? ? ?Card c3 = new Card("3","666666",1800,false); ?//默認(rèn)賬戶(hù)3 ? ? ?public void regiser(String name,String userid,String phone,Card[] card) { ? ? ?? ? //將Person類(lèi)的屬性賦給對(duì)象p ? ? ?? ? Person p = new Person(name,userid,phone,card); ? ?? ?? ? ? ?} ? ? ? ? ? ?public void query(Person p) { ? ? ?? ?? ? ? ?? ? System.out.println(p); ? ? ?} ? ? ? ? ? ?public boolean verify(String cardid,String password) { ? ? ?? ? if(cardid.equals("1")&&password.equals("666666")) { ?//如果輸入的是賬戶(hù)1的賬戶(hù)密碼,就得到賬戶(hù)1屬性 ? ? ?? ??? ? c.setMoney(c1.getMoney()); ? ? ?? ??? ? c.setPassword(c1.getPassword()); ? ? ?? ??? ?? ? ? ?? ??? ? if(!c.isIslock()) { ? ? ? //判斷賬戶(hù)1是否被鎖 ? ? ?? ??? ??? ? return true; ? ? ?? ??? ? }else { ? ? ?? ??? ??? ? System.out.println("抱歉,該卡已被鎖"); ? ? ?? ??? ??? ? return false; ? ? ?? ??? ? } ? ? ?? ? } ? ? ?? ?? ? ? ?? ? if(cardid.equals("2")&&password.equals("666666")) { //如果輸入的是賬戶(hù)2的賬戶(hù)密碼,就得到賬戶(hù)2屬性 ? ? ? ? ? ? ?c.setMoney(c2.getMoney()); ? ? ? ? ? ? ?c.setPassword(c2.getPassword()); ? ? ?? ??? ?? ? ? ? ? ? ? ?//判斷該卡是否被鎖 ? ? ?? ??? ? if(!c.isIslock()) { ? ? //判斷賬戶(hù)2是否被鎖 ? ? ?? ??? ??? ? return true; ? ? ?? ??? ? } ? ? ?? ? } ? ? ?? ?? ? ? ?? ? if (cardid.equals("3")&&password.equals("666666")) { //如果輸入的是賬戶(hù)3的賬戶(hù)密碼,就得到賬戶(hù)3屬性 ? ? ?? ??? ? c.setMoney(c3.getMoney()); ? ? ?? ??? ? c.setPassword(c3.getPassword()); ? ? ?? ??? ?? ? ? ?? ??? ? if(!c.isIslock()) { ? ? ? ?//判斷賬戶(hù)3是否被鎖 ? ? ?? ??? ??? ? return true; ? ? ?? ??? ? } ? ? ?? ? } ? ? ?? ?? ? ? ?? ? return false; ? ? ? //一個(gè)賬戶(hù)信息都沒(méi)對(duì)上,重新輸入 ? ? ?? ?? ? ? ?} ? ? ?? ? ? ? ?//構(gòu)造查詢(xún)方法 ? ? ?public void query(String cardid) { ? ? ?? ?? ? ? ?? ? if(cardid.equals("1")) { ? ? ? ? ? ? ? ? ? ? ? ? ? //查詢(xún)賬戶(hù)1 ? ? ?? ??? ? System.out.println(c.getMoney()); ? ? ?? ? }else if(cardid.equals("2")) { ? ? ? ? ? ? ? ? ? ? //查詢(xún)賬戶(hù)2 ? ? ?? ??? ? System.out.println(c.getMoney()); ? ? ?? ? }else if(cardid.equals("3")) { ? ? ? ? ? ? ? ? ? ? //查詢(xún)賬戶(hù)3 ? ? ?? ??? ? System.out.println(c.getMoney()); ? ? ?? ? }else { ? ? ?? ??? ? System.out.println("輸入有誤"); ? ? ?? ? } ? ? ?? ?? ? ? ?} ? ? ? ? ? ?//構(gòu)造取錢(qián)方法 ? ? ?public void putMoney() { ? ? ?? ? System.out.print("請(qǐng)輸入需要取出的金額(將金額再確認(rèn)一遍):"); ? ? ?? ? double money = sc.nextDouble(); ? ? ?? ?//判斷錢(qián)夠不夠 ? ? ?? ? if(money<=c.getMoney()) { ? ? ?? ??? ? money = c.getMoney()-money; ? ? ?? ??? ? c.setMoney(money); ? ? ? ? ? ? ? ? ? ? ? ?//錢(qián)夠取出并更新賬戶(hù)余額 ? ? ?? ??? ? System.out.println("已取出"+sc.nextDouble()+"元"); ? ? ?? ??? ? System.out.println("賬戶(hù)余額為:"+money+"元"); ? ? ?? ? }else { ? ? ?? ??? ? System.out.println("對(duì)不起,賬戶(hù)余額不足"); ? ? ?? ? } ? ? ?} ? ? ? ??? ?//構(gòu)造存錢(qián)方法 ??? ?public void addMoney() { ??? ??? ?System.out.println("請(qǐng)將紙幣放于存鈔口(將金額再確認(rèn)一遍)"); ??? ??? ?double money = sc.nextDouble(); ??? ??? ? money = c.getMoney()+money; ??? ??? ?c.setMoney(money); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //存錢(qián)并更新賬戶(hù)余額 ? ? ? ??? ??? ? ??? ??? ?System.out.println("已存入"+sc.nextDouble()+"元"); ?? ??? ?System.out.println("賬戶(hù)余額為:"+money+"元"); ?? ??? ? ??? ??? ? ??? ?} ? ? ? ? ?//構(gòu)造轉(zhuǎn)錢(qián)方法 ? ? ?public void saveMoney() { ? ? ?? ? System.out.println("請(qǐng)輸入需要轉(zhuǎn)入賬戶(hù)名:"); ? ? ?? ? String name = sc.next(); ? ? ?? ? System.out.print("請(qǐng)輸入轉(zhuǎn)入金額(將金額再確認(rèn)一遍):"); ? ? ?? ? double money = sc.nextDouble(); ? ? ?? ?? ? ? ?? ? //判斷錢(qián)夠不夠 ? ? ?? ? if(c.getMoney()>=money) { ? ? ?? ??? ? money = c.getMoney()-money; ? ? ?? ??? ? c.setMoney(money); ? ? ? ? ? ? ? ? ? ? ? ? ? ? //錢(qián)夠轉(zhuǎn)錢(qián) 更新賬戶(hù)余額 ? ? ?? ??? ? System.out.println("已轉(zhuǎn)出"+sc.nextDouble()+"元"); ? ? ?? ??? ? System.out.println("賬戶(hù)余額為:"+money+"元"); ? ? ?? ? }else { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//錢(qián)不夠返回 ? ? ?? ??? ? System.out.println("對(duì)不起,賬戶(hù)余額不足"); ? ? ?? ? } ? ? ?} ? ? ? ? ? ?//構(gòu)造鎖卡方法 ? ? ?public void lock() { ? ? ?? ? c.setIslock(true); ? ? ?? ? System.out.println("該卡已被鎖"); ? ? ?} ? ? ? ? ? ?//構(gòu)造解卡方法 ? ? ?public void unlock() { ? ? ?? ? c.setIslock(false); ? ? ?? ? System.out.println("該卡可正常使用"); ? ? ?} ? ? ? ? ? ?//構(gòu)造補(bǔ)卡方法 ? ? ?public void newCard() { ? ? ?? ? System.out.println("請(qǐng)輸入您的姓名:"); ? ? ?? ? String name = sc.nextLine(); ? ? ?? ? ? ? ?? ? System.out.println("請(qǐng)輸入您的身份證號(hào)碼:"); ? ? ?? ? String userid = sc.nextLine();? ? ? ?? ? ? ? ?? ? Person p = new Person(name,userid,null,null); ? ? ? ?? ?? ? ? ?? ?? ? ? ?? ? System.out.println("請(qǐng)輸入重辦賬戶(hù)號(hào)碼:"); ? ??? ?? ? ? ?? ? String cardid = sc.nextLine(); ? ? ?? ?? ? ? ?? ? System.out.println("請(qǐng)輸入要設(shè)置的密碼(數(shù)字):"); ? ? ?? ? String ?password = sc.nextLine(); ? ? ? ? ? ?? ? //限制密碼位數(shù) ? ? ?? ? if(password.length()==6) { ? ? ?? ??? ? System.out.println("密碼設(shè)置成功"); ? ? ?? ? }else { ? ? ?? ??? ? System.out.println("密碼限制6位,請(qǐng)重新選擇功能"); ? ??? ??? ?? ? ? ?? ? } ? ? ?? ?? ? ? ?} ? ?? ?? ? ? ? ? ? ?//構(gòu)造改密方法 ? ? ?public void changePwd() { ? ? ?? ? System.out.println("請(qǐng)輸入密碼:"); ? ? ?? ? String password = sc.next(); ? ? ?? ?? ? ? ?? ? if(password.equals(c.getPassword())){ ? ? ?? ??? ? System.out.println("請(qǐng)輸入更改后的密碼:"); ? ? ?? ??? ? String newpassword = sc.next(); ? ? ?? ??? ? System.out.println("再輸入一次密碼:"); ? ? ?? ??? ? String newpassword1 = sc.next(); ? ? ?? ??? ?? ? ? ?? ? ? ?if(newpassword.equals(newpassword1)) { ? ? ?? ??? ? System.out.println("密碼修改成功!"); ? ? ?? ??? ? c.setPassword(newpassword1); ? ? ?? ? ? ?}else { ? ? ?? ??? ? System.out.println("兩次密碼輸入不一致,請(qǐng)重新輸入"); ? ? ?? ??? ? changePwd(); ? ? ?? ? ? ?} ? ? ? ?}else { ? ?? ? ? ?? ? ? System.out.println(c.getPassword()); ? ? ?? ? ? System.out.println("密碼輸入錯(cuò)誤"); ? ? ? ?} ? ? ?} ? ? ? ? ? ?//構(gòu)造退出方法 ? ? ?public void save() { ? ? ?? ? System.exit(0); ? ? ?} }
View類(lèi)
實(shí)現(xiàn)歡迎界面以及各操作界面
public class View { ?? ?Scanner s = new Scanner(System.in); ?? ?private int count = 3; ?? ?Card c =new Card(); ? ? Controller co = new Controller(); ?? ? ? ? public static void main(String[] args) { ?? ??? ?View v = new View(); ?? ??? ?v.show(); ?? ?} ?? ? ? ? public void show() { ?? ??? ?System.out.println("=============歡迎使用使用本行存取一體機(jī)============="); ?? ??? ?System.out.println("請(qǐng)輸入卡號(hào):"); ?? ??? ?String cardid = s.nextLine(); ?? ??? ? ?? ??? ?System.out.println("請(qǐng)輸入密碼:"); ?? ??? ?String ?password =s.nextLine(); ?? ??? ? ?? ??? ?//登錄界面,賬戶(hù)密碼錯(cuò)三次就鎖卡 ?? ??? ?if(!co.verify(cardid, password)) { ?? ??? ??? ?count--; ?? ??? ??? ?if(count == 0) { ?? ??? ??? ??? ?co.lock(); ? //調(diào)用lock ?? ??? ??? ??? ?System.out.println("密碼輸入錯(cuò)誤"+c.isIslock()); ?? ??? ??? ??? ?System.out.println("請(qǐng)重新輸入:"); ?? ??? ??? ?} ?? ??? ??? ? ?? ??? ??? ?System.out.println("你還有"+count+"次輸入機(jī)會(huì),"); ?? ??? ??? ?System.out.println("輸入機(jī)會(huì)用完后,將會(huì)鎖卡"); ?? ??? ??? ?show(); ?? ??? ?} ?? ??? ?//如果賬戶(hù)密碼正確就進(jìn)入功能界面 ?? ??? ?if(co.verify(cardid, password)) { ?? ??? ??? ?while(true) { ?? ??? ??? ??? ?System.out.println("請(qǐng)按相應(yīng)的序號(hào)選擇功能:1.取款 ? ?2.存款 ? ?3.查詢(xún)余額 ? ?4.轉(zhuǎn)賬 ? 5.修改密碼 ? ?6.鎖卡 ? ?7.解卡 ? 8.補(bǔ)卡 ?9.退出"); ?? ??? ??? ??? ? ?? ??? ??? ??? ?switch(s.nextInt()) { ?? ??? ??? ??? ?case 1: ? //取款 ?? ??? ??? ??? ??? ?co.putMoney(); ?? ??? ??? ??? ? ? ?break; ?? ??? ??? ??? ?case 2: ?//存錢(qián) ?? ??? ??? ??? ??? ?co.addMoney(); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?case 3: ?//查詢(xún) ?? ??? ??? ??? ??? ?co.query(cardid); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?case 4: ?//轉(zhuǎn)錢(qián) ?? ??? ??? ??? ??? ?co.saveMoney(); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?case 5: ?//改密 ?? ??? ??? ??? ??? ?co.changePwd(); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?case 6: ?//鎖卡 ?? ??? ??? ??? ??? ?co.lock(); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?case 7: ?//解卡 ?? ??? ??? ??? ??? ?co.unlock(); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?case 8: ?//補(bǔ)卡 ?? ??? ??? ??? ??? ?co.newCard(); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?case 9: ?//退出 ?? ??? ??? ??? ??? ?System.out.println("感謝使用,歡迎下次光臨"); ?? ??? ??? ??? ??? ?co.save(); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ? ?? ??? ??? ??? ?default: ?//輸入指令錯(cuò)誤 ?? ??? ??? ??? ??? ?System.out.println("輸入有誤"); ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?} ?? ?} }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java實(shí)現(xiàn)基礎(chǔ)銀行ATM系統(tǒng)
- Java基于控制臺(tái)界面實(shí)現(xiàn)ATM系統(tǒng)
- Java簡(jiǎn)單實(shí)現(xiàn)銀行ATM系統(tǒng)
- java實(shí)現(xiàn)簡(jiǎn)單銀行ATM系統(tǒng)
- Java實(shí)現(xiàn)ATM系統(tǒng)超全面步驟解讀建議收藏
- Java實(shí)現(xiàn)銀行ATM系統(tǒng)
- java模擬實(shí)現(xiàn)銀行ATM機(jī)操作
- 用Java實(shí)現(xiàn)簡(jiǎn)單ATM機(jī)功能
- java方法實(shí)現(xiàn)簡(jiǎn)易ATM功能
- 基于Java開(kāi)發(fā)實(shí)現(xiàn)ATM系統(tǒng)
相關(guān)文章
Java并發(fā)實(shí)例之CyclicBarrier的使用
這篇文章主要介紹了Java并發(fā)實(shí)例之CyclicBarrier的使用,涉及CyclicBarrier的介紹,以及相關(guān)的并發(fā)實(shí)例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11Dwr3.0純注解(純Java Code配置)配置與應(yīng)用淺析一之零配置文件化
Dwr對(duì)我來(lái)說(shuō)最重要的功能點(diǎn)就是反向Ajax調(diào)用,通俗來(lái)將就是后端可以直接調(diào)用前端的JS方法(只要在所能訪問(wèn)的范圍內(nèi)),這也就是Dwr的真正來(lái)由,當(dāng)然它也有最基本的前端直接調(diào)用后端的特性,省去了我們經(jīng)常的一般Ajax調(diào)用2016-04-04java數(shù)字和中文算數(shù)驗(yàn)證碼的實(shí)現(xiàn)
這篇文章主要介紹了java數(shù)字和中文算數(shù)驗(yàn)證碼的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07SpringBoot實(shí)戰(zhàn)之SSL配置詳解
今天小編就為大家分享一篇關(guān)于SpringBoot實(shí)戰(zhàn)之SSL配置詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02Java中四種訪問(wèn)控制權(quán)限解析(private、default、protected、public)
java當(dāng)中有4種訪問(wèn)修飾限定符privat、default(默認(rèn)訪問(wèn)權(quán)限),protected以及public,本文就詳細(xì)的介紹一下這四種方法的具體使用,感興趣的可以了解一下2023-05-05java實(shí)現(xiàn)簡(jiǎn)單的加減乘除計(jì)算器
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單的加減乘除計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09Java實(shí)現(xiàn)提取QSV文件視頻內(nèi)容
QSV是一種加密的視頻文件格式。是愛(ài)奇藝公司研發(fā)的一種視頻文件格式,這篇文章主要為大家介紹了如何利用Java實(shí)現(xiàn)提取QSV文件視頻內(nèi)容,感興趣的可以了解一下2023-03-03