设计一个排队系统

缘由

这是腾讯2014校园招聘软件开发类笔试试题的附加题

题干

请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户。

我的解答

这类题属于简答题。我只写了个单机程序。下面是我对这个题思路。
首先我们需要一个容器来保存所有人,又由于随时有人加入或者退出,所以我认为用链表结果比较好(在java中就是使用LinkedList)。所以按照进入的顺序,我们对每一个进入的用户都可以返回一个在容器内的位置。有用户退出时就会调用容器类的deleteUser()方法,容器就会删除用户和更新所有人的排名。
所以整个系统有两个类,一个容器类,一个用户类。
  • 用户类:主要方法是:加入队伍,返回排名和退出队伍
  • 容器类:有一个用户的集合成员变量,加入一个用户(返回该用户的排名),打印所有用户的排名,删除用户(从容器中删除队伍,并且更新所有受影响的用户的排名)。
具体数据结构如果可以使用linkedlist的话最好,如果不能,自己设计时就要注意这个链表元素还有要记录当前在是链表元素中的第几位。如果前面的元素少了一个,那么后面的链表都排位都需要减一。


代码

实现过程中发现linkedlist完全能够满足需求,所有就使用linkedlist了。下面是类图

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
银行排队叫号系统一般分为以下几个模块: 1. 号码生成器:用于生成唯一的排队号码,并将其存储在数据库中。 2. 叫号器:从数据库中获取下一个待叫号码,并在叫号屏幕上显示出来。 3. 接待员界面:接待员可以通过该界面查看当前排队的客户信息,包括已经办理业务的客户和正在等待的客户。 4. 客户办理界面:客户可以通过该界面查看自己的排队信息和当前等待的人数,并在叫号时前往相应的窗口办理业务。 下面是一个简单的银行排队叫号系统设计: 1. 号码生成器 号码生成器可以使用一个自增的数字作为排队号码,也可以使用当前时间戳加上某个随机数生成一个唯一的号码。号码生成器需要将生成的号码存储在数据库中,以便叫号器获取下一个待叫号码。 2. 叫号器 叫号器可以使用一个定时器定时获取下一个待叫号码,并在叫号屏幕上显示出来。叫号器还需要将当前叫到的号码保存在数据库中,以便接待员界面和客户办理界面获取当前正在处理的客户信息。 3. 接待员界面 接待员界面可以显示当前排队的客户信息,包括已经办理业务的客户和正在等待的客户。接待员可以通过该界面查看客户的办理情况,并将已经办理完业务的客户从数据库中删除。 4. 客户办理界面 客户办理界面可以显示自己的排队信息和当前等待的人数,并在叫号时前往相应的窗口办理业务。客户办理界面还需要提供一个取消排队的功能,以便客户在需要的时候取消排队。 需要注意的是,银行排队叫号系统需要考虑到安全性、稳定性和可扩展性等方面的问题,因此在实际开发中需要进行更加详细的设计和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值