用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/n/146709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
CAOSCAOS
上一篇 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

发表回复

登录后才能评论