欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

day4-Datawhale-数据结构与算法

程序员文章站 2022-05-26 16:15:27
...

理论部分

  • 用数组实现一个顺序队列。
  • 用数组实现一个循环队列。
  • 用链表实现一个链式队列。

练习部分

  1. 模拟银行服务完成程序代码。

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

排队叫号软件的具体操作流程为:

  • 顾客取服务序号

当顾客抵达服务大厅时,前往放置在入口处旁的取号机,并按一下其上的相应服务按钮,取号机会自动打印出一张服务单。单上显示服务号及该服务号前面正在等待服务的人数。

  • 服务员工呼叫顾客

服务员工只需按一下其柜台上呼叫器的相应按钮,则顾客的服务号就会按顺序的显示在显示屏上,并发出“叮咚”和相关语音信息,提示顾客前往该窗口办事。当一位顾客办事完毕后,柜台服务员工只需按呼叫器相应键,即可自动呼叫下一位顾客。

编写程序模拟上面的工作过程,主要要求如下:

  • 程序运行后,当看到“请点击触摸屏获取号码:”的提示时,只要按回车键,即可显示“您的号码是:XXX,您前面有YYY位”的提示,其中XXX是所获得的服务号码,YYY是在XXX之前来到的正在等待服务的人数。
  • 用多线程技术模拟服务窗口(可模拟多个),具有服务员呼叫顾客的行为,假设每个顾客服务的时间是10000ms,时间到后,显示“请XXX号到ZZZ号窗口!”的提示。其中ZZZ是即将为客户服务的窗口号。

代码:

# -*- coding: utf-8 -*-

#银行取号叫号系统
def get_num():        #实现取号,并把每一个号存入列表中。
    global t1,a,b,c,d,pos_dict   
    #定义全局变量,用来切换客户和工作人员窗口时数据能同步更新。
    #t1表示对应业务的排队名单
    #a表示对应业务的取号计数变量
    #pos_dict  是整个数据存储的字典

    pos_dict = {"银行卡服务窗口":t1 }
    while True:
        id = eval(input('请点击触摸屏获取号码:(输入1)\n输入5切换到工作人员界面'))
        if id == 1:
            a += 1
            A_num = str(a)   #为了以示区分,在取号上加了A,B,C,D
            t1.append(A_num)
            pos_dict['银行卡服务窗口'] = t1
            print('您的号码是:{},您前面有{}位。\n'.format(a,len(t1)-1))
            #print(pos_dict['银行卡服务窗口'])
            #上面是一行禁用的代码,不禁用时用来测试运行时结果是否正确。
        elif id == 5:
            break    #输入5的时候切换到工作人员界面
        else:
            print("输入有误,请重新输入!")
    return pos_dict

def yell_num(pos_dict):
    t1 = pos_dict['银行卡服务窗口']

    while True:
        key = input("呼叫客户按y,切换到用户界面按n,结束进程请按e\n")
        if key == "y":         
            try:
                popped_num = t1.pop(0)   
                #pop()函数,从列表取出第0个元素将其存储在popped_num,并删除
                print("请{}号客户前往银行窗口办理业务,当前排队人数为{}人\n"\
                      .format(popped_num,len(t1)))
            except:
                print("目前银行窗口空闲,无人排队")
                #列表为空时,pop()函数报错,故except表示列表为空      
        elif key == "n":
                get_num()
        elif key == "e":
            break
        else:
            print("输入错误,请重新输入!\n")
       
def main():
    pos_dict =get_num()
    yell_num(pos_dict)

a=0
b=0
c=0
d=0
t1 = []

main()


结果:
day4-Datawhale-数据结构与算法
感想:没有实现计时功能,后待研究。

相关标签: Datawhale