最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)簡易提款機

 更新時間:2022年01月24日 15:03:31   作者:吾人為學(xué)  
這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)簡易提款機,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了vue + element ui實現(xiàn)錨點定位的具體代碼,供大家參考,具體內(nèi)容如下

需求:

簡易自動提款機

1.創(chuàng)建用戶類User(包含卡號、姓名、密碼、余額等屬性),用戶開卡時錄入的姓名和密碼(自動分配一個卡號、初始金額設(shè)置為0)。

2.使用ArrayList或LinkedList存儲全部注冊用戶

形式如:ArrayList<User> userList = new ArrayList<User>();

3.實現(xiàn)功能

(1)存款

(2)取款(如果余額不足要提示)

(3)查詢余額(只能查看當(dāng)前卡號的余額)

4. 技術(shù)要求,使用異常處理用戶的錯誤輸入(即程序保護容錯功能)。

實例:

1.創(chuàng)建自定義異常:

public class OptionsException extends RuntimeException{
?
?? ?/**
?? ? *?
?? ? */
?? ?private static final long serialVersionUID = 6307237273922255816L;
?
?? ?public OptionsException() {
?? ??? ?super();
?? ??? ?// TODO Auto-generated constructor stub
?? ?}
?
?? ?public OptionsException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
?? ??? ?super(message, cause, enableSuppression, writableStackTrace);
?? ??? ?// TODO Auto-generated constructor stub
?? ?}
?
?? ?public OptionsException(String message, Throwable cause) {
?? ??? ?super(message, cause);
?? ??? ?// TODO Auto-generated constructor stub
?? ?}
?
?? ?public OptionsException(String message) {
?? ??? ?super(message);
?? ??? ?// TODO Auto-generated constructor stub
?? ?}
?
?? ?public OptionsException(Throwable cause) {
?? ??? ?super(cause);
?? ??? ?// TODO Auto-generated constructor stub
?? ?}

?? ?
}

2.對用戶信息(卡號、姓名、密碼、余額、存款金額、取款金額)進行封裝,并對部分屬性進行異常處理:

public class User {
?
?? ?private String cardNumber;? ??
?? ?private String userName;? ??
?? ?private int code;? ??
?? ?private int balance = 0;? ??
?? ?private int deposit;?? ?//存款金額? ??
?? ?private int withdrawMoney;?? ?//取款金額
?? ?
?? ?public String getCardNumber() {
?? ??? ?return cardNumber;
?? ?}
?
?? ?public void setCardNumber(String cardNumber) {
?? ??? ?this.cardNumber = cardNumber;
?? ?}
?
?? ?public String getUserName() {
?? ??? ?return userName;
?? ?}
?
?? ?public void setUserName(String userName) {
?? ??? ?this.userName = userName;
?? ?}
?
?? ?public int getCode() {
?? ??? ?return code;
?? ?}
?
?? ?public void setCode(int code) throws OptionsException{
?? ??? ?
?? ??? ?Integer temp = (Integer) code;
?? ??? ?
?? ??? ?if(temp.toString().length() == 6){
?? ??? ??? ?this.code = code;
?? ??? ?}else{
?? ??? ??? ?throw new OptionsException("您輸入的位數(shù)有誤!");
?? ??? ?}
?? ??? ?
?? ?}
?
?? ?public int getBalance() {
?? ??? ?return balance;
?? ?}
?
?? ?public void setBalance(int balance) throws OptionsException{
?? ??? ?
?? ??? ?if(balance >= 0){
?? ??? ??? ?this.balance = balance;
?? ??? ?}else{
?? ??? ??? ?throw new OptionsException("余額不足!");
?? ??? ?}
?? ?}
?
?? ?public int getDeposit() {
?? ??? ?return deposit;
?? ?}
?
?? ?public void setDeposit(int deposit) throws OptionsException{
?? ??? ?
?? ??? ?if(deposit >= 0){
?? ??? ??? ?this.deposit = deposit;
?? ??? ?}else{
?? ??? ??? ?throw new OptionsException("存入金額錯誤!");
?? ??? ?}
?? ?}
?
?? ?public int getWithdrawMoney() {
?? ??? ?return withdrawMoney;
?? ?}
?
?? ?public void setWithdrawMoney(int withdrawMoney) throws OptionsException{
?? ??? ?if(withdrawMoney >= 0){
?? ??? ??? ?if(this.getBalance() - withdrawMoney < 0){
?? ??? ??? ??? ?this.withdrawMoney = withdrawMoney;
?? ??? ??? ?}else{
?? ??? ??? ??? ?throw new OptionsException("余額不足!");
?? ??? ??? ?}
?? ??? ?}else{
?? ??? ??? ?throw new OptionsException("取款金額錯誤!");
?? ??? ?}?? ??? ?
?? ?}
}

3.新建一個類,定義用戶可進行的操作方法:

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
?
public class UserOptions {
?
?? ?/**定義一個ArrayList
? ?
? ? 來存儲注冊的銀行卡信息*/
?? ?public static ArrayList
? ??
? ? ? accounts = new ArrayList
? ? ?
? ? ? ();
?? ?
?? ?Scanner scanner = new Scanner(System.in);
?? ?
?? ?/**調(diào)用User 類訪問該類下封裝的用戶信息*/
?? ?User user = new User();
?? ?
?? ?//為新用戶注冊銀行卡信息
?? ?public void register() throws Exception {
?? ??? ?
?? ??? ?System.out.println("請輸入您的姓名:");
?? ??? ?user.setUserName(scanner.next());
?? ??? ?
?? ??? ?String cardNumber = randomCardNumber();
?? ??? ?System.out.println("您的卡號為:" + cardNumber);
?? ??? ?user.setCardNumber(cardNumber);
?? ??? ?
?? ??? ?
?? ??? ?//用戶輸入密碼時,可能會出現(xiàn)密碼不足或超過6位
?? ??? ?try{
?? ??? ??? ?
?? ??? ??? ?System.out.println("請設(shè)置您的密碼(6位數(shù)字):");
?? ??? ??? ?
?? ??? ??? ?int code = scanner.nextInt();
?? ??? ??? ??? ?
?? ??? ??? ?user.setCode(code);
?? ??? ??? ?
?? ??? ?}catch(OptionsException o){
?? ??? ??? ?o.printStackTrace();
?? ??? ?}finally{
?? ??? ??? ?System.out.println("您卡內(nèi)目前余額為:" + user.getBalance());
?? ??? ??? ?
?? ??? ??? ?accounts.add(user);
?? ??? ?}
?? ??? ?
?? ?}
?? ?
?? ?
?? ?//隨機生成卡號
?? ?public String randomCardNumber(){
?? ??? ?
?? ??? ?
?? ??? ?StringBuilder str=new StringBuilder();//定義變長字符串
?? ??? ?Random random=new Random();?? ?
?? ??? ?
?? ??? ?/**設(shè)立一個flag,
?? ??? ? * 在隨機卡號生成后,用于判斷生成的卡號是否已經(jīng)存在。
?? ??? ? * 如果該卡號已經(jīng)存在,則再進行一次該方法重新生成卡號,直到生成的卡號不存在為止
?? ??? ? * 如果該卡號不存在,則將其返回并賦給register()中的user.setCardNumber();
?? ??? ? */
?? ??? ?boolean flag = true;
?? ??? ?
?? ??? ?//隨機生成數(shù)字,并添加到字符串
?? ??? ?/**因為本人持有的銀行卡號為19位,所以設(shè)置該卡號為19位*/
?? ??? ?for(int i=0;i<19;i++){
?? ??? ? ? ?str.append(random.nextInt(10));
?? ??? ?}
?? ??? ?
?? ??? ?
?? ??? ?String cardNumber = str.toString();
?? ??? ?/**對生成的卡號進行存在判斷
?? ??? ? * 如果該卡號已經(jīng)存在,則flag的值變?yōu)閒alse,并中斷循環(huán)
?? ??? ? * 如果循環(huán)結(jié)束,該卡號仍不存在,則將其返回
?? ??? ? */
?? ??? ?for(int i = 0 ; i < accounts.size() ; i ++){
?? ??? ??? ?if(cardNumber.equals(accounts.get(i).getCardNumber())){
?? ??? ??? ??? ?flag = false;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ??? ?/**flag的值若為true,則證明生成的卡號不存在,可以返回;
?? ??? ? * 若為false,則證明生成的卡號已經(jīng)存在,需要重新生成,直到生成的卡號不存在為止*/
?? ??? ?if(flag){
?? ??? ??? ?return cardNumber;
?? ??? ?}else{
?? ??? ??? ?return randomCardNumber();
?? ??? ?}
?? ?}
?? ?
?? ?//存款
?? ?public void depositMoney(){
?? ??? ?
?? ??? ?/**設(shè)立一個flag,輔助判斷輸入的卡號是否存在*/
?? ??? ?boolean flag = false;
?? ??? ?
?? ??? ?/**設(shè)立一個index,當(dāng)卡號存在時,index 接收此時的索引值,方便存款*/
?? ??? ?int index = 0;
?? ??? ?
?? ??? ?System.out.println("請輸入您的卡號:");
?? ??? ?String cardNumber = scanner.next();
?? ??? ?
?? ??? ?/**遍歷查詢accouts 中是否存在用戶輸入的卡號
?? ??? ? * 若存在,flag的值變?yōu)閠rue,同時結(jié)束循環(huán),*/
?? ??? ?for(int i = 0 ; i < accounts.size() ; i ++){
?? ??? ??? ?if(cardNumber.equals(accounts.get(i).getCardNumber())){
?? ??? ??? ??? ?flag = true;
?? ??? ??? ??? ?index = i;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ??? ?
?? ??? ?/**若卡號存在,則需要用戶輸入密碼,密碼正確才可以進行操作*/
?? ??? ?if(flag){
?? ??? ??? ?System.out.println("請輸入您的密碼:");
?? ??? ??? ?int code = scanner.nextInt();
?? ??? ??? ?
?? ??? ??? ?if(code == accounts.get(index).getCode()){
?? ??? ??? ??? ?
?? ??? ??? ??? ?
?? ??? ??? ??? ?/**判斷用戶輸入的金額是否大于0, 若小于0,則報錯,并退出程序。
?? ??? ??? ??? ? * 若正確,則將金額加到余額中*/
?? ??? ??? ??? ?try{
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?System.out.println("請輸入您想要存儲的金額:");
?? ??? ??? ??? ??? ?accounts.get(index).setDeposit(scanner.nextInt());
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?int newBalance = accounts.get(index).getBalance() + accounts.get(index).getDeposit();
?? ??? ??? ??? ??? ?accounts.get(index).setBalance(newBalance);
?? ??? ??? ??? ?}catch(OptionsException o){
?? ??? ??? ??? ??? ?o.printStackTrace();
?? ??? ??? ??? ?}finally{
?? ??? ??? ??? ??? ?System.out.println("您目前的余額為:" + accounts.get(index).getBalance());
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}else{
?? ??? ??? ?System.out.println("您輸入的卡號不存在,操作已結(jié)束!");
?? ??? ?}
?? ?}? ??
?? ?
?? ?//取款
?? ?public void withdraMoney(){
?? ??? ?
?? ??? ?/**設(shè)立一個flag,輔助判斷輸入的卡號是否存在*/
?? ??? ?boolean flag = false;
?? ??? ?
?? ??? ?/**設(shè)立一個index,當(dāng)卡號存在時,index 接收此時的索引值,方便取款*/
?? ??? ?int index = 0;
?? ??? ?
?? ??? ?System.out.println("請輸入您的卡號:");
?? ??? ?String cardNumber = scanner.next();
?? ??? ?
?? ??? ?/**遍歷查詢accouts 中是否存在用戶輸入的卡號
?? ??? ? * 若存在,flag的值變?yōu)閠rue,同時結(jié)束循環(huán),*/
?? ??? ?for(int i = 0 ; i < accounts.size() ; i ++){
?? ??? ??? ?if(cardNumber.equals(accounts.get(i).getCardNumber())){
?? ??? ??? ??? ?flag = true;
?? ??? ??? ??? ?index = i;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ??? ?
?? ??? ?/**若卡號存在,則需要用戶輸入密碼,密碼正確才可以進行操作*/
?? ??? ?if(flag){
?? ??? ??? ?System.out.println("請輸入您的密碼:");
?? ??? ??? ?int code = scanner.nextInt();
?? ??? ??? ?
?? ??? ??? ?if(code == accounts.get(index).getCode()){
?? ??? ??? ??? ?
?? ??? ??? ??? ?
?? ??? ??? ??? ?//注意如果用戶要取出的金額大于其余額,要報錯
?? ??? ??? ??? ?/**判斷用戶輸入的金額是否大于0, 若小于0,則報錯,并退出程序。
?? ??? ??? ??? ? * 若正確,則將金額加到余額中*/
?? ??? ??? ??? ?try{
?? ??? ??? ??? ??? ?System.out.println("請輸入您想要取出的金額:");
?? ??? ??? ??? ??? ?accounts.get(index).setWithdrawMoney(scanner.nextInt());
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?int newBalance = accounts.get(index).getBalance() - accounts.get(index).getWithdrawMoney();
?? ??? ??? ??? ??? ?accounts.get(index).setBalance(newBalance);
?? ??? ??? ??? ?}catch(OptionsException o){
?? ??? ??? ??? ??? ?o.printStackTrace();
?? ??? ??? ??? ?}finally{
?? ??? ??? ??? ??? ?System.out.println("您取出了" +accounts.get(index).getWithdrawMoney());
?? ??? ??? ??? ??? ?System.out.println("取出后的余額為:" + accounts.get(index).getBalance());
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ??? ?if(!flag)
?? ??? ??? ?System.out.println("該卡號不存在!");
?? ?}?? ?
?? ?
?? ??? ?
?? ?//按照卡號查詢余額
?? ?public void queryBalance(){
?? ??? ?
?? ??? ?/**設(shè)立一個flag,輔助判斷輸入的卡號是否存在*/
?? ??? ?boolean flag = false;
?? ??? ?
?? ??? ?/**設(shè)立一個index,當(dāng)卡號存在時,index 接收此時的索引值,方便存款*/
?? ??? ?int index = 0;
?? ??? ?
?? ??? ?System.out.println("請輸入您的卡號:");
?? ??? ?String cardNumber = scanner.next();
?? ??? ?
?? ??? ?/**遍歷查詢accouts 中是否存在用戶輸入的卡號
?? ??? ? * 若存在,flag的值變?yōu)閠rue,同時結(jié)束循環(huán),*/
?? ??? ?for(int i = 0 ; i < accounts.size() ; i ++){
?? ??? ??? ?if(cardNumber.equals(accounts.get(i).getCardNumber())){
?? ??? ??? ??? ?flag = true;
?? ??? ??? ??? ?index = i;
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ?}
?? ?
?? ??? ?/**若卡號存在,則需要用戶輸入密碼,密碼正確才可以進行操作*/
?? ??? ?if(flag){
?? ??? ??? ?System.out.println("請輸入您的密碼:");
?? ??? ??? ?int code = scanner.nextInt();
?? ??? ??? ?
?? ??? ??? ?if(code == accounts.get(index).getCode()){
?? ??? ??? ??? ?
?? ??? ??? ??? ?System.out.println("您目前的余額為:" + accounts.get(index).getBalance());
?? ??? ??? ?
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ??? ?if(!flag)
?? ??? ??? ?System.out.println("該卡號不存在!");
?? ?}
?? ?
}

4.再新建一個類,在該類中寫一個方法由用戶選擇調(diào)用上個步驟中寫的各個方法(即設(shè)置菜單,進行功能選擇):
   * 1.開戶  * 2.存款  * 3.取款   * 4.查詢余額

import java.util.Scanner;
?
public class UserService {
?? ?
?? ?UserOptions uo = new UserOptions();
?? ?Scanner scanner = new Scanner(System.in);
?? ?
?? ?/**設(shè)置菜單,進行功能選擇:
?? ? * 1.開戶
?? ? * 2.存款
?? ? * 3.取款
?? ? * 4.查詢余額*/
?? ?@SuppressWarnings("finally")
?? ?public void menu(){
?? ??? ?
?? ??? ?bulletin();
?? ??? ?
?? ??? ?while(true){
?? ??? ??? ?
?? ??? ??? ?System.out.println("請選擇您要使用的功能:");
?? ??? ??? ?int choice = scanner.nextInt();
?? ??? ??? ?
?? ??? ??? ?switch(choice){
?? ??? ??? ??? ?case 1:
?? ??? ??? ??? ?try {
?? ??? ??? ??? ??? ?uo.register();
?? ??? ??? ??? ?} catch (Exception e) {
?? ??? ??? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ??? ??? ?e.printStackTrace();
?? ??? ??? ??? ?}finally{
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?case 2:
?? ??? ??? ??? ??? ?uo.depositMoney();
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 3:
?? ??? ??? ??? ??? ?uo.withdraMoney();
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case 4:
?? ??? ??? ??? ??? ?uo.queryBalance();
?? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?case -1:
?? ??? ??? ??? ??? ?System.exit(0);
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?System.out.println("------------------------------\n");
?? ??? ?}
?? ?}
?? ?
?? ?public void bulletin(){
?? ??? ?System.out.println("歡迎使用\"不坑你坑誰\"牌自動取款機");
?? ??? ?System.out.println("本機提供以下功能,請自助選擇:");
?? ??? ?System.out.println("1.開戶");
?? ??? ?System.out.println("2.存款");
?? ??? ?System.out.println("3.取款");
?? ??? ?System.out.println("4.查詢余額");
?? ??? ?System.out.println("輸入-1結(jié)束操作");
?? ??? ?System.out.println("------------------------------\n");
?? ?}
?? ?
}

5.最后再主方法中將上一個類進行實例化并使用:

public class Demo {
?
?? ?public static void main(String[] args) {
?? ??? ?UserService us = new UserService();
?? ??? ?
?? ??? ?us.menu();
?? ?}
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實現(xiàn)簡單解析XML文件功能示例

    java實現(xiàn)簡單解析XML文件功能示例

    這篇文章主要介紹了java實現(xiàn)簡單解析XML文件功能,結(jié)合實例形式分析了java針對xml文件的讀取、遍歷節(jié)點及輸出等相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • Java實現(xiàn)synchronized鎖同步機制

    Java實現(xiàn)synchronized鎖同步機制

    synchronized是java內(nèi)置的同步鎖實現(xiàn),本文就詳細(xì)的介紹一下Java實現(xiàn)synchronized鎖同步機制,具有一定的參考價值,感興趣的可以了解一下
    2021-11-11
  • JAVA中Context的詳細(xì)介紹和實例分析

    JAVA中Context的詳細(xì)介紹和實例分析

    這篇文章主要介紹了JAVA中Context的詳細(xì)介紹和實例分析,Context是維持android各組件能夠正常工作的一個核心功能類。如果感興趣來學(xué)習(xí)一下
    2020-07-07
  • 基于java涉及父子類的異常詳解

    基于java涉及父子類的異常詳解

    下面小編就為大家?guī)硪黄趈ava涉及父子類的異常詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Spring Boot 配置文件詳解(小結(jié))

    Spring Boot 配置文件詳解(小結(jié))

    Spring Boot提供了兩種常用的配置文件,分別是properties文件和yml文件。本章重點介紹yml的語法和從配置文件中取值。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Java權(quán)重隨機的實現(xiàn)方法

    Java權(quán)重隨機的實現(xiàn)方法

    這篇文章主要介紹了Java權(quán)重隨機的實現(xiàn)方法,實例分析了權(quán)重隨機算法的原理與完整實現(xiàn)方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • 基于@RequestBody和@ResponseBody及Stringify()的作用說明

    基于@RequestBody和@ResponseBody及Stringify()的作用說明

    這篇文章主要介紹了基于@RequestBody和@ResponseBody及Stringify()的作用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java實現(xiàn)將Object轉(zhuǎn)成List的五種方法

    Java實現(xiàn)將Object轉(zhuǎn)成List的五種方法

    在Java中,將一個Object轉(zhuǎn)換為List是一個常見的需求,尤其是在處理集合操作和數(shù)據(jù)轉(zhuǎn)換時,本文將詳細(xì)討論如何實現(xiàn)這一轉(zhuǎn)換,并提供一些代碼示例,需要的朋友可以參考下
    2025-03-03
  • Java報錯java.awt.AWTException: AWT的解決方法

    Java報錯java.awt.AWTException: AWT的解決方法

    在Java圖形用戶界面(GUI)編程中,java.awt.AWTException是一個常見的異常,它通常與AWT(Abstract Window Toolkit)組件相關(guān),這個異??赡茉趪L試進行與窗口、圖形環(huán)境或系統(tǒng)剪貼板等操作時拋出,本文將詳細(xì)探討AWTException的成因,并提供多種解決方案
    2024-12-12
  • Spring注解之Service用法及示例詳解

    Spring注解之Service用法及示例詳解

    使用 @Service 注解可以將一個類聲明為業(yè)務(wù)邏輯組件,并將其對象存入 Spring 容器中,在控制器類中,通過注入該組件的實例,即可調(diào)用其中的方法,這篇文章主要介紹了Spring注解之Service用法及示例詳解,需要的朋友可以參考下
    2024-04-04

最新評論

龙山县| 建德市| 彭阳县| 文成县| 安庆市| 本溪市| 芷江| 蕉岭县| 盐源县| 清水河县| 苍南县| 名山县| 余庆县| 开原市| 冷水江市| 新龙县| 永康市| 确山县| 闻喜县| 荣昌县| 兴海县| 裕民县| 永川市| 宁城县| 海阳市| 岳阳县| 金阳县| 庆阳市| 满洲里市| 黄浦区| 巨野县| 镇安县| 崇礼县| 廊坊市| 集贤县| 文成县| 巴彦淖尔市| 临泉县| 邵阳市| 资源县| 石阡县|