用java编写多线程银行atm,java多线程银行取钱

发布时间:2022-11-18

本文目录一览:

  1. 采用java多线程技术,设计一个银行ATM,假设用户插入银行卡后,该ATM需要实现一下功能:(1)
  2. 用java编程实现线程实现多人对同一银行账号的存、取款业务。
  3. 如何用Java编写模拟ATM取款机的程序
  4. [用java编写多线程银行ATM 模拟程序](#用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; i < 10; 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; i < 3; 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; i < 3; 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;
}