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.查詢:賬號(hào)必須存在,密碼(三次機(jī)會(huì),不對(duì)就鎖卡)
2.取款:賬號(hào)必須存在,密碼(三次機(jī)會(huì),不對(duì)就鎖卡),取款金額不能大于存款
3.存款:賬號(hào)必須存在,存款金額不能低于0
4.轉(zhuǎn)帳:你的賬戶,轉(zhuǎn)款賬戶都必須存在,密碼(三次機(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è) 用戶對(duì)象(Person 存儲(chǔ)用戶信息);第三個(gè) 功能對(duì)象( Controller 具體的操作功能類);視圖對(duì)象( Views 顯示操作界面)。從而可分為四個(gè)類
代碼
Card類
封裝卡的屬性(卡號(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;
? ?}
? ?
? ?//重寫 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類
封裝用戶信息(用戶名,身份證號(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;
?? ?}
?? ??? ?
?? ?//重寫 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類
創(chuàng)建三個(gè)默認(rèn)賬戶信息,并構(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)賬戶1
? ? ?Card c2 = new Card("2","666666",1500,false); ?//默認(rèn)賬戶2
? ? ?Card c3 = new Card("3","666666",1800,false); ?//默認(rèn)賬戶3
? ? ?public void regiser(String name,String userid,String phone,Card[] card) {
? ? ?? ? //將Person類的屬性賦給對(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")) { ?//如果輸入的是賬戶1的賬戶密碼,就得到賬戶1屬性
? ? ?? ??? ? c.setMoney(c1.getMoney());
? ? ?? ??? ? c.setPassword(c1.getPassword());
? ? ?? ??? ??
? ? ?? ??? ? if(!c.isIslock()) { ? ? ? //判斷賬戶1是否被鎖
? ? ?? ??? ??? ? return true;
? ? ?? ??? ? }else {
? ? ?? ??? ??? ? System.out.println("抱歉,該卡已被鎖");
? ? ?? ??? ??? ? return false;
? ? ?? ??? ? }
? ? ?? ? }
? ? ?? ??
? ? ?? ? if(cardid.equals("2")&&password.equals("666666")) { //如果輸入的是賬戶2的賬戶密碼,就得到賬戶2屬性
? ? ? ? ? ? ?c.setMoney(c2.getMoney());
? ? ? ? ? ? ?c.setPassword(c2.getPassword());
? ? ?? ??? ??
? ? ? ? ? ? ?//判斷該卡是否被鎖
? ? ?? ??? ? if(!c.isIslock()) { ? ? //判斷賬戶2是否被鎖
? ? ?? ??? ??? ? return true;
? ? ?? ??? ? }
? ? ?? ? }
? ? ?? ??
? ? ?? ? if (cardid.equals("3")&&password.equals("666666")) { //如果輸入的是賬戶3的賬戶密碼,就得到賬戶3屬性
? ? ?? ??? ? c.setMoney(c3.getMoney());
? ? ?? ??? ? c.setPassword(c3.getPassword());
? ? ?? ??? ??
? ? ?? ??? ? if(!c.isIslock()) { ? ? ? ?//判斷賬戶3是否被鎖
? ? ?? ??? ??? ? return true;
? ? ?? ??? ? }
? ? ?? ? }
? ? ?? ??
? ? ?? ? return false; ? ? ? //一個(gè)賬戶信息都沒對(duì)上,重新輸入
? ? ?? ??
? ? ?}
? ? ?? ?
? ? ?//構(gòu)造查詢方法
? ? ?public void query(String cardid) {
? ? ?? ??
? ? ?? ? if(cardid.equals("1")) { ? ? ? ? ? ? ? ? ? ? ? ? ? //查詢賬戶1
? ? ?? ??? ? System.out.println(c.getMoney());
? ? ?? ? }else if(cardid.equals("2")) { ? ? ? ? ? ? ? ? ? ? //查詢賬戶2
? ? ?? ??? ? System.out.println(c.getMoney());
? ? ?? ? }else if(cardid.equals("3")) { ? ? ? ? ? ? ? ? ? ? //查詢賬戶3
? ? ?? ??? ? System.out.println(c.getMoney());
? ? ?? ? }else {
? ? ?? ??? ? System.out.println("輸入有誤");
? ? ?? ? }
? ? ?? ??
? ? ?}
? ? ?
? ? ?//構(gòu)造取錢方法
? ? ?public void putMoney() {
? ? ?? ? System.out.print("請(qǐng)輸入需要取出的金額(將金額再確認(rèn)一遍):");
? ? ?? ? double money = sc.nextDouble();
? ? ?? ?//判斷錢夠不夠
? ? ?? ? if(money<=c.getMoney()) {
? ? ?? ??? ? money = c.getMoney()-money;
? ? ?? ??? ? c.setMoney(money); ? ? ? ? ? ? ? ? ? ? ? ?//錢夠取出并更新賬戶余額
? ? ?? ??? ? System.out.println("已取出"+sc.nextDouble()+"元");
? ? ?? ??? ? System.out.println("賬戶余額為:"+money+"元");
? ? ?? ? }else {
? ? ?? ??? ? System.out.println("對(duì)不起,賬戶余額不足");
? ? ?? ? }
? ? ?}
? ? ?
??? ?//構(gòu)造存錢方法
??? ?public void addMoney() {
??? ??? ?System.out.println("請(qǐng)將紙幣放于存鈔口(將金額再確認(rèn)一遍)");
??? ??? ?double money = sc.nextDouble();
??? ??? ? money = c.getMoney()+money;
??? ??? ?c.setMoney(money); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //存錢并更新賬戶余額 ? ? ?
??? ??? ?
??? ??? ?System.out.println("已存入"+sc.nextDouble()+"元");
?? ??? ?System.out.println("賬戶余額為:"+money+"元"); ?? ??? ?
??? ??? ?
??? ?}
? ? ?
? ?//構(gòu)造轉(zhuǎn)錢方法
? ? ?public void saveMoney() {
? ? ?? ? System.out.println("請(qǐng)輸入需要轉(zhuǎn)入賬戶名:");
? ? ?? ? String name = sc.next();
? ? ?? ? System.out.print("請(qǐng)輸入轉(zhuǎn)入金額(將金額再確認(rèn)一遍):");
? ? ?? ? double money = sc.nextDouble();
? ? ?? ??
? ? ?? ? //判斷錢夠不夠
? ? ?? ? if(c.getMoney()>=money) {
? ? ?? ??? ? money = c.getMoney()-money;
? ? ?? ??? ? c.setMoney(money); ? ? ? ? ? ? ? ? ? ? ? ? ? ? //錢夠轉(zhuǎn)錢 更新賬戶余額
? ? ?? ??? ? System.out.println("已轉(zhuǎn)出"+sc.nextDouble()+"元");
? ? ?? ??? ? System.out.println("賬戶余額為:"+money+"元");
? ? ?? ? }else { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//錢不夠返回
? ? ?? ??? ? System.out.println("對(duì)不起,賬戶余額不足");
? ? ?? ? }
? ? ?}
? ? ?
? ? ?//構(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à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類
實(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();
?? ??? ?
?? ??? ?//登錄界面,賬戶密碼錯(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();
?? ??? ?}
?? ??? ?//如果賬戶密碼正確就進(jìn)入功能界面
?? ??? ?if(co.verify(cardid, password)) {
?? ??? ??? ?while(true) {
?? ??? ??? ??? ?System.out.println("請(qǐng)按相應(yīng)的序號(hào)選擇功能:1.取款 ? ?2.存款 ? ?3.查詢余額 ? ?4.轉(zhuǎn)賬 ? 5.修改密碼 ? ?6.鎖卡 ? ?7.解卡 ? 8.補(bǔ)卡 ?9.退出");
?? ??? ??? ??? ?
?? ??? ??? ??? ?switch(s.nextInt()) {
?? ??? ??? ??? ?case 1: ? //取款
?? ??? ??? ??? ??? ?co.putMoney();
?? ??? ??? ??? ? ? ?break;
?? ??? ??? ??? ?case 2: ?//存錢
?? ??? ??? ??? ??? ?co.addMoney();
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 3: ?//查詢
?? ??? ??? ??? ??? ?co.query(cardid);
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 4: ?//轉(zhuǎ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開發(fā)實(shí)現(xiàn)ATM系統(tǒng)
相關(guān)文章
Java的Tomcat和Servlet的運(yùn)行原理詳解
這篇文章主要為大家詳細(xì)介紹了Java的Tomcat和Servlet,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03
Java實(shí)現(xiàn)冒泡排序算法及對(duì)其的簡(jiǎn)單優(yōu)化示例
這篇文章主要介紹了Java實(shí)現(xiàn)冒泡排序算法及對(duì)其的簡(jiǎn)單優(yōu)化示例,冒泡排序的最差時(shí)間復(fù)雜度為O(n^2),最優(yōu)時(shí)間復(fù)雜度為O(n),存在優(yōu)化的余地,需要的朋友可以參考下2016-05-05
Java?windows環(huán)境構(gòu)建圖文教程
這篇文章主要為大家介紹了Java?windows環(huán)境構(gòu)建圖文教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2023-12-12
Java調(diào)用Oss JDk實(shí)現(xiàn)刪除指定目錄下的所有文件
這篇文章主要為大家詳細(xì)介紹了Java如何調(diào)用Oss JDk實(shí)現(xiàn)刪除指定目錄下的所有文件功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2025-03-03
SpringBoot后端接收參數(shù)優(yōu)化代碼示例(統(tǒng)一處理前端參數(shù))
使用Spring Boot開發(fā)API的時(shí)候,讀取請(qǐng)求參數(shù)是服務(wù)端編碼中最基本的一項(xiàng)操作,下面這篇文章主要給大家介紹了關(guān)于SpringBoot后端接收參數(shù)優(yōu)化(統(tǒng)一處理前端參數(shù))的相關(guān)資料,需要的朋友可以參考下2024-07-07
Spring Security中的Servlet過(guò)濾器體系代碼分析
這篇文章主要介紹了Spring Security中的Servlet過(guò)濾器體系,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Java Web stmp發(fā)送帶附件郵件(附SSL版)
這篇文章主要為大家詳細(xì)介紹了Java Web stmp發(fā)送帶附件郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05

