模拟某校九层教学楼的电梯系统该楼有一个自动电梯_第1页
模拟某校九层教学楼的电梯系统该楼有一个自动电梯_第2页
模拟某校九层教学楼的电梯系统该楼有一个自动电梯_第3页
模拟某校九层教学楼的电梯系统该楼有一个自动电梯_第4页
模拟某校九层教学楼的电梯系统该楼有一个自动电梯_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、destro模拟某校九层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。九个楼层由下至上依次称为地下一 是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。乘客可随时地进出于任何层。对于每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,模拟时钟从0开始,时间单位为 0.1秒。人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如出,则关门;关门和开门各需要 20t;每个人进出电梯均需要 25t;如果电梯在某层精致时间超过 300t,则驶回基本要求:按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。需求分析:(1)用系统计时,每当有新的动作要输

2、入时要暂停计时,等输入完成后即可继续计时。(2)输入各个动作,最后,输入完毕后,可以保存所有动作序列,并有序输出。设计:设计思想(1)存储结构根据问题描述,可采用单链表结构。结点描述:a1000mytime*next事件内容时间发生的时间下一个事件指针定义如下:typedef struct nodechar a1000;/ 信息int mytime;/ 时间struct node *next;slnode;(2)基本思想a.用time.h里面的clock()来计时,当有输入时,记录下开始输入的时间和结束输入的时间,之后就可以算出动 b.将各个动作发生的时间进行处理,算出每个事件的发生顺序和时间

3、。c.将各个数据插入链表,即可实现题目要求。设计表示法(1)过程或函数调用的关系图( 2)基于数据结构的操作组主要在于 yunxing() 函数,它将各个时间动作处理成时间事件,并将事件插入到链表 中。( 3)过程与接口规格说明无实现注释未实现。详细设计无调试分析用户手册测试结果没有成功源程序清单#include #include #include #include typedef struct /规定最大乘坐人数为 13 int lc;/ 电梯所在楼层int rs;/ 电梯中的人数int men;/门的状态0关1开(假设关了门时除了在第一层等人时之外,都在移动)dianti;typedef

4、structint rrsj;/ 一个人的容忍时间int sz;/所在楼层int md;/ 目的楼层man;typedef struct nodechar a1000;/ 信息int mytime;/ 时间struct node *next;slnode;void listinitiate(slnode * * head)if(*head = (slnode * )malloc(sizeof(slnode) = null) exit(1);( *head)-next = null;int listinsert(slnode *head,int i,char a1000,int t)slnode

5、 *p,*q;int j;p=head;j=-1;while(p-next!=null & jnext;j+;if(j!=i-1)printf( 插入位置参数错! );return 0;if(q=(slnode *)malloc(sizeof(slnode) = null) exit(1);q-mytime = t;strcpy(q-a,a);q-next =p-next;p-next =q;return 1;void linlistsort(slnode *head)/ 用时间排序slnode *curr,*pre,*p,*q;p=head-next;head-next=null;while

6、(p!=null)curr=head-next;pre=head;while(curr!=null & curr-mytimemytime) pre=curr;curr=curr-next;q=p;p=p-next;q-next=pre-next;pre-next=q;slnode *p,*p1; p=*head;while(p!=null) p1=p;p=p-next;free(p1);*head = null;/ dianti dt;/ 定义一个电梯man ren1000;/ 定义人clock_t shijian10000;/ 事件int g=0;/*电梯动作:1.开始开门,20t,开门结

7、束;2 .开始关门,20t,关门结束;3 .从n-1层开始移动,30t,到达第n层;4 .开始等待,有人来或者300t,等待结束;人的动作:1.开始等待,x=最大容忍时间,等待结束;5 .开始进门,25t,进门z束;6 .开始出门,25t,出门结束;*/ void dt_1(slnode *head,int t)/ 开门char a1000= 开始开门 !,b1000= 开门结束 !;listinsert(head,g,a,t);g+;listinsert(head,g,b,t+20);g+;void dt_2(slnode *head,int t)/ 关门char a1000= 开始关门 !

8、,b1000= 关门结束 !;listinsert(head,g,a,t);g+;listinsert(head,g,b,t+20);g+;void r_2(slnode *head,int t)/ 关门char a1000= 开始进门 !,b1000= 进门结束 !;listinsert(head,g,a,t);g+;listinsert(head,g,b,t+25);g+;void r_3(slnode *head,int t)/ 关门char a1000= 开始出门 !,b1000= 出门结束 !;listinsert(head,g,a,t);g+;listinsert(head,g,b

9、,t+25);g+;/void yunxing(slnode *head,int n)/ 电梯运行函数int k=0,i;for(i=0;inext!=null)printf( 时间为 : %d t 时,发生 :,p-next-mytime);puts(p-next-a);main()int t,a,k=0,i;slnode *head;clock_t ccc;clock_t shuru100002;/ 为了保证输入数据时计时暂停,定义一个shuru/数组 ,用来存输入数据时候所用时间ccc=clock();t=(int)ccc/100;printf(开始计时,每单位时间t为0.1秒,当前时刻为 d t。n,t);listinitiate(&head);while(1)printf( 正在计时中,如果有人要用电梯,请输入 1 ,如果下班请输入 0 : n);scanf(%d,&a);if(a=0) break;if(a=1)printf( 计时中断,请输入此人的所在楼层,目的楼层,最大容忍时间(单位 :t) : n);shuruk0=clock();scanf(%d,%d,%d,&renk.sz,&renk.md,&renk.rrsj);shuruk1=clock(); k+;for(i=0;i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论