停车场管理系统 C语言实习报告
数据结构用c语言实现停车场管理系统报告书

课程设计任务书学生姓名:专业班级:软件2101(计算2101)指导教师:黄启荃钱小红工作单位:华夏学院计算机教研室设计题目:用C语言实现停车场管理程序的设计初始条件:1、栈与队列的建立和操作.2、带T C或V C的计算机系统。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)主要任务:(在规定的时间内完成下列任务)设有一个停放n辆车的狭长停车场,它只有一个大门供车辆出入。
车辆按到达停车场时间的早晚依次从停车场最里面向大门处停放。
若已放满n辆车,则后来的车只能停在外面等待,当有车开走后方依次进入,停在场内的车按时计费。
编制一个程序模拟该停车场管理。
1.汽车的模拟输入信息格式可设为:汽车牌照号码,到达/离去时刻如(‘a’,1,5)为1号车在5时刻到达,(‘b’,5,20)为5号车在20这个时刻离去2. 要求程序输出每辆车到达后的停车位置,以及离开停车场时应缴纳的费用及停留时间。
3.编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果,并对采用的算法进行分析。
设计报告撰写格式要求:(课程设计报告按统一通用格式书写)具体内容如下:①设计任务与要求②总体方案与说明③程序主要模块的流程图④源程序清单与注释⑤问题分析与解决方案(包括调试记录、调试报告,即在调试过程中遇到的主要问题、解决方法及改进设想);⑥小结与体会附录:①源程序(必须有简单注释)②使用说明③参考资料时间安排:6月20日---24日第一天布置题目,确定任务、查找相关资料第二天~第四天功能分析,编写程序,调试程序、运行系统;第五天程序验收、答辩;撰写设计报告。
指导教师签字:2011年6月20日系主任签字:年月日设计题目:用C语言实现停车场管理程序的设计1、问题描述即要求停车场是一个可停放n辆汽车的狭长通道,并只有一个大门可供汽车进出,汽车在停车场内按车辆到达的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),如车长内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车”到达”或”离去”信息,汽车牌照号码以及到达或离去的时刻(到达或离去的时刻也可用计算机控制).对每一组输入数据进行操作后的输入信息为:如是车辆到达,则输入汽车在停车场内或便道上的停留位置;如是车辆离去,则输入汽车在停车场内停留的时间和应交的费用。
C语言停车场管理实验报告

设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
试为停车场编制按上述要求进行管理的模拟程序。
功能描述以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
栈以顺序结构实现,队列以链表实现系统设计及实现1.头文件及宏定义#include <conio.h>#include <malloc.h>#include <stdio.h>#include <stdlib.h>#include <windows.h>#define ClearScreen() system( "cls" ) // 清空当前屏幕#define setcolor() system("color 2f")//设置背景前景颜色#define Pause( szPrompt ) printf( "%s", szPrompt ),getch()2.时间和汽车信息结构体的定义(部分代码)typedef struct carinformation // 车辆信息{char szRegistrationMark[64]; // 车牌号char szArrivalTime[16]; // 到达时间char szEntranceTime[16]; // 进入停车场(开始计费)时间char szDepartureTime[16]; // 离开时间} TCARINFORMATION, *LPTCARINFORMATION;3.栈和队列的定义(部分代码)typedef struct carqueue // 链队{LPTCARNODE lpHead; // 头结点LPTCARNODE lpRear; // 指向当前队尾的指针int nEffectiveSize; // 当前队中元素个数} TCARQUEUE, *LPTCARQUEUE;4.栈和队列的初始化(部分代码)void InitQueue( LPTCARQUEUE &lpCarQueue ){lpCarQueue = ( LPTCARQUEUE ) malloc( sizeof( TCARQUEUE ) );lpCarQueue->lpHead = ( LPTCARNODE) malloc( sizeof( TCARNODE ) );lpCarQueue->lpHead->lpNext = NULL;lpCarQueue->lpRear = lpCarQueue->lpHead;lpCarQueue->nEffectiveSize = 0;}实现过程1.开始界面:输入车库容量2.输入车辆到达信息3.当车库停满车时临时停到便道上不收车费4.车辆离开后车库有车位便道上的车进入车库并显示离去车的收费记录5.显示车库及便道信息6.停止输入显示制作者信息及退出程序实训心得通过这次实训我对课本上的理论知识有了更深层次的了解,可能在仅一周的时间内学到的东西有限,不过却也是受益非浅,实训本来就是对平常所学的理论知识通过具体的实现表示出来是在完成理论课程学习之后安排的综合实践训练,任何一个优秀的程序员都是从实践中获得经验和教训的。
大学设计方案方案——利用所学C语言知识方案报告停车场管理系统

2008.12.25班级:55071——28学号:20071003753指导教师:刘文中姓名:谢永诚停车场管理一一.要求:1.设计一个停车场用长度为N的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出为它让道,待其开出停车场后,这些车再依原来的顺序进入。
2.程序输出每辆车到达后的停车位置,以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
二、程序中所采用的数据结构及存储结构的说明以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
栈以顺序结构实现,队列以链表实现。
程序中分别采用了“栈”和“队列”作为其存储结构。
“栈”的定义可知,每一次入栈的元素都在原栈顶元素之上成为新的元素,每一次出栈的元素总是当前栈顶元素使次栈元素成为新的栈顶元素,即最后进栈者先出栈。
程序中采用的结构是:typedef struct NODE{CarNode *stack[MAX+1]。
int top。
}SeqStackCar。
/*模拟车库*/“队列”是限定所有插入操作只能在表的一端进行,而所有的删除操作都只能在表的另一端进行。
插入端叫队尾,梦芭莎优惠券删除端叫对头。
按先进先出规则进行。
程序中采用的结构是:typedef struct Node{QueueNode *head。
QueueNode *rear。
}LinkQueueCar。
/*模拟通道*/三、算法的设计思想由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车场内按车辆到达时间的先后顺序,依次由北向南排列。
由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,又每个汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素我设计成汽车的车牌号。
当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。
C语言程序设计实习报告-停车场管理系统

C语言课程设计实习报告姓名:成帅安学号:20141002605院(系):工程学院专业:土木工程2016年6 月2016.6 中国地质大学C语言课程设计 1 第一章停车场管理系统§1.1题目描述1、有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算。
2、假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。
即先将这四辆车的信息存入文件“car.dat"中(数组的对应元素也要进行赋值)。
3、停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件"car.dat"中,并将在此之前的所有车的停车时间加5。
4、收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元。
(停车费用可设置一个变量进行保存),同时从文件"car.dat"中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零)。
按用户的选择来判断是否要输出停车收费的总计。
5、输出停车场中全部车辆的信息。
6、退出系统。
§1.2算法设计1、需求分析:车辆信息用文件储存,提供文件的输入输出操作;当车离开时要删除文件中该车的信息,因而要提供文件的删除操作;用键盘式菜单实现功能选择。
2、总体设计思路:整个管理系统设计可设计为停车模块、取车模块、车辆浏览信息模块。
另外车辆停放信息涉及到从car.dat中读取,保存和修改,为了方便起见和程序的模块化,我将文件的读入和保存单独设计为两个子程序。
整体模块图如下:23、各子程序设计如下:(1)使用全局变量数组,用一个二维数组实现停车场车位的信息,int cars[12][4];2016.6 中国地质大学C语言课程设计 3 (2)通过读取car.dat的数据,对程序初始化。
停车场管理系统实习报告

停车场管理系统实习报告一、实习背景及目的随着我国经济的快速发展和城市化进程的推进,城市交通问题日益凸显,特别是停车问题。
为了缓解停车难问题,提高停车场管理效率,本次实习我选择了停车场管理系统作为研究对象。
实习的目的是了解停车场管理系统的现状,掌握停车场管理系统的运作模式,探讨如何优化停车场管理系统,提高停车效率和管理水平。
二、实习内容及过程1. 停车场管理系统的了解在实习过程中,我首先对停车场管理系统的基本概念、组成部分和运作原理进行了学习。
停车场管理系统主要包括车位信息实时更新、车牌识别、车位预约、自动计费、支付处理等功能。
通过这些功能,停车场管理系统可以实现对车辆的快速进出、车位的高效利用和管理。
2. 停车场管理系统的实际操作为了更深入地了解停车场管理系统,我参与了实际操作。
在操作过程中,我学习了如何使用车位探测器收集车位信息,如何通过车牌识别系统快速识别车辆,以及如何处理预约车位、自动计费和支付等业务。
此外,我还学习了如何通过管理系统对停车场进行实时监控,确保车位的高效利用和管理。
3. 停车场管理系统的优化探讨在实际操作过程中,我发现停车场管理系统存在一些问题,如车位信息更新不及时、支付方式单一、客户服务不足等。
针对这些问题,我提出了以下优化建议:(1)引入智能算法,提高车位信息更新的实时性,减少误差。
(2)增加多种支付方式,如微信支付、支付宝支付等,方便顾客支付。
(3)加强客户服务,如设立客户服务中心,提供导航、咨询等服务。
(4)开展停车场共享计划,将空闲车位共享给周边商户和居民,提高车位利用率。
三、实习收获及反思通过本次实习,我对停车场管理系统有了更深入的了解,认识到了停车场管理的重要性。
同时,我也学会了如何使用停车场管理系统进行实际操作,掌握了相关技能。
实习过程中,我发现停车场管理系统还存在一些问题,这让我意识到优化停车场管理系统的重要性。
在今后的学习和工作中,我将不断探索停车场管理系统的优化方法,为提高停车场管理水平和停车效率做出贡献。
数据结构停车场管理实验报告C++

数据结构课程设计题目停车场管理器设计专业:计算机科学与技术班级:1401姓名:彭旭学号:143230135实验主要内容以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:汽车“达到”或“离去”信息、汽车牌照号码以及达到或离去的时刻。
对每一组输入数据进行操作后的输出信息为:若是车辆达到、则输出汽车在停车场内或便道上停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
栈以顺序结构实现,队列以链表结构实现。
环境Windows 10 Visual c++ c语言实验原理1.概要设计(1)抽象数据类型定义ADT Stack{数据对象:D={ai|ai ∈ElemSet, i=1,2,…n;n>0}数据关系:R1={<ai-1,ai>|ai-1,ai ∈D,i=2,…n}基本操作:InitStack(&S)操作结果:构造一个空栈S。
Push(&S,e)初始条件:栈S已存在。
操作结果:插入e为新的栈顶元素Pop(&S,&e)初始条件:栈S已存在。
操作结果:删除S的栈顶元素,并且用e返回。
}ADT StackADT Queue {数据对象:D={ai|ai ∈ElemSet, i=1,2,…n; n>0}数据关系:R1={<ai-1,ai>|ai-1,ai ∈D, i=2,…n}其中:a1为队头, an为队尾基本操作:InitQueue(&Q);操作结果:构造一个空队列QEnQueue(&Q,&e);初始条件:对列Q已存在。
操作结果:插入元素e为Q的新队尾元素。
DeQueue(&Q,&e);初始条件:对列Q已存在。
操作结果:删除Q的队头元素, 并用e返回。
}ADT Queue(2)本程序包含七个模块:<1>主程序模块,其中主函数为Void main(){初始化;构造空栈;输入已知数据;插入数据入栈;分析{入栈;出栈;入队;出队;}输出数据;}<2>构造栈模块-----构造一个空栈;栈插入模块-----插入新的数据元素;栈删除模块-----删除指定的数据元素;构造队列模块-----构造一个空队列;队列插入模块-----插入新的数据元素;队列删除模块-----删除指定的数据元素;(3)各模块之间的调用关系图解:2.详细设计<1>类型定义#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define MONEY 3typedef int Status;typedef struct ElemType{c har a[3];i nt num;i nt time;}ElemType;typedef struct SqStack {ElemType *base;//在栈构造之前和销毁之后,base的值为NULLElemType *top;//栈顶指针int stacksize;//当前已经分配的存储空间,以元素为单位}SqStack;//栈的表示typedef struct QNode{E lemType data;struct QNode *next;}QNode,*QueuePtr;//队列的表示typedef struct LinkQueue{QueuePtr front;//队头指针QueuePtr rear;//队尾指针}LinkQueue;<2>栈和队列的基本操作Status InitStack(SqStack &S)//构造一个空栈Status Push(SqStack &S,ElemType e)//插入元素e为新的栈顶元素Status Pop(SqStack &S,ElemType &e)//若栈不空,则删除S的栈顶元素,用e 返回其值,并返回OK;否则返回ERRORStatus InitQueue(LinkQueue &Q)//构造一个空队列QStatus EnQueue(LinkQueue &Q,ElemType e)//插入元素e为Q的新队列Status DeQueue(LinkQueue &Q,ElemType &e)//若队列不空,则删除Q的对头元素,用e返回其值,并返回Ok;否则返回ERROR;<3>部分操作的算法Status InitStack(SqStack &S){//构造一个空栈S.base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));if(!S.base) exit (OVERFLOW);S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;}Status Push(SqStack &S,ElemType e){//插入元素e为新的栈顶元素if(S.top-S.base>=S.stacksize){//栈满,追加存储空间S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemT ype));if(!S.base) exit(OVERFLOW);//存储分配失败S.top=S.base+S.stacksize;S.stacksize+=STACK_INIT_SIZE;}*S.top++=e;return OK;}Status Pop(SqStack &S,ElemType &e){//若栈不空,则删除S的栈顶元素,用e 返回其值,并返回OK;否则返回ERRORif(S.top==S.base) return OK;e=*--S.top;return OK;}//----------------队列Status InitQueue(LinkQueue &Q){//构造一个空队列Q Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));if(!Q.front) exit (OVERFLOW);//存储分配失败Q.front->next=NULL;return OK;}Status EnQueue(LinkQueue &Q,ElemType e){//插入元素e为Q 的新队列p=(QueuePtr)malloc(sizeof(QNode));//存储分配失败if(!p) exit(OVERFLOW);p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;return OK;}Status DeQueue(LinkQueue &Q,ElemType &e){//若队列不空,则删除Q的对头元素,用e返回其值,并返回Ok;否则返回ERROR;if(Q.front==Q.rear) return ERROR;p=Q.front->next;e=p->data;Q.front->next=p->next;if(Q.rear==p) Q.rear=Q.front;free(p);return OK;}源程序Stop1.h:#include <stdio.h>#include <process.h>#include <malloc.h>#include <string.h>//------------------------函数结果状态代码#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define TNFEASIBLE -1#define OVERFLOW -2//Status 是函数的类型,其值是函数结果状态代码typedef int Status;#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define MONEY 3Stop2.h:#include"stop1.h"typedef struct ElemType{char a[3];int num;int time;}ElemType;typedef struct SqStack{ElemType *base;ElemType *top;int stacksize;}SqStack;//栈的表示typedef struct QNode{ElemType data;struct QNode *next;}QNode,*QueuePtr;//队列的表示typedef struct LinkQueue{QueuePtr front;//队头指针QueuePtr rear;//队尾指针}LinkQueue;Status InitStack(SqStack &S);//构造空栈Status Push(SqStack &S,ElemType e);//进栈Status Pop(SqStack &S,ElemType &e);//出栈Status InitQueue(LinkQueue &Q);//构造一个空队列Status EnQueue(LinkQueue &Q,ElemType e);//入队Status DeQueue(LinkQueue &Q,ElemType &e);//出队Stop.cpp:#include"stop2.h"Status InitStack(SqStack &S){//构造空栈S.base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));if(!S.base) exit(OVERFLOW);S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;}Status Push(SqStack &S,ElemType e){//插入元素e为新的栈顶元素if(S.top-S.base>=S.stacksize){//栈满,追加存储空间S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));if(!S.base) exit(OVERFLOW);S.top=S.base+S.stacksize;S.stacksize+=STACK_INIT_SIZE;}*S.top++=e;return OK;}Status Pop(SqStack &S,ElemType &e){//出栈if (S.top==S.base) return OK;e=*--S.top;return OK;}/***********************************************************************队列*/ Status InitQueue(LinkQueue &Q){//构造一个空队列Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));if(!Q.front) exit(OVERFLOW);Q.front->next=NULL;return OK;}Status EnQueue(LinkQueue &Q,ElemType e){//插入元素e为Q的新队列struct QNode *p;p=(QueuePtr)malloc(sizeof(QNode));if(!p) exit(OVERFLOW);p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;return OK;}Status DeQueue(LinkQueue &Q,ElemType &e){struct QNode *p;if(Q.front=Q.rear) return ERROR;p=Q.front->next=p->next;if(Q.rear==p) Q.rear=Q.front;free(p);return OK;}Stop_main.cpp:#include"stop2.h"main(){int i,t,f,m,n,s1_num,Q_num;struct SqStack s1,s2;struct LinkQueue Q;struct ElemType e,e1;s1_num=0;Q_num=0;t=0;m=0;InitStack(s1);InitStack(s2);InitQueue(Q);printf("停车场的容量是:");scanf("%d",&n);printf("输入车辆信息(E为退出,A为进入标志,D为离开标志,车牌号时间空格隔开):\n");scanf("%s",e1.a);scanf("%d%d",&e1.num,&e1.time);while(strcmp(e1.a,"E")!=0){if(strcmp(e1.a,"A")==0) {//当有车辆进来的时候if(s1_num<n) {Push(s1,e1);s1_num++;printf("此车停在停车场第%d辆\n",s1_num);}else {EnQueue(Q,e1);Q_num++;printf("此车停在便道距离门口第%d辆\n",Q_num);}}else if(strcmp(e1.a,"D")==0) {//当有车辆离开的时候f=s1_num;for(i=0;i<f;i++){Pop(s1,e);s1_num--;if(e1.num==e.num){t=e1.time-e.time;m=MONEY*t;printf("此车停车时间%d,所需费用%d元\n",t,m);break;}else Push(s2,e);}if(t==0&&m==0){printf("此车为便道内车,故无需收费\n");Q_num--;}while(s2.top!=s2.base){Pop(s2,e);Push(s1,e);s1_num++;}if(Q.front!=Q.rear){DeQueue(Q,e);Push(s1,e);s1_num++;}}else printf("错误\n");printf("输入数据\n");scanf("%s",e1.a);scanf("%d%d",&e1.num,&e1.time);}运行结果。
数据结构-停车场管理系统实验报告

数据结构-停车场管理系统实验报告数据结构停车场管理系统实验报告一、实验目的本次实验旨在通过设计和实现一个停车场管理系统,深入理解和应用数据结构的知识,包括栈、队列、链表等,提高编程能力和解决实际问题的能力。
二、实验环境本次实验使用的编程语言为C++,开发环境为Visual Studio 2019。
三、需求分析1、停车场内有固定数量的停车位。
2、车辆进入停车场时,记录车辆信息(车牌号、进入时间)。
3、车辆离开停车场时,计算停车费用并输出相关信息。
4、能够显示停车场内车辆的停放情况。
四、数据结构设计1、为了实现车辆的先进先出,选择队列来存储停车场内的车辆信息。
2、用栈来存储临时停放的车辆信息,以便在停车场已满时进行处理。
五、算法设计1、车辆进入停车场检查停车场是否已满。
如果未满,将车辆信息加入队列,并记录进入时间。
2、车辆离开停车场在队列中查找要离开的车辆。
计算停车时间和费用。
将车辆从队列中删除。
3、显示停车场内车辆停放情况遍历队列,输出车辆信息。
六、主要代码实现```cppinclude <iostream>include <string>include <ctime>using namespace std;//车辆结构体struct Car {string licensePlate; //车牌号time_t entryTime; //进入时间};//队列类class Queue {private:Car data;int front, rear, capacity;public:Queue(int size) {capacity = size;data = new Carcapacity;front = rear = 0;}~Queue(){delete data;}bool isFull(){return (rear + 1) % capacity == front;}bool isEmpty(){return front == rear;}void enqueue(Car car) {if (isFull()){cout <<"停车场已满!"<< endl; return;}datarear = car;rear =(rear + 1) % capacity;}Car dequeue(){if (isEmpty()){cout <<"停车场为空!"<< endl;return Car();}Car car = datafront;front =(front + 1) % capacity;return car;}void display(){if (isEmpty()){cout <<"停车场内没有车辆。
C语言停车场管理实验报告.pptx

1.头文件及宏定义
#include <conio.h> #include <malloc.h> #include <stdio.h> #include <stdlib.h> #include <windows.h> #define ClearScreen() system( "cls" ) // 清空当前屏幕 #define setcolor() system("color 2f")//设置背景前景颜色 #define Pause( szPrompt ) printf( "%s", szPrompt ),getch()
//设置背景前景颜色
#define setcolor() system("color 2f")
// 显示字符串 szPrompt 并等待用户按下任意键
#define Pause( szPrompt ) printf( "%s", szPrompt ),getch() typedef struct carinformation // 车辆信息
实现过程
1.开始界面:输入车库容量
2.输入车辆到达信息
2
学海无 涯
3.当车库停满车时临时停到便道上不收车费
4.车辆离开后车库有车位便道上的车进入车库并显示离去车 的收费记录
5.显示车库及便道信息
3
学海无 涯
6.停止输入显示制作者信息及退出程序
实训心得
通过这次实训我对课本上的理论知识有了更深层次的了解,可能在仅一周 的时间内学到的东西有限,不过却也是受益非浅,实训本来就是对平常所学的 理论知识通过具体的实现表示出来是在完成理论课程学习之后安排的综合实践 训练,任何一个优秀的程序员都是从实践中获得经验和教训的。经过仅仅一周 的实训从总体上说收获是很不错的!
停车场管理系统C语言实习报告

停车场管理系统C语言实习报告一、实习背景在城市化进程不断加速的背景下,汽车数量急剧增长,停车难的问题日益突出,停车场管理系统成为解决这一问题的重要途径。
为了更好地了解和掌握停车场管理系统的开发过程和实现方法,我选择了该方向作为我的实习内容。
二、实习过程在实习过程中,我主要参与了停车场管理系统的需求分析、模块设计和编码实现等工作。
1.需求分析首先,我对停车场管理系统的需求进行了详细地分析和理解。
通过与公司内部相关人员的交流和讨论,我了解到停车场管理系统主要包括车辆信息管理、停车记录管理和收费管理等功能。
2.模块设计在需求分析的基础上,我开始进行停车场管理系统的模块设计工作。
根据需求,我划分出了车辆信息管理模块、停车记录管理模块和收费管理模块等多个模块。
然后,我详细地设计了这些模块的功能和数据流程,并与其他开发人员进行了交流和讨论。
3.编码实现在模块设计完成后,我开始进行停车场管理系统的编码实现工作。
首先,我选择了C语言作为开发语言,并使用了相关的开发工具。
然后,我按照设计的流程和规范进行了编码工作,并通过反复调试和测试,最终实现了一个具有基本功能的停车场管理系统。
三、实习收获通过这次实习,我对停车场管理系统的开发和实现过程有了更深入的了解和掌握。
首先,我学会了如何进行需求分析和模块设计,并将其应用于实际开发中。
其次,我通过实际编码实现了停车场管理系统,并通过调试和测试不断完善和优化。
最后,我还与其他开发人员进行了紧密的合作和协调,提高了我与他人沟通和协作的能力。
四、总结与展望通过这次实习,我对停车场管理系统有了全面的认识和了解,并学会了如何进行开发和实现。
但是,在实际工作中还存在一些不足之处,比如对一些技术的了解不够深入和对一些问题的解决不够完善。
因此,我希望今后能够进一步加强相关技术的学习和研究,提高自己的综合能力和解决问题的能力。
在未来的工作中,我将继续深入研究和学习停车场管理系统的相关技术,并通过不断地实践和探索,提高自己的专业能力和水平。
停车场管理系统实习报告

一、实习背景随着我国经济的快速发展,汽车保有量逐年攀升,停车难问题日益凸显。
为解决这一问题,停车场管理系统应运而生。
本次实习旨在通过对停车场管理系统的学习和实践,了解停车场管理的基本流程,掌握系统操作技能,提高自己的实践能力。
二、实习内容1. 停车场管理系统概述停车场管理系统主要由车辆进出管理、车位管理、收费管理、报表统计等模块组成。
系统通过自动化设备(如车牌识别、道闸、地感线圈等)实现车辆进出、收费、车位管理等功能,提高停车场管理效率。
2. 实习过程(1)系统学习实习初期,我主要学习停车场管理系统的基本原理和操作流程。
通过阅读相关资料和请教同事,我对停车场管理系统的功能模块、操作方法有了初步了解。
(2)系统操作在实习过程中,我参与了停车场管理系统的实际操作。
具体包括:1)车辆进出管理:通过车牌识别设备,实现车辆快速进出停车场,提高通行效率。
2)车位管理:实时显示停车场车位使用情况,方便管理人员了解车位分布,合理调配车位。
3)收费管理:根据车辆类型、停放时间等因素,自动计算停车费用,实现收费自动化。
4)报表统计:生成各类报表,如收入报表、进出车辆报表等,为管理层提供决策依据。
(3)问题解决在实习过程中,我遇到了一些问题,如系统操作不熟练、设备故障等。
通过请教同事、查阅资料和与供应商沟通,我成功解决了这些问题。
3. 实习成果通过本次实习,我取得了以下成果:(1)掌握了停车场管理系统的基本原理和操作流程。
(2)熟悉了各类自动化设备的使用方法。
(3)提高了自己的实践能力,为今后从事停车场管理工作打下了基础。
三、实习心得1. 理论与实践相结合本次实习让我深刻体会到理论与实践相结合的重要性。
在学习理论知识的基础上,通过实际操作,我对停车场管理系统有了更深入的了解。
2. 团队合作精神在实习过程中,我与同事共同解决问题,相互学习,共同进步。
这使我认识到团队合作精神在停车场管理工作中的重要性。
3. 良好的沟通能力在实习过程中,我学会了如何与同事、供应商沟通,解决问题。
停车管理系统程序设计实验报告

C++程序设计─停车管理系统程序设计实验报告学院:电气信息工程学院专业:电子信息工程专业学生姓名:张鹤学生班级:信息11-2学生学号:342012年12月14号一、需求分析二、概要设计三、详细设计四、调试分析五、课程总计一、需求分析1.1系统需求分析停车场管理系统是为了提高停车场的运行效率、加强安全性以及与智能交通系统的信息互动,把相关科学技术发展领域的最新成果合理有效的应用到停车场管理系统的完善和发展中。
我国数字化技术应用现已逐渐应用到社会的各个领域中;为了节约大量的人力、物力、财力。
本设计针对目前停车场管理存在的介质落后、集成自动化程度低、安全性差、人性化和运行效率低下的不足,结合目前科学技术领域的最新研究成果,设计了一种技术较先进、性能可靠、自动化程度较高的停车场管理系统。
本设计的指导思想立足于提高停车场管理系统的可靠性、安全性和高效性,对目前我国各大中城市所面临的“停车难”问题的解决,具有一定的促进作用。
1.2功能需求分析1)用户登录:先定义用户名和密码,设置三次输入机会,用户名和密码事先用文档存储,供使用者进入系统。
2)程序登陆后的选择以及信息存储:该模块给出四个选项(1.泊车操作 2.取车操作3.查询信息 4. 退出)。
3)信息查询:能够实现将第一个为空的位置,由程序查询自动给出车位号,如果车位已满要给出提示。
可以随时根据车牌查询是否入库。
可以随时根据车位查询该位置上的相关信息。
4)计时收费:本模块的算法设计比较简单,基本的switch函数就能实现对车型的分类,时间则是导入的系统时间,时间差乘以单价就是最后收费,其中取车时,需要根据车辆停泊时间自动计算费用(半小时内以半价计算,超出半小时不足一小时按一小时计算)并显示在屏幕上。
二、概要设计设计一个程序实现停车场管理系统,管理人员根据口令进入系统。
管理车位信息(车位编号,状态)和每小时的收费费率(货车7元/小时,客车5元/小时,轿车4元/小时,其他3元/小时,由停车时开始计时选择录入)。
C语言数据结构停车场管理系统 课题设计报告书

一.需求分析(1).任务:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内,按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端)。
若车场内已停满n辆汽车,则后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入。
当停车场内某辆车要离开时,在它之后进入的车辆必须先退出班车场为它让路,待该车开出大门后。
其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用(在变道上停留的时间不收费)。
(2).基本要求:①以栈模拟停车场,以队列模拟车场外的便道。
②从终端读入汽车到达或离去的数据,每组包括三项:1.是“到达”还是“离去”;2.汽车牌照号码;3.“到达”或“离去”的时刻;(3).市场需求:这个软件可以合理的安排停车场车辆的存放,查询目前在停车辆,以及计费。
同时当停车场内部车辆方满之后,我们可以根据在外部等待的车辆的先来后到的顺序,当车场空闲之后,再安排等待的车辆进入。
同时在计费的反面,是按分钟计费的,较为公平。
最后收费,将小于0.1元部分四舍五入。
二.概要设计模块大致划分:界面:main函数;Memu函数(主要界面)计算函数1.进入函数GoIn();2离开函数GoOut().;查看函数3.查看车场LookChang();4.查看变道LookDao();遇到的疑难问题1.根据题目要求,停车场需要用栈,而变道要用的是列队。
由于变道的原则是先到先离开,这和列队的原理是一样的,所以变道的建立是方便的,只要实现变道(列队)和停车场(栈)之间的数据连接即可。
但是栈是后入先出的,而停车场呢的车辆的离开时没有规律的,这样删除数据是十分不方便的2.同时在车辆的离去方面有,根据题目的要求,我们要计算出车俩的停车费用。
由于时间是60进制,而车辆的停车的费用是同过车辆的的停车时长来求的,那么便是通过离去的时间减去进入的时间来得出中间的时间,最后求出来的。
c语言数据结构停车场系统实验报告

实验题目:实验六停车场管理一、需求分析1.程序的功能:设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列〔大门在最南端,最先到达的第一辆车停放在车场的最北端〕,假设车场内已停满n辆汽车,那么后来的汽车只能在门外的便道上等候,一旦有车开走,那么排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
〔1〕建立静态数组栈作为模拟停车场,动态链表栈作为模拟便道。
〔2〕车辆到达,停入停车场或者便道,记录车牌号,到达时间。
〔3〕车辆离开,记录离开时间,输出停车时间和收费。
将便道内车停入停车场,记录进入时间。
〔4〕列表显示停车场,便道内车辆情况。
〔5〕列表显示历史记录〔已经离开车的车牌号,到达离开时间,收费〕。
2.输入输出的要求:(1)输入:字符串车牌号,到达时间,离开时间(2)输出:停车时间和收费,停车场和便道的停车情况,历史记录。
3.测试数据:二.概要设计4.本程序所用的抽象数据类型的定义ADT Stack{数据对象:D={ai|ai为ElemSet,i为正整数}数据关系:R1={<ai-1,ai>|ai-1,ai都属于D,i为正整数}根本操作:InitStack(&S) //构建一个空栈SDestroyStack(&S) //S 被销毁StackLength(S) //返回S 的元素个数,即栈的长度。
StackEmpty(s) //假设栈S 为空栈,那么返回TRUE,否那么FALE。
GetTop(S, &e) //用e 返回S 的栈顶元素ClearStack(&S) //将S 清为空栈Push(&S, e) //入元素e 为新的栈顶元素。
数据结构用c语言实现停车场管理系统报告书

课程设计任务书学生:专业班级:软件2101(计算2101)指导教师:黄启荃钱小红工作单位:华夏学院计算机教研室设计题目:用C语言实现停车场管理程序的设计初始条件:1、栈与队列的建立和操作.2、带T C或V C的计算机系统。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)主要任务:(在规定的时间完成下列任务)设有一个停放n辆车的狭长停车场,它只有一个大门供车辆出入。
车辆按到达停车场时间的早晚依次从停车场最里面向大门处停放。
若已放满n辆车,则后来的车只能停在外面等待,当有车开走后方依次进入,停在场的车按时计费。
编制一个程序模拟该停车场管理。
1.汽车的模拟输入信息格式可设为:汽车牌照,到达/离去时刻如(‘a’,1,5)为1号车在5时刻到达,(‘b’,5,20)为5号车在20这个时刻离去 2. 要求程序输出每辆车到达后的停车位置,以及离开停车场时应缴纳的费用及停留时间。
3.编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果,并对采用的算法进行分析。
设计报告撰写格式要求:(课程设计报告按统一通用格式书写)具体容如下:①设计任务与要求②总体方案与说明③程序主要模块的流程图④源程序清单与注释⑤问题分析与解决方案(包括调试记录、调试报告,即在调试过程中遇到的主要问题、解决方法及改进设想);⑥小结与体会附录:①源程序(必须有简单注释)②使用说明③参考资料设计题目:用C语言实现停车场管理程序的设计1、问题描述即要求停车场是一个可停放n辆汽车的狭长通道,并只有一个大门可供汽车进出,汽车在停车场按车辆到达的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),如车长已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场某辆车要离开时,在它后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车”到达”或”离去”信息,汽车牌照以及到达或离去的时刻(到达或离去的时刻也可用计算机控制).对每一组输入数据进行操作后的输入信息为:如是车辆到达,则输入汽车在停车场或便道上的停留位置;如是车辆离去,则输入汽车在停车场停留的时间和应交的费用。
停车场管理系统 C语言实习报告

C语言课程实习报告【要求】设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟停车场管理。
【提示】汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。
基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
根据题目要求,停车场可以用一个长度为n 的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车辆都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场,所以可以设两个堆栈。
一、需求分析根据题目要求,程序应该提供“到达/离去,汽车牌照号码,到达/离去”的输入、输出操作;在程序中需要浏览停车场的车位信息,应提供显示、查找、排序等操作;此外还应提供键盘式菜单实现功能选择。
二、总体设计:根据需求分析,可以将系统的设计分为以下五大模块:(1)车辆进入;(2)车辆退出;(3)车辆等待;(4)车辆查询;(5)退出。
一、详细设计:主函数中只包含菜单函数,菜单部分单独写成函数,只提供输入、功能处理和输出部分的函数调用,其中各功能模块用菜单方式选择。
[程序]#define N 30 /*等待车辆*/#define M 20 /*车位*/#define P 2 /*单位时间所收费用*/#include<stdio.h>#include<stdlib.h>#include<string.h>struct cars /*定义车辆信息*/{ char state;int num;int in_time; 停车场管理系统车辆进入 车辆退出 车辆等待 车辆信息显示车辆查询 退出系统int out_time;int time_spend;int money_to_pay;}car[M];struct carleft{ char state;int num;}wait[N];1、主函数模块[流程图][程序]main() /*主函数*/{pre_manage();menu(); /*调用主菜单函数*/return 0;}void menu() /*主菜单函数*/{int n,w;do{puts("\t\t************************MENU*******************\n\n");puts("\t\t\t\t 1.car_arrive"); /*有车到来*/puts("\t\t\t\t 2.car_depart"); /*有车离开*/puts("\t\t\t\t 3.car_browse"); /*浏览车位信息*/ puts("\t\t\t\t 4.exit"); /*退出*/ puts("\n\n\t\t *********************************************\n") printf("Choice your number(1-4):[ ]\b\b"); /*选择所需服务*/scanf("%d",&n);getchar();if(n<1||n>4){ w=1; getchar();}else w=0;} while(w==1);switch(n){case 1: car_arrive();break;case 2: car_depart();break;case 3: car_browse();break;case 4: exit(0);}}void pre_manage() /*循环结构*/{ int i;for(i=0;i<M;i++)car[i].state='E';for(i=0;i<N;i++)wait[i].state='E';}2、各功能模块设计:(1)、车辆进入模块[分析]车辆进入停车场后,判断车位和等待车位是否有剩余。
c语言实习报告 停车场管理系统.pptx

if((fp=fopen("car.dat","w")) ==NULL) {
fprintf(stderr,"error opening file\n"); exit(1);
8
" ); }
7.退出模块 if(a== '0')
{
学海无 涯
printf(" press any key to continue... " ); break;
四.实习心得
在老师的带领下进行了 C 语言程序实践学习。在短短一周的实 习期间使我获取了不少新知识也巩固了许多老知识。在这之前,我们 已经对 C 语言这门课程学习了一个学期,对其有了一定的了解,但 是也仅仅是停留在学习了解的范围,对里面的好多东西还是很陌生, 并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很 不好动手。
for (j = 0; j<2;++j)
{
for (k = 0; k<6;++k)
{
if(park[j][k] !=0)
printf("%d
%d
%d
%d \n
",car[j*6+k].carNO,car[j*6+k].floor,car[j*6+k].position,car[j*6+k].time);
学海无 涯
C 语言课程设计
院系:工程学院 姓名:姚 品 品 学号:20051001635 班号:05205224 指导教师:王老师 日期:2007 年 9 月
1
学海无 涯
一 课程设计编号、名称、内容
编号:第二十七题
C++停车场管理系统实训报告

题目:停车场管理系统院系: xxxxxxxxx专业:计算机科学与技术姓名: XXX学号: xxxxxxxxxxxx指导教师: XXX日期: 2013年12月31日XXXXXXXXXXXXXXXX学院实训报告目录1 需求分析 (1)2 系统设计 (2)2.1 总体设计 (2)2.2 详细设计 (2)程序头文件 (2)停车场类 (3)主控函数流程 (3)3 系统实现 (4)1 编码 (4)2 测试 (10)4 归纳总结 (12)1 开发经验 (12)2 实训中遇到的问题及解决方法 (12)3 感想和心得体会 (13)5 参考资料 (13)一、需求分析随着我国经济的迅速发展,城市规模的不断扩大,汽车正逐渐走进寻常百姓家。
交通工具方便了人们的生活,但同时也带来了一些问题,如停车满、停车难等。
目前大多数停车场还是依靠人工管理的办法,不能适应社会发展的需要。
因此就需要这种的停车场管理程序,来智能管理车辆,更有效,更便捷的解决了停车问题。
本程序可自定义停车场数量,停车场车位数,停车场计时收费,车辆管理。
程序界面:二、系统设计1、总体设计:采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。
需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。
可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。
停车场管理系统功能模块图当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进栈;如果停车场已满,则车辆进入等候队列。
当车辆要求出栈时,该车到栈顶的那些车辆先弹出栈(在它之后进入的车辆必须先退出车场为它让路),再让该车出栈,其他车辆再按原次序进栈(进入车场)。
当车辆出栈完毕后,检查等候队列(便道)中是否有车,有车则从队列头取出一辆车压入栈中。
程序可以根据进出停车场的时间计算停车的费用和时间(在便道上停留的时间不收费)。
数据结构实践报告--停车场管理系统

河南财经政法大学集中实践报告院系:班级:指导老师:小组:小组成员:目录(一)设计目的 (3)(二)问题描述 (3)(三)概要设计 (4)(四)详细设计 (8)(五)调试分析 (9)(六)测试分析 (10)(七)心得体会 (11)(八)附录(源代码) (12)(一)设计目的1.通过课程设计,了解并掌握数据结构的设计方法,具备初步的独立分析和设计能力;2.通过课程设计,初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.通过课程设计,提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.通过课程设计,训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
(二)问题描述及要求基本要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。
对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
栈以顺序结构实现,队列以链表结构实现。
测试数据设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)。
实现提示需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。
输入数据按到达或离去的时刻有序。
栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。
此外还要实现:(1)两个栈共享空间,思考应开辟数组的空间是多少?(2)汽车可有不同种类,则他们的占地面积不同,收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程实习报告【要求】设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟停车场管理。
【提示】汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。
基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
根据题目要求,停车场可以用一个长度为n 的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车辆都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场,所以可以设两个堆栈。
一、需求分析根据题目要求,程序应该提供“到达/离去,汽车牌照号码,到达/离去”的输入、输出操作;在程序中需要浏览停车场的车位信息,应提供显示、查找、排序等操作;此外还应提供键盘式菜单实现功能选择。
二、总体设计:根据需求分析,可以将系统的设计分为以下五大模块:(1)车辆进入;(2)车辆退出;(3)车辆等待;(4)车辆查询;(5)退出。
一、详细设计:主函数中只包含菜单函数,菜单部分单独写成函数,只提供输入、功能处理和输出部分的函数调用,其中各功能模块用菜单方式选择。
[程序]#define N 30 /*等待车辆*/#define M 20 /*车位*/#define P 2 /*单位时间所收费用*/#include<stdio.h>#include<stdlib.h>#include<string.h>struct cars /*定义车辆信息*/{ char state;int num;int in_time; 停车场管理系统车辆进入 车辆退出 车辆等待 车辆信息显示车辆查询 退出系统int out_time;int time_spend;int money_to_pay;}car[M];struct carleft{ char state;int num;}wait[N];1、主函数模块[流程图][程序]main() /*主函数*/{pre_manage();menu(); /*调用主菜单函数*/return 0;}void menu() /*主菜单函数*/{int n,w;do{puts("\t\t************************MENU*******************\n\n");puts("\t\t\t\t 1.car_arrive"); /*有车到来*/puts("\t\t\t\t 2.car_depart"); /*有车离开*/puts("\t\t\t\t 3.car_browse"); /*浏览车位信息*/ puts("\t\t\t\t 4.exit"); /*退出*/ puts("\n\n\t\t *********************************************\n") printf("Choice your number(1-4):[ ]\b\b"); /*选择所需服务*/scanf("%d",&n);getchar();if(n<1||n>4){ w=1; getchar();}else w=0;} while(w==1);switch(n){case 1: car_arrive();break;case 2: car_depart();break;case 3: car_browse();break;case 4: exit(0);}}void pre_manage() /*循环结构*/{ int i;for(i=0;i<M;i++)car[i].state='E';for(i=0;i<N;i++)wait[i].state='E';}2、各功能模块设计:(1)、车辆进入模块[分析]车辆进入停车场后,判断车位和等待车位是否有剩余。
若车位有空余则输入车辆编号和进入时间,记录在已停放车辆信息中;若车位无剩余而等待车位有剩余则输入车辆编号和进入时间,记录在等待车辆信息中;若两者都无剩余则提示无剩余空间。
[流程图][程序]○1车辆到来模块void car_arrive() /*车辆到来模块*/{ int s,w1,w2,t;void menu(); /*显示主菜单*/s=whether(); /*判断是否有空余车位*/w1=whether_cars_full();w2=whether_carwait_full();if(s==1) /*有空余车位*/{puts("\t\tInput the NO. of the coming car! \n "); /*输入车辆编号*/car[w1].state='A';scanf("%d",&car[w1].num);puts("\n\t\tInput the in_time!\n"); /*输入车辆进入时间*/scanf("%d",&car[w1].in_time);}else if(s==2) /*有空余等待车位*/{ puts("\t\tInput the NO. of the coming car! \n "); /*输入车辆编号*/ wait[w2].state='A';scanf("%d",&wait[w2].num);}else printf("No extra space"); /*无剩余空间*/printf("what do you want to do next?\n"); /*选择所需服务*/puts("\t\t************************MENU*******************\n\n");puts("\t\t\t\t 1).Another car is coming");puts("\t\t\t\t 2).Back to Menu");puts("\n\n\t\t *********************************************\n");printf("\n\t\tChoice your number(1-2):[ ]\b\b");scanf("%d",&t);getchar();if(t==1) /*另一辆车进入*/car_arrive();else /*返回主菜单*/menu();}○2判断车位是否空余模块int whether() /*判断车位是否空余模块*/{int w1,w2,s;w1=whether_cars_full();w2=whether_carwait_full();if(w1<M) s=1; /*有空余车位*/else if(w1==M&&w2<N) s=2; /*车位已满,等待车位有空余*/else s=3; /*车位和等待车位都已满*/ return s;}◇1判断停泊车位是否空余模块int whether_cars_full() /*判断停泊车位是否有空余模块*/{int i,k;for(i=0;i<M;i++){if(car[i].state=='E') break; /*当输入为‘“E”的时候退出系统*/}k=i;return k;}◇2判断等待车位是否空余模块int whether_carwait_full() /*判断等待车位是否有空余模块*/{int i,k=N;for(i=0;i<N;i++){if(wait[i].state=='E') k=i;break; /*当输入为‘“E”的时候退出系统*/}return k;}(2)、车辆退出模块[分析]该部分需要实现功能:用户选择车辆离开后,先查询该车位于停泊车位还是等待车位,若位于停泊车位则在输入离开时间后显示所需交纳费用;若位于等待车位则不需交费。
[流程图][程序]○1停泊车辆离开模块void car_in_left(int k) /*停泊车辆离开模块*/ {int w1,i,j,n,s;void car_wait_left(int n);struct cars temp[M];w1=whether_cars_full();n=w1-k-1;for(i=w1,j=0;j<n;i--,j++)temp[j]=car[i];car[k].state='D';printf("Input the out_time!"); /*输入离开时间*/scanf("%d",&car[k].out_time);s=car[k].out_time;car[k].time_spend=car[k].out_time-car[k].in_time; /*计算停泊时间*/car[k].money_to_pay=car[k].time_spend*P; /*计算所需交纳费用*/ printf("the NO.%d car need to pay %d yuan",car[k].num,car[k].money_to_pay);for(i=k,j=n-1;j>=0;i++,j--)car[i]=temp[j];car[M].state=wait[1].state;car[M].in_time=s;car[M].num=wait[1].num;car_wait_left(1);}○2等待车辆离开模块void car_wait_left(int n) /*等待车辆离开模块*/{int i;for(i=n;i<N-1;i++)wait[i]=wait[i+1];wait[N-1].state='E';}○3车辆所处车位查询模块int search() /*查询模块*/{int temp_num,n1,n2,w=0,n;do{printf("Input the num of the leaving car!"); /*输入离开车辆编号*/scanf("%d",&temp_num);if(temp_num==-1)exit(0);n1=search_car(temp_num); /*调用查询已用停泊车位模块*/ n2=search_carwait(temp_num); /*调用查询已用等待车位模块*/if(n1<M){whether_in=1; n=n1;} /*车辆处于停泊车位*/else if(n1==M&&n2<N) /*车辆处于等待车位*/{whether_in=0; return n=n2;}else /*无该车辆信息*/{printf("Not Found!Input again! \nOr input -1 to exit "); w=1;n=-1;}}while(w==1);return n;}◇1查询已用停泊车位模块:int search_car(int temp_num) /*查询已用停泊车位*/{int i,k;for(i=0;i<M;i++){if(car[i].state=='A'&&car[i].num==temp_num) break;}k=i; /*车辆处于停泊车位,返回车辆编号*/return k;}◇2查询已用等待车位模块:int search_carwait(int temp_num) /*查询已用等待车位*/{int i,k;for(i=0;i<N;i++){if(wait[i].state=='A'&&wait[i].num==temp_num) break;}k=i; /*车辆处于等待车位,返回车辆编号*/ return k;}int whether_in; /*判断是否存在*/○4车辆离开模块void car_depart() /*车辆离开模块*/{int n,w;void menu();int search(); /*调用车辆位置查询模块*/n=search();if(whether_in==1) car_in_left(n);else car_wait_left(n);printf("\n\t\t^_^ Do it successful^_^\n");puts("\n\n");printf("what do you want to do?\n"); /*选择所需服务*/puts("\t\t************************MENU*******************\n\n");puts("\t\t\t\t 1).Another car depart"); /*另一车辆离开*/puts("\t\t\t\t 2).Back to Menu"); /*返回主菜单*/puts("\n\n\t\t *********************************************\n");printf("\n\nChoice your number(1-2):[ ]\b\b");scanf("%d",&w);getchar();if(w==1)car_depart(); /*调用车辆离开模块*/elsemenu(); /*返回主菜单*/}(3)、车位信息浏览模块[分析]该模块需要实现功能:用户选择浏览车位信息时进入该模块,查询并显示车位使用信息。