题目:
“假如一个售票厅有两个窗口售票,每个窗口在任一时刻只能为一位顾客提供售票服务。所有顾客排成一队等候售票,假如票的数量无限制,售票活动直到顾客队列为空为止。请用面向对象和消息响应的方法设计上述过程,用伪码或描述语言说明即可,不用写代码。” 我的思路是:既然是队列,就是“先进先出”的那种。分别从队列的两端进行遍历整个队列(就是将排成一队的顾客的两头对应于两个窗口进行售票),然后两端轮流依次取出队列中的元素——当从一端取数据时,应减去另一端已经取出的元素。直到队列为空为止。但这压根就没有牵涉到面向对象和消息响应这方面的知识。我知道自己水平有限,没有能力解答出来,想请大家帮帮忙,谢谢了先!
另外,我上面的分析对吗?敬请指点!
“假如一个售票厅有两个窗口售票,每个窗口在任一时刻只能为一位顾客提供售票服务。所有顾客排成一队等候售票,假如票的数量无限制,售票活动直到顾客队列为空为止。请用面向对象和消息响应的方法设计上述过程,用伪码或描述语言说明即可,不用写代码。” 我的思路是:既然是队列,就是“先进先出”的那种。分别从队列的两端进行遍历整个队列(就是将排成一队的顾客的两头对应于两个窗口进行售票),然后两端轮流依次取出队列中的元素——当从一端取数据时,应减去另一端已经取出的元素。直到队列为空为止。但这压根就没有牵涉到面向对象和消息响应这方面的知识。我知道自己水平有限,没有能力解答出来,想请大家帮帮忙,谢谢了先!
另外,我上面的分析对吗?敬请指点!
解决方案 »
- delphi关机代码
- 关于cxgrid的滚动条
- 求助:delphi8的兼容性问题!!
- 请问如何在Delphi中调用Access的Report
- 谁有或者谁知道哪有这样的控件下载?
- 各位大哥大姐师兄师姐,初学delphi,看什么书好,推荐一下
- 那位作过vcd点歌系统,我想问一问,请近来看看。
- dbcombobox里输入汉字时在服务端正常, 但到了客户端输入就不正常了?
- adoqeury.cancelbatch出现错误,请高手相救!!
- ActiveForm分发后运行HTM,看到的是“Delphi 5 ActiveX Test Page ”,可我的页面哪去了?
- 怎么没人回答呀...
- 兄弟们有个FASTREPORT的小问题问大家一下,拜托!摆脱!!!
总数: integer;
剩余票数: integer;
是否锁定: boolean;
procedure 锁定;
procedure 售票;
end;窗口 = class
窗口号: integer;
顾客总数: integer;
当前顾客数: integer;
end;...
客人、队列、购票口、消息管理器MsgBox: 消息管理器;procedure 购票口.On_有空();
begin
MsgBox.SendMessage(队列,self,下一位购票消息); // 由MsgBox把消息发给“队列”
end;procedure 队列.购票(窗口:购票口);
var
man: 客户;
begin
man := 下一位等待的客户();
窗口.购票(man);
end;
售票窗口, (人)队列, 消息管理器 ,此外还要定义一个集合定义一些消息类型
TSale = class
private
FIsBusy: Boolean;
public
procedure SendMessage;
procedure Sale;
end;
TQueue = class
private
FCount: Integer; //人数
public
procedure OutQueue;
end;
TMessageManager = class
procedure ProcessMessage // 收到TSale发出的消息后 通知TSale和TQueue分别做出相应动作
end;
方法:工作,售票,等待,叫“下一个”T顾客队列 = Class
方法:听到"下一个",叫“去买票”T顾客 = Class
方法:买票,等待,排队,听到“去买票”T售票窗口.工作
叫下一个
Repeat
等待
售票
叫下一个
Until 下班。T顾客队列.听到"下一个",
叫第一个顾客到指定的窗口“去买票”T顾客.买票
排队
等待T顾客.听到“去买票”
到指定窗口,去买票