• PUDN用户
    了解作者
  • C/C++
    开发工具
  • 2KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 87
    下载次数
  • 2005-07-02 13:02
    上传日期
设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用。试为停车场编制按上述要求进行管理的模拟程序。
模拟停车场管理系统.rar
  • www.pudn.com.txt
    218B
  • 停车场管理.txt
    4.3KB
内容介绍
#include <iostream.h> const int n=2; //n为停车场长度 const int M=10; //M为单位时间内停车场收费值 typedef struct{ int num; //汽车牌照号 int time; //到达或离开时间 }element; struct seqstack{ int top; element stack[n+1]; }s1,s2; //顺序栈s1模拟停车场,s2临时停放为给要离去的汽车让路而从停车场退出的汽车 struct link{ element data; link *next; }; struct queue{ link *front,*rear; }q; //队列q模拟车场外的便道 seqstack initstack(seqstack s) //初始化 { s.top=0; return s; } seqstack push(seqstack s,element x) //进栈 { s.top++; s.stack[s.top]=x; return s; } seqstack pop(seqstack s) //出栈 { s.top--;return s; } element gettop(seqstack s) //取栈顶元素 { return s.stack[s.top]; } int empty(seqstack s) //判栈空 { if(s.top==0) return 1; else return 0; } queue initqueue(queue q) //队列初始化 { link *p; p=new link; p->next=NULL; q.front=q.rear=p; return q; } queue inqueue(queue q,element x) //入队 { link *p; p=new link; p->data=x; p->next=q.rear->next; q.rear->next=p; q.rear=p; return q; } queue outqueue(queue q) //出队 { link *p=q.front; q.front=p->next; delete p; return q; } element gethead(queue q) //取队头元素 { return q.front->next->data; } int emptyqueue(queue q) { if(q.front==q.rear) return 1; else return 0; } //处理汽车到达的情形 void arrive(element x) { //X为到达的车辆 if(s1.top==n) q=inqueue(q,x); //停车场无空位,进入便道 else s1=push(s1,x); //停车场有空位,进入停车场 } //处理汽车离开的情形 void live(element x) { //X为离开的车辆 int f=1;element y; link *r; while(!empty(s1)&&(f==1)) //在停车场中找要离开的车辆 if(s1.stack[s1.top].num!=x.num) { y=gettop(s1); s1=pop(s1); s2=push(s2,y);} else{ f=0;y=gettop(s1);s1=pop(s1); cout<<"停车场中汽车牌照号为"<<x.num<<"的车将离开"<<endl; cout<<"该车应缴纳停车费:"<<(x.time-y.time)*M<<"元\n"<<endl; while(!empty(s2)) { y=gettop(s2);s2=pop(s2);s1=push(s1,y); } //停车场中离开一辆车后,便道上第一辆车进停车场 if(!emptyqueue(q)){ y=gethead(q); //取队头元素 q=outqueue(q); //出队 s1=push(s1,y);} //进栈 } if(empty(s1)) //停车场中无给定的车辆,则到便道上找 { while(!empty(s2)) { y=gettop(s2); s2=pop(s2); s1=push(s1,y); } if(!emptyqueue(q)) { link *p=q.front; while((p!=NULL)&&(p->data.num!=x.num)) { r=p; p=p->next; } if(!emptyqueue(q)) { link *p=q.front; while((p!=NULL)&&(p->data.num!=x.num)) { r=p; p=p->next; } if(p!=NULL) { cout<<endl; cout<<"\n便道上汽车牌照号为"<<x.num<<"的车辆将离开"<<endl; cout<<"该车应缴纳停车费:"<<(x.time-y.time)*M<<"元\n"<<endl; r->next=p->next;delete p;} else cout<<"停车场内及便道上均没有编号为"<<x.num<<"的车辆,输入的车辆不存在!\n"<<endl; } } } } void process1() //输出停车场中的车辆编号和到达时间 { int t=s1.top; cout<<"\t*****************************************\n"; cout<<"\t\t 停车场使用情况"<<endl; cout<<"\t\t"<<endl<<endl; cout<<"\t 1.停车场中的汽车牌照号和到达时间"<<endl; while(t!=0) { cout<<"\t\t"<<s1.stack[t].num<<" "<<s1.stack[t].time<<endl; t--; } cout<<endl; } void process2() //输出便道中的车辆编号和到达时间 { link *p=q.front->next; cout<<"\t 2.便道中的汽车牌照号和到达时间"<<endl; while(p!=NULL){ cout<<"\t\t"<<p->data.num<<" "<<p->data.time<<endl; p=p->next; } cout<<endl; cout<<"\t******************************************\n"; } void main() { char c; //c代表车辆到达、离开或者结束 element x; s1=initstack(s1); s2=initstack(s2); q=initqueue(q); while(1){ cout<<"请选择处理车辆的事件\n" <<"A) 到达 \n" <<"D) 离开 \n" <<"E) 结束 \n"; cout<<"你的选择:"; cin>>c; if(c=='A'||c=='a') { cout<<"请输入车辆编号,到达时间:"; cin>>x.num>>x.time; arrive(x);process1();process2(); } else if(c=='D'||c=='d') { cout<<"请输入车辆编号,离开时间:"; cin>>x.num>>x.time; cout<<endl; live(x);process1();process2(); } else if(c=='E'||c=='e') { cout<<"结束,按任意键退出\n"; break; } else { cout<<"输入错误,请重新输入\n"; cout<<endl; } } }
评论
  • PUDN用户 2009-05-02 18:46:50
    程序不错啊!
相关推荐
  • 停车场.zip
    模拟停车场,可实现功能为:1.记录停车时间并计算停车费 2.智能计算停车位空余,用栈的方法进行排序 3.可查看停车场状态
  • 停车场系统
    这是一个停车场管理系统,使用vc语言开发,sql作为数据库。有兴趣的朋友可以下载下来看一下;
  • 停车场管理系统
    设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车...
  • 停车场问题
    这是一个很难得的停车场管理系统 很详细 c++写的 自己写的 希望下载之后不要个人名义上传 谢谢合作 1
  • 停车场管理课设
    一栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车"到达"或"离去"信息,汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的...
  • 停车场管理系统
    停车场内某辆汽车要离开时,在它之后进入的车辆必须先退出停车场按顺序开入临时停放道为其让路,待其开出大门外后,再按原次序进入车场,每辆停放在停车场汽车在它离开停车场时必须按其停留的时间长短缴纳费用...
  • 模拟停车场
    这是一个停车场管理系统,需要用适合数据结构模拟停车场,候车场(便道);能模拟实现车辆进出停车场候车场;并且能实现车辆到达停车场,输出停车位;车辆离开停车场,输出车辆停留时间和停车费;能输出停车场和候车...
  • 停车场模拟系统
    某企业欲为其专用汽车停车场建设一信息系统,已经调查到的需求如下: 1、 企业为其每个员工均发放一张感应式IC卡,卡上记录了员工号,即该卡的卡号。 2、 在停车场的入口和出口分别安装一个自动栏杆、一台感应式IC卡...
  • 停车场管理系统
    3,停车操作:当第一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车信息添加文件“car....
  • 停车场.rar
    城市停车场车辆信息数据处理,显示车辆数据进出信息