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))

结果截图:

25e582d55e9bc14b69af0ffd67cbd7d1.png

总结

以上所述是小编给大家介绍的python多线程实现代码(模拟银行服务操作流程),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对聚米学院网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符串左侧补0_(48)C++面试之最长不含重复字符的子字符串(动态规划)

// 面试题48&#xff1a;最长不含重复字符的子字符串// 题目&#xff1a;请从字符串中找出一个最长的不包含重复字符的子字符串&#xff0c;计算该最长子// 字符串的长度。假设字符串中只包含从a到z的字符。#include <vector> #include <string> #include <iost…

java udp 同一个端口实现收发_Java网络编程之UDP协议

伙伴们注意了&#xff01;小编在这里给大家送上关注福利&#xff1a;搜索微信公众号“速学Java”关注即可领取小编精心准备的资料一份&#xff01;今天我们来聊聊网络编程这部分的内容网络编程1)计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0…

java 多态_Java面向对象 —— 多态

前两天已经相继介绍了Java面向对象的三大特性之中的封装、继承&#xff0c;所以今天就介绍Java面向对象的三大特性的最后一项&#xff0c;多态~首先讲一下什么是多态&#xff0c;以及多态需要注意的细节 什么是多态&#xff1a;一个对象具备多种形态&#xff0c;也可以理解为事…

vb6 方法‘ ’作用于对象 失败_JS基础入门-对象的使用

今日背诵小纸条对象是一组属性方法的组合&#xff0c;其中可包含基本值、对象和函数对象的定义1 对象字面量var hero{name: ‘产品小姐姐’&#xff0c;age: 16&#xff0c;weapon: [ ‘头盔’, ‘靴子’, ‘盔甲 ]&#xff0c;sayHi: function ( ) {console.log( this.name ’…

无法从套接字读取更多的数据 oracle_小伙面试时被追问数据库优化,面试前如何埋点反杀?

前言周五的早高峰, 各地软件园地铁站里中出现了不少穿着长袖加绒格子衫, 背双肩电脑包的年轻码农, 现在节气正值 [ 小雪 ] , 11月的全国性突然降温 , 让经历过996摧残的猿们一出地铁站就冻的打了个激灵 , 很庆幸的告诉大家距离放年假还剩不到 37 个工作日, 要买火车票的赶紧预约…

qlineedit限制输入数字_Excel单元格限制录入,实用小技巧

在填写资料表格的时候&#xff0c;为了不防止出错&#xff0c;会在单元格中设置一些技巧&#xff0c;限制对方输入内容&#xff0c;这样可以更好的预防输入错误。那么单元格限制输入技巧是如何实现的呢&#xff1f;1、限制只能录入数字比如单元格是我们要用来填写年龄数据等数字…

java二维数组 内存分配_java中二维数组内存分配

区分三种初始化方式&#xff1a;格式一&#xff1a;数据类型[][] 数组名 new 数据类型[m][n];m:表示这个二维数组有多少个一维数组。n:表示每一个一维数组的元素有多少个。//例&#xff1a;int arr[][]new int[3][2];如下图格式二&#xff1a;数据类型[][] 数组名 new 数据类…

word公式插件_如何快速输入复杂的数学公式?这里有 3 个实用技巧

不管你是不是科研狗&#xff0c;都可能遇到过在文章中插入公式。而我们最常用的就是使用 Word 自带的公式编辑器输入&#xff0c;Word 公式可以很好地匹配文章的格式&#xff0c;自然地插入文中。有时候处理一个公式简单&#xff0c;但如果你要输入大量公式&#xff0c;键盘、鼠…

java观察者模式本质_6.[研磨设计模式笔记]观察者模式

1.定义定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并自动更新。2.解决问题——订阅报纸看起来订阅者是直接根有据打交道&#xff0c;但实际上&#xff0c;订阅者的订阅数据是被邮寄传递到报社&#xff0…

粒子群算法tsp java_粒子群算法解决TSP问题

1. 粒子群算法简介粒子群算法(particle swarm optimization&#xff0c;PSO)由Kennedy和Eberhart在1995年提出&#xff0c;属于进化算法的一种&#xff0c;是通过对模拟鸟群扑食行为设计的。基本思想&#xff1a;从随机解出发&#xff0c;通过迭代寻找最优解&#xff0c;通过适…

hive mysql性能_Hive数据库安全审计功能

【Hive数据库安全审计简介】Hive数据库安全审计是一款基于数据库通讯协议准确分析和SQL完全解析技术的数据库安全审计系统。实现了对数据库操作、访问用户及外部应用用户的审计&#xff0c;可以用于安全合规、用户行为分析、运维监控、风控审计、事件追溯等与数据库安全相关的管…

linux安装sz rz_超级好用的文件传输命令rz与sz

做生物信息经常需要在本地客户端与服务器之间进行文件的传输&#xff0c;例如将要分析的数据传到Linux服务器上&#xff0c;进行分析&#xff0c;分析结束之后将结果下载到本地windows系统进行查看。以前我们都推荐大家使用比较稳定&#xff0c;并且支持断点续传的Filezilla或者…

visual studio 按钮判断管理员和用户_用户管理的设计原则

后台的使用者通常是企业的各类权限的管理员&#xff0c;通过对用户管理的合理设计&#xff0c;让管理员准确、高效地完成既定任务&#xff0c;来实现用户管理的价值。后台产品的使命是为企业提升效率&#xff0c;降低成本&#xff0c;而用户管理是后台的核心部分&#xff0c;用…

windows。forms.timer设置第一次不等待_面试官:换人!他连 TCP 这几个参数都不懂(一)...

前言TCP 性能的提升不仅考察 TCP 的理论知识&#xff0c;还考察了对于操作系统提供的内核参数的理解与应用。TCP 协议是由操作系统实现&#xff0c;所以操作系统提供了不少调节 TCP 的参数。如何正确有效的使用这些参数&#xff0c;来提高 TCP 性能是一个不那么简单事情。我们需…

微信网页开发教程 php,PHP实现微信网页授权开发教程,php授权教程_PHP教程

PHP实现微信网页授权开发教程&#xff0c;php授权教程微信网页授权是服务号才有的高级功能&#xff0c;开发者可以通过授权后获取用户的基本信息&#xff1b;在此之前&#xff0c;想要获取消息信息只能在用户和公众号交互时根据openid获取用户信息&#xff1b;而微信网页授权可…

lstm原文_LSTM模型与水文模型在径流模拟中的比较

学术简报题目:Comparison of Long Short Term Memory Networks and the Hydrological Model in Runoff Simulation作者:Hailin You1,Hongxiang Fan2,Ligang Xu2,Yongmi Wu1,*,Lizhen Liu2 and Zhong Yao1作者单位:1 Poyang Lake Research Center, Jiangxi Academy of Sciences,…

php 安装 bzip2,php如何安装bzip2

php安装bzip2的方法&#xff1a;首先安装扩展依赖的系统bzip2开发库&#xff1b;然后编译安装php源码包目录下的“ext/bz2”扩展&#xff1b;最后修改“php.ini”配置文件即可。php安装bzip2安装扩展依赖的系统bzip2开发库sudo yum install bzip2-devel编译安装php源码包目录下…

mysql 触发器不能同时 insert or update or delete_MySQL6:触发器

什么是触发器MySQL的触发器(trigger)和存储过程一样&#xff0c;都是嵌入到MySQL中的一段程序。触发器是由事件来触发某个操作&#xff0c;这些事件包括INSERT、UPDATE和DELETE语句。如果定义了触发程序&#xff0c;当数据库执行这些语句的时候就会激发触发器执行相应的操作&am…

mysql 强制使用索引_快速找出MySQL数据库冗余索引和未使用索引

冗余索引和未使用索引的危害随着上线的业务越来越多&#xff0c;在MySQL数据库中建的表也会越来越多&#xff0c;为提高查询访问速度&#xff0c;会创建相应的索引。但是由于技术人员的水平参差不齐&#xff0c;业务下线&#xff0c;代码逻辑变更等原因&#xff0c;导致线上数据…

java第一次课必修实验答案,Java第一次实验报告

北京电子科技学院(BESTI)实验报告课程&#xff1a;Java实验 班级&#xff1a;201352 姓名&#xff1a;池彬宁 学号&#xff1a;20135212成绩&#xff1a; 指导教师&#xff1a;娄佳鹏 实验日期&#xff1a;15.04.14实验密级&#xff1a; 预习程度…