ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:74.60KB ,
资源ID:17407677      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17407677.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(理发馆列队系统仿真新版Word文件下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

理发馆列队系统仿真新版Word文件下载.docx

1、select:服务选项 4服务收费:包含服务时间, 5除了输出统计的数据外还需要显示理发馆的状态, 三(测试数据:用户输入椅子数营业时间结合随机数进行测试。四(实现提示:本题设计两个抽象数据类型队列抽象数据类型:登录排队等候理发的顾客情况。每个元素应包括顾客进门时刻、理发所需时间。N把椅子对应N个队列。事件链表抽象数据类型:登录顾客进门事件、出门事件。每个事件应包括事件类型,进门事件类型为0出门事件类型按N把椅子所排队列分为为1、2、.N,和事件发生的时刻occurtime。为便于按事件发生先后顺序逐一处理事件事件表应按“时刻”有序。对理发椅需要进行编号。五(问题讨论:1) 顾客排队前可以在等

2、待该理发师的各个队列中选择最短队列。2, 更进一步,顾客可以选择最快队列,设计选最快的策略,。 3) 可以发挥创造性采用更直观漂亮的图形方式显示理发馆的状态。六(程序代码:#include stdlib.hstdio.hconio.h#define MAX 30000 /宏定义 #define TRUE 1 #define FALSE 0 #define R rand() float wait_length; /等待队列的总长度 int totalnum; /总共顾客数 float totaltime; /顾客理发所需总时间 int curtime; /当前时间 int chairnum; /

3、当前可用的椅子数 int addtime; /扫尾工作时间 typedef struct customer int NO; /编号 int intime; /进入理发店时间 int durtime;int intertime;int starttime; /开始理发时间 int leavetime; /离开理发店的时间 int serve_flag; /是否在理发 customer;customer cusMAX;typedef struct Qnode int num; /理发者的编号 struct Qnode *next;Qnode,*QueuePtr;typedef struct Que

4、uePtr front; /队头指针 QueuePtr rear; /队头指针 LinkQueue;LinkQueue W; /等待队列 void InitQueue(LinkQueue &Q) /队列初始化 Q.front=Q.rear=(QueuePtr)malloc(sizeof(Qnode);Q.front-next=NULL; void outQueue(LinkQueue &Q) /输出队列中的元素 QueuePtr p;p=Q.front;while(p-next) p=p-next;printf(%d,p-num); );int Queue_Length(LinkQueue &

5、Q) /求等待队列的当前长度 int length=0;+length;return length;void EnQueue(LinkQueue &Q,int e) /将编号为e的顾客插入队尾 p=(QueuePtr)malloc(sizeof(Qnode);p-num=e;Q.rear-next=p;Q.rear=p;int DeQueue(LinkQueue &Q) /队头元素出队并用e返其编号 int e;p=Q.front-e=p-num;next=p-if(Q.rear=p) Q.rear=Q.front;free(p);return e;int QueueEmpty(LinkQue

6、ue &Q)/判断等待队列是否为空若空返回1 return(Q.front=Q.rear? TRUE:FALSE);void customer_serve(int n) /为顾客理发 cusn.starttime=curtime;cusn.leavetime=cusn.durtime+curtime;chairnum-; /当前可用理发椅数减1 cusn.serve_flag=TRUE;void customer_in() /顾客进入理发店 totalnum+;custotalnum.NO=totalnum;custotalnum.intime=curtime; /记录顾客进入时间 custo

7、talnum.durtime=15+R%50;custotalnum.intertime=2+R%10;if(QueueEmpty(W) & chairnum0) customer_serve(totalnum); /有空闲位置并无人参与竞争调用服务函数 else custotalnum.serve_flag=FALSE; /否则入队等待 EnQueue(W,totalnum);wait_length+=Queue_Length(W); /累计队长 void customer_leave(int n) /顾客离开理发店 cusn.serve_flag=FALSE;chairnum+;total

8、time=curtime-cusn.intime+totaltime; void list() /输出 float aver_serve_time,aver_wait_len; /顾客平均等待时间顾客平均等待长度aver_serve_time=totaltime/totalnum;aver_wait_len=wait_length/totalnum;一天内顾客在理发馆内的平均逗留时间: %f n,aver_serve_time);顾客排队等候理发的队列长度平均值:,aver_wait_len);营业时间到点后仍需完成服务的收尾工作时间: %d n,addtime);一天内的营业额为:,tota

9、lnum+300);void main() int i,N,T,max;curtime=0,totaltime=0,totalnum=0,wait_length=0;理发店的椅子数:scanf(,&N);chairnum=N;请输入营业时间(分钟):T);InitQueue(W);customer_in();while(curtime+T) /当前时间属于营业时间允许顾客进入 for(i=1;i0 & !QueueEmpty(W) /让等待队列中的人去理发customer_serve(DeQueue(W);if(custotalnum.intime+custotalnum.intertime)=curtime) /判断是否有人符合要进的条件 while(!QueueEmpty(W) curtime+;max=cus1.leavetime; /求出最后离开的顾客的离开时间 for(i=2;max = max cusi.leavetime ? cusi.leavetime : max;max) /队列为空继续为正在理发的顾客服务 (cusi.starttime+cusi.durtime=curtime)addtime=max-T;list();getch();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1