package com.lw.thread
/*
银行账户类Account(不能透支),
包含账扰纯号id(10~16位数字),密码password(6位数字),户主姓名name,余额balence
*/
public class Account {
private String id
private int password
private String name
private double balence
public String getId() {
return id
}
public void setId(String id) {
this.id = id
}
public int getPassword() {
return password
}
public void setPassword(int password) {
this.password = password
}
public String getName() {
return name
}
public void setName(String name) {
this.name = name
}
public double getBalence() {
return balence
}
public void setBalence(double balence) {
this.balence = balence
}
/*
* 默认构造账户信息为:1111111111111111,666666,钱三多,888888.88。
*/
public Account() {
super()
this.id = "1111111111111111"
this.password = 666666
this.name = "钱乎拿三多"
this.balence = 888888.88
}
/*
* 另一个构造方法带4个参数分别初始化4个属性(带数据有效性验证)。
*/
public Account(String id, int password, String name, double balence) {
this.id = id
this.password = password
this.name = name
this.balence = balence
}
/*
* 查询余额
*/
public static double selectMoney(Account account) {
return account.getBalence()
}
/*
* 存钱
*/
public static String setMoney(Account account, double balence) {
if (balence <0) {
return "存钱失败,请正确放入!"
}
double d = balence + account.getBalence()
account.setBalence(d)
return "您存入了" + balence + "元,现账户余额为+" + d
}
/*
* 取钱
*/
public static String getMoney(Account account, double balence) {
double d = account.getBalence()
if (balence >d) {
return "您的余缓顷咐额不足!"
}
account.setBalence(d - balence)
return "您取出了" + balence + "元,现账户余额为+" + account.getBalence()
}
}
package demoimport java.util.Scanner
public class Test3 {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in)
int cnt=3
String username = null
String password = null
double money = 1000
String targetName = "admin33"
double targetMoney = 1000
while(true){
if(username!=null&&password!=null){
if("游滑admin".equals(username) &&"123".equals(password)){
System.out.println("欢迎光临")
while(true){
System.out.println("请选择您的 *** 作 1 取钱 2 存钱 3 转账 4 查询 5 退出 ")
int n = scanner.nextInt()
if(n==1){//取钱
System.out.println("请输入金额")
int getter = scanner.nextInt()
if(getter>=0){
if(getter<=5000){
if(getter<=money){
money-=getter
}else{
System.out.println("余额不足")
}
}else{
System.out.println("单笔只能取5000及以下")
}
}else{
System.out.println("银行不到给")
}
}else if(n==2){//存钱
System.out.println("请输入金额")
int save = scanner.nextInt()
if(save>=0){
money+=save
}
}else if(n==3){//转账
System.out.println("请输入目行磨粗标账户")
String target = scanner.next()
if(target.equals(targetName)){
System.out.println("请输入金额")
int getter = scanner.nextInt()
if(getter>=0){
if(getter<=5000){
if(getter<=money){
money-=getter
targetMoney+=getter
}else{
System.out.println("余额不足")
}
}else{
System.out.println("单笔只能取5000及以下")
}
}else{
System.out.println("银行不到给")
}
}
}else if(n==4){//查询
System.out.println(money)
}else if(n==5){//退出
System.exit(0)
}else{
System.out.println("没有该项服务")
}
}
}else{
cnt--
System.out.println("输入错误,您还有"+cnt+"次档镇机会")
username=null
password=null
if(cnt<=0){
System.out.println("对不起,您的账号被冻结,请到最近的营业厅解除冻结")
System.exit(0)
}
}
}else{
System.out.println("请输入您的账号")
username = scanner.next()
System.out.println("请输入您的密码")
password = scanner.next()
}
}
}
}
public class ATM {public static void main(String[] args) {
// 开立帐号
Account account = new Account()
// 在 account 中存 10,000 元
account.setBalance(10000)
// 检查 account 中的存款
System.out.println("帐户原始金额 : " + account.getBalance() + " 元")
// 小明, 小华与小英一起对 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 元
s1.start()
s2.start()
s3.start()
}
}
//帐户
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 = Thread.currentThread().getName()// tName=提款人
System.out.println(tName + "余薯 开始提款 ... ")
boolean withDrawStatus// 提款状态 说明:false=提款失败, true=提款成功
synchronized(ATM.class) {
int tmpBalabce = account.getBalance()// 取得最新帐户馀额
//用 for-loop 模拟提款时系统所花的时间
for(double delay=0delay<99999999delay++) {
// ... 提款进行中 ...
}
tmpBalabce = tmpBalabce - withdrawMoney// 最新帐户馀额 - 欲提款金额 (用来判断是否馀额足够的依据)
if (tmpBalabce <0) { // 判断是否馀额足够
withDrawStatus = false
System.out.println("....................")
System.out.println(" 帐户馀额不足!")
System.out.println("....................")
} else {
withDrawStatus = true
account.setBalance(tmpBalabce)// 回存account最後剩馀金额
}
}
System.out.println(tName + "的交易单:")
System.out.println("\t欲提款金额:" + withdrawMoney + "元")
System.out.println("\t帐户馀额:" + account.getBalance())
if(withDrawStatus == true){
System.out.println(tName + " 完成提款 ... ")
} else {
System.out.println(tName + " 提款失败 ... ")
}
System.out.println("-------------------------------")
}
}
// 提款类别
class WithDraw extends Thread {
private Account account // 帐号
private int withdrawMoney// 欲提款的金额
// tName:执行绪名称, account:Account物件名称, withdrawMoney:欲提款金额
public WithDraw(String tName, Account account, int withdrawMoney) {
setName(tName)
this.account = account
this.withdrawMoney= withdrawMoney
}
public void run() {
// 执行提款动作(account:帐号, withdrawMoney 欲提款金额)
account.withDraw(account, withdrawMoney)// 执行提款动作
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)