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多线程实现代码(模拟银行服务操作流程)相关推荐

  1. python银行业务办理时间_python多线程实现代码(模拟银行服务操作流程)

    1.模拟银行服务完成程序代码 目前,在以银行营业大厅为代表的窗口行业中大量使用排队(叫号)系统,该系统完全模拟了人群排队全过程,通过取票进队.排队等待.叫号服务等功能,代替了人们站队的辛苦. 排队叫号 ...

  2. python 银行业务系统程序编程写_python多线程实现代码(模拟银行服务操作流程)

    1.模拟银行服务完成程序代码 目前,在以银行营业大厅为代表的窗口行业中大量使用排队(叫号)系统,该系统完全模拟了人群排队全过程,通过取票进队.排队等待.叫号服务等功能,代替了人们站队的辛苦. 排队叫号 ...

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

    1.模拟银行服务完成程序代码 目前,在以银行营业大厅为代表的窗口行业中大量使用排队(叫号)系统,该系统完全模拟了人群排队全过程,通过取票进队.排队等待.叫号服务等功能,代替了人们站队的辛苦. 排队叫号 ...

  4. python实用程序育儿法_Python多线程 简明例子

    Python多线程 简明例子 (2010-03-11 15:15:09) Python多线程 简明例子 综述 多线程是程序设计中的一个重要方面,尤其是在服务器Deamon程序方面.无论何种系统,线程调 ...

  5. python银行取钱_python模拟银行自助取款

    # 卡号 card1="1001" pwd1="123456" ban1=10000 card2="1002" pwd2="123 ...

  6. python爬取天天基金_python多线程+代理池爬取天天基金网、股票数据过程解析

    简介 提到爬虫,大部分人都会想到使用Scrapy工具,但是仅仅停留在会使用的阶段.为了增加对爬虫机制的理解,我们可以手动实现多线程的爬虫过程,同时,引入IP代理池进行基本的反爬操作. 本次使用天天基金 ...

  7. python request url 转义_Python多线程抓取Google搜索链接网页

    1)urllib2+BeautifulSoup抓取Goolge搜索链接 近期,参与的项目需要对Google搜索结果进行处理,之前学习了Python处理网页相关的工具.实际应用中,使用了urllib2和 ...

  8. python创建线程函数_Python多线程编程(三):threading.Thread类的重要函数和方法...

    这篇文章主要介绍threading模块中的主类Thread的一些主要方法,实例代码如下: 复制代码 代码如下: ''' Created on 2012-9-7 @author:  walfred @m ...

  9. python等号语法错误_Python干货:代码编写规范

    本章节我们来讲述一下Python的编码规范,通过详细对代码编写规则以及命名规范等进行介绍. 1.编写规则 Python采用PEP 8 的编码规范,接下来会讲解一些我们在学习Python过程应该严格遵守 ...

最新文章

  1. Hadoop 4、Hadoop MapReduce的工作原理
  2. python创建与遍历List二维列表
  3. GDCM:将DICOM文件和XML文件相互转换的测试程序
  4. easy ui 使用总结
  5. 让物联网真正起飞的关键:无线充电
  6. win8.1 64位安装oracle10g客户端心得
  7. python socket清空接受区_用 Python 开发一个 「聊天室」
  8. [转] C# mysql 事务回滚
  9. PMP常考知识点整理
  10. 在线预览word接口
  11. ipv4网络无访问权限
  12. Pytorch forward方法调用原理
  13. Android组件化跨进程通信框架Andromeda解析
  14. 2005年10月--至今 开发过的项目
  15. 【整理】Python中的re.search和re.findall之间的区别和联系 + re.finall中带命名的组,不带命名的组,非捕获的组,没有分组四种类型之间的区别
  16. 大数据内功修炼到企业实战2.0
  17. Nodejs 中运行 JS 代码
  18. 微信视频服务器能保存多久,微信视频动态保存多久(微信背景视频只能一天吗)...
  19. antd Upload 文件上传
  20. Pytorch+PyG实现GraphSAGE

热门文章

  1. Leetcode-437. 路径总和 III(Java)
  2. 计算机组成原理——Cache与主存的地址映射
  3. php搜索间隔,php – 如何查找超过2个用户的匹配时间间隔
  4. docker port如何增加端口_docker部署redis实战
  5. php修改找不到数据类型,php – 在$_POST中找不到输入类型=图像值
  6. mongodb 监听不到端口_干货|MongoDB简单操作和通过python进行操作
  7. spring版本 jdk8_从JDK8升级到JDK11,看这篇就足够了
  8. python爬去朋友圈_利用Python爬取朋友圈数据,爬到你开始怀疑人生
  9. C++ 获取char*的长度
  10. 重装谷歌浏览器chrome:未知错误导致安装失败