python 银行业务系统程序编程写_python多线程实现代码(模拟银行服务操作流程)
1.模擬銀行服務完成程序代碼
目前,在以銀行營業大廳為代表的窗口行業中大量使用排隊(叫號)系統,該系統完全模擬了人群排隊全過程,通過取票進隊、排隊等待、叫號服務等功能,代替了人們站隊的辛苦。
排隊叫號軟件的具體操作流程為:
顧客取服務序號
當顧客抵達服務大廳時,前往放置在入口處旁的取號機,并按一下其上的相應服務按鈕,取號機會自動打印出一張服務單。單上顯示服務號及該服務號前面正在等待服務的人數。
服務員工呼叫顧客
服務員工只需按一下其柜臺上呼叫器的相應按鈕,則顧客的服務號就會按順序的顯示在顯示屏上,并發出“叮咚”和相關語音信息,提示顧客前往該窗口辦事。當一位顧客辦事完畢后,柜臺服務員工只需按呼叫器相應鍵,即可自動呼叫下一位顧客。
編寫程序模擬上面的工作過程,主要要求如下:
程序運行后,當看到“請點擊觸摸屏獲取號碼:”的提示時,只要按回車鍵,即可顯示“您的號碼是:XXX,您前面有 YYY 位”的提示,其中XXX 是所獲得的服務號碼,YYY 是在 XXX 之前來到的正在等待服務的人數。
用多線程技術模擬服務窗口(可模擬多個),具有服務員呼叫顧客的行為,假設每個顧客服務的時間是10000ms,時間到后,顯示“請 XXX 號到 ZZZ 號窗口!”的提示。其中 ZZZ 是即將為客戶服務的窗口號。
代碼:
以下為 python 實現:
from Task04_Queue.linkedQueue import LinkedQueue
import threading
import time
class LinkBankQueue(LinkedQueue):
def __init__(self):
LinkedQueue.__init__(self)
self.callNumber = 0
def getCallNumber(self):
if self.is_empty() and self.callNumber == 0:
self.callNumber = 1
else:
self.callNumber += 1
return self.callNumber
def getLength(self):
if self.is_empty():
return 0
else:
cur = self._head
len = 1
while cur != self._tail:
cur = cur.next
len += 1
return len
# 服務器
class ServiceWindow(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.bankQueue = None
self.lock = threading.Lock()
def service(self):
self.lock.acquire()
while True:
time.sleep(20)
try:
if not self.bankQueue.is_empty():
print('請 %d 號到 %s 號窗口' % (self.bankQueue._head.data,threading.current_thread().name))
self.bankQueue.dequeue()
# time.sleep(10)
else:
print('隊列為空哦')
finally:
self.lock.release()
# 客戶端
if __name__ == '__main__':
bankQueue = LinkBankQueue()
windowcount = 2
serviceWindows = [None] * windowcount
threadList = [None] * windowcount
for i in range(windowcount):
serviceWindows[i] = ServiceWindow()
serviceWindows[i].bankQueue = bankQueue
threadList[i] = threading.Thread(name=(i + 1),target=serviceWindows[i].service,args=())
threadList[i].start()
while True:
input('請點擊觸摸屏獲取號碼:')
callNumber = bankQueue.getCallNumber()
if bankQueue != None:
print('您的號碼是:%d,您前面有 %d 位' % (callNumber,bankQueue.getLength()))
bankQueue.enqueue(callNumber)
else:
print('您的號碼是:%d,您前面有 0 位' % (callNumber))
結果截圖:
總結
以上所述是小編給大家介紹的python多線程實現代碼(模擬銀行服務操作流程),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對我們網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
總結
以上是生活随笔為你收集整理的python 银行业务系统程序编程写_python多线程实现代码(模拟银行服务操作流程)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哈尔滨看男性不育最好的医院推荐
- 下一篇: 极米h2投屏有乱码,有时候只有声音没有画