C语言课程设计报告停车场管理系统
c语言课程设计停车场

c语言课程设计停车场一、教学目标本节课的教学目标是让学生掌握C语言的基本语法和编程技巧,通过编写程序实现停车场管理系统,培养学生的实际编程能力和问题解决能力。
具体目标如下:1.知识目标:(1)掌握C语言的基本数据类型、运算符和表达式;(2)了解函数的定义和调用方法;(3)熟悉数组的声明和使用;(4)理解指针的概念和应用。
2.技能目标:(1)能够运用C语言编写简单的程序;(2)学会使用函数 modularize 代码;(3)掌握数组在程序中的应用;(4)了解指针的基本操作和内存管理。
3.情感态度价值观目标:(1)培养学生的团队合作意识和沟通能力;(2)激发学生对计算机科学的兴趣和好奇心;(3)培养学生解决问题的能力和创新精神。
二、教学内容本节课的教学内容主要包括以下几个部分:1.C语言基础知识:数据类型、运算符、表达式、函数、数组、指针等;2.停车场管理系统的需求分析;3.停车场管理系统的程序设计;4.程序调试和优化。
具体安排如下:第1-2课时:C语言基础知识讲解和练习;第3-4课时:停车场管理系统的需求分析及总体设计;第5-6课时:停车场管理系统的详细设计和程序编写;第7课时:程序调试和优化。
三、教学方法为了提高学生的学习兴趣和主动性,本节课将采用以下教学方法:1.讲授法:讲解C语言的基本语法和编程技巧;2.案例分析法:通过分析停车场管理系统的实际案例,引导学生思考和解决问题;3.实验法:让学生动手编写程序,实现停车场管理系统;4.小组讨论法:分组进行讨论和合作,培养学生的团队合作意识和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《C程序设计语言》;2.参考书:《C Primer Plus》、《C和指针》;3.多媒体资料:PPT课件、教学视频、在线教程等;4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)。
C语言课设之停车场管理系统

C语言课程设计实习报告目录一. 题目要求二. 需求分析三.总体设计四. 具体程序页脚内容1五. 上机操作及使用说明六. 存在问题与不足七. 学习心得停车场管理一. 题目要求1.设计一个停车场用长度为N的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出为它让道,待其开出停车场后,这些车再依原来的顺序进入。
2.程序输出每辆车到达后的停车位置,以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
二. 需求分析页脚内容2根据题目要求首先设计一个堆栈,以堆栈来模拟停车场,又每辆汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素设计成汽车的车牌号。
当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。
这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车牌号。
当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。
另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。
由于时间不像汽车一样需要让道,可设计了一个顺序表来存放时间。
又用顺序表用派生法设计了一个堆栈,恰好满足上面模拟停车场的需要。
三. 总体设计页脚内容3页脚内容4四. 具体程序#include <stdio.h> #include <malloc.h> #define SIZE 3#define NULL 0 typedef struct{ int hour;int min;} time;typedef struct{ int num;页脚内容5int position;time t;float money;} Car;typedef struct{ Car elem[SIZE+1];int top;} Stack;typedef struct Node{ Car data;struct Node *next;}CQueueNode;typedef struct{ CQueueNode *front;CQueueNode *rear;}LinkQueue;void InitStack(Stack *S)页脚内容6{ S->top=0; }void Push(Stack *S,Car *r){ S->top++;S->elem[S->top].num=r->num;r->position=S->elem[S->top].position=S->top;S->elem[S->top].t.hour=r->t.hour;S->elem[S->top].t.min=r->t.min;}int IsEmpty(Stack* S){ return(S->top==0?1:0); }int IsFull(Stack *S){ return(S->top==SIZE?1:0); }int GetTop(Stack *S,Car *n){ n->num=S->elem[S->top].num;n->position=S->elem[S->top].position;n->t.hour=S->elem[S->top].t.hour;n->t.min=S->elem[S->top].t.min;return 1;}void InitQueue(LinkQueue *Q)页脚内容7{ Q->front=(CQueueNode*)malloc(sizeof(CQueueNode));if(Q->front!=NULL){ Q->rear=Q->front;Q->front->next=NULL; }}int EnterQueue(LinkQueue *Q,Car *t){ CQueueNode *NewNode;NewNode=(CQueueNode*)malloc(sizeof(CQueueNode));if(NewNode!=NULL){NewNode->data.num=t->num;NewNode->data.t.hour=t->t.hour;NewNode->data.t.min=t->t.min;NewNode->next=NULL;Q->rear->next=NewNode;Q->rear=NewNode;return 1;}else return 0;}int DeleteQueue(LinkQueue *Q,Car *x)页脚内容8{ CQueueNode *p;if(Q->front==Q->rear)return 0;p=Q->front->next;Q->front->next=p->next;if(Q->rear==p)Q->rear=Q->front;x->num=p->data.num;x->t.hour=p->data.t.hour;x->t.min=p->data.t.min;free(p);return 1;}void print1(Stack *S){int tag;Car x;printf("停车场停车情况:\n");if(IsEmpty(S))printf("无车!");for(tag=S->top;S->top>0;S->top--)页脚内容9if(GetTop(S,&x))printf("车牌号%d,所在位置%d,到达/离开时间%d:%d\n",x.num,x.position,x.t.hour,x.t.min); S->top=tag;}void print2(LinkQueue *Q){ CQueueNode *p;p=Q->front->next;for(;p!=NULL;p=p->next)printf("等待车牌号%d, 到达/离开时间%d:%d",p->data.num,p->data.t.hour,p->data.t.min); }void TaM(Car *r,int h,int m){ if(m>r->t.min){r->t.min+=60;r->t.hour-=1;}h=r->t.hour-h;m=r->t.min-m;printf("\n停车%d小时%d 分钟\n",h,m);printf("每小时收费30元\n");h=h*60;m=h+m;r->money=0.5*m;printf("请支付金额%.2f元\n",r->money);页脚内容10}void In(Stack *S,LinkQueue *Q,Car*r){if(IsFull(S)){ printf("车库已满,请等待!");EnterQueue(Q,r);}else{Push(S,r);printf("\n您现在所在位置%d",r->position);}}void Out(Stack *S,Stack *S0,Car *r,LinkQueue *Q){ int tag=S->top;Car x;if(IsEmpty(S)) printf("没有此车!");else{ for(;r->num!=S->elem[tag].num&&tag>0;tag--){ Push(S0,&S->elem[tag]);S->top--;}页脚内容11if(r->num==S->elem[tag].num){ TaM(r,S->elem[tag].t.hour,S->elem[tag].t.min);S->top--;for(;S0->top>0;S0->top--)Push(S,&S0->elem[S0->top]);if(S->top<SIZE && Q->front!=Q->rear){ DeleteQueue(Q,&x);Push(S,&x);}}else if(tag==0){ printf("未进入停车场应支付金额0元!");for(;S0->top>0;S0->top--)Push(S,&S0->elem[S0->top]);}}}void print(){printf("\n***********************************欢迎光临*************************************\n");printf("\n 请选择:\n");页脚内容12printf("\n 1 :到达");printf("\n 2 :离开");printf("\n 3 :搜索");printf("\n 4 :退出\n");printf("\n");}int main(){ int n,m,i=1,j,flag=0;Car c[10];Car x;Stack S,S0;LinkQueue Q;InitStack(&S);InitStack(&S0);InitQueue(&Q);while(1){ print();scanf("%d",&m);switch(m){case 1:printf("\n请输入车牌号:");页脚内容13scanf("%d",&c[i].num);printf("\n请输入到达/离开时间:");scanf("%d:%d",&c[i].t.hour,&c[i].t.min);In(&S,&Q,&c[i]);i++;break;case 2:printf("\n请输入车牌号:");scanf("%d",&n);for(j=0;j<10;j++)if(n==c[j].num) break;printf("\n请输入到达/离开时间:");scanf("%d:%d",&c[j].t.hour,&c[j].t.min);Out(&S,&S0,&c[j],&Q); break;case 3: print1(&S);print2(&Q);break;case 4: flag=1; break;default:printf("\n输入错误,请输入1,2,3 或4");}if(flag)break;} return 0;}五. 上机操作及使用说明页脚内容14运行Microsoft Visual C++,进入运行状态:1.主菜单:根据页面提示,输入相应数字。
停车场管理系统C课程设计报告

重庆科技学院《面向对象程序设计》课程设计报告学院:电气与信息工程学院专业班级:计科2012-05学生姓名:蒋鑫学号: 2012442101设计地点(单位)_____I313________设计题目:_ 停车场管理系统 ___完成日期: 2014 年 1月 8 日指导教师评语: ______________________ _______________ ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________成绩(五级记分制):______ __________指导教师(签字):________ ________重庆科技学院课程设计任务书设计题目:停车场管理系统设计学生姓名蒋鑫课程名称面向对象课程设计专业班级计科12-5班地点I313 起止时间12月30日~1月10日设计内容及要求1)问题描述定义车辆类,属性有车牌号、颜色、车型(小汽车、小卡、中卡和大卡)、到达的时间和离开的时间等信息和相关的对属性做操作的行为。
定义一个管理类,完成对停车场的管理。
停车场的具体要求:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等待,一旦有车开走,则排在便道上的第一辆车即可开入;每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
2)功能要求(1)添加功能:程序能够添加到达停车场的车辆信息,要求车辆的车牌号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
C语言课程设计报告-停车场管理系统.doc

C语言课程设计报告目录一、题目要求,需求分析二、总体设计思路与功能模块划分三、程序设计四、程序运行测试五、总结前言计算机科学技术的发展,不仅极大地促进了整个科学技术的发展,而且明显地加快了经济信息化和社会信息化的进程。
因此,计算机教育在全国备受重视,计算机知识与能力已成为21世纪人才素质的基本要素之一。
如今,高等教育的计算机教育发展十分迅速。
十多年前,只有部分理工科专业开设计算机课程。
今天,几乎所有高校的所有专业都开设了程度不同的计算机课程。
人们已经认识到,计算机知识已成为当代知识分子知识结构中不可缺少的重要组成部分。
而除了掌握计算机的基础知识和操作的基本能力外,掌握一门高级编程语言,并可以熟练运用它,已成为当代大学生综合能力必要组成。
计算机技术发展如此迅猛,计算机应用如此广泛,需要学习的东西愈来愈多,而我们的总学时是有限的。
一般来说,计算机课程学习可以分为两部分:一部分是理论课程学习,一部分是上机应用实习。
根据我们专业的性质和要求,则应侧重于上机操作运用。
为此,学校特意在本学期最后安排了32个学时的上机实习。
现将一星期的实习内容及结果分析分列如下:一、题目要求:27.停车场管理21、有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算。
2、假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。
即先将这四辆车的信息存入文件“car.dat"中(数组的对应元素也要进行赋值)。
3、停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件"car.dat"中,并将在此之前的所有车的停车时间加5。
课程设计停车场管理系统

课程设计停车场管理系统一、课程目标知识目标:1. 让学生理解停车场管理系统的基本原理和功能需求。
2. 使学生掌握利用所学编程语言设计简单的停车场管理系统。
3. 帮助学生了解数据库在停车场管理系统中的应用。
技能目标:1. 培养学生运用所学知识,如流程图绘制、代码编写和调试等,解决实际问题的能力。
2. 提高学生团队协作、沟通表达和项目管理的能力。
情感态度价值观目标:1. 培养学生对计算机科学的兴趣,激发他们探索新技术、新方法的热情。
2. 培养学生面对实际问题时,积极思考、勇于创新的态度。
3. 增强学生的环保意识,让他们认识到智能停车场系统对缓解交通压力、提高生活质量的重要性。
课程性质:本课程为信息技术学科,以项目式教学为主,结合教材内容,使学生能够将理论知识与实际应用相结合。
学生特点:考虑到学生所在年级,他们在前期课程中已掌握了基本的编程知识和数据库应用,具备一定的自学能力和团队协作精神。
教学要求:在教学过程中,教师应注重引导学生自主探究、动手实践,鼓励学生提出问题、解决问题。
同时,关注学生的个体差异,给予个性化指导,确保每位学生都能在课程中取得实质性的进步。
通过本课程的学习,使学生能够达到以上设定的课程目标,为后续相关课程打下坚实基础。
二、教学内容1. 教学大纲:a. 停车场管理系统概述:介绍停车场管理系统的基本概念、功能和应用场景。
b. 系统需求分析:讲解如何进行需求分析,明确系统所需实现的功能和性能要求。
c. 系统设计:包括数据库设计、界面设计和模块设计,阐述各部分的设计原则和实现方法。
d. 编程实现:利用所学编程语言(如Python、Java等),实现停车场管理系统的核心功能。
e. 系统测试与优化:教授测试方法,分析测试结果,提出优化策略。
2. 教学内容安排与进度:a. 概述(1课时):引导学生了解停车场管理系统的背景和意义。
b. 需求分析(2课时):指导学生进行实际需求分析,明确系统目标。
c语言实现停车场管理系统

c语言实现停车场管理系统#include#include #include#define Size 2#define price 5typedef struct { char num[20]; int reachtime; int leavetime; }carinfo;typedef struct stack{ carinfo car[5]; int top;}Stack;typedef struct Node{ carinfo data; struct Node*next; }QueueNode;typedef struct { QueueNode *front; QueueNode *rear;}Queue,*linkQueue;int EnterQ(Queue *Q,carinfo x); int inistack(Stack *S) //初始化栈{S->top=-1; return 1;}void Push(Stack *S,carinfo x) //进栈操作{S->top++; S->car[S->top]=x;printf(" 进站成功!"); }void Pop(Stack *S,carinfo x) //出栈操作{ if(S->top=-1) printf(" 空栈,无法出栈!");x=S->car[S->top];S->top--;printf(" 出栈成功!");}IsEmpty(Stack *S) // 判断栈空{ if(S->top==-1) return 1;elsereturn 0;}int iniQueue(Queue *Q) //初始化便道{Q->front=(QueueNode *)malloc(sizeof(QueueNode)); //申请节点if(Q->front!=NULL){Q->rear=Q->front;Q->front->next=NULL;return 1;}else return 0;}int EnterQ(Queue *Q,carinfo x) //进便道{QueueNode *newNode;newNode=(QueueNode *)malloc(sizeof(QueueNode)); if(newNode!=NULL){ newNode->data=x; newNode->next=NULL;Q->rear->next=newNode; Q->rear=newNode; return 1;}else return 0;}int DeleteQ(Queue *Q,carinfo x) // 出便道{QueueNode *p; p=Q->front->next;if(Q->front==Q->rear) //判断便道是否有车return 0;x=p->data;if(p->next==Q->rear)Q->rear=Q->front;Q->front->next=NULL;}Q->front->next=p->next; free(p); return 1;}void Lpush(Stack *S,carinfo x){ Push(S,x); //进临时栈}void LPop(Stack *S,carinfo x){Pop(S,x);}int Arrive(Stack *S,Queue *Q) // 车辆到达{carinfo x;int a;printf(" 输入车牌号:"); scanf("%s",x.num); printf(" 请输入进车场的时间:");scanf("%d",&x.reachtime);if(S->top==Size-1){printf(" 车场已满,不能进入,进便道");//递归调用进便道操作a=EnterQ(Q, x);if(a==1){ printf("OK\n");} else printf("No!\n");}else{ Push(S,x);} return 1;}int Departure(Stack *S) // 车辆离开操作{int money;。
C语言课程设计报告停车场管理系统

算法与数据结构课程设计题目:停车场管理专业班级:软件四班姓名:学号:指导教师:成绩:______________目录一、题目及要求 (2)二、题目分析 (3)三、数据结构说明 (4)四、各函数算法分析 (5)(1)主函数 (5)(2)车辆到达函数 (7)(3)车辆离开函数 (8)(4)列表显示函数 (10)五、程序测试 (14)(1)测试信息对错误的处理 (14)(2)列表显示 (15)(3)同时输出等待的提示作息 (16)(4)计算它们的应交费用 (17)六、课程设计感悟与收获 (18)七、源代码 (19)八、参考文献 (25)一、题目及要求[要求]设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆国就进入停车场。
停车场内如有某辆车要走,在它之后进来的车都必须退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且其他在便道上等待的车辆的次序不变。
编制一程序模拟停车场管理。
[提示]汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去时刻)。
例如:(’A’,1,5)表示1号牌照车在5这个时刻到达,而(’D’,5,20)表示5号牌照车在20这个时刻离去,整个程序可以在输入信息为(’E’,0,0)时结束。
基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交的费用和它在停车场内停留的时间。
根据题目要求,停车场可以用一个长度为n的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
C语言课程设计智能停车管理系统

目录摘要 (I)第一章绪论 (1)第二章系统分析 (3)2.1 停车场发展趋势分析 (3)2.2 智能停车管理系统功能需求 (4)2.3 系统菜单的主要功能 (6)第三章总体设计与详细设计 (7)3.1 算法分析 (7)3.2 系统流程图 (7)第四章编码实现 (10)4.1 判断便道是否拥挤 (10)4.2 判断该车是否在泊 (10)4.3 取车 (10)4.4 主函数 (11)第五章调试与测试 (12)5.1 存车 (12)5.2 取车 (13)总结与心得 (14)附录 (16)1 源代码 (16)2 参考资料 (22)摘要智能停车管理系统作为智能交通系统的一部分,其主要功能是从静态交通方面改善和缓解城市交通拥堵。
随着停车难和停车场泊位利用效率相对较低的矛盾日益突出,本文在分析现代智能停车管理系统功能需求、停车特性及有效泊位变化规律的基础上,提出了高效泊位诱导系统和停车场有效泊位短时预测方法,以充分发挥静态交通系统在改善城市动态交通方面的作用。
了解国内外停车管理系统发展趋势,结合国内停车管理需求和停车特性,提出完善的系统设计方案,在此基础上对泊车系统做出深入研究。
利用C语言和数据库开发技术实现泊位仿真演示系统。
分析研究停车场历史数据,此次停车时间以及费用。
关键词:智能停车管理;C语言;数据库第一章绪论随着经济发展和城市化进程的加快,我国城市机动车保有量得到了迅速增长,导致停车泊位和机动车数量增长的矛盾日益突出,但停车问题未受到应有的重视,随着城市交通和停车需求的不断增长,其势必将成为解决城市交通拥挤的瓶颈。
为满足日益增长的交通需求,改善交通设施现状和提高交通设施利用率迫在眉睫,具有诱人前景的“停车经济”必将蓬勃发展。
而随着大型停车场的不断兴建,旨在提高停车场运营效率的智能停车管理系统也将随之发展。
针对当前停车管理技术水平较低的现状,规划实施智能停车管理系统有利于对城市停车实现信息化、智能化、网络化的科学管理,通过合理配置、科学诱导,使驾驶员能够快速、准确、安全地停车,减少车辆因寻找泊位而产生对道路的占用,降低车辆尾气排放和噪声,缓解城市交通拥堵状况,同时最大程度地提高停车设施的利用率,减少违章停车现象,确保交通畅通、安全,具有很高的社会和经济效益。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*------------------------------------------------------------------------------*/
void main()
{Hale Waihona Puke SeqStackCar Enter,Temp;
LinkQueueCar Wait;
int ch;
InitStack(&Enter); /*初始化车站*/
InitStack(&Temp); /*初始化让路的临时栈*/
InitQueue(&Wait); /*初始化通道*/
printf("欢迎光临");
printf("\n");
while(1)
{
printf("\n1.车辆到达");
QueueNode *head;
QueueNode *rear;
}LinkQueueCar; /*模拟通道*/
/*------------------------------------------------------------------------------*/
void InitStack(SeqStackCar *); /*初始化栈*/
int InitQueue(LinkQueueCar *); /*初始化便道*/
int Arrival(SeqStackCar *,LinkQueueCar *); /*车辆到达*/
void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); /*车辆离开*/
四.设计原理、框图
五.运行结果
车辆进入车场:
车场已满:
车辆离开,并收费:
列出车场信息:
列出车道信息
六.程序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*------------------------------------------------------------------------------*/
{
case 1:Arrival(&Enter,&Wait);break; /*车辆到达*/
case 2:Leave(&Enter,&Temp,&Wait);break; /*车辆离开*/
typedef struct NODE{
CarNode *stack[MAX+1];
int top;
}SeqStackCar; /*模拟车库*/
“队列”是限定所有插入操作只能在表的一端进行,而所有的删除操作都只能在表的另一端进行。插入端叫队尾,删除端叫对头。按先进先出规则进行。程序中采用的结构是:
typedef struct Node{
停车场管理一
一.要求:
1.设计一个停车场用长度为N的堆栈来模拟。由于停车场内如有某辆车要开走 ,在它之后进来的车都必须先退出为它让道,待其开出停车场后,这些车再依原来的顺序进入。
2.程序输出每辆车到达后的停车位置,以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
二、程序中所采用的数据结构及存储结构的说明
}CarNode;/*车辆信息结点*/
typedef struct NODE{
CarNode *stack[MAX+1];
int top;
}SeqStackCar;
typedef struct car{
CarNode *data;
struct car *next;
}QueueNode;
typedef struct Node{
QueueNode *head;
QueueNode *rear;
}LinkQueueCar; /*模拟通道*/
三、算法的设计思想
由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车场内按车辆到达时间的先后顺序,依次由北向南排列。由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,又每个汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素我设计成汽车的车牌号。当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车牌号。当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。由于时间不象汽车一样需要让道,我设计了一个顺序表来存放时间。又用顺序表用派生法设计了一个堆栈,恰好满足上面模拟停车场的需要。
printf(" 2.车辆离开");
printf(" 3.列表显示");
printf(" 4.退出系统");
while(1)
{
scanf("%d",&ch);
if(ch>=1&&ch<=4)break;
else printf("\nplease choose:1|2|3|4.");
}
switch(ch)
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。栈以顺序结构实现,队列以链表实现。
程序中分别采用了“栈”和“队列”作为其存储结构。
“栈”的定义可知,每一次入栈的元素都在原栈顶元素之上成为新的元素,每一次出栈的元素总是当前栈顶元素使次栈元素成为新的栈顶元素,即最后进栈者先出栈。程序中采用的结构是:
#define MAX 3 /*车库容量*/
#define price 0.5 /*每车每分钟费用*/
typedef struct time{
int hour;
int min;
}Time; /*时间结点*/
typedef struct node{
char num[10];
Time reach;
Time leave;