1. 程式人生 > >Java銀行排程系統

Java銀行排程系統

package heimablog.bank;

import java.util.Random;
import java.util.concurrent.Executors;
import java.util.logging.Logger;

public class ServiceWindow {
	private static Logger logger = Logger.getLogger("heimablog.bank");
	private CustomerTypes type = CustomerTypes.COMMON;
	private int windowId = 1;
	
	public CustomerTypes getType() {
		return type;
	}
	public void setType(CustomerTypes type) {
		this.type = type;
	}
	public void setWindowId(int windowId) {
		this.windowId = windowId;
	}
	
	public void start(){
		Executors.newSingleThreadExecutor().execute(new Runnable() {
			
			@Override
			public void run() {
				while (true) {
					switch (type) {
					case COMMON:
						commonService();
						break;
					case EXPRESS:
						expressService();
						break;
					case VIP:
						vipService();
						break;
					}
				}
			}
		});
	}
	
	private void commonService() {
		String windowName = "第 " + windowId + " 號 " + type + " 視窗";
		System.out.println(windowName + "開始獲取 普通 任務-->");
		Integer number = NumberMachine.getInstance().getCommonManager().fetchServiceNumber();
		if (number != null) {
			System.out.println(windowName + "開始為第" + number + "號" + "普通客戶服務~~~");
			long beginTime = System.currentTimeMillis();
			int maxRand = Constants.MAX_SERVER_TIME - Constants.MIN_SERVER_TIME;
			long serverTime = new Random().nextInt(maxRand) + 1 + Constants.MIN_SERVER_TIME;
			try {
				Thread.sleep(serverTime);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			long endTime = System.currentTimeMillis();
			long costTime = endTime -beginTime;
			System.out.println(windowName + "完成為第" + number + "號" + "普通" + "客戶服務,總共耗時" + costTime/1000 + "秒!");
		}else {
			System.out.println(windowName + "沒有取到普通任務,正在空閒一秒!");
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	
	private void expressService() {
		Integer number = NumberMachine.getInstance().getExpressManager().fetchServiceNumber();
		String windowName = "第 " + windowId + " 號 " + type + " 視窗";
		System.out.println(windowName + "開始獲取快速任務--->");
		if (number != null) {
			System.out.println(windowName + "開始為第" + number + "號"  + "快速客戶服務~~~");
			long beginTime = System.currentTimeMillis();
			long serverTime = Constants.MIN_SERVER_TIME;
			try {
				Thread.sleep(serverTime);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			long endTime = System.currentTimeMillis();
			long costTime = endTime -beginTime;
			System.out.println(windowName + "完成為第" + number + "號" + "快速客戶服務,總共耗時" + costTime/1000 +"秒!");
		}else {
			System.out.println(windowName + "沒有獲取到 express 任務,獲取 common 任務!");
			commonService();
		}
	}
	
	private void vipService() {
		Integer number = NumberMachine.getInstance().getVipManager().fetchServiceNumber();
		String windowName = "第 " + windowId + " 號 " + type + " 視窗";
		System.out.println(windowName + "開始獲取VIP任務--->");
		if (number != null) {
			System.out.println(windowName + "開始為第" + number + "個號"  + "VIP客戶服務~~~");
			long beginTime = System.currentTimeMillis();
			int maxRand = Constants.MAX_SERVER_TIME - Constants.MIN_SERVER_TIME;
			long serverTime = new Random().nextInt(maxRand) + 1 + Constants.MIN_SERVER_TIME;
			try {
				Thread.sleep(serverTime);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			long endTime = System.currentTimeMillis();
			long costTime = endTime -beginTime;
			System.out.println(windowName + "完成為第" + number + "號"  + "VIP客戶服務,總共耗時" + costTime/1000 + "秒!");
		}else {
			System.out.println(windowName + "沒有獲取到 VIP 任務,獲取 common 任務!");
			commonService();
		}
	}
}

相關推薦

Java銀行排程系統

package heimablog.bank; import java.util.Random; import java.util.concurrent.Executors; import java.util.logging.Logger; public class ServiceWind

黑馬程式設計師------------高新面試題之銀行排程系統

     面向物件的分析和設計說明:        1、有三種客戶:VIP客戶、普通客戶、快速客戶。需要非同步隨機產生各種型別的客戶。        2、每一個客戶其實就是由銀行的一個取號機器產生號碼的方式來表示的。所以,要有一個號碼管理器物件,讓這個物件不斷地產生號碼,就等於隨機生成了客戶。        

【黑馬程式設計師】7K面試題之銀行排程系統

模擬實現銀行業務排程系統邏輯,具體需求如下: Ø        銀行內有6個業務視窗,1- 4號視窗為普通視窗,5號視窗為快速視窗,6號視窗為VIP視窗。 Ø        有三種對應型別的客戶:VIP客戶,普通客戶,快速客戶(辦理如交水電費、電話費之類業務的客戶)。

黑馬程式設計師_7K面試題之銀行排程系統

------- android培訓、java培訓、期待與您交流! ---------- 銀行業務排程系統 1. 模擬實現銀行業務排程系統邏輯,具體需求如下:銀行內有6個業務視窗,1 - 4號視窗為普通視窗,5號視窗為快速視窗,6號視窗為VIP視窗。有三種對應型別的客戶:

Java-SSH2-網上銀行交易系統

說明:所有原始碼已上傳到筆者GitHub上,歡迎follow。感謝!!! 語言: Java 框架: 使用ssh2(spring3-struts2-hibernate4)框架開發的網上銀行系統 功能: 使用者角色包括管理員和普通使用者兩種,

java基礎練習——ATM銀行管理系統

1.需求說明   2.建立屬性類 package ATM; /* * 定義賬號和密碼 */ public class ATMbean { //定義使用者名稱和密碼 private String username = "張三"; private String pass

JDBC專案實戰,使用Java和MySQL實現銀行ATM系統

JDBC 資料庫階段性專案:ATM系統 需求分析 一、ATM機 1、要求使用插卡(這裡使用卡號)和密碼登入ATM系統; 2、能夠根據使用者賬戶的凍結狀態判斷使用者是否能夠進入系統並給出提示; 3、使用者進入系統後可以檢視其賬戶所有資訊; 4、使用者可以存取款與轉

Quartz+JAVA+Servlet實現任務排程系統(簡潔)

1.開發環境 tomcat8.5,Jdk1.8,maven ;技術:java ,quartz,servlet(為了簡便) 2.該系統使用場景: `在12306上買了一張火車票,30分鐘內需要支付(需要新增一個倒計時),30分鐘還沒有支付就請求取消訂單的介

JAVA小專案-銀行管理系統(圖形化介面)3-登入與查詢

還是老規矩 ,先上圖, 得清晰的認識到自己寫到哪了, 還差多少 我們看圖 出了掛失ReportLose和資訊註冊Register 我們不要進行資訊驗證 其他在途中都必須進行 但我為什麼要綜合成一個呢, 因為懶, 覺得寫6個一樣的貼上都感覺很狗 但

面向物件銀行管理系統JAVA程式碼《上》

面向物件模擬銀行管理系統(java): 一般銀行賬戶分為:借記卡賬戶和信用卡賬戶 借記卡賬戶 DebitAccount :是指先存款後消費(或取現),沒有透支功能的銀行卡。 即儲存卡賬戶,餘額必須大於0。 信用卡賬戶 CreditAccount :信用卡是一種非

Java設計的銀行取款系統-Mysql資料庫(改進篇)2017/7/16

前言 這是前一篇http://blog.csdn.net/u011958281/article/details/73499642博文,沒有想到會有那麼多讀者,初次編寫,為了實現功能,犧牲了很多,最近經過一輪學習,有了一點新的想法,結合學習,特此分享ATM加

JAVA小專案--銀行管理系統

銀行新使用者現金業務辦理 1.任務描述     編寫一個銀行新使用者現金業務辦理程式,使其模擬新使用者到銀行辦理現金存取業務時的場景。     要求此場景中,要模擬出銀行對使用者到來的歡迎動作、對使用者離開的提醒動作,以及使用者的開戶、存款和取款

黑馬程式設計師_7k面試題之銀行業務排程系統

----------- android培訓、java培訓、java學習型技術部落格、期待與您交流! --------- 一.專案需求: 模擬實現銀行業務排程系統邏輯,具體需求如下: 銀行內有6個業務視窗,1 - 4號視窗為普通視窗,5號視窗為快速

黑馬程式設計師——面試題——2.銀行業務排程系統

----------  android培訓、java培訓、期待與您交流! ---------- 銀行業務排程系統 ----------------------------------------------------------------------------

基於Java銀行取款系統

沒配資料庫之前點登入註冊不會跳轉 配置方法:(建立資料庫atm,表格bank) CREATE DATABASE atm; CREATE TABLE bank(id int(11) NOT NULL AUTO_INCREMENT, name varchar(255

黑馬程式設計師-----高薪面試題-銀行業務排程系統

------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! ------- 一、需求 模擬實現銀行業務排程系統邏輯

黑馬程式設計師---7k面試題(銀行業務排程系統

號碼管理器 publicclassNumberManager{ privateint lastNumber =0;//客戶數 privateList queueNumbers =newArrayList();//視窗叫號數 publicsynchronizedInteger generateN

JAVA獲取當前系統事件System.currentTimeMillis()

語句 long sys -m 結果 simple 1970年1月1日 str 時間 System.currentTimeMillis()產生一個當前的毫秒,這個毫秒其實就是自1970年1月1日0時起的毫秒數,Date()其實就是相當於Date(System.currentT

開源 java 電商系統

details nbsp www href Lucene java 電商系統 tar 電商 shop++是基於spring、springmvc等主流框架開發,參考資料比較全面,上手容易; 比 javashop 代碼可讀性好. 適合二次開發 6、broadleaf基

Java門店管理系統 客戶資料檔案管理 庫存管理 進銷存 SSM項目源碼

進銷存 ssm 商戶管理系統 客戶管理 庫存管理 系統介紹:1.系統采用主流的 SSM 框架 jsp JSTL bootstrap html5 (PC瀏覽器使用)2.springmvc +spring4.3.7+ mybaits3.3 SSM 普通java web(非maven, 附贈