public class ATM {
沽源網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)從2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
public static void main(String[] args) {
// 開立帳號
Account account = new Account();
// 在 account 中存 10,000 元
account.setBalance(10000);
// 檢查 account 中的存款
System.out.println("帳戶原始金額 : " + account.getBalance() + " 元");
// 小明, 小華與小英一起對 account 進(jìn)行提款的動作
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) { // 設(shè)定帳戶馀額
balance = money;
}
// 提款方法
public void withDraw(Account account, int withdrawMoney) {
String tName = Thread.currentThread().getName(); // tName=提款人
System.out.println(tName + " 開始提款 ... ");
boolean withDrawStatus; // 提款狀態(tài) 說明:false=提款失敗, true=提款成功
synchronized(ATM.class) {
int tmpBalabce = account.getBalance(); // 取得最新帳戶馀額
//用 for-loop 模擬提款時系統(tǒng)所花的時間
for(double delay=0;delay99999999;delay++) {
// ... 提款進(jìn)行中 ...
}
tmpBalabce = tmpBalabce - withdrawMoney; // 最新帳戶馀額 - 欲提款金額 (用來判斷是否馀額足夠的依據(jù))
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:執(zhí)行緒名稱, account:Account物件名稱, withdrawMoney:欲提款金額
public WithDraw(String tName, Account account, int withdrawMoney) {
setName(tName);
this.account = account;
this.withdrawMoney= withdrawMoney;
}
public void run() {
// 執(zhí)行提款動作(account:帳號, withdrawMoney 欲提款金額)
account.withDraw(account, withdrawMoney); // 執(zhí)行提款動作
}
}
import java.util.Scanner;
public class ZH {
private String zh;//賬戶
private String password;//密碼
private String openTime;//開戶時間
private String sfz;//身份證號
private double je;//存款金額
public String getZh() {
return zh;
}
public void setZh(String zh) {
this.zh = zh;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getOpenTime() {
return openTime;
}
public void setOpenTime(String openTime) {
this.openTime = openTime;
}
public String getSfz() {
return sfz;
}
public void setSfz(String sfz) {
this.sfz = sfz;
}
public double getJe() {
return je;
}
public void setJe(double je) {
this.je = je;
}
//存款方法
public void ck(double je){
this.je=this.je+je;//存入的金額加上原有的金額
}
//取款方法
public void qk(double je){
if(jethis.je){//取款金額大于余額
System.out.println("存款余額不足");
}else{
this.je=this.je-je;//原有的金額減去取出的金額
}
}
public static void main(String[] args) {
ZH zh = new ZH();//初始化一個賬戶信息
zh.setJe(10000.0);//向zh賬戶添加余額
zh.setOpenTime("2013.12.3");//向zh賬戶添加開發(fā)時間
zh.setPassword("123456");//向zh賬戶添加密碼
zh.setSfz("123456789");//向zh賬戶添加身份證
zh.setZh("zhangsan");//向zh賬戶添加賬號
System.out.println("歡迎光臨模擬銀行");
Scanner scan = new Scanner(System.in);
int count=0;//記錄輸入錯誤的次數(shù)
while(1==1){//循環(huán)
System.out.println("請輸入賬號");
String zhm=scan.next();
System.out.println("請輸入密碼");
String mm=scan.next();
if(zhm.equals(zh.getZh()) mm.equals(zh.getPassword())){//輸入的信息與zh賬戶信息的密碼和賬號一致
while(1==1){
System.out.println("當(dāng)前余額為:"+zh.getJe()+"元。請選擇操作:1.存款;2.取款;3.退出(只能輸入數(shù)字)");
String cz=scan.next();
switch (Integer.parseInt(cz)) {
case 1:
System.out.println("請輸入存款金額(輸入小數(shù))");
double ckje=scan.nextDouble();
zh.ck(ckje);
System.out.println("實(shí)施存款:"+ckje+"元,當(dāng)前余額為"+zh.getJe()+"元");
break;
case 2:
System.out.println("請輸入取款金額(輸入小數(shù))");
double qkje=scan.nextDouble();
zh.qk(qkje);
System.out.println("實(shí)施取款:"+qkje+"元,當(dāng)前余額為"+zh.getJe()+"元");
break;
case 3:
break;
default:
System.out.println("暫無此功能");//輸入1或者2、3以外的操作
break;
}
if("3".equals(cz)){
break;
}
}
System.out.println("退出操作");
break;
}else{
if(count=3){
System.out.println("已輸入錯誤三次,賬號被鎖");
break;//結(jié)束循環(huán)
}else{
System.out.println("賬號或密碼錯誤,請重新輸入");
count++;//錯誤一次count+1
continue;//進(jìn)入下次循環(huán)
}
}
}
}
}
首先得這個Java程序得常年在后臺運(yùn)行。每天都進(jìn)行如下操作:
檢測到當(dāng)天日期,如果不是1月1日,則將標(biāo)志變量置0.
如果是1月1日,檢測標(biāo)志變量,
如果是0:進(jìn)行一次扣費(fèi),然后標(biāo)志變量置1;
如果是1,不進(jìn)行任何操作。
package com.cshr.test;
public class bank {
private String card;//賬號
private String uname;//儲戶姓名
private String address;//地址
private double money;//存款余額
public static final double minMoney=0;//最小余額
public bank(){}
public String getCard() {
return card;
}
public void setCard(String card) {
this.card = card;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public static double getMinmoney() {
return minMoney;
}
}
package com.cshr.test;
import java.util.List;
import org.hibernate.Session;
import com.utils.HibernateSessionFactory;
public class bankDao {
//存款
public void addMoney(double money,double Sqlmoney,String card){
Session session=HibernateSessionFactory.getSession();
try{
session.beginTransaction();
String hql="update bank b set b.money+="+money+Sqlmoney+" where b.card='"+card+"'";
session.createQuery(hql).executeUpdate();
session.beginTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.beginTransaction().rollback();
}finally{
HibernateSessionFactory.closeSession();
}
}
//取款
public void delMoney(double money,double Sqlmoney,String card){
Session session=HibernateSessionFactory.getSession();
try{
session.beginTransaction();
String hql="update bank b set b.money+="+(Sqlmoney-money)+" where b.card='"+card+"'";
session.createQuery(hql).executeUpdate();
session.beginTransaction().commit();
}catch(Exception e){
e.printStackTrace();
System.out.println("取款失敗");
session.beginTransaction().rollback();
}finally{
HibernateSessionFactory.closeSession();
}
}
//查詢所有
public Listbank selectfind(){
Session session=HibernateSessionFactory.getSession();
session.beginTransaction();
String hql="select b from bank b ";
Listbank list=session.createQuery(hql).list();
return list;
}
}
您好,
創(chuàng)建狀態(tài)
使用new運(yùn)算符創(chuàng)建一個線程后,該線程僅僅是一個空對象,系統(tǒng)沒有分配資源,稱該線程處于創(chuàng)建狀態(tài)(new thread)
可運(yùn)行狀態(tài)
使用start()方法啟動一個線程后,系統(tǒng)為該線程分配了除CPU外的所需資源,使該線程處于可運(yùn)行狀態(tài)(Runnable)
運(yùn)行中狀態(tài)
Java運(yùn)行系統(tǒng)通過調(diào)度選中一個Runnable的線程,使其占有CPU并轉(zhuǎn)為運(yùn)行中狀態(tài)(Running)。此時,系統(tǒng)真正執(zhí)行線程的run()方法。
package pack.java.thread.atm;
/**
* 賬戶類;
* @author Administrator
*
*/
public class Account {
private String name; //用戶名;
private int value; //賬戶余額;
/**
* 存入金額;
* @param monery
*/
public void putMonery(int monery){
this.value = this.value + monery;
}
/**
* 取出金額;
* @param monery
* @return 金額;
*/
public int getMonery(int monery){
//判斷是否賬戶余額是否大于 要取出的錢;
if(this.value monery ){
this.value = this.value - monery;
}else{
monery = this.value; //賬戶余額不夠時,則取出,所有的賬戶余額的金額.
this.value = 0;
}
//返回取出的錢;
return monery;
}
/**
* 查詢余額;
* @return 返回賬戶余額;
*/
public int search(){
return this.value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
public?class?Test?extends?PhoneKouFei{
public?Test(String?startTime,?String?stopTime)?{
super(startTime,?stopTime);
}
public?static?void?main(String[]?args)?{
String?start?=?"00:12:23";
String?stop?=?"00:15:23";
new?Test(start,stop);
}
}
abstract?class?PhoneKouFei{
private?final?double?fei?=?1.5;//1分鐘扣1毛5
public?String?startTime;?//通話開始時間
public?String?stopTime;?//通話結(jié)束時間
public?PhoneKouFei(String?startTime,?String?stopTime){
this.startTime?=?startTime;
this.stopTime?=?stopTime;
System.out.println("通話時常:"?+getKouFei()+?"分鐘");
System.out.println("應(yīng)扣費(fèi):"?+?(double)getKouFei()?*?fei);
}
//扣費(fèi)方法
private?final?long?getKouFei(){
java.text.SimpleDateFormat?sim?=?new?java.text.SimpleDateFormat("HH:mm:ss");
try?{
java.util.Date?start?=?sim.parse(this.startTime);
java.util.Date?stop?=?sim.parse(this.stopTime);
return?(stop.getTime()?-?start.getTime())?/?60000;
}?catch?(java.text.ParseException?e)?{
throw?new?RuntimeException("時間格式錯誤..");
}
}
}
//輸出結(jié)果:
通話時常:3分鐘
應(yīng)扣費(fèi):4.5
網(wǎng)頁名稱:java賬戶扣款策略代碼 java賬戶扣款策略代碼查詢
文章地址:http://www.muchs.cn/article32/doocjpc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、移動網(wǎng)站建設(shè)、ChatGPT、小程序開發(fā)、定制網(wǎng)站、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)