一、 项目概述
智能排队叫号系统是在银行等待业务办理区域所使用的智能叫号系统,系统可有效解决客户办理业务时排队的无序、业务员工作量的不平衡、就诊环境嘈杂等问题。

二、 需求分析
主要分为取号、排队等待叫号、叫号办理业务
取号系统支持随时添加取号信息(编号、姓名、取号时间),信息将被添加到数据文件中。
写这一取号部分主要就是数据的存储,把编号、姓名、取号时间存储到CSV文档中
叫号系统每隔十分钟叫取五个等待中的号码。每个号码叫三遍,每遍间隔三秒钟,控制台输入取号标识(如:y)代表成功叫号准备就诊。若超时未输入当前号码作废,继续叫取下一个排队中号码,并将作废挂号信息添加到过号数据文件中。支持过号用户查询过号数据。
写这一部分主要就是有两种方法:第一种引用threading模块,利用timer方法实现每个号码叫三遍,每遍间隔三秒钟,但是好像每隔十分钟叫取五个等待中的号码怎么也实现不了所以呢用第二种方法,for循环语句+time这一模块,叫三遍=循环三次,间隔三秒钟=time.sleep(3),隔十分钟类似
三、 数据结构设计
本次实训运用的是Python,在该任务中,主要运用了list(),for循环,以及if条件判断,例如:每个页面的打开、关闭、返回上个界面多次用到if条件判断语句;遍历列表的信息、读取存入到csv中的数据,多次用到for循环语句。
四、 存储结构设计
本次实训运用的是csv文件写入模块,运用csv的写入和读取这两个方法。例如:取号信息的写入、过期号码的写入用到了csv的写入方法;管理员读取排队列表、过期号码信息用到了csv的读取的方法。
五、 算法设计与分析
yell_code():在该函数中引用了time这一模块,运用了三次for循环实现了每隔十分钟叫取五个等待中的号码。每个号码叫三遍,每遍间隔三秒钟这一功能(叫号功能的实现)
take_code():在该函数中引用csv这一模块,把取号的信息写入csv列表中,加入list(),使得每个进入银行的客户能取到一个号码,并能根据自己取到的号看到自己还需等待多久(取号功能的实现)

六、 程序实现
import time
import csv
import datetime
def user_agent(x):#各种用户
if x==‘v’:
print(‘VIP用户:’)
print(‘请您直接去VIP客房直接办理业务’)
x=input()
if x==‘0’:
main()
elif x==‘1’:
print(‘普通用户:’)
welcome()
elif x==‘2’:
print(‘特殊用户:’)
print(‘请您去快速窗口直接办理业务’)
x=input()
if x==‘0’:
main()

def welcome():#欢迎普通用户取号界面
print(’*****************************’)
print(‘按1取号’+’\n’+‘按0返回上一界面’)
x = input()
if x ==‘1’:
number = 1001
take_code(number)
number +=1
return
elif x ==‘0’:
main()

def yell_code():#叫号实现的功能
print(‘如果叫号成功请输入y准备办理业务’+’\n’+‘如果叫号失败输入n当前号码作废’+’\n’+‘读取过期号列表请按r’)
l = list(range(1001,1101))
for i in l:
if i%50:
time.sleep(10)
n = l[l.index(i)-4:l.index(i)+1]
print(n)
for q in n:
for m in range(1,4):
time.sleep(3)
now_time = datetime.datetime.now()
print(‘第’+str(m)+‘次叫号’+’\n’+‘请’+str(q)+‘号办理业务’,now_time.strftime(’%Y/%m/%d %H:%M:%S’))
time.sleep(9)
x = input()
if x’y’:
print(‘请办理业务’)
elif x ‘n’:
print(‘当前号码作废’)
read_info1(str(q))
elif x’r’:
read_info2()
elif x==‘0’:
main1()

过期号码系统

def write_head1():#表头
csv_file = open(‘files\overtime.csv’,‘w’)
writer = csv.DictWriter(csv_file,fieldnames=[‘过期的号’,‘姓名’,‘银行卡号’,‘取号时间’],lineterminator = ‘\n’)
writer.writeheader()
print(writer)

def write_info1(number,bianhao,name,time):#录入过期号码表
csv_file = open(‘files/overtime.csv’,‘at’)
writer = csv.DictWriter(csv_file,fieldnames=[‘过期的号’,‘姓名’,‘银行卡号’,‘取号时间’],lineterminator = ‘\n’)
writer.writerow({‘取到的号’:number,‘姓名’:name,‘银行卡号’:bianhao,‘取号时间’:time})
def read_info2():#读取过期号码(overtime)表
csv_file = open(‘files/overtime.csv’,‘rt’)
data = csv.reader(csv_file)
for d in data:
print(d)
def read_info1(x):#过期文件录入
csv_file = open(‘files/code.csv’,‘rt’)
data = csv.reader(csv_file)
for d in data:
if x ==d[0]:
write_info1(d[0],d[1],d[2],d[3])
print(‘过期的号码:’+d[0]+’ ‘+‘姓名:’+d[1]+’ ‘+‘银行卡号:’+d[2]+’ '+‘取号时间:’+d[3])

取号系统

def write_head():#取号code表头
csv_file = open(‘files\code.csv’,‘w’)
writer = csv.DictWriter(csv_file,fieldnames=[‘取到的号’,‘姓名’,‘银行卡号’,‘取号时间’],lineterminator = ‘\n’)
writer.writeheader()
print(writer)
def read_info():#读取排队列表
csv_file = open(‘files/code.csv’,‘rt’)
data = list(csv.reader(csv_file))
for d in data:
if data.index(d)>0:
print(‘取到的号:’+d[0]+’ ‘+‘姓名:’+d[1]+’ ‘+‘银行卡号:’+d[2]+’ '+‘取号时间:’+d[3])
def write_info(number,bianhao,name,time):#录入排队列表
csv_file = open(‘files/code.csv’,‘at’)
writer = csv.DictWriter(csv_file,fieldnames=[‘取到的号’,‘姓名’,‘银行卡号’,‘取号时间’],lineterminator = ‘\n’)
writer.writerow({‘取到的号’:number,‘姓名’:name,‘银行卡号’:bianhao,‘取号时间’:time})

def take_code(number):#取号
while True:
print(‘请输入姓名:’)
name = input()
if name==‘0’:
welcome()
print(‘请输入银行卡号:’)
bianhao = input()
if bianhao==‘0’:
welcome()
now_time = datetime.datetime.now()
write_info(number,bianhao,name,now_time.strftime(’%Y/%m/%d %H:%M:%S’))
print(‘取号成功,等待叫号’)
print(‘您的编号是:’)
print(number)
print(‘您的取号时间是:’)
print(now_time.strftime(’%Y/%m/%d %H:%M:%S’))
print(‘按任意键继续取号,按y结束’)
number=number+1
x = input()
if x == ‘y’:
welcome()
x = input()
if x==‘1’:
take_code(number)
def main():#取号主函数
print(’*************************************’)
print('
欢迎进入##银行系统取号系统’)
print(’***************************************’)
print(‘如果您是VIP用户请输入v;’+’\n’+‘如果您是普通用户请输入1;’+’\n’+‘如果您是军人、烈士家属、残疾人请输入2;’)
print(‘退出系统请按0’)
x = input()
if x==‘0’:
main2()
user_agent(x)
def main1():#叫号主函数
print(’*************************************’)
print('
欢迎进入##银行系统叫号系统’)
print(’***************************************’)
print(‘按1请执行叫号任务’+’\n’+‘按2执行查看排队列表’+’\n’+‘按0返回上一界面’)
y = input()
if y==‘1’:
yell_code()

elif y=='2':read_info()print('请按0返回上一界面')x=input()if x=='0':main1()
elif y=='0':main2()

def main2():#主函数
print(‘如果您是用户请按1’+’\n’+‘如果您是管理员请按2’)
print(‘温馨提示按键0为返回上一界面’)
x = input()
if x==‘1’:
main()
elif x==‘2’:
main1()
elif x==‘0’:
print(‘已是首页’)
main2()

write_head()

write_head1()

main2()
七、 程序运行结果与分析
取号操作:
取号界面有三个用户选项,这也是考虑到用户的种群不同
叫号操作:
叫号操作叫号系统每隔十秒叫取五个等待中的号码。每个号码叫三遍,每遍间隔三秒钟

用python写银行叫号系统(这个是学校的实训题目,真的没什么技术含量)相关推荐

  1. python atm银行取款系统_Python实现ATM系统

    今天偶尔在知乎上看到某大佬用Python写的ATM系统案例,然后观摩了下他的实现思路和源码,感觉受益颇多,于是就根据自己的思路和目前掌握的Python编程基础将ATM实现了一下,以下是案例解析的过程: ...

  2. 数据结构实验二——队列(银行叫号系统)

    一.实验目的 (1)掌握队列的链式存储结构 (2)掌握队列的基本操作,并能进行应用实践 (3)使用C/C++语言和队列实现"银行叫号系统"专题 二.实验任务 设计一个控制台程序,模 ...

  3. 基于IDEA的JavaWeb银行叫号系统

    文档源资源见: https://pan.baidu.com/s/1Vc35QF-SP5NFq1xQJeX1jQ 提取码: 8259 复制这段内容后打开百度网盘手机App,操作更方便哦 基于JavaWe ...

  4. java坦克大战 实训报告_坦克大战系统《Java程序开发实训》综合实训报告.doc

    坦克大战系统<Java程序开发实训>综合实训报告 <Java程序开发实训>综合实训报告 题目: 坦克大战系统 姓名: 方庆 学号: 2010203206 班级: 10软件(2) ...

  5. python在线投票系统_Python开发基础-项目实训-在线投票系统.pptx

    项目实训-在线投票系统本章任务/30完成"在线投票系统"添加投票候选人删除候选人为候选人投票按序号投票删除投票输出统计信息--本章目标/30理解程序的基本概念会使用顺序.选择.循环 ...

  6. python算法与程序设计基础(第二版)第八章实训答案_Python算法与程序设计基础(第2版)...

    章程序设计与计算思维 1.1程序设计与计算机语言 1.1.1程序设计 1.1.2设计步骤 1.1.3程序设计分类 1.1.4基本规范 1.1.5计算机语言 1.2计算机语言与计算思维的关系 1.2.1 ...

  7. dais-86pro+实验指导书_风光互补并网发电与机电实训系统实验台, 风能太阳能发电实训装置_搜狐汽车...

    一.概述: 该系统由太阳能光伏电板.双轴跟踪控制模块.蓄电池模块.太阳能控制器模块.太阳能逆变器模块.模拟风洞发电模块.开关控制模块.环境监测模块.上位机监控模块,仪表显示部分,(各功能转换接口模块) ...

  8. 计算机中什么是模块化系统,计算机及网络模块化实训

    <计算机及网络模块化实训>是2019年12月电子工业出版社出版的图书,作者是罗翠翠. 书    名 计算机及网络模块化实训 作    者 罗翠翠 ISBN 9787121344343 页  ...

  9. python atm银行取款系统_python ATM机 案例代码

    利用目前学的流程控制写的 ''' ATM机 需求: 1.登陆 输入账号输入密码 每日只有3次登陆密码错误的机会,超过3次禁止登陆 2.查询余额 3.存款 4.取款 5.转帐 6.退出 ''' info ...

最新文章

  1. PE 文件格式 .text .data .idata .rsrc
  2. 【转】monkeyrunner学习总结二:连接、安装、启动
  3. 思科分析引擎助力大型数据中心应用发展
  4. 结对-贪吃蛇-项目进度
  5. 小程序promise封装post请求_微信小程序用promise封装请求
  6. C++ | 从键盘输入任意多个英语单词,统计同一个英语单词被输入几次,最后对英文单词按字典顺序输出(C语言/C++/Java)
  7. 【ArcGIS风暴】ArcGIS获取一个省各个地区界内的河流的总长度--以甘肃省为例
  8. 一次900万+数据量的 SQL 查询优化分析【上百倍性能优化】
  9. 自己写Tiny6410的Bootloader总结!
  10. python time datetime模块最详尽讲解
  11. oracle存储空间修改,Oracle修改内存大小
  12. 状态码302怎么处理_HTTP状态码 201,202,302,405 ... 傻傻分不清,看这一个项目就够啦...
  13. python多线程调用携程_《Python》线程池、携程
  14. winhttp 访问https_VB6: 在客户端中使用WinHttp组件,发送Https请求
  15. 制作自己的Cydia发布源
  16. /etc/shadow文件介绍
  17. 转发:不懂朗姆酒?那你就out了!
  18. 一个完整的Installshield安装程序实例
  19. properties文件不显示小叶子
  20. 河南理工大学计算机学院张磊,河南理工大学关于表彰2010—2011学年学生创先争优活动先进集体和先进.doc...

热门文章

  1. 获取短信验证码并实现登录
  2. 某头部证券机构云化与信创双转型深度解析|信创专题
  3. python-英文字母的大小写转换
  4. 开发者收到“加料”的假 Offer,害上家被盗近 6.25 亿美元!
  5. C程序设计-清览题库
  6. 解决Windows10 系统中桌面窗口管理器运行时占用内存过大的问题
  7. WeChat基础 senparc公众平台搭建
  8. Excel学习笔记:P13-页首、页尾设计、表格加水印
  9. Linux环境搭建基础(二)
  10. 彩虹商城知识付费程序-优质站,易支付可自定义(货源对接)