用java編寫多線程銀行atm,java多線程銀行取錢

本文目錄一覽:

採用java多線程技術,設計一個銀行ATM,假設用戶插入銀行卡後,該ATM需要實現一下功能:(1)

。。。。。。。。以上三位小朋友都不是開發者吧

你這個需求其實 功能不難 插入卡後掃描卡號 根據卡號判斷是什麼銀行 這個可以用字典 進行對應操作就行了 至於多線程的話就得控制下了 一台atm機 多線程不複雜吧 還是你有特殊要求?就是開啟線程處理查詢 非同步做其他事情 如提示信息入輸入密碼 如進行下一步操作

用java編程實現線程實現多人對同一銀行賬號的存、取款業務。

package com.main;

僅供樓主參考

public class test {

/**

* @param args

*/

public static void main(String[] args) {

final Bank bank = new Bank();

for(int i = 0; i10; i++){

new Thread(new Runnable(

){

public void run() {

// TODO Auto-generated method stub

bank.deposit(100);

}

}).start();

new Thread(new Runnable(){

@Override

public void run() {

// TODO Auto-generated method stub

bank.withdraw(100);

}

}).start();

}

}

}

class Bank{

private int total = 1000;

public synchronized void deposit(int num){

total = total +num;

System.out.println(“我是存線程”+Thread.currentThread().getName()+”存入了100元”);

System.out.println(“此時賬戶餘額為:”+total);

}

public synchronized void withdraw(int num){

total = total – num;

System.out.println(“我是取線程”+Thread.currentThread().getName()+”存入了100元”);

System.out.println(“此時賬戶餘額為:”+total);

}

}

如何用Java編寫模擬ATM取款機的程序

import java.io.IOException;

/**

* ATM機類

*

* 查看餘額

*

* 取款

*

* 存款

*

* 退出系統

*

*

*

*/

public class ATM {

static double yue = 1200.00;

public static void main(String[] arg) {

ATM localTest1 = new ATM();

localTest1.ATM_Operate();

}

/**

* ATM機的操作

*/

private void ATM_Operate() {

System.out.println(“歡迎使用中國工商銀行ATM取款機”);

System.out.println(“1、查看餘額 2、取款”);

System.out.println(“3、存款 0、退出”);

System.out.print(“請輸入您需要的服務:”);

byte[] buffer = new byte[512];

try {

int count = System.in.read(buffer);// 返回實際讀取的位元組數

System.out.print(“您輸入的是:”);

for (int i = 0; i count; i++) {

System.out.print(“” + (char) buffer[i]);

}

if ((char) buffer[0] == ‘1’) {

// 查看餘額

System.out.println(“您的餘額是:¥” + yue + “元”);

System.out.println();

ATM_Operate();

} else if ((char) buffer[0] == ‘2’) {

// 取款

withdrawal();

System.out.println();

ATM_Operate();

} else if ((char) buffer[0] == ‘3’) {

// 存款

deposit();

System.out.println();

ATM_Operate();

} else if ((char) buffer[0] == ‘0’) {

// 退出

System.out.println(“您已經成功退出系統,謝謝你的使用”);

System.exit(0);

} else {

System.out.println(“輸入不合法,請重新輸入”);

System.out.println();

ATM_Operate();

}

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 取款

*

* @throws IOException

*/

private void withdrawal() throws IOException {

byte[] buffer = new byte[512];

System.out.print(“請輸入您要取出的金額:¥”);

int count2 = System.in.read(buffer);// 返回實際讀取的位元組數

System.out.print(“您輸入的金額是:”);

for (int i = 0; i count2 – 1; i++) {

System.out.print(“” + (char) buffer[i]);

}

System.out.println();

// 字元0 ~ 9對應ASCII值48 ~ 57

boolean flag = false;

for (int i = 0; i count2 – 1; i++) {

if ((char) buffer[i] 47 (char) buffer[i] 58) {

if (i == count2 – 2) {

flag = true;

}

} else {

// 輸入的字元不是數值

System.out.println(“輸入不合法,請重新輸入”);

withdrawal();

break;

}

}

System.out.println();

if (flag) {

System.out.print(“您已成功取出¥:”);

String num = “”;

for (int i = 0; i count2 – 1; i++) {

System.out.print(“” + (char) buffer[i]);

num += (char) buffer[i];

}

yue -= Double.valueOf(num);

System.out.print(“,現在餘額¥:” + yue);

}

}

/**

* 存款

*

* @throws IOException

*/

private void deposit() throws IOException {

byte[] buffer = new byte[512];

System.out.print(“請輸入您要存入的金額:¥”);

int count2 = System.in.read(buffer);// 返回實際讀取的位元組數

System.out.print(“您輸入的金額是:”);

for (int i = 0; i count2 – 1; i++) {

System.out.print(“” + (char) buffer[i]);

}

System.out.println();

// 字元0 ~ 9對應ASCII值48 ~ 57

boolean flag = false;

for (int i = 0; i count2 – 1; i++) {

if ((char) buffer[i] 47 (char) buffer[i] 58) {

if (i == count2 – 2) {

flag = true;

}

} else {

// 輸入的字元不是數值

System.out.println(“輸入不合法,請重新輸入”);

withdrawal();

break;

}

}

System.out.println();

if (flag) {

System.out.print(“您已成功存入¥:”);

String num = “”;

for (int i = 0; i count2 – 1; i++) {

System.out.print(“” + (char) buffer[i]);

num += (char) buffer[i];

}

yue += Double.valueOf(num);

System.out.print(“,現在餘額¥:” + yue);

}

}

}

用java編寫多線程銀行ATM 模擬程序

先構建一個客戶端,再構建一個伺服器端,其實做一個簡單的界面,建立一個資料庫,調用SQl 語句,,實現單機,模擬多線程的就可以了,伺服器部分不做也可以模擬出來。。

PS:這不會是程序專題訓練一吧。。。

求助:JAVA編程:銀行存取款多線程編程,即要實現線程同步

public class TestBank{

public static void main(String[] args){

String s1=”saveBankMoney”;

String s2=”getBankMoney”;

Bank bank=new Bank(s1,s2);

Thread save_Money;

Thread get_Money;

save_Money=new Thread(bank);

get_Money=new Thread(bank);

save_Money.setName(s1);

get_Money.setName(s2);

save_Money.start();

get_Money.start();//啟動線程

}

}

class Bank implements Runnable{

public Bank(String s1,String s2){

this.s1=s1;

this.s2=s2;

}

public void run(){

saveBankMoney(11000);//存款額規定為11000

getBankMoney(5000);//取款5000

}

//同步方法,實現存款

public synchronized void saveBankMoney(double save_money){

if(Thread.currentThread().getName().equals(s1)){

for(int i=1;i3;i++){

if (save_money==11000){

this.money+=save_money;

try{

Thread.sleep(2000);//休眠

}

catch(InterruptedException ex ){

ex.printStackTrace();

}

System.out.println(“我要存款:”+save_money);

System.out.println(“存款成功!帳號目前餘額為:”+this.money);

}

}

}

}

//同步方法,實現取款

public synchronized void getBankMoney(double get_money){

if(Thread.currentThread().getName().equals(s2)){

for(int i=1;i3;i++){

if(money=get_money){

this.money=this.money-get_money;

try{

Thread.sleep(2000);//休眠

}

catch(InterruptedException ex){

ex.printStackTrace();

}

System.out.println(“我要取款:”+get_money);

System.out.println(“取款成功!帳號目前餘額為:”+this.money);

}

else{

System.out.println(“帳號餘額不足!”);

}

}

}

}

private double money=10000.0;//帳號初始額為10000

private String s1;

private String s2;

}

原創文章,作者:CAOS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/146709.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CAOS的頭像CAOS
上一篇 2024-10-31 15:32
下一篇 2024-10-31 15:32

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • 銀行資金管理系統總結

    銀行資金管理系統是銀行日常業務運營的核心支撐系統,主要負責處理銀行的資金流動、結算、清算等業務。本文將從功能特點、技術架構、安全性以及未來發展趨勢等多個方面對銀行資金管理系統進行詳…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論