上次說道了《交通燈管理系統》的設計需求,今天我們來說下《銀行業務排程系統》設計需求分析。大家看者這個名字是不是比較感興趣銀行是怎麼辦公的。今天我們來分析下:
1.設計需求
模擬實現銀行業務排程系統邏輯,具體需求如下:
銀行內有6個業務視窗,1 -4號視窗為普通視窗,5號視窗為快速視窗,6號視窗為vip視窗。
有三種對應型別的客戶:vip客戶,普通客戶,快速客戶(辦理如交水電費、**費之類業務的客戶)。
非同步隨機生成各種型別的客戶,生成各型別使用者的概率比例為:
vip客戶 :普通客戶 :快速客戶=1 :6 :3。
各型別客戶在其對應視窗按順序依次辦理業務。
當vip(6號)視窗和快速業務(5號)視窗沒有客戶等待辦理業務的時候,這兩個視窗可以處理普通客戶的業務,而一旦有對應的客戶等待辦理業務的時候,則優先處理對應客戶的業務。
隨機生成客戶時間間隔以及業務辦理時間最大值和最小值自定,可以設定。
不要求實現gui,只考慮系統邏輯實現,可通過log方式展現程式執行結果。
2.numbermanger類
numbermanager類
定義乙個用於儲存上乙個客戶號碼的成員變數和用於儲存所有等待服務的客戶號碼的佇列集合。
定義乙個產生新號碼的方法和獲取馬上要為之服務的號碼的方法,這兩個方法被不同的執行緒操作了相同的資料,所以,要進行同步。
3.numbermachine類
定義三個成員變數分別指向三個numbermanager物件,分別表示普通、快速和vip客戶的號碼管理器,定義三個對應的方法來返回這三個numbermanager物件。
將numbermachine類設計成單例。
4.customertype列舉類
系統中有三種型別的客戶,所以用定義乙個列舉類,其中定義三個成員分別表示三種型別的客戶。
重寫tostring方法,返回型別的中文名稱。這是在後面編碼時重構出來的,剛開始不用考慮。
5.servicewindow類
定義乙個start方法,內部啟動乙個執行緒,根據服務視窗的類別分別迴圈呼叫三個不同的方法。
定義三個方法分別對三種客戶進行服務,為了觀察執行效果,應詳細列印出其中的細節資訊
看看一點**
private void expressservice()catch (interruptedexception e)
system.out.println(windowname+ "完成為第" + servicenumber + "號快速客戶服務,總共耗時" + servicetime/1000 +"秒");
}else
}6.mainclass類
用for迴圈建立出4個普通視窗,再建立出1個快速視窗和乙個vip視窗。
接著再建立三個定時器,分別定時去建立新的普通客戶號碼、新的快速客戶號碼、新的vip客戶號碼。
7.constants類
定義三個常量:max_service_time、min_service_time、common_customer_interval_time
銀行業務排程系統
一 銀行業務排程系統 一 需求 模擬實現銀行業務排程系統邏輯,具體需求如下 1.銀行內有6個業務視窗,1 4號視窗為普通視窗,5號視窗為快速視窗,6號視窗為vip視窗。2.有三種對應型別的客戶 vip客戶,普通客戶,快速客戶 辦理如交水電費 費之類業務的客戶 3.非同步隨機生成各種型別的客戶,生成各...
銀行業務排程系統
今天看了張老師的銀行業務排程系統,還是感覺不可思議。開始看專案需求時感覺這裡邊的業務邏輯太複雜。沒想到還是被張老師寫了個把小時的 給搞定。雖然看完之後腦海中對於程式執行過程有些模糊,但起碼現在努力努力寫出個類似的程式不是天方夜談。張老師分析專案的時候,又通過物件導向的思想結合專案分析了下。不禁又想感...
銀行業務排程
張孝祥老師7k面試題之銀行業務排程 這道題還是有些難度的,不過一步一步分析,也不那麼難理解,本片部落格重點說說思路 一.需求分析 1 銀行內有6個業務視窗,4個普通視窗,1快速視窗,1個vip視窗。2 有三種對應型別的客戶 vip客戶,普通客戶,快速客戶。3 vip客戶以及普通客戶辦理業務所需的時間...