Java之《ATM自動取款機》(面向對象)

《JAVA編程基礎》項目說明

一、項目名稱:

?? 基于JAVA控制臺版本銀行自動取款機

項目要求:

??? 實現銀行自動取款機的以下基本操作功能:讀卡、取款、查詢。(自動取款機中轉賬、修改密碼不作要求)

具體要求:

??? 讀卡:因不能使用真正的銀行卡,要求用戶輸入虛擬賬號,輸入密碼,程序判斷賬號密碼是否匹配,如果用戶輸入賬號密碼不匹配,提示用戶輸入不正確;如果用戶連續三次輸入錯誤,提示用戶賬號凍結。此時程序退出。

圖1:

??? 進入主界面:當用戶輸入正確的賬號密碼后,進入主取款機服務主界面。界面提示用戶可以使用的服務,如查詢、取款、轉賬(功能無需實現)、退卡。用戶可以選擇對應的服務編號,進入相應的操作界面。

圖2:

??? 取款:當用戶選擇取款,進入取款界面,提示用戶輸入取款金額。用戶輸入完畢回車,程序應該進行判斷用戶取款金額,如果取款金額在存款金額范圍之內,取款成功,并且將用戶存款更新;否則提示用戶余額不足,取款失敗。

圖3:

圖4:

??? 查詢:當用戶選擇余額查詢,顯示用戶當前可用余額。

圖5:

??? 退卡:用戶選擇退卡,則感謝用戶使用該服務,程序退出。

圖6:

其他要求:用戶在賬號密碼正確進入主界面后,只要不退卡,可以循環操作。具體循環操作次數不固定;用戶每選擇一項服務并操作完后,給出相應的提示,并提示用戶返回主界面。

二、測試代碼如下:

(1)用戶類:

package com.fs.demo;public class User {public String accountNumber;public String password;public double sum;public User(){this.accountNumber="1234";this.password="5678";this.sum=8888.0;}public User(String accountNumber,String password,double sum){this.accountNumber=accountNumber;this.password=password;this.sum=sum;}}

(2)測試類: (以下雖然能滿足項目需求,但此代碼不足。其實可以簡化:改成調用方法去處理每個模塊也能達到需求,這樣的目的就是當遇到比較大的項目時便于代碼的后期維護)

package com.fs.test;
import com.fs.demo.*;
import java.util.*;
public class Test01 {public static void main(String[] args) {Scanner sc =new Scanner(System.in);User user =new User();System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("**      請輸入你的賬號:                  **");String accountNum= sc.next();while(!accountNum.equals(user.accountNumber)){System.out.println("該賬號輸入有誤,請重新輸入正確賬號:");accountNum=sc.next();}System.out.println("**      請輸入你的密碼:                  **");String password=sc.next();int i=1;//記錄輸入錯誤密碼次數while(!password.equals(user.password)){if(i==1||i==2) {System.out.println("你已連續輸入錯誤密碼" + i + "次。若連續三次密碼輸入錯誤,該賬號將被凍結!");System.out.println("請你重新輸入正確密碼:");password = sc.next();if(!password.equals(user.password)) {i++;}}if(i==3){System.out.println("你已連續輸入錯誤密碼3次,該賬號將已被凍結!");break;}}if(accountNum.equals(user.accountNumber)&&password.equals(user.password)){System.out.println("銀行卡賬號登錄成功!");System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("**     1.查詢            2.取款          **");System.out.println("**     3.轉賬            4.退卡          **");System.out.println("請選擇您需要的服務:");int select=sc.nextInt();while(true) {if (select == 1) {System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("******** 查詢成功!!        ********");System.out.println("您查詢的賬號的總余額為:" + user.sum + "元");System.out.println();System.out.println("********返回請選擇5****************");int flag1=sc.nextInt();if(flag1==5){System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("**     1.查詢            2.取款          **");System.out.println("**     3.轉賬            4.退卡          **");System.out.println("請選擇您需要的服務:");select=sc.nextInt();}}if (select == 2) {System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("**       請輸入您要取款的金額:");double sum = sc.nextDouble();System.out.println("******** 取款成功!!        ********");System.out.println("您的賬號余額還剩:" + (user.sum - sum) + "元");System.out.println();System.out.println("********返回請選擇5****************");int flag1=sc.nextInt();if(flag1==5){System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("**     1.查詢            2.取款          **");System.out.println("**     3.轉賬            4.退卡          **");System.out.println("請選擇您需要的服務:");select=sc.nextInt();}}if (select == 3) {System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("**  請分別輸入您要轉賬的目的銀行卡的賬號和密碼:");User user1 = new User(sc.next(), sc.next(), 4000.0);System.out.println("**       請輸入您要轉賬的金額:");double sum = sc.nextDouble();System.out.println("******** 轉賬成功!!        ********");System.out.println("您的賬號余額還剩:" + (user.sum - sum) + "元");System.out.println("目的銀行卡賬號:" + user1.accountNumber + ",的余額還剩:" + (user1.sum + sum) + "元");System.out.println();System.out.println("********返回請選擇5****************");int flag1=sc.nextInt();if(flag1==5){System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("**     1.查詢            2.取款          **");System.out.println("**     3.轉賬            4.退卡          **");System.out.println("請選擇您需要的服務:");select=sc.nextInt();}}if (select == 4) {System.out.println("********歡迎使用中國民生銀行自動取款服務********");System.out.println("******** 退卡成功!!        ********");return;}}}}
}

三、代碼運行結果:

(1) 當我們的用戶輸入的賬號與ATM里實際已經注冊好的賬號不匹配時:會提示輸入賬號有誤。(當然肯定還能更細節一點,此處可以隨項目需求去補充和刪改)而且當我們輸入的密碼錯誤三次,就會自動凍結賬號。(也就是結束程序運行的進程)

(2)其他測試,四種ATM取款機提供的服務均可以使用。

?

接著上面:

?

當我們的用戶選擇退卡時:就可以提示退卡成功,并結束進程。?

四、后期還可以對它進行改善,比如需求變更、簡化代碼、異常的捕獲處理、安全權限等等很多問題。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164752.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164752.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164752.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于SSM的校園奶茶點單管理系統

基于SSM的校園奶茶點單管理系統的設計與實現~ 開發語言:Java數據庫:MySQL技術:SpringMyBatisSpringMVC工具:IDEA/Ecilpse、Navicat、Maven 系統展示 主頁 奶茶列表 登錄界面 管理員界面 用戶界面 摘要 隨著社會的發展和科技的進…

ubuntu搭建phpmyadmin+wordpress

Ubuntu搭建phpmyadmin wordpress Linux系統設置:Ubuntu 22配置apache2搭建phpmyadmin配置Nginx環境,搭建wordpress Linux系統設置:Ubuntu 22 配置apache2 安裝apache2 sudo apt -y install apache2設置端口號為8080 sudo vim /etc/apache…

paddle detection 訓練參數

#####################################基礎配置##################################### # 檢測算法使用YOLOv3,backbone使用MobileNet_v1,數據集使用roadsign_voc的配置文件模板,本配置文件默認使用單卡,單卡的batch_size=1 # 檢測模型的名稱 architecture: YOLOv3 # 根據…

【CCF-PTA】第03屆Scratch第05題 -- 統計出現次數最多的字

統計出現次數最多的字 【題目描述】 我國自古流傳下來不少膾炙人口的詩歌,各具特色,別具一格。有些詩只用寥寥幾個字,就能描繪出生動的意境。 請找出以下詩篇中出現次數最多的字,如果有多個字出現次數相同,則答案為…

Java中基于SSM框架的數據保存方法與日期處理

? 一、詳解 在SSM框架中,保存數據通常涉及到服務層和數據訪問層。服務層處理業務邏輯,而數據訪問層負責與數據庫進行交互。 二、代碼 Override public void save(Student student) { Date date new Date(); SimpleDateFormat format new Sim…

什么是LLC電路?

LLC電路是由2個電感和1個電容構成的諧振電路,故稱之為LLC; LLC電路主要由三個元件組成:兩個電感分別為變壓器一次側漏感(Lr)和勵磁電感(Lm),電容為變壓器一次側諧振電容(Cr)。這些元件構成了一個諧振回路,其中輸入電感…

【C/PTA】函數專項練習(四)

本文結合PTA專項練習帶領讀者掌握函數,刷題為主注釋為輔,在代碼中理解思路,其它不做過多敘述。 目錄 6-1 計算A[n]1/(1 A[n-1])6-2 遞歸實現順序輸出整數6-3 自然數的位數(遞歸版)6-4 分治法求解金塊問題6-5 漢諾塔6-6 重復顯示字符(遞歸版)…

字母異位詞分組

給你一個字符串數組,請你將 字母異位詞 組合在一起。可以按任意順序返回結果列表。 字母異位詞 是由重新排列源單詞的所有字母得到的一個新單詞。 示例 1: 輸入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 輸出: [[“bat”],[“nat”,“tan…

Android MemoryFile 共享內存

應用場景: 跨進程傳輸大數據,如文件、圖片等; 技術選型: 共享內存–MemoryFile; 優點: 1. 共享內存沒有傳輸大小限制,所以和應用總的分配內存一樣(512MB)&#xff1…

Java 根據文件名獲取文件類型

比如文件名是“測試文件.png”,則獲取的文件類型就是 png 直接上一個通用的方法,拿去直接就能用。 // 比如入參文件名是“測試文件.png”,則出參就是 pngprivate String getFileSuffix(String fileName) {String[] fileStr fileName.split(&…

educoder中共享單車之數據可視化

第1關:繪制地圖 <%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%> <html> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&…

專用設備上的SD卡插入電腦想讀取數據,提示要格式化?

環境&#xff1a; Win10 專業版 車載感應數據專用SD卡 問題描述&#xff1a; 專用設備上的SD&#xff0c;現在把SD卡從設備取出&#xff0c;用讀卡器插入電腦提示要格式化&#xff1f; 解決方案&#xff1a; 1.先進入PE查看SD分區情況&#xff0c;SD格式為ext4 查看文件…

lombok中使用@Builder構造器模式時的默認值問題

這里寫自定義目錄標題 問題case原因解決方案 文章參考來源&#xff1a;https://chenyongjun.vip/articles/107 問題case Lombok 使用廣泛&#xff0c;這里分享一個 Lombok Builder 小 case&#xff0c;今天自己踩了坑。 Data Builder public class User {private String name…

MLP 有哪些可學習的參數

多層感知機&#xff08;MLP&#xff09;的參數是需要在訓練過程中學習的。MLP是一種前饋神經網絡&#xff0c;其結構包括輸入層、多個隱藏層和輸出層。在訓練過程中&#xff0c;MLP通過反向傳播算法來調整網絡的權重&#xff0c;以最小化預測值與實際值之間的誤差。 MLP的學習…

安卓開發——Android Studio常見報錯與解決方法

1. No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-android 這個錯誤是由于較新版本的NDK的./toolchains目錄中沒有arm-linux-androideabi文件&#xff0c;解決辦法是從舊的NDK版本里面復制到自己的NDK的版本里面&#xff0c;就可以了。 打…

WSL登錄時提示nsenter: cannot open /proc/320/ns/time: No such file or directory的解決辦法

在登錄 WSL 的 Ubuntu 時&#xff0c;不僅要求 root 權限&#xff0c;還登錄失敗&#xff0c;提示“nsenter: cannot open /proc/320/ns/time: No such file or directory”。 解決辦法是在 powershell 中執行 “wsl – sudo vi /etc/profile”命令&#xff0c;刪除文件內容&a…

JavaWeb——感謝尚硅谷官方文檔

JavaWeb——感謝尚硅谷官方文檔 XML一、xml簡介二、xml的語法1、文檔申明2、xml注釋3、xml元素4、xml屬性5、xml語法規則 三、xml解析技術1、使用dom4j解析xml Tomcat一、JavaWeb的概念二、web資源的分類三、常見的web服務器四、Tomcat的使用1、安裝2、Tomcat的目錄介紹3 啟動T…

初識Java 18-3 泛型

目錄 邊界 通配符 編譯器的能力范疇 逆變性 無界通配符 捕獲轉換 本筆記參考自&#xff1a; 《On Java 中文版》 邊界 在泛型中&#xff0c;邊界的作用是&#xff1a;在參數類型上增加限制。這么做可以強制執行應用泛型的類型規則&#xff0c;但還有一個更重要的潛在效果…

如何在AD的PCB板做矩形槽孔以及如何倒圓弧角

Altium Designer 22下載安裝教程-CSDN博客 如何在AD上創建完整的項目-CSDN博客 開始前&#xff0c;請先安裝后AD&#xff0c;并創建好項目。 目錄 1. 如何在AD的PCB板做矩形槽孔 2. 如何在AD的PCB板倒圓弧角 1. 如何在AD的PCB板做矩形槽孔 首先&#xff0c;我們進入上面創…

PTA 7-9 堆棧操作合法性

7-9 堆棧操作合法性 分數 20 全屏瀏覽題目 作者 DS課程組 單位 浙江大學 假設以S和X分別表示入棧和出棧操作。如果根據一個僅由S和X構成的序列&#xff0c;對一個空堆棧進行操作&#xff0c;相應操作均可行&#xff08;如沒有出現刪除時棧空&#xff09;且最后狀態也是棧空…