停车场程序设计[1]

【问题描述】设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。

汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内己停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开人;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。

试为停车场编制按上述要求进行管理的模拟程序。

【基本要求】以桟模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。

每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。

对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。

钱以顺序结构实现,队列以链表结构实现。

【测试】设n=2,输入数据为:(‘A’,1,5), (‘A’,2,10), (‘D’,1,15), (‘A’,3,20),(‘A’,4,25), (‘A’,5,30), (‘D’,2,35), (‘D’,4,40), (‘E’,0,0)。

其中,‘A’表示到达(Arrival);‘D’表示离去(Departure);‘E’表示输入结束(End)。

【实现提示】需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。

输入数据按到达或离去的时刻有序。

栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。

【程序代码】//预定义常量和类型#define OVERFLOW -2#define OK 1#define ERROR 0#define STACK_INIT_SIZE 1typedef int status ;//函数调用声明#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<conio.h>//定义一个结构体用于存储停车数量和时间typedef struct{int car_num;int time;} car_info;//以栈的顺序存储模拟停车场#define STACK_INIT_SIZE 1typedef struct{car_info *base;car_info *top;status stacksize;} sqstack;//构造一个空栈表示停车场void Initstack(sqstack *s){s->base=(car_info *)malloc(STACK_INIT_SIZE*sizeof(car_info)); if(!s->base) exit(OVERFLOW);s->top=s->base;s->stacksize=0;}//插入新的元素e(即将进入停车场的车辆)为栈顶元素void push(sqstack *s,car_info e){*s->top++=e;s->stacksize++;}//若栈不为空(停车场有车辆),则删除栈顶元素,用e返回其值否则返回ERROR car_info pop(sqstack *s){car_info e;if(s->top==s->base){printf("停车场内没有该车辆!\n");exit(0) ;}e=*--s->top;s->stacksize--;return e;}//-----单链队列-----队列的链式存储结构-----typedef struct Qnode{int car_num;int time;struct Qnode *next;} QNode,*QueuePtr;typedef struct{QueuePtr front; //队头指针QueuePtr rear; //队尾指针int length;} LinkQueue;//构造一个空队列来模拟便道status InitQueue(LinkQueue *Q){Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q->front)exit(OVERFLOW);Q->front->next=NULL;Q->length=0;return OK;}//插入新的元素a(即将进入便道的车辆)为队尾元素void EnQueue(LinkQueue *Q,car_info *a ){QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));if(!p)exit(OVERFLOW);p->car_num=a->car_num;p->time=a->time;p->next=NULL;Q->rear->next=p;Q->rear=p;Q->length++;}//若队列不为空,则删除Q的队头元素,用e返回其值否则返回ERROR QueuePtr DeQueue(LinkQueue *Q){QueuePtr p,e,s={0};if(Q->front==Q->rear){printf("便道上没有车辆!\n");return s;}p=Q->front->next;e=p;Q->front->next=p->next;Q->length--;if(Q->rear==p)Q->front=Q->rear;//free(p);return e;}//对于新的元素若栈已满则存入队列,栈未满则存入栈void arrive(sqstack *s,LinkQueue *p,car_info a,int n){if(s->stacksize<n){push(s,a);printf("\n车牌号为%d的车辆进入停车场%d号车道\n",a.car_num,s->stacksize);}else{EnQueue(p,&a);printf("\n停车场已满,车牌号为%d的车辆停在便道的%d号位置\n",a.car_num,p->length);}}//对于要取出的元素,将其从栈顶删除,输出其相关信息,让队头元素入栈void leave(sqstack *tcc,sqstack *dcc,LinkQueue *p,car_info a,float pay){car_info x,ss;QueuePtr b;int find=1,arrivetime=0;float cost=0.0;while(find){ss=pop(tcc);push(dcc,ss);if(ss.car_num==a.car_num){find=0;cost=(a.time-ss.time)*pay;arrivetime=ss.time;}}pop(dcc); //把临时堆栈的第一辆车(要离开的)去掉;while(dcc->stacksize){x=pop(dcc);push(tcc,x);}if(tcc->stacksize<2&&p->length!=0){b=DeQueue(p);x.car_num=b->car_num;x.time=b->time;push(tcc,x);printf("车牌号为%d的车辆由便道进入停车场%d号车道\n",x.car_num,tcc->stacksize);}printf("\n**********************************************\n");printf("|车牌号码|进站时刻|出站时刻|停留时间|停车费用|\n");printf("|%-6d |%-6d |%-6d |%-6d |%-6.2f |\n",a.car_num,arrivetime,a.time,a.time-arrivetime,cost);printf("**********************************************\n");}//主函数void main(){sqstack tcc,dcc;LinkQueue p;car_info a;int sum=1000,n;float pay;char sign;printf("\n|************************停车场管理**************************| \n");printf("|******A/a:车辆到达*******D/d:车辆离开******E/e:退出系统*****|\n\n");Initstack(&tcc);Initstack(&dcc);InitQueue(&p);printf("请先输入停车场的车位总数,收费标准(元/小时):");scanf("%d%f",&n,&pay);getchar();printf("\n请输入A/D/E,车牌号,时刻:");scanf("%c%d%d",&sign,&a.car_num,&a.time);getchar();while(sum){switch(sign){case 'a':case 'A':arrive(&tcc,&p,a,n);break;case 'D':case 'd':leave(&tcc,&dcc,&p,a,pay);break; case 'e':case 'E':exit(OVERFLOW);break;}printf("\n请输入A/D/E,车牌号,时刻:"); scanf("%c%d%d",&sign,&a.car_num,&a.time); getchar();sum--;}getch();}#define OVERFLOW -2#define OK 1#define ERROR 0#define STACK_INIT_SIZE 1 typedef int status ;#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<conio.h>typedef struct{int car_num;int time;} car_info;typedef struct{car_info *base;car_info *top;status stacksize;} sqstack;void Initstack(sqstack *s){s->base=(car_info *)malloc(STACK_INIT_SIZE*sizeof(car_info));if(!s->base) exit(OVERFLOW);s->top=s->base;s->stacksize=0;}void push(sqstack *s,car_info e){*s->top++=e;s->stacksize++;}car_info pop(sqstack *s){car_info e;if(s->top==s->base){printf("停车场内没有该车辆!\n");exit(0) ;}e=*--s->top;s->stacksize--;return e;}typedef struct Qnode{int car_num;int time;struct Qnode *next;} QNode,*QueuePtr;typedef struct{QueuePtr front;QueuePtr rear;int lenth;} LinkQueue;status InitQueue(LinkQueue *Q){Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));if(!Q->front)exit(OVERFLOW);Q->front->next=NULL;Q->lenth=0;return OK;}void EnQueue(LinkQueue *Q,car_info *a ){QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));if(!p)exit(OVERFLOW);p->car_num=a->car_num;p->time=a->time;p->next=NULL;Q->rear->next=p;Q->rear=p;Q->lenth++;}QueuePtr DeQueue(LinkQueue *Q){QueuePtr p,e,s={0};if(Q->front==Q->rear){printf("便道上没有车辆!\n");return s;}p=Q->front->next;e=p;Q->front->next=p->next;Q->lenth--;if(Q->rear==p)Q->front=Q->rear;//free(p);return e;}void arrive(sqstack *s,LinkQueue *p,car_info a,int n){if(s->stacksize<n){push(s,a);printf("\n车牌号为%d的车辆进入停车场%d号车道\n",a.car_num,s->stacksize);}else{EnQueue(p,&a);printf("\n停车场已满,车牌号为%d的车辆停在便道的%d号位置\n",a.car_num,p->lenth);}}void leave(sqstack *tcc,sqstack *dcc,LinkQueue *p,car_info a,float pay){car_info x,ss;QueuePtr b;int find=1,arrivetime=0;float cost=0.0;while(find){ss=pop(tcc);push(dcc,ss);if(ss.car_num==a.car_num){find=0;cost=(a.time-ss.time)*pay;arrivetime=ss.time;}}pop(dcc); //把临时堆栈的第一辆车(要离开的)去掉;while(dcc->stacksize){x=pop(dcc);push(tcc,x);}if(tcc->stacksize<2&&p->lenth!=0){b=DeQueue(p);x.car_num=b->car_num;x.time=b->time;push(tcc,x);printf("车牌号为%d的车辆由便道进入停车场%d号车道\n",x.car_num,tcc->stacksize);}printf("\n**********************************************\n");printf("|车牌号码|进站时刻|出站时刻|停留时间|停车费用|\n");printf("|%-6d |%-6d |%-6d |%-6d |%-6.2f |\n",a.car_num,arrivetime,a.time,a.time-arrivetime,cost);printf("**********************************************\n");}void main(){sqstack tcc,dcc;LinkQueue p;car_info a;int sum=1000,n;float pay;char sign;printf("\n|************************停车场管理**************************| \n");printf("|******A/a:车辆到达*******D/d:车辆离开******E/e:推出系统*****|\n\n");Initstack(&tcc);Initstack(&dcc);InitQueue(&p);printf("请先输入停车场的车位总数,收费标准(元/小时):");scanf("%d%f",&n,&pay);getchar();printf("\n请输入A/D/E,车牌号,时刻:");scanf("%c%d%d",&sign,&a.car_num,&a.time);getchar();while(sum){switch(sign){case 'a':case 'A':arrive(&tcc,&p,a,n);break;case 'D':case 'd':leave(&tcc,&dcc,&p,a,pay);break;case 'e':case 'E':exit(OVERFLOW);break;}printf("\n请输入A/D/E,车牌号,时刻:");scanf("%c%d%d",&sign,&a.car_num,&a.time);getchar();sum--;}getch();}。

合集下载

c语言停车场课程设计

c语言停车场课程设计

c语言停车场 课程设计一、课程目标知识目标:1. 理解C语言中数组、函数和指针的基本概念,并能运用这些知识解决实际问题。

2. 学会使用C语言编写简单的停车场管理系统,掌握基本的编程技巧和逻辑思维能力。

3. 了解停车场管理系统的基本功能,如车位分配、查询、车辆进出等。

技能目标:1. 能够运用数组、函数和指针等C语言知识,设计并实现一个简单的停车场管理系统。

2. 培养学生分析问题、解决问题的能力,以及编程实践和调试技巧。

3. 提高学生的团队协作能力和沟通能力,通过小组合作共同完成课程项目。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发学生主动探索新知识的精神。

2. 引导学生认识到编程在实际生活中的应用价值,提高学生对信息技术的重视程度。

3. 培养学生的责任感和使命感,使他们认识到停车场管理系统在现代社会中的重要性。

课程性质:本课程为实践性较强的学科,结合实际生活中的停车场管理系统,培养学生运用C语言编程解决问题的能力。

学生特点:考虑到学生所在年级,已具备一定的C语言基础,对数组、函数和指针等概念有初步了解,但实际应用能力有待提高。

教学要求:注重理论与实践相结合,强调动手实践,培养学生实际编程能力。

通过小组合作,提高学生的团队协作能力和沟通能力。

在教学过程中,关注学生的个体差异,因材施教,确保每个学生都能在课程中学有所获。

二、教学内容1. C语言基础知识回顾:数组、函数和指针的基本概念及其应用。

2. 停车场管理系统需求分析:介绍停车场管理系统的基本功能,如车位分配、查询、车辆进出等。

3. 系统设计:- 数据结构设计:数组、结构体等。

- 函数设计:功能模块划分,如车位分配、查询、车辆进出等。

- 指针应用:动态内存分配、函数指针等。

4. 编程实践:- 编写主程序框架,实现系统初始化。

- 编写功能模块,如车位分配、查询、车辆进出等。

- 整合各功能模块,形成完整的停车场管理系统。

5. 调试与优化:分析程序运行过程中可能出现的错误,进行调试和优化。

自-停车场管理系统程序设计

自-停车场管理系统程序设计

程序停车场管理系统( 2013 /2014 学年第1学期)题目:停车场管理系统专业网络工程组长学号姓名组员学号姓名李洬翊B12070319指导教师周剑指导单位软件教学中心日期2013年11月20日停车场管理系统一、课题内容和要求(1) 管理人员根据口令进入系统;(2) 管理车位信息(车位编号,状态)和每分钟的收费费率;(3)停车时录入汽车停泊信息(车牌号,车型,停泊位置,停泊开始时间);如果车位已满要给出提示;(4)取车时,根据车牌取,如果没有给出提示;需要根据车辆停泊时间自动计算费用并显示在屏幕上。

二、需求分析停车场管理系统的功能框架图如图1所示。

图1停车场管理系统功能框架图(1)管理员登陆:其实现是在设计程序时定义一个字符串数组作为密码,在管理员想通过主菜单界面登陆到管理系统的时候,系统要求管理员输入密码,将保存的密码和管理员输入的密码进行比较,如果一致则跳出密码登陆函数进入管理界面。

(2)车位信息:可查询当前时间车库的基本停车情况。

(3)车辆驶入:进入此系统后,输入当前时间和车牌号码,若有空位则停车成功,否则显示车库已满,自动返回上一层操作系统。

(4)车辆驶离:进入此系统后,依次输入车牌号码,停车时间,当前时间,若查找到所输入的车牌信息,则显示本次停车应付金额,并显示取车成功。

若无输入的车牌号码信息,则显示取车错误并返回上层操作系统。

(5)退出系统:当程序使用结束的时候,通过该项功能即可终止程序。

............三、概要设计1.用户登录ﻩYﻩﻩN2.信息查询3.主体程序四、源程序代码#include <iostream> ﻫ#include<stdio.h> ﻫ#include<string> ﻫ#include <time.h >ﻫ#include<fstream>ﻫusing namespace std; ﻫclass car{ﻫpublic:charno[9];int pos;double fee;ﻫvoid putcar();void takecar();};class Timeﻫ{public: ﻫint hour; ﻫint min;void getime();ﻫ};inti,poi; ﻫintposition[100]={0};//全局变量car carin[100]; ﻫTime catime[100];ﻫint juge();int comp();voidsearch_no();void search_pos();ﻫvoidmain(){/////////////////////////////////////////////用户登录const charha[10]="hahaha";//管理员用户名const charhb[10]="1234";//////管理员密码char cn[10],cm[10];ﻫint ci=0; ﻫwhile(1){cout<<"请输入管理员用户名:"; ﻫcin>>cn;ﻫif(strcmp(ha,cn)) ﻫ{cout<<"输入错误!\n";ﻫci++; ﻫif(ci==3)return;continue;} ﻫelse ﻫ{cout<<"请输入密码:"; ﻫcin>>cm;}if(!strcmp(hb,cm))ﻫbreak;else ﻫ{cout<<"密码错误!\n";ﻫci++;if(ci==3)return;ﻫcontinue;}ﻫ}ﻫ////////////////////////////////////////////////主程序ﻫint k;ﻫcout<<"请选择:" ﻫ<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎"<<"\n\n\t◇1.停车操作◇"ﻫ<<"\n\n\t◇ 2.取车操作◇" ﻫ<<"\n\n\t◇ 3.查询信息◇" ﻫ<<"\n\n\t◇4. 退出◇" ﻫ<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎\n\n";ofstream outfile("车辆信息.txt",ios::app);ﻫif(! outfile)ﻫ{cerr<<"openerror!"<<endl;exit(1);//ifstream infile("车辆信息.txt",ios::in);ﻫ//if(! outfile)//{cerr<<"open error!"<<endl;ﻫ//exit(1);}ﻫwhile(cin>>k) ﻫ{if(k==1) ﻫ{i=juge();cout<<"\t车牌号:"; ﻫcin>>carin[i].no; ﻫcarin[i].putcar();cout<<"请选择:"<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎" ﻫ<<"\n\n\t◇1.停车操作◇" ﻫ<<"\n\n\t◇2.取车操作◇"<<"\n\n\t◇ 3.查询信息◇" ﻫ<<"\n\n\t◇4.退出◇" ﻫ<<"\n\n\t◇◎◇◎◇◎◇◎◇◎◇◎◇◎◇◎\n\n";string time1;ﻫtime_t t; ﻫtime(&t);time1=ctime(&t);cout<<time1;////////////////////////////////////导入系统时间outfile<<carin[i].no<<""<<time1<<endl;/////////保存车辆信息。

停车场管理系统程序设计书

停车场管理系统程序设计书

停车场管理系统程序设计书一、程序设计目标1、通过本次课设进一步的了解栈和队列等有关概念。

掌握栈和队列的建立,掌握栈和队列的基本操作,深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们。

2、复习巩固C语言知识。

通过C语言课程设计,使我们了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,更加了解C语言的好处和其可用性。

进一步加深对C语言、数据结构、离散数学等基础技能的理解和掌握。

3、掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。

为后续各门计算机课程的学习和毕业设计打下坚实基础。

4、掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!让我们有一个既动手又动脑,独立实践的机会,锻炼我们的分析解决实际问题的能力。

同时增加了同学之间的团队合作精神!更加体会到工作中团队合作的重要性和必要性!二、问题描述※按照题目要求,我们把程序分为三个模块a.车辆到达模块:设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。

车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。

如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待。

b.车辆离开模块:一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。

停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。

每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。

如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。

c.显示模块:当需要列表显示时,系统判断输入值(1-3),如果输入1,则调用显示车场列表,如果输入2,则调用显示便道信息,如果输入3,则返回主菜单。

三、需求分析这个程序的关键是车辆的进站和出站操作,以及车辆的通道之间的相互关系。

停车场系统程序设计总结1(样例5)

停车场系统程序设计总结1(样例5)

停车场系统程序设计总结1(样例5)第一篇:停车场系统程序设计总结1总结c 语言程序设计是一门重要的专业基础课,通过这次课程设计使我了解了c语言程序设计的思想,并且掌握了程序设计的基本方法,为后续课程打下了坚实的基础。

同时,这次课程设计又是一次实践性较强的知识应用,在对我进行程序设计基础理论与技术技巧能力训练的同时,更加培养了我解决实际问题的编程能力。

在设计过程中,首先要解决的是与同学的合作,接下来分工与协商,共同探讨,大家取长补短,认清自己的不足之处和薄弱环节,加以弥补和加强,要做出一个好的程序就要有不懈追求的精神和对理想崇高的追求,有一种不完成不罢休的精神。

c 语言作为一种高级编程语言具有方便灵活的特点,适合各种类型的软件开发,为我们以后学习单片机非常有用。

在设计初期,根据题目的要求和所学的知识,车库中的车辆是先进后出的,是栈结构,便道上的车辆是先进先出的,是一个队列,结构很明显,但是现阶段我所学的基础知识不够,掌握的不多,对应用栈和队列来解决这个问题有一定的困难,因此我在整个设计中使用了结构体数组,运用一个结构体数组来同时记录车库和便道中车辆的信息,这样也可以起到一个连续记录数据的功能,完成设计要求的任务。

课程设计为我提供了一个既动手又动脑,独立实践的机会,将课本上的知识与实践相结合起来,提高了我适应实际,实践编程的能力。

在这一系统中用到了结构体,它让我更加巩固了结构体的特点和用法,本设计最好使用的结构是栈和队列,但是我们现阶段还未作学习,使用起来不是很流畅,因此我在这个设计中使用了结构体,使用了新的思路。

总之,这次课程设计挖掘了我潜在的能力,是我更加自信,也对编程更加有兴趣,为以后的学习打下了良好的基础。

第二篇:停车场信息上传系统停车场信息上传系统索威尔停车场车辆信息采集报送系统索威尔停车场车辆信息采集报送系统是深圳市索威尔科技发展有限公司针对《深圳市经营性停车场设施管理办法》要求,结合深圳市停车场的现状和特情,为满足深圳停车场信息报送需求而专门研发的一整套可完成车辆信息数据实时采集报送应用系统。

停车场模拟管理程序设计报告(附源代码)

停车场模拟管理程序设计报告(附源代码)

停车场模拟管理程序的设计与实现一、简介1.设计目的:理解线性表的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。

2.问题的描述:设停车场只有一个可停放几辆汽车的狭长通道,只有一个大门可供汽车进出。

汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车辆开走,则排在便道上的第一辆汽车即可进入;当停车场内某辆汽车要开走时,由于停车场是狭长的通道,在它之后开入的车辆必须先推出车场为他让路,待车辆开出大门,为他让路的车辆再按原次序进入车场。

试设计这样一个停车场模拟管理程序。

二、数据结构的设计:(1)为了便于区分每辆汽车并了解每辆车当前所处的位置,需要记录汽车的牌照号码和汽车当前的状态。

(2)为了便于停车场的管理,要为每个车位分配一个固定的编号。

(3)当停车场的停车位上都已停满了汽车,又有新的汽车到来时要把它调度到便道上,便道上的车辆要按照进入便道的先后顺序顺次序放在便道上,为便道上的每个位置分配一个固定的编号。

当有车从停车位上离开后,便道上的第一辆汽车就立即进入停车位上的某个车位。

(4)当某辆车离开停车场的时候,比他后进停车位的车要为他让路,而且当他开走之后让路的车还要按照原来的停放次序再次进入停车位的某个车位上,为完成这项功能,定义一个结构体。

三、功能(函数)设计:本程序从总体上分为四个功能模块,分别为:(1)程序功能介绍和操作提示模块(2)汽车进入停车位的管理模块(3)汽车离开停车位的管理模块(4)查看停车场状态的查询模块四、界面设计:本程序界面本着易于操作简单整洁而不失美观的理念,采用数字对应功能选项,结合详细的操作提示,使得操作方便快捷,界面清晰明朗。

五、程序设计: 1车辆进入停车场模块:Arrive 函数Enter->top<MAX?执行语句实现进入便道执行语句实现进入车站Y N·Arrive 函数:有车进入停车厂;·Enter->top<MAX :对栈进行判满,Y 表示栈满,进入便道;N 表示栈不满,进入车站;2车辆离开停车场模块:·Leave函数:有车的话就要离开车位。

停车场模拟管理程序的设计与实现

停车场模拟管理程序的设计与实现

试验三停车场模拟管理程序的设计与实现本实验的目的是进一步理解线性表的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。

一、问题描述设停车场只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。

汽车在停车场内按车辆到达的先后顺序依次排列,若车场内停满几辆车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长通道,在它之后开入的车辆必须先退出停车场为它让路,待该车辆开出大门,计算其停放时间并收费,为他让路的车辆再按原次序进入车场。

在这里假设汽车不能从便道上开走,试设计一个这样的停车场模拟管理程序。

为了以下描述的方便,停车场用“停车位”进行叙述,停车场的便道用“便道”进行叙述。

二、数据结构设计1、为了便于区分每辆汽车,需要记录汽车的车牌号和历史编号,并且记录其入场、出场时间,所以为汽车定义一个新的类型CAR,具体定义如下:typedef struct{ //汽车信息string license_plate;//车牌号码int h;time_t timei;time_t timeo;}CAR;2、由于车位是一个狭长通道,所以不允许两辆汽车同时出入停车位,当有车来到要进入停车位时也要顺次停放,当某辆车要离开时,比他后到的车要暂时离开停车位,而且越后到的车越先离开停车位,显然这和栈的“先出后进”特点吻合,所以可以使用一个栈来描述停车位。

由于停车位只能停放有限的几辆车,而且为了便于停车场的管理,要为每个车分配一个固定的编号,不妨设1、2、3、4和5(可利用数组下标),分别表示停车位的1车位、2车位、3车位、4车位和5车位,针对这种使用一个顺序栈比较方便,具体定义如下:typedef struct{ //停车位int STOP[MAX_STOP]; //每个停车位汽车的信息int top; //用来指示栈顶空间的静态指针}STOPPING;3、当停车场的停车位上都已经停满了汽车,又有新的汽车到来时要把它调度到便道上,便道上的车辆要按照进入便道的顺序顺次存放在便道上,为便道上的每一个位置也分配一个固定的编号,当有车从停车位上离开后,便道上的第一辆汽车就立即进入停车位上的某一个车位,由于问题描述中限制了便道上的汽车不能从便道上开走,即便道上的汽车只有在停车位上停放过之后才能离开停车场,这样越早进入便道的汽车越早进入停车位,而且每次进入停车位的汽车都是处于便道“最前面”的汽车,显然,这和队列的“先进先出”的特点相吻合,所以,这里使用一个顺序队列来描述便道,可以利用数组的下标表示便道的位置,具体定义如下:typedef struct{ //便道int PAVE[MAX_PAVE];//各个汽车信息的村存储int front,rear;//头指针和尾指针}PAVEMENT;4、当某辆车要离开停车场的时候,比他后进停车场的车要为它让路,而且当它开走之后让路的车还要按照原来的的停放顺序再次进入停车位的某个车位上,为了完成这项功能,再定义一个辅助栈,停车位中让路的车依次“压入”辅助栈,待提出开走请求的车开走后再从辅助栈的栈顶依次“弹出”到停车位中。

停车场车辆出入管理plc梯形图控制程序设计

停车场车辆出入管理plc梯形图控制程序设计
停车场车辆出入管理的PLC梯形图控制程序设计可以按照以下步骤进行设计:
1. 确定输入信号:
- 车辆入场信号:检测到车辆进入停车场的信号。

- 车辆出场信号:检测到车辆离开停车场的信号。

2. 确定输出信号:
- 车位占用信号:指示停车场车位是否被占用。

- 道闸控制信号:控制道闸的开关动作。

3. 设计PLC梯形图程序:
- 输入信号处理部分:
- 当车辆入场信号触发时,设置车位占用信号为占用状态。

- 当车辆出场信号触发时,设置车位占用信号为空闲状态。

- 输出信号处理部分:
- 当车位占用信号为占用状态时,控制道闸关闭,阻止车辆出场。

- 当车位占用信号为空闲状态时,控制道闸打开,允许车辆出场。

4. 添加安全保护机制:
- 考虑添加一定的延时控制,避免车辆进出时的信号抖动导致错误操作。

- 考虑添加传感器故障检测机制,及时发现故障并报警。

请注意,以上仅为概括性的设计思路,具体的PLC梯形图控制程序设计还需要根据实际的停车场环境和设备来进行具体设计。

C程序设计-停车场管理系统(流程设计图)


3 2
N
Y
是否继续
N
退出程序 退出程序
主菜单
主菜单
Y
退出程
主菜单 出站模块流程图
停车场管理 1
主菜单
浏览、显示信息
入站
出站
退站
系统功能模块图
主函数
主菜单
主函数流程图
显示一系列功能选项
输入 n 判断 n 是否为 0~4
N
Y 根据 n 的值调用其他功能模块函数 主菜单模块流程图
浏览、显示模块
从文件中读取站内车辆信息
显示所读信息
从文件中读取便道停车信
显示所读信息
是否继续
N
Y
返回主菜单
退出程序
查询、显示模块程图
入站模块
从文件中读出站内停车信息
Y
记录空位信息
查询站内是否有空位
N
从文件中读出便道停车信息
车辆入站,记录信息
查询便道是否有空位
将信息存入文件
记录空位信息
是否继续
Y
是否继续
N
N
车辆入站,记录信息
主菜单
Y
主菜单 Y
退出 退出程序
将信息存入文件
程序
是否继续
N
Y
主菜单 入站模块流程图
退出程序
出站模块
输入车辆车牌
从文件中读取站内车辆信息
查询该车所在的位
Y
输出该车的信息,安排出站
该车是否在站内
N
从文件中读取便道停车信息
安排该车出站,更新站内信息
查询该车所在的位
从文件中读取便道停车信息 该车是否在便道内
N
便道内是否有 车
输出该车的信息,安排出站

停车场系统程序设计总结1

停车场系统程序设计总结1在停车场系统的设计过程中,我们首先需要明确需求,然后进行系统设计和编码实现。

本文将围绕停车场入场、停车和出场的流程展开讨论,分别介绍每个环节的设计和实现细节。

1. 入场流程设计在车辆进入停车场时,需要进行车辆信息登记,为车辆分配合适的停车位,并记录入场时间。

在系统设计中,我们可以创建一个类似车辆信息管理系统的模块,用于登记车辆信息并生成唯一的入场编号。

在编码实现中,可以使用数据库存储车辆信息,并为每个车辆分配一个唯一的入场编号。

同时,可以设计一个算法用于寻找合适的停车位,例如最先进入、距离出口最近等。

2. 停车流程设计一旦车辆进入停车场,车辆需要停放在合适的停车位上。

停车位可以使用数组或链表等数据结构进行管理,每个停车位可以设置一个布尔值来表示是否已经停车。

在编码实现中,可以使用数组来表示停车位状态,每个数组元素表示一个停车位的状态。

当有车辆入场时,可以遍历数组找到一个空闲的停车位,并将其状态设置为已占用。

然后,将车辆信息和停车位信息关联起来,以便出场时可以根据车牌号快速找到对应的停车位。

3. 出场流程设计当车辆需要出场时,需要进行费用计算,并记录出场时间。

在系统设计中,可以设计一个收费模块,根据停车时间和收费标准计算出应收费用。

在编码实现中,可以通过车牌号快速找到对应的停车位和入场时间,并计算停车时长。

然后,根据收费标准计算应收费用。

为了提高系统的效率,可以将收费标准预先存储在数据库中,并在需要计算费用时从数据库中读取。

4. 系统优化为了提高系统的性能,可以考虑一些系统优化措施。

例如,可以使用缓存技术提高数据查询的效率,将常用的数据存储在内存中,减少对数据库的访问次数。

另外,可以使用多线程技术处理并发请求,提高系统的并发能力。

此外,还可以增加一些额外的功能,如停车位实时监控、车辆定位等。

停车位实时监控可以通过传感器或摄像头等设备实现,用于实时监测停车位的占用情况。

车辆定位可以使用GPS等技术,方便车主快速找到自己停放的位置。

实验三 停车场模拟管理程序的设计与实现

实验三停车场模拟管理程序的设计与实现一、问题描述设停车场只有一个可停放几辆汽车的狭长通道,只能停放五辆车,另外还有一个便道,可停放无数辆车,停车场只能单向进出,设计一个管理停车场的系统。

二、数据结构实现停车位栈:typedef struct{char name[10];}carname;typedef struct{carname car[6];int top;}seqstackcar;便道队列typedef struct node{carname car[100];int front,rear;int num;}queuenode;三、功能设计1.车进入函数void arrive(seqstackcar *stop,queuenode *lq,carname x)2.车离开函数int leave(seqstackcar *s1,seqstackcar *s2,queuenode *p,carname x)3.查询车函数void chaxun(seqstackcar *s1)四、界面设计可以为用户提供采用多选择式管理停车位使用户使用本系统方便快捷。

五、运行与调试1.汽车进入时的场景2.离开和查询时的场景3.容错检测#include<iostream.h>#include<stdlib.h>#include<string.h>#define maxsize 5typedef struct{char name[10];}carname;carname name1;typedef struct{carname car[6];int top;}seqstackcar;typedef struct node{carname car[100];int front,rear;int num;}queuenode;seqstackcar *init_car(){seqstackcar *s;s=new seqstackcar;if(!s)return NULL;else{s->top=0;return s;}}int push(seqstackcar *s,carname x) {if(s->top==maxsize)return 0;else{s->top++;s->car[s->top]=x;return 1;}carname pop(seqstackcar *s){if(s->top==0){return name1;}else{s->top--;return s->car[s->top+1];}}queuenode *initqueue(){queuenode *q;q=new queuenode;q->front=q->rear=0;q->num=0;return q;}int inqueue(queuenode *q,carname x){if(q->num==100)return 0;else{q->rear=q->rear+1;q->car[q->rear]=x;q->num++;return 1;}}carname outqueue(queuenode *q){if(q->num==0){cout<<"候车处已经没车了"<<endl;return name1;}else{q->front++;q->num--;return q->car[q->front];}}void arrive(seqstackcar *stop,queuenode *lq,carname x){int f;f=push(stop,x);if(f==1)cout<<<<"车在"<<stop->top<<"车位上"<<endl;else{inqueue(lq,x);cout<<<<"车在候车处"<<lq->rear-lq->front<<"车位上"<<endl;}}int leave(seqstackcar *s1,seqstackcar *s2,queuenode *p,carname x){char *b=;int n,f=0;carname y;char *a=;while(s1->top>0&&f!=-1){y=pop(s1);a=;if(strcmp(a,b)!=0&&[0]!='\0')n=push(s2,y);else{f=-1;break;}}if(strcmp(a,b)==0&&[0]!='\0'){cout<<<<"车已经离开停车位"<<endl;while(s2->top!=0){y=pop(s2);push(s1,y);}if(p->rear-p->front>0){y=outqueue(p);push(s1,y);}elsecout<<"候车处没有车"<<endl;}else{cout<<"没有此车"<<endl;while(s2->top!=0){push(s1,y);y=pop(s2);}}return 0;}void chaxun(seqstackcar *s1){if(s1->top==0)cout<<"停车位没有车"<<endl;else{for(int i=1;i<=s1->top;i++)cout<<s1->car[i].name<<"在"<<i<<"车位"<<endl;}}int main(){char ch;seqstackcar *s1,*s2;queuenode *p;int flag;s1=init_car();s2=init_car();p=initqueue();flag=1;while(1){cout<<"请输入字母,A:车进入,L:车退出,E:退出,P:查询"<<endl;cin>>ch;switch(ch){case 'A':{carname q;cout<<"请输入车的名字"<<endl;cin>>;arrive(s1,p,q);}break;case 'L':{carname q1;cin>>;leave(s1,s2,p,q1);}break;case 'E':{cout<<"exit"<<endl;flag=0;}break;case 'P':chaxun(s1);break;default:cout<<"输入错误请重新输入!"<<endl;if(flag==0)break;}}return 0;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档