python排队叫号_python多线程实现代码(模拟银行服务操作流程)

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 =
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:
lease()
# 客户端
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 = CallNumber()
if bankQueue != None:
print('您的号码是:%d,您前⾯有 %d 位' % (callNumber, Length()))
else:
print('您的号码是:%d,您前⾯有 0 位' % (callNumber))
结果截图:
总结
以上所述是⼩编给⼤家介绍的python多线程实现代码(模拟银⾏服务操作流程),希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对python博客⽹站的⽀持!
如果你觉得本⽂对你有帮助,欢迎转载,烦请注明出处,谢谢!

本文发布于:2024-09-23 18:32:51,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/357796.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:熔接注意事项
下一篇:排队叫号系统
标签:服务   模拟   排队   等待   系统   相应   号码   转载
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议