关于一个小小的设计问题

balabala_sean 2012-10-15 09:13:24
题目如下:

智能排队

需要办理多项业务的客户凭一张号票到多个窗口进行服务,无需重新排队取号:票号由取号机或自助服务终端提供。排队优先级变化,假设客户要办理的业务无前置后置关系,可办理任意一项业务,则此时该客户票号应同时处于多种不同业务队列中,各队列中均不具备优先权。开始办理某项业务时,需考虑避免客户被多项业务同时叫号的情况,该用户应从其他队列中取消。当用户办理的第一项业务办理完成后,则应将用户待办理的下一项业务插入指定队列,此时具备一定的优先权。依此循环,直至该用户完成最后一项业务。

首先,我想问下这道题目要创建哪几张表?

其次,关于这个优先级的队列该如何编码呢?简单的采用LinkedList或者Queue实现么?
...全文
118 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
balabala_sean 2012-10-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
如果人数不多的话,考虑一张表就行了;然后再从性能考虑的话,可以每天一张表或一个分区。

表结构大致是:
ID,叫号,业务类型,状态(排队中、办理中、已叫号),排队时间,叫号时间。

几个关键操作:
◎ 取号
—— 针对他所选择的业务数量,插入N条记录;状态就是:排队中。
◎ 窗口叫号
—— 按业务类型和状态进行过滤,按ID排序,选择出第一条;
—— 将该条记录,状态置为:已……
[/Quote]

◎ 取号
—— 针对他所选择的业务数量,插入N条记录;状态就是:排队中

我这个是一个客户拿着一个票号就可以实现处理多个窗口的业务。
意思就是在A窗口处理的时候,他的状态为已叫号,然后他办理完A窗口的业务时候,假如他取号时候预约的是多项业务,此时就使他的状态为排队。接着B,C,D,E等等窗口。
MiceRice 2012-10-16
  • 打赏
  • 举报
回复
是1个票号实现多个窗口业务,只不过是要插入多条记录而已,比如:

某人早上11点整到取号机,同时要求办理业务:A、X、Z,此时排号已经到了 42,那么:

ID(主键),叫号,业务类型,状态(排队中、办理中、已叫号),排队时间,叫号时间。

同时插入三行记录:
1, 43, A, 排队中, 11:00, null
2, 43, X, 排队中, 11:00, null
3, 43, Z, 排队中, 11:00, null
Ade子夜 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

如果人数不多的话,考虑一张表就行了;然后再从性能考虑的话,可以每天一张表或一个分区。

表结构大致是:
ID,叫号,业务类型,状态(排队中、办理中、已叫号),排队时间,叫号时间。

几个关键操作:
◎ 取号
—— 针对他所选择的业务数量,插入N条记录;状态就是:排队中。
◎ 窗口叫号
—— 按业务类型和状态进行过滤,按ID排序,选择出第一条;
—— 将该条记录,状态置为:……
[/Quote]
ding
MiceRice 2012-10-15
  • 打赏
  • 举报
回复
如果人数不多的话,考虑一张表就行了;然后再从性能考虑的话,可以每天一张表或一个分区。

表结构大致是:
ID,叫号,业务类型,状态(排队中、办理中、已叫号),排队时间,叫号时间。

几个关键操作:
◎ 取号
—— 针对他所选择的业务数量,插入N条记录;状态就是:排队中。
◎ 窗口叫号
—— 按业务类型和状态进行过滤,按ID排序,选择出第一条;
—— 将该条记录,状态置为:已叫号(以后就再也不用叫了);
—— 将该叫号的所有记录,状态是排队中的,更新为:办理中(防止被另一个窗口叫);
◎ 窗口办结(业务办理完毕后,也可以考虑合并在下一次叫号中,但有风险)
—— 将该办结的叫号的所有记录,状态时办理中的,更新为:排队中。


你都用数据库表来实现了,跟LinkedList有啥关系?
balabala_sean 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
一个人可以办理多个业务?好像没见过这种把,不过可以设置一个综合业务项来做。
按楼主思路可以各个业务建个表,也可以一个表用不同业务id区分,后台不断读数据库,如果多个排队表要注意同时被叫号问题。不用数据库就简单多了,LinkedList或者Queue都可以,最好放在oscache里持久化
[/Quote]

这个需求是工商局办事大厅注册公司的流程,一步一步的,每个窗口只负责一步

队的个数跟窗口个数是一样的,每个办事窗口负责处理一队的业务。
gaojava 2012-10-15
  • 打赏
  • 举报
回复
一个人可以办理多个业务?好像没见过这种把,不过可以设置一个综合业务项来做。
按楼主思路可以各个业务建个表,也可以一个表用不同业务id区分,后台不断读数据库,如果多个排队表要注意同时被叫号问题。不用数据库就简单多了,LinkedList或者Queue都可以,最好放在oscache里持久化
balabala_sean 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
如果人数不多的话,考虑一张表就行了;然后再从性能考虑的话,可以每天一张表或一个分区。

表结构大致是:
ID,叫号,业务类型,状态(排队中、办理中、已叫号),排队时间,叫号时间。

几个关键操作:
◎ 取号
—— 针对他所选择的业务数量,插入N条记录;状态就是:排队中。
◎ 窗口叫号
—— 按业务类型和状态进行过滤,按ID排序,选择出第一条;
—— 将该条记录,状态置为:已……
[/Quote]

你的意思是不是每次处理完一个业务,就查询下数据库的这张表,根据预约时间来叫号?用LinkedList是我还得实现智能排队。。
又仔细看了下你说的这个,懂了啊,哈哈,谢了!

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧