




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、试验题目 模拟停车场管理一、 需求分析1、 程序的基本功能: 主控功能:介绍程序的基本功能,并给出程序功能所对应的键盘操作的提示,如车到来或离去的表示方法,停车场或者便道的状态的查询方法提示等。 汽车到来:首先要查询当前停车的状态,当停车场非满时,将其驶入停车场(入栈),开头计费;当停车场满时,让其进入便道等候(入队)。 汽车离开停车场:当某辆车要离开停车场的时候,比他后进停车场的车要为他让路,(即将这些车依次“压入”帮助栈),开走恳求离开的车辆,再将帮助栈中的车依次出栈,“压入”停车场;同时依据离开的车在停车场停留的时间进行收费;最终查询是否有车在便道等候,若有,将便道上的第一辆车驶入停车场
2、(先出队,再入栈),开头计费。 查询状态:用来在屏幕上显示停车位和便道上各位置的状态。2、 输入输出要求: 输入:汽车“到达”或“离去”的信息、汽车牌照号码、汽车到达或离去的时刻。 输出:若是车辆到达,则输出车辆在停车场内或便道上的停车位置;若是车辆离去,则输出车辆在停车场内停留的时间和应缴纳的费用(假设在便道上等候的时间不收费)。3、 测试数据:当停车场容量为5时,连续有7辆车到来,牌照号分别为F001、F002、F003、F004、F005、F006、F007,前5辆车应当进入停车位15车位,第6、7辆车应停入便道的1、2位值上。牌照号为F003的汽车从停车场开走,应显示F005、F004
3、的让路动作和F006从便道到停车位上的动作。二、 概要设计1、 抽象数据类型的定义:使用栈来模拟停车场,使用队列来模拟停车场外的便道;还需另设计一个帮助栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车。2、 本程序包括以下4个模块: 汽车进停车场:假如停车场满了,就将其余的车停放在便道,将车依次进队;假如停车场没满,就将车依次进栈; 汽车出停车场:显示车出停车场的信息,假如便道上有车则将车停入停车场,将车进站,并显示新进入停车场的车辆信息; 查询停车场信息:显示停车场停放车辆的信息;显示便道等候车辆的信息; 主程序模块:进入停车场;驶出停车场;查询停车场信息;退出程序;3、 各程序模块之
4、间的层次关系 主程序模块 汽车进入 汽车离开 查询车辆三、 具体设计:1、 类型数据结构体的定义:typedef struct Carchar licenseN;float time;char state;Car; /汽车类型的定义typedef structCar PackMAX_PARK;int top;ParkStack; /挨次栈停车场的定义typedef struct qnodeCar data;struct qnode *next;Qnode; /各汽车信息的存储空间typedef structQnode *front,*rear;RoadQueue; /用来表示队头和队尾位置的指
5、针2、 伪码算法:#include<iostream.h>#include<stdlib.h>#include<string.h>#define MAX_PARK 4#define N 10typedef struct Carchar licenseN;float time;char state;Car;typedef structCar PackMAX_PARK;int top;ParkStack;typedef struct qnodeCar data;struct qnode *next;Qnode;typedef structQnode *front
6、,*rear;RoadQueue;ParkStack *Init_ParkStack()ParkStack *s;s=new ParkStack;s->top=-1;return s;int Empty_ParkStack(ParkStack*s)if(s->top=-1)return 1;else return 0;void Push_ParkStack(ParkStack *s,Car x) s->top+; strcpy(s->Packs->top.license,x.license); s->Packs->top.state=x.state;
7、s->Packs->top.time=x.time;void Pop_ParkStack(ParkStack *s,Car *x)*x=s->Packs->top;s->top-;RoadQueue *Init_RoadQueue()RoadQueue *q;Qnode *p;q=new RoadQueue;p=new Qnode;p->next=NULL;q->front=p;q->rear=p;return q;void In_RoadQueue(RoadQueue *q,Car x)Qnode *p;p=new Qnode;strcpy(p
8、->data.license,x.license);p->data.state=x.state;p->next=NULL;q->rear->next=p;q->rear=p;int Empty_RoadQueue(RoadQueue *q)if(q->front=q->rear)return 1;elsereturn 0;void Out_RoadQueue(RoadQueue *q,Car *x)Qnode *p;if(Empty_RoadQueue(q)cout<<"tt"<<"便道为空&
9、quot;elsep=q->front->next; q->front->next=p->next;*x=p->data;delete p;if(q->front->next=NULL)q->rear=q->front;void Carin(ParkStack *q,RoadQueue *p)Car c;cout<<"tt"<<"请输入当前时间:"cin>>c.time;cout<<"tt"<<"请输入车牌
10、号:"cin>>c.license;cout<<"tt"<<"请输入停车状态(P:停车,W:等待):"cin>>c.state;if(q->top=MAX_PARK-1)cout<<"tt"<<"新来的车在便道等候停车!"In_RoadQueue(p,c);elsePush_ParkStack(q,c);cout<<"tt"<<"车已在停车场停车,现在开头计时!"
11、cout<<endl;void Carout(ParkStack *q,ParkStack *s,RoadQueue *p)char licenseN;Car c;float t;double a=0;cout<<"tt"<<"请输入当前时间:"cin>>t;cout<<"tt"<<"请输入车牌号:"cin>>license;Pop_ParkStack(q,&c); while (strcmp(c.license,licen
12、se)!=0) Push_ParkStack(s,c); Pop_ParkStack(q,&c); a=(t-c.time)*10;cout<<endl<<"tt"<<"车牌号为"<<license<<"的车辆驶出停车场"<<endl; cout<<"tt"<<"停车费用为:"<<a<<endl; while (!Empty_ParkStack(s) Pop_ParkS
13、tack(s, &c); Push_ParkStack(q, c); if (!Empty_RoadQueue(p) Out_RoadQueue(p,&c);c.time=t;cout<<"tt"<<c.license<<"t进入停车场"<<endl; Push_ParkStack(q, c); void Carsearch(ParkStack *q,ParkStack *s,RoadQueue *p)Car c;Qnode *t;cout<<"tt停车场状况为:&qu
14、ot;<<endl;if(Empty_ParkStack(q)cout<<"tt"<<"停车场为空"<<endl;else while(!Empty_ParkStack(q) Pop_ParkStack(q, &c);q->top-;Push_ParkStack(s, c);q->top+; while(!Empty_ParkStack(s) Pop_ParkStack(s, &c);cout<<"tt"<<c.license<&
15、lt;"tP"<<"t停车时刻:"<<c.time<<endl;Push_ParkStack(q, c); cout<<"tt-"<<endl;cout<<"tt便道状况为:"<<endl;t=p->front->next;if(t=NULL) cout<<"tt"<<"便道为空"<<endl;else while(t!=NULL) cout&l
16、t;<"tt"<<t->data.license<<"tW"<<endl;t=t->next; int main()ParkStack *p,*s;RoadQueue *t;int a; p=Init_ParkStack();s=Init_ParkStack(); t=Init_RoadQueue();while(a)cout<<"tt"<<"-请选择-"<<endl;cout<<"tt"<
17、;<"*1.进入停车场*"<<endl;cout<<"tt"<<"*2.驶出停车场*"<<endl;cout<<"tt"<<"*3.查询车状况*"<<endl;cout<<"tt"<<"*0.退出程序*"<<endl;cout<<"tt"<<"请输入:"cin>>a;switch(a) case 1: Carin(p,t); cout<<endl<<endl; break; case 2: Carout(p,s,t); cout<<endl<<endl; break; case 3: Carsearch(p,s,t); cout<<endl<<endl; break; case 0:break;return 0;3、 函数间的调用关系:void Push_ParkStackvoid Pop_ParkStackvoid Out_RoadQueuevoi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外语学习者常见心理障碍与解决方案试题及答案
- 考试高分秘籍二级消防工程师试题及答案
- 高级审计师核心能力提升与试题及答案方案
- 安全生产管理中的事故责任划分与处理机制试题及答案
- 一级建造师考试高效复习策略研究试题及答案
- 高效备考法与高级会计试题及答案
- 2025年建筑管理知识试题及答案
- 2025年一级建造师考试课程学习试题及答案
- 2025年初中地理环境与可持续发展模拟试卷及答案:全球气候变化与应对策略
- 2025年无人机驾驶员职业技能考核模拟试题及答案
- 轨道交通信号基础知到章节答案智慧树2023年同济大学
- 如何预防与处理劳动争议培训课件
- GB/T 16866-1997一般用途的加工铜及铜合金无缝圆形管材外形尺寸及允许偏差
- GB/T 13477.8-2017建筑密封材料试验方法第8部分:拉伸粘结性的测定
- 公司刀模检验记录表
- 四年级英语下unit5sport课件
- 重大活动公共卫生安全监督保障课件
- 监控施工报价单
- 电解质溶液导电性影响因素的探究
- 餐饮油烟污染防治承诺书
- GB∕T 13554-2020 高效空气过滤器
评论
0/150
提交评论