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

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

二、 需求分析
主要分为取号、排队等待叫号、叫号办理业务
取号系统支持随时添加取号信息(编号、姓名、取号时间),信息将被添加到数据文件中。
写这一取号部分主要就是数据的存储,把编号、姓名、取号时间存储到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写银行叫号系统(这个是学校的实训题目,真的没什么技术含量))