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