最后一列为备注 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编写银行账户程序摸拟银行账户的存\取款 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)