public class employee
protected thread thread;
public employee()
///
/// 當前辦理業務的客戶
///
protected customer currentcustomer;
///
/// 獲取下乙個要處理的客戶
///
protected virtual void getcustomer()
protected void dobusiness()
}
}
///
/// 停止工作
///
public void stop()
} vip視窗和快速視窗繼承自普通視窗,僅重寫getcustomer方法即可
///
/// vip業務視窗
///
public class vipemployee:employee
}
}
///
/// 快速業務視窗
///
public class quickemployee:employee
} 接著, 客戶類customer
///
/// 客戶
///
public class customer
///
/// 客戶辦理業務所需的時間
///
public timespan businesstime
} 然後,利用乙個簡單工廠生產客戶customer
view plaincopy to clipboardprint?
///
/// 工廠生成類
///
public class custome***ctory
;
bank.addvipcustomer(customer);
break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
customer = new customer ;
bank.addnormalcustomer(customer);
break;
default:
customer = new customer ;
bank.addquickcustomer(customer);
break;
}
count++;
thread.sleep(interval);
endtime = datetime.now;
}
}
} 最好是bank類。
view plaincopy to clipboardprint?
public class bank
///
/// 從佇列頭獲取普通客戶,如果隊列為空,返回null
///
/// 獲取的客戶
public static customer getnormalcustomer()
}
///
/// 增加普通客戶到佇列尾部
///
/// 要增加的客戶
public static void addnormalcustomer(customer customer)
///
/// 從佇列頭獲取vip客戶,如果隊列為空,返回null
///
/// 獲取的客戶
public static customer getvipcustomer()
}
///
/// 增加vip客戶到佇列尾部
///
/// 要增加的客戶
public static void addvipcustomer(customer customer)
///
/// 從佇列頭獲取快速客戶,如果隊列為空,返回null
///
/// 獲取的客戶
public static customer getquickcustomer()
}
///
/// 增加快速客戶到佇列尾部
///
/// 要增加的客戶
public static void addquickcustomer(customer customer)
} 為了防止佇列異常和多執行緒衝突,簡單地封裝了對三個佇列的獲取和加入方法。
其中的info類是輸出資訊用的,比較簡單,方便日後重構用的。
class info
:加入等待佇列,前面有人等待。", datetime.now, customer.name,queue.count);
}
public static void addbeginbusinessinfo(employee employee, customer customer)
:開始為辦理業務。", datetime.now, employee.name, customer.name);
}
public static void addendbusinessinfo(employee employee, customer customer)
:為辦理業務結束。", datetime.now, employee.name, customer.name);
}
} class info
:加入等待佇列,前面有人等待。", datetime.now, customer.name,queue.count);
} public static void addbeginbusinessinfo(employee employee, customer customer)
:開始為辦理業務。", datetime.now, employee.name, customer.name);
} public static void addendbusinessinfo(employee employee, customer customer)
:為辦理業務結束。", datetime.now, employee.name, customer.name);
} }
最後,在函式入庫進行呼叫就行了。這樣,基本上整個系統的功能實現了。
static void main(string args)
,
new employee ,
new employee ,
new employee ,
new vipemployee ,
new quickemployee
};
thread thd = new thread(new threadstart(custome***ctory.createcustomer));
thd.start();
} 經過,對這個系統的分析,雖然,其中的有參考網上的資料,但是大部分都是自己深刻理解的,因此使我有很大收穫,不僅對乙個系統分析能力提高了,而且,也鍛鍊了我的**編寫能力。
面試題之銀行業務排程系統
模擬實現銀行業務排程系統邏輯,具體需求如下 銀行內有6個業務視窗,1 4號視窗為普通視窗,5號視窗為快速視窗,6號視窗為vip視窗。有三種對應型別的客戶 vip客戶,普通客戶,快速客戶 辦理如交水電費 費之類業務的客戶 非同步隨機生成各種型別的客戶,生成各型別使用者的概率比例為 vip客戶 普通客戶...
銀行業務排程系統
一 銀行業務排程系統 一 需求 模擬實現銀行業務排程系統邏輯,具體需求如下 1.銀行內有6個業務視窗,1 4號視窗為普通視窗,5號視窗為快速視窗,6號視窗為vip視窗。2.有三種對應型別的客戶 vip客戶,普通客戶,快速客戶 辦理如交水電費 費之類業務的客戶 3.非同步隨機生成各種型別的客戶,生成各...
銀行業務排程系統
今天看了張老師的銀行業務排程系統,還是感覺不可思議。開始看專案需求時感覺這裡邊的業務邏輯太複雜。沒想到還是被張老師寫了個把小時的 給搞定。雖然看完之後腦海中對於程式執行過程有些模糊,但起碼現在努力努力寫出個類似的程式不是天方夜談。張老師分析專案的時候,又通過物件導向的思想結合專案分析了下。不禁又想感...