一个用java模拟ATM机的代码且数据库为mysql,

一个用java模拟ATM机的代码且数据库为mysql,,第1张

最后一列为备注 1、 管理员表(tb_admin) 字段 类型 约束 备注 aId number(6) 主键 --管理员编号 aName varchar2(10) 唯一、非空 --管理员登陆名 aPassword varchar2(16) 非空 --管理员登陆密码 aLastDate date 非空 --上次登陆时间 aNowDate date 非空 --本次登陆时间 2、 yhk登陆表(tb_login) 字段 类型 约束 备注 lId number(8) 主键 --登录ID lCardNumber varchar2(19) 引用yhk信息表 卡号 lPassword number(6) 非空 yhk密码 bIsLock char(1) 默认1 是否被锁,0表示被锁,1表示开启 lTime number(10) 初始为0 登陆次数 aLastDate date 非空 上次登陆时间 aNowDate date 非空 本次登陆时间 3、 客户详细资料表(tb_userInfo) 字段 类型 约束 备注 usId number(8) 主键 客户ID usName varchar2(10) 非空 客户姓名 usIDNumber varchar2(18) 非空 客户身份z号码 usSex char(1) 默认0 客户性别,0表示男,1表示女 usTel varchar2(11) 非空 客户电话 usAddress varchar2(50) 非空 客户地址 4、 银行支行表(tb_Branch) 字段 类型 约束 备注 bId number(3) 主键 支行ID bName varchar2(20) 唯一、非空 支行名 bAddress varchar2(100) 非空 支行地址 5、 yhk信息表(tb_CardInfo) 字段 类型 约束 备注 bCardID number(19) 主键 卡号 bBalance number(8,2) 默认000 余额 bUserId number(8) 引用客户详细资料表 卡对应用户ID bBranchID number(4) 引用支行表 支行ID bDate date 默认系统时间 开户时间 6、 yhk交易类型表(tb_TransType) 字段 类型 约束 备注 tId number(2) 主键 类型ID tType nvarchar2(6) 唯一 类型(转账、存款、取出等) 7、 yhk个人账户存、取款记录表(tb_ Pacount) 字段 类型 约束 备注 tId number(10) 主键 交易记录流水号 tType number(2) 引用交易类型表 交易类型ID tCardID number(19) 引用yhk信息表 交易卡号 tamount number(10) 非空 交易金额 tDate date 非空 交易时间 8、 yhk转账等交易记录表(tb_TransInfo) 字段 类型 约束 备注 tId number(10) 主键 交易记录流水号 tType number(2) 引用交易类型表 交易类型ID tCardIDout number(19) 引用yhk信息表 交易金额转出卡号 tCardIDIn number(19) 引用yhk信息表 交易金额转入卡号 tamount number(10) 非空 交易金额 tDate date 非空 交易时间

楼主您好,编码如下,直接运行即可:

import javautilScanner;

public class AtmGetMoney {

public static void main(String[] args) {

String password = "111111";

int count = 0;

int a = 0;

while(count<3){

Systemoutprintln("请输入yhk密码: ");

Scanner scan = new Scanner(Systemin);

String passwd = scannextLine();

while(passwdequals(password)){

Systemoutprintln("请输入取款金额: ");

int amount = scannextInt();

if(amount%100 == 0 && amount <= 1000){

Systemoutprintln("您的取款金额为: "+amount);

Systemoutprintln("交易完成,请读卡!");

a = a + 1;

break;

}

else {

Systemoutprintln("只能提取100元纸币,要求最低0,最高1000!");

continue;

}

}

if (a == 1){

break;

}

else if (count < 2) {

Systemoutprintln("yhk密码错误");

count = count + 1;

continue;

}

else {

Systemoutprintln("密码错误请读卡");

break;

}

}

}

}

public class ATM {

public static void main(String[] args) {

// 开立帐号

Account account = new Account();

// 在 account 中存 10,000 元

accountsetBalance(10000);

// 检查 account 中的存款

Systemoutprintln("帐户原始金额 : " + accountgetBalance() + " 元");

// 小明, 小华与小英一起对 account 进行提款的动作

WithDraw s1 = new WithDraw("小明", account, 5000); // 小明 在 account 中提 5000 元

WithDraw s2 = new WithDraw("小华", account, 2000); // 小华 在 account 中提 2000 元

WithDraw s3 = new WithDraw("小英", account, 4000); // 小英 在 account 中提 4000 元

s1start();

s2start();

s3start();

}

}

//帐户

class Account {

private int balance; // 帐户馀额

public int getBalance() { // 取得帐户馀额

return balance;

}

public void setBalance(int money) { // 设定帐户馀额

balance = money;

}

// 提款方法

public void withDraw(Account account, int withdrawMoney) {

String tName = ThreadcurrentThread()getName(); // tName=提款人

Systemoutprintln(tName + " 开始提款 ");

boolean withDrawStatus; // 提款状态 说明:false=提款失败, true=提款成功

synchronized(ATMclass) {

int tmpBalabce = accountgetBalance(); // 取得最新帐户馀额

//用 for-loop 模拟提款时系统所花的时间

for(double delay=0;delay<99999999;delay++) {

// 提款进行中

}

tmpBalabce = tmpBalabce - withdrawMoney; // 最新帐户馀额 - 欲提款金额 (用来判断是否馀额足够的依据)

if (tmpBalabce < 0) { // 判断是否馀额足够

withDrawStatus = false;

Systemoutprintln("");

Systemoutprintln(" 帐户馀额不足!");

Systemoutprintln("");

} else {

withDrawStatus = true;

accountsetBalance(tmpBalabce); // 回存account最後剩馀金额

}

}

Systemoutprintln(tName + "的交易单:");

Systemoutprintln("\t欲提款金额:" + withdrawMoney + "元");

Systemoutprintln("\t帐户馀额:" + accountgetBalance());

if(withDrawStatus == true){

Systemoutprintln(tName + " 完成提款 ");

} else {

Systemoutprintln(tName + " 提款失败 ");

}

Systemoutprintln("-------------------------------");

}

}

// 提款类别

class WithDraw extends Thread {

private Account account; // 帐号

private int withdrawMoney; // 欲提款的金额

// tName:执行绪名称, account:Account物件名称, withdrawMoney:欲提款金额

public WithDraw(String tName, Account account, int withdrawMoney) {

setName(tName);

thisaccount = account;

thiswithdrawMoney= withdrawMoney;

}

public void run() {

// 执行提款动作(account:帐号, withdrawMoney 欲提款金额)

accountwithDraw(account, withdrawMoney); // 执行提款动作

}

}

AccountTestjava class BankAccount //定义银行账户类BankAccount{private static int amount =2000; //账户余额最初为2000public void despoit(int m) //定义存款的方法{amount=amount+m;Systemoutprintln("晓明存入["+m+"元]");}public void withdraw(int m) //定义取款的方法{amount=amount-m;Systemoutprintln("张新取走["+m+"元]");if(amount<0)Systemoutprintln("余额不足!);public int balance() //定义得到账户余额的方法{return amount;}}classicCustomerextendsThread {String name;BankAccount bs; //定义一个具体的账户对象public Customer(BankAccount b,String s){name=s;bs=b;}public static void cus(String name,BankAccount bs) //具体的账户 *** 作方法{if(nameequals("小明")) //判断用户是不是小明{try{for(int i=0;i<6;i++) //用户晓明则向银行存款6次,每次1000元 {ThreadcurrentThread()sleep((int)(Mathrandom()300));bsdespoit(1000);}}catch(InterruptedException e){}}else{try{for(int i=0;i<6;i++) //用户不是小明则从银行取款6次,每次1000元{ThreadcurrentThread()sleep((int)(Mathrandom()300));bswithdraw(1000); }}catch(InterruptedException e){} }}public void run() //定义run方法}cus(name,bs); }}public classAccountTest{public static void main(String [] args) throws InterruptedException{BankAccount bs=new BankAccount();Customer customer1=new Customer(bs,"小明");Customer customer2=new Customer(bs,"张新");Thread t1=new Thread(customer1);Thread t2=new Thread(customer2);t1Start();t2start();ThreadcurrentThread()sleep(500);}}

public class Card {

public String type; //卡的类型

public String cardCode; //卡号

public double money; //钱

/

重写toString()方法

/

public String toString(){

return "卡的类型:"+type+"\t卡号:"+cardCode+"\t余额:"+money;

}

}public class Person {

Card card;

/

构造方法,一般用来初始化信息

此方法是创建对象时自动调用的

/

public Person(){

card=new Card();

cardtype="招商银行";

cardmoney=1000D;

}

/

@param money 你要取的钱

@return 返回的是取到的钱

/

public double getMoney(double money){

if( (cardmoney-money) >=0){

cardmoney=cardmoney-money;//从卡中减去要取的钱,并重新改变卡中的余额

return money;

}else{

Systemoutprintln("余额不足:请存款!");

return 0;

}

}

/

存款

@param money

/

public void setMoney(double money){

if(money<=0){

Systemoutprintln("不能为0!");

}else

cardmoney=cardmoney+money;

}

/

这个方法是输出客户卡的信息

/

public void print(){

Systemoutprintln(card);

}

}public class Text {

/

@param args

/

public static void main(String[] args) {

// TODO Auto-generated method stub

Person p=new Person();

pcardcardCode="111100022222";

psetMoney(1000);

double money=pgetMoney(2000);

Systemoutprintln(pcard);

}

}

package arraylist;

import javautilScanner;

public class AtmDemo

{

public static void main(String[] args)

{

// TODO Auto-generated method stub

Scanner sc = new Scanner(Systemin);

Boolean flag = true;

int times = 0;

while(flag){

times++;

if(times == 4){

Systemoutprintln("密码错误,请取卡");

break;

}

Systemoutprintln("请输入你的密码");

String password = scnext();

if(passwordequals("111111")){

Boolean moneyflag = true;

while(moneyflag){

Systemoutprintln("请输入金额");

int number = scnextInt();

if(number >= 0 && number <= 1000 && number % 100 == 0){

Systemoutprintln("用户取了" + number + "元。交易完成");

moneyflag = false;

}else{

Systemoutprintln("请重新输入金额");

}

}

break;

}else{

continue;

}

}

}

}

你可以参考>

以上就是关于一个用java模拟ATM机的代码且数据库为mysql,全部的内容,包括:一个用java模拟ATM机的代码且数据库为mysql,、求高手用JAVA编写一个模拟ATM机取款业务需求如下:、JAVA编写银行账户程序摸拟银行账户的存\取款 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10626465.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存