本文目錄一覽:
- 1、採用java多線程技術,設計一個銀行ATM,假設用戶插入銀行卡後,該ATM需要實現一下功能:(1)
- 2、用java編程實現線程實現多人對同一銀行賬號的存、取款業務。
- 3、如何用Java編寫模擬ATM取款機的程序
- 4、用java編寫多線程銀行ATM 模擬程序
- 5、求助: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