一个客户排队系统中的感想!

这片文章是很早为一同学写的程序思路分析,算起来是我写的第一篇技术文章了(现在看起来的确没什么技术含量).:)之所以还敢放在这里,主要是为我的BLOG开通做纪念.学习计算机也有三年多了,从一开始连c是什么都没听过,到今天计算机的学习之路上,充满了坎坷与辛酸,留下了辛勤与汗水,当然也得到了丰硕的果实.这些与CSDN的帮助分不开,在这里我不但学到了技术,更重要学会了怎么做人,做一个对生活充满热情的人,做一个乐于助人的人......感谢CSDN,感谢所有帮助过我的程序员,我很荣幸我也即将成为一名程序员,即将溶入这个大家庭当中.

我会陆续放上我平时的学习感想,以帮助那些才开始在程序学习路上走的朋友,别像我一样----少走些弯路,同和我一样还是个高级菜鸟的朋友在思想上行成共鸣.从已经是老鸟的朋友那里得到指点.

                          谢谢!!

客户的信息是要求放在数据库中的,但是为了描述更清晰,我们通过数据结构来描述,若明白了原理,数据库的问题就迎刃而解了。

对于排队系统,首先应该考虑它的主要逻辑功能,即实现客户排队,而其他的所有功能

都是围绕着它进行的。

  先来解决所谓的签号票机的功能,仔细考虑不难发现,我们可以用队列来实现。

首先由于系统的性能上有限制,所以使用循环队列。每个队列中的单元为一个结构体,每个结构体中应包括如下:

1.服务机构信息和标志

                        2. 服务类别编号

                        3. 排队序列号

                        4. 接受同样服务的等待顾客人数

                        5. 日期,时间等

也就是等候号票上的信息。

  每当新来一个用户的时候,就到签号机登记,由于每个用户的需要服务不一样,所以登记时候需要告诉系统需要的服务,这属于人机界面部分。接着需要用到队列的头指针了,每个服务台需要服务用户的时候,服务人员给出一个“呼叫“指令,然后用头指针去读取当前指针指向的用户了,读取到当前客户的数据之后,就应当在主屏显示当前客户的编号,另外主屏还必须显示是哪个服务台读取了数据,想一想主屏显示其实应当由当前读取客户数据的服务台来完成是比较好的,服务台把自己的台号和读取的客户编号送到主屏显示就可以了,然后就可以正确显示信息了:例如银行系统

服务人员一旦成功开始服务客户的时候,应该发出“确定“指令,这个时候应该修改队列,也就是出队列。队列的头指针指向下一个结构单元,这是为了是系统能继续为其他客户服务,保证了其它的服务台能继续读取没有被服务的客户。

其他部分由于是硬件编程,只要提供硬件的接口标准,目标明确,实现起来不是很难了。

明白了主要逻辑功能,下来看一下整个系统的组织方式参考:

对与服务台可以单独设定一个类:系统要求最多有64个服务台,我们就可以很快的进行扩充,产生服务台对象即可。

对于客户比较简单,只需要设定一个记数器,每来一个客户记数器加一即可,然后系统根据记数器每增加一个数,就实现一个结构体,到这里有个问题思考一下,由于我们不知道一天之中要服务多少客户,而系统一开始就建立一个结构体数组是不明知的,所以我们应该考虑链式存储结构了,所以在上面的结构体中我们还要加入一个结构体指针,每当一个客户登记了,那么系统就应该把为这个新客户建立的结构体地址地址赋给上一个客户的结构体中的结构体指针中。(这是一种比较好的设计,但是由于系统其中一种方案要求限时限量,所以在系统一开始的时候就可以建立结构数组也是可以的)。

好了,既然明白了数据结构的描述,在来看一下数据库的实现:

刚才结构体中的各个属性,其实就是数据库中的各个字段,当然系统要求的字段很多。对于提前预约的客户信息我们只要在建立一个数据表即可,当这个客户到来时候只须查找就可以了,若有该客户的信息,对当前的客户服务完了之后,立即服务该预定客户。

前面的队列修改等问题,其实用数据库代替,你就不需要操心了,我讲了一下只是为了对下面对数据库作用更清晰了了解,但必须熟悉开发工具的数据库操作命令。

数据库只有一个,每个服务台都要进行操作,当一个服务台开始为客户服务的时候就应该删除当前的客户信息以节约资源(这个信息服务完成后就没有存在的价值了),而这时候别的客户掌握的信息(比如前面还有的客户数量不准确了)还好这没关系,因为主屏会显示当前的哪个客户需要服务。所以可以估算一下自己还要等的时间。

OK就这些了,我感觉这是最主要的,不过别的也很重要,由于不知道你要的是什么,所以我先写了这么一点,如果不清楚,你说具体点,我尽力而为。硬件控制部分,我没做过,但是不难,只要给出具体的硬件标准,没大问题。

系统要求的很多,不过解决了主要的问题,别的功能要求只是慢慢完善而已。

再说说系统要求的排序,是从客户端发送信息到服务器的数据库中排序,我绝的没必要,因为每个客户得到号票的时候,就可以从上一个客户的数据里面得到自己排到了第几个,否则增加了硬件成本,不划算。因为读取数据库需要一次操作,而写的话是先写再读两次操作。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值