「银行存取款的流程java」银行柜台存取款流程
今天给各位分享银行存取款的流程java的知识,其中也会对银行柜台存取款流程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
用java线程同步实现银行取款和存款。
你的代码问题很多!
帮你修改后:
class Account {
private static float Balance = 200f;//线程共享的钱
public synchronized static void deposit(float amt) {
Balance = Balance + amt;
try {
Thread.sleep(10);// 模拟其它处理所需要的时间,比如刷新数据库等
}
catch (InterruptedException e) {
}
}
public static float getBalance() {
return Balance;
}
public static void setBalance(float balance) {
Balance = balance;
}
public synchronized static void withdraw(float bmt) {
Balance -= bmt;
try {
Thread.sleep(10);// 模拟其它处理所需要的时间,比如刷新数据库等
}
catch (InterruptedException e) {
}
}
String name;
public Account(String name) {
this.name = name;
}
}
public class AccountTest {
public static void main(String[] args) {
Customer customerA = new Customer("A");
Customer customerB = new Customer("B");
customerA.start();
customerB.start();
System.out.println();
try {
customerA.join();//等待A线程执行完毕
customerB.join();//等待B线程执行完毕
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("最后总钱数:" + Account.getBalance());
}
}
class Customer extends Thread {
public Customer(String string) {
super(string);
}
@Override
public void run() {
System.out.println(currentThread().getName());
if (currentThread().getName().equals("A"))
Account.deposit(100.0f);//A线程加100
else if (currentThread().getName().equals("B"))
Account.withdraw(50.0f);//B线程减50
}
}
银行储蓄存取款过程数据流程图是怎样的?
会讲存取单核对处理
储户将填好的存(取)单及存折送交分类处理处。分类处理安三种不同情况分别处理。如果存折不符或存(取)单不合格,则将存折及存(取)单直接退还储户重新填写;
如果是存款,则将存折及存款单送交存款处处理。存款处理处取出底帐登记后,将存折退还给储户;
如果是取款,到银行营业厅填写取款单或存款单,取叫号单,排队等待,叫到号码拿这单子到串口办理,将存折交给银行服务台,该服务台取出底帐及现金,记账后将存折与现金退给储户。从而完成存(取)款处理过程。试按此画出数据流程图。
JAVA 编程 编写一个程序完成在银行的取款和存款操作。在定义银行类时,若取款数大于余额则作为异常处理。
这个要用到线程
代码给你吧
//银行类
public class Bank
{
private final double[] accounts;
public Bank(int n , double initBalance)
{
accounts = new double[n];
for(int i = 0;iaccounts.length;i++)
{
accounts[i] = initBalance;
}
}
public synchronized void transfer(int from,int to,double amount)throws InterruptedException
{
if(accounts[from]amount)
{
wait();
}
System.out.println(Thread.currentThread());
accounts[from] -= amount;
System.out.printf("%10.2f from %d to %d",amount,from,to);
accounts[from]+=amount;
System.out.printf("Total Banance:%10.2f%n ",getTotalBalance());
notifyAll();
}
private synchronized Object getTotalBalance()
{
double sum = 0;
for(double ac : accounts)
{
sum +=ac;
}
return sum;
}
public int size()
{
return accounts.length;
}
}
//线程函数
public class TransferRunnable implements Runnable
{
private Bank bank;
private int fromAc;
private double maxAmt;
private int delay = 10;
public TransferRunnable(Bank bank, int fromAC, double maxAmt)
{
super();
this.bank = bank;
this.fromAc = fromAc;
this.maxAmt = maxAmt;
}
@Override
public void run()
{
while(true)
{
try
{
int toAc =(int)(bank.size()*Math.random());
double amt = maxAmt*Math.random();
bank.transfer(fromAc, toAc, amt);
Thread.sleep((int)(delay*Math.random()));
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//测试类
public class Test
{
/**
* @param args
*/
public static void main(String[] args)
{
Bank b = new Bank(10,10000);
for(int i = 0;i10;i++)
{
TransferRunnable r = new TransferRunnable(b, 0, 10000);
Thread t = new Thread(r);
t.start();
}
}
}
关于银行存取款的流程java和银行柜台存取款流程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。