停车场管理系统C语言实现1

合集下载

停车场管理系统——C语言

停车场管理系统——C语言

停车场管理系统【要求】(1)有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层(停车场可用一个二维数组实现,每个数组元素存放一个车牌号),每辆车的信息包括车牌号、层号、车位号、停车时间共4项,其中停车时间按分钟计算。

(2)假设停车场初始状态为第一层已经有4辆车,其车位号依次为1~4,停车时间依次为20,15,10,5,即先将这4辆车的信息存入文件car.dat中(数组的对应元素也要进行赋值)。

(3)停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空位则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添入文件car。

dat中,并将在此之前的所有停车时间加5。

(4)收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元(停车费用可设置一个变量进行保存),同时从文件car。

dat 中删除该车的信息,并将该车对应的车位设置为可用状态(即二维数组对应元素清零),按用户的选择来判断是否要输出停车收费的总计。

(5)输出停车场中全部车辆的信息.(6)退出系统。

【提示】(1)需求分析:车辆信息要用文件储存,提供文件的输入输出操作;当车要离开时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择.(2)总体设计:整个管理系统可设计为停车模块、取车模块、车辆信息浏览模块.二、总体设计根据上面的需求分析,可以将这个系统的设计分为四大模块(如图2—1):停车、取车、车辆信息浏览、退出。

其中主要功能是停车、取车、车辆信息浏览三个模块。

图2—1系统功能模块图根据模块图可画出总的流程图(图2—2)图2—2 总流程图三、详细设计1、车辆信息车辆信息包括车牌号、层号、车位号、停车时间,将这四类数据组合成结构体car,以便于引用。

【程序】struct car{int carnumber;int floor;int position;int time;}car[12];2、车位信息由于停车场有两层,每层六个车位,故车位信息可由一个二维数组park[2][6]表示,注意停车场中已经停放了4辆车,设这四辆车的车牌号为6840,4167,3548,9201。

c语言停车场菜单的编程

c语言停车场菜单的编程

c语言停车场菜单的编程如何通过C语言编程实现停车场菜单系统。

在本文中,我们将会详细讨论停车场菜单系统的实现过程,包括创建菜单、显示菜单、接收用户输入、执行用户选择的菜单功能等。

1. 引言停车场菜单系统是一个常见的应用程序,它可以帮助用户管理停车场的车辆。

通过这个系统,用户可以添加新的车辆、删除已经停放的车辆、显示停放的车辆列表等。

这篇文章将会详细讨论如何通过C语言编程实现这个功能。

2. 菜单系统的设计在开始之前,我们需要先考虑菜单系统的设计。

一个典型的停车场菜单系统可能包括以下功能:- 添加车辆:允许用户输入车辆的信息,并将其添加到停车场的列表中。

- 删除车辆:允许用户输入要删除的车辆的标识符,并从停车场列表中删除该车辆。

- 显示车辆列表:将当前停放在停车场的车辆列表显示给用户。

3. 创建菜单首先,我们需要创建一个函数来显示停车场菜单选项,并接收用户的选择。

以下是一个简单的示例:void displayMenu() {printf("1. 添加车辆\n");printf("2. 删除车辆\n");printf("3. 显示车辆列表\n");printf("4. 退出\n");}int getUserChoice() {int choice;printf("请输入选项:");scanf("d", &choice);return choice;}在这个例子中,`displayMenu`函数用于显示菜单选项,`getUserChoice`函数用于接收用户的选择。

4. 执行用户选择的菜单功能接下来,我们需要为每个菜单选项创建相应的功能函数。

例如,对于添加车辆功能,我们可以创建以下函数:void addCar() {代码实现}类似地,我们还可以创建其他功能函数,如`deleteCar`和`displayCarList`。

C语言:停车场管理系统

C语言:停车场管理系统

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>#include<time.h>//获取系统时间#include<conio.h>//包含屏幕操作函数#define NULL 0#define LEN sizeof(struct car)//用于存放时间typedef struct time{int intimeyear;int intimemounth;int intimeday;int intimehour;int intimeminute;int intimesecond;//驶入时间,驶入时系统获取int outtimehour;int outtimeminute;int outtimesecond;//驶出时间}TIME;//用于存放车辆信息typedef struct car{int number;//在头指针中代表空车位,在其它指针中代表其车位号,从1-15按顺序char license[10];//每辆车自己的型号TIME time;//时间struct car *next;}CAR;//用于存放每日费用,并写入文件,便于计算一个月收入struct oneday{int tyear;int tmounth;int tday;int onedayfee;}one;CAR *creat();void inbigcar();//驶入一辆大型客车或货车void inmiddlecar();//驶入一辆中型客车或货车void insmallcar();//驶入一辆轿车int outbigcar();//输出一辆大型客车或货车int outmiddlecar();//开出一辆中型客车或货车int outsmallcar();//开出一辆轿车void lookup1();//分别输出A区,B区,C区当前所停放的汽车的信息void lookup2();//分别输出A区,B区,C区当前空闲的车位号void lookup3();//输入车牌号,输出该车所停放的车位号void lookup4();//输出A区,B区,C区当前所停放的汽车的数量void lookup5();//输入当前时间,分别统计A区,B区,C区到当前时间为止,停车时间超过5小时的汽车数量,并输出这些汽车的信息void lookup6();//输入一个日期(年.月),统计该月停车场的收费金额int onemoufee(int year,int mounth);//计算一个月的收入CAR *Ahead,*Bhead,*Chead;void main(){printf("\n\n\n\n================================================================== ==============\n\n\n\n");printf("\t\t********欢迎使用Light停车场管理系统!********\n\n\n\n\n");printf("========================================================================= =======\n\n\n\n");printf("\t\t\t 请按任意键进入\n");getchar();FILE *fp,*fp1;int year,mounth,day,hour,m,n=1,i=0;int Amoney=0,Bmoney=0,Cmoney=0,summoney=0;if((fp=fopen("table.txt","a"))==NULL){printf("Cannot open file!\n");exit(0);}//end if创立一个文件,以便记录Ahead=creat();Bhead=creat();Chead=creat();time_t nowtime;struct tm *timeinfo;time( &nowtime );timeinfo = localtime( &nowtime );one.tyear =year= timeinfo->tm_year + 1900;one.tmounth =mounth=timeinfo->tm_mon + 1;one.tday =day= timeinfo->tm_mday;hour = timeinfo->tm_hour;printf("%d\n",hour);if(hour<6||hour>=22){system("cls");printf("\n\n\n=================================================================== =============\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * Light停车场管理系统close *\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * 营业时间:6:00-22:00 *\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * 请您营业时间再来!*\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("========================================================================= =======\n");printf("\n\t\t\t\t请按任意键结束\n");getchar();exit(0);}//end iffprintf(fp,"%d年%d月%d日",year,mounth,day);while(n==1){system("cls");printf("\n");printf("========================================================================= =======\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * Light停车场管理系统*\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * 欢迎使用!*\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("\t\t * *\n");printf("========================================================================= =======\n\n");printf("\t 1. 停车 3. 查询\n");printf("\t 2. 取车0. 退出\n\n");printf("\t 请选择: ");scanf("%d",&m);switch(m){case 1:while(n==1){system("cls");printf("\t\t欢迎您停车!\n\n\t\t请选择您的停车区域\n");printf("--------------------------------------------------------------------------------\n\n");printf("\t 1. A区停放轿车 3. C区停放大型客车或货车\n");printf("\t 2. B区停放中型客车或货车0. 退出\n\n");printf("\t 请选择您需要的服务(0-3):");printf("\n\t 请选择: ");scanf("%d", &m);getchar();//驶入状况下选择车型switch(m){case 1:insmallcar();break;case 2:inmiddlecar();break;case 3:inbigcar();break;case 0:break;default:printf("You input the wrong number.\n");}//end switchprintf("\n\t如果您想继续停车,请输入1;如果想进入主菜单或退出,请输入任意数字:");printf("\n\t 请选择: ");scanf("%d",&n);}break;case 2: while(n==1){system("cls");printf("\t\t欢迎您取车!\n\n\t\t请选择您的取车的区域!\n");printf("--------------------------------------------------------------------------------\n\n");printf("\t 1. 从A区取轿车 3. 从C区取大型客车或货车\n");printf("\t 2. 从B区取中型客车或货车0. 退出\n\n");printf("--------------------------------------------------------------------------------\n");printf("\t 请选择您需要的服务(0-3):");scanf("%d", &m);getchar();//驶出状况下选择车型switch(m){case 1:Amoney=outsmallcar();break;case 2:Bmoney=outmiddlecar();break;case 3:Cmoney=outbigcar();break;case 0:break;default:printf("You input the wrong number.\n");}printf("\n\t如果您想继续开车,请输入1;如果想进入主菜单或退出,请输入0:");printf("\n\t 请选择: ");scanf("%d",&n);}one.onedayfee =summoney=Amoney+Bmoney+Cmoney;break;case 3: while(n==1){system("cls");printf("--------------------------------------------------------------------------------\n");printf("\t欢迎进入管理系统\t\n");printf("--------------------------------------------------------------------------------\n");printf("What do you want to look up?\n");printf("1、分别输出A区,B区,C区当前所停放的汽车的信息;\n");printf("2、分别输出A区,B区,C区当前空闲的车位号;\n");printf("3、输入车牌号,输出该车所停放的车位号;\n");printf("4、输出A区,B区,C区当前所停放的汽车的数量;\n");printf("5、输入当前时间,分别统计A区,B区,C区到当前时间为止,停车时间超过5小时的汽车数量,并输出这些汽车的信息;\n");printf("6、输入一个日期(年.月),统计该月停车场的收费金额。

停车场管理系统c语言

停车场管理系统c语言

2015-2016学年第二学期《高级语言程序设计》课程设计报告题目:停车场管理系统专业:计算机科学与技术班级:15级计科<1>班姓名:胡玉玉指导教师:陈广宏成绩:计算机学院2016 年4月25 日目录1. 设计内容及要求 (1)1.1 课程设计内容 (1)1.2 课程设计的要求 (2)2 概要设计 (3)2.1 设计思路 (3)2.2 程序基本框架结构图 (4)3 设计过程或程序代码 (5)3.1 主要程序代码及解释 (5)4 设计结果与分析 (13)4.1 程序运行结果截图与分析 (13)5参考文献 (16)1.设计内容及要求1.1 课程设计内容①通过本次课程设计,强化上级动手能力,在理论和实践的基础上巩固《C语言程序设计》课程的学习内容。

掌握软件设计的基本方法。

②熟悉C语言的基本内容从而掌握C语言的基本知识以及了解C语言的基本编写及运行。

③了解程序的分模块编写并对程序的每个模块进行详细的设计并且能理解一般C语言编写的程序。

④掌握书写程序设计说明文档的能力。

⑤熟悉C程序设计的开发环境及C程序的调试过程1.2 课程设计的要求①分析课程设计题目的要求。

②写出详细设计说明。

③编写程序代码,调试程序使其能正确运行。

④设计完成的软件要便于操作和使用。

⑤设计完成后提交课程设计报告。

2.概要设计2.1设计思路停车场是一个可停放n辆汽车的狭长通道,并只有一个大门可供汽车进出,汽车在停车场内按车辆到达的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),如车长内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车”到达”或”离去”信息,汽车牌照号码以及到达或离去的时刻(到达或离去的时刻也可用计算机控制).对每一组输入数据进行操作后的输入信息为:如是车辆到达,则输入汽车在停车场。

停车场管理c语言pta

停车场管理c语言pta

停车场管理c语言pta
停车场管理系统是一个常见的项目,可以使用C语言来实现。

这个系统可以包括车辆进入和离开的记录、收费计算、停车位管理
等功能。

在PTA(Programming Teaching Assistant)上实现停车
场管理系统可以通过以下步骤进行:
1. 数据结构设计,首先,需要设计合适的数据结构来存储车辆
信息、停车位状态等。

可以使用结构体来表示车辆信息,使用数组
或链表来管理停车位的状态。

2. 车辆进入和离开记录,编写函数来处理车辆进入和离开的记录,包括记录车辆的进入时间、离开时间,以及相应的费用计算。

3. 收费计算,根据停车时间和车辆类型(例如小型车、大型车)来计算停车费用。

可以设置不同的收费标准,并编写函数来进行费
用计算。

4. 停车位管理,设计算法来管理停车位的分配和释放,确保停
车场的停车位能够合理利用。

5. 用户界面,可以使用C语言的控制台来实现简单的用户界面,让用户可以输入车辆信息、查询停车费用等操作。

在PTA上实现停车场管理系统需要考虑到输入输出的格式,以
及对各种异常情况的处理。

同时,还需要编写测试用例来验证程序
的正确性和稳定性。

总之,通过合理的数据结构设计、功能模块划分和用户界面实现,可以在PTA上使用C语言实现停车场管理系统。

这样的项目可
以帮助学生加深对C语言的理解,并锻炼编程能力。

停车场管理系统--c语言

停车场管理系统--c语言
t->data=a.num;
t->next=NULL;
q->rear->next=t;
q->rear=t;//q->rear=q->rear->next;
printf("%d号车进入便道等待\n",q->rear->data);
q->geshu++;
}
}
int D_cars(SqStack *s,LinkQueue *q,struct car d)
{QNODE *front,*rear;
int geshu;
}LinkQueue;
QNODE *head;
struct Dcar dd[MAXSIZE];
A_cars(SqStack *s,LinkQueue *q,struct car a)
{QNODE *t, *p;
printf(" ** 停车场管理系统 ** \n");
printf(" ** ** \n");
a=s->top;
printf("停车场内车辆数: %d\n",(s->top)+1);
printf("停车场内剩余空位:%d\n",3-s->top);
printf("详细信息:\n");
while(s->top>=0)
{printf("%d号车,%d时停车\n",(s->G[s->top]).num,(s->G[s->top]).time);
{int i,j,l;

大学设计方案方案——利用所学C语言知识方案报告停车场管理系统

大学设计方案方案——利用所学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语言版)停车场管理(完美版)

数据结构(C语言版)停车场管理(完美版)#include#include#include#define OK 1#define OVERFLOW -2#define SIZE 2 //停车场位置数typedef int Status;typedef struct Car1{int number; //车号int ar_time; //到达时间}CarNode;typedef struct{CarNode *base; //堆栈底CarNode *top; //堆栈顶int stacksize;}Park;typedef struct Car2{int number; //车号int ar_time; //到达时间struct Car2 *next;}*CarPtr;typedef struct{ //便道CarPtr front; //便道的队列的对头CarPtr rear; //便道的队列的队尾int length;}Shortcut;Status InitStack(Park &P){ //初始化停车场P.base=(CarNode*)malloc(SIZE*sizeof(Car1));if(!P.base)exit(OVERFLOW);P.top=P.base;P.stacksize=0;return OK;}Status Push(Park &P,CarNode e){ //车进入停车场*P.top++=e;++P.stacksize;return OK;}Status Pop(Park &P,CarNode &e){ //车离开停车场if(P.top==P.base)printf("停车场为空");else{e=*--P.top;--P.stacksize;}return OK;}Status InitQueue(Shortcut &S){ //初始化便道S.front=S.rear=(CarPtr)malloc(sizeof(Car2));if(!S.front||!S.rear)exit(OVERFLOW);S.front->next=NULL;S.length=0;return OK;}Status EnQueue(Shortcut &S,int number,int ar_time){ //车进入便道CarPtr p;p=(CarPtr)malloc(sizeof(Car2));if(!p)exit(OVERFLOW);p->number=number;p->ar_time=ar_time;p->next=NULL;S.rear->next=p;S.rear=p;++S.length;return OK;}Status DeQueue(Shortcut &S,CarPtr &w){ //车离开便道if(S.length==0)printf("通道为空");else{w=S.front->next;S.front->next=w->next;--S.length;}return OK;}//对进栈车辆的处理Status Arrival(Park &P,Shortcut &S){int number,ar_time;printf("请输入车牌号:");scanf("%d",&number);printf("请输入进停车场的时刻:");scanf("%d",&ar_time);if(P.stacksize<size){CarNode c;c.number=number;c.ar_time=ar_time;Push(P,c);printf("该车停在第%d号车道\n",P.stacksize);}else{EnQueue(S,number,ar_time);printf("停车场已满,暂时停在便道的第%d个位置。

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

一.问题描述1.实验题目:设停车场是一个可停放n 辆汽车的狭长通道,且只有一个大门可供汽车进出。

汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端)。

若停车场内已经停满n辆车,那么后来的车只能在门外的便道上等候。

一旦有车开走,则排在便道上的第一辆车即可开入。

当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场。

每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用。

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

要求:根据各结点的信息,调用相应的函数或者语句,将结点入栈入队,出栈或者出队。

二.需求分析1.程序所能达到的基本可能:程序以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入数据的序列进行模拟管理。

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

同时另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车。

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

当输入数据包括数据项为汽车的“到达”(‘A’表示)信息,汽车标识(牌照号)以及到达时刻时,应输出汽车在停车场内或者便道上的停车位置;当输入数据包括数据项为汽车的“离去”(‘D’表示)信息,汽车标识(牌照号)以及离去时刻时,应输出汽车在停车场停留的时间和应缴纳的费用(便道上停留的时间不收费);当输入数据项为(‘P’,0,0)时,应输出停车场的车数;当输入数据项为(‘W’, 0, 0)时,应输出候车场车数;当输入数据项为(‘E’, 0, 0),退出程序;若输入数据项不是以上所述,就输出"ERROR!"。

2.输入输出形式及输入值范围:程序运行后进入循环,显示提示信息:“Please input the state,number and time of the car:”,提示用户输入车辆信息(“到达”或者“离开”,车牌编号,到达或者离开的时间)。

若车辆信息为“到达”,车辆信息开始进栈(模拟停车场),当栈满,会显示栈满信息:“The parking place is full!”,同时车辆进队列(模拟停车场旁便道),并显示该进入便道车辆的车牌编号,让用户知道该车的具体位置;若车辆信息为“离开”,会显示该车进入停车场的时间以及相应的停车费用,若该车较部分车早进停车场,这部分车需先退出停车场,暂时进入一个新栈为其让道,会显示进入新栈的车辆的车牌编号及其入停车场的时间,当待离开车离开停车场后,这部分车会重新进入停车场,同时便道上的第一辆车进入停车场;若输入(‘P ’,0,0),会显示停车场的车数;若输入(‘W ’,0,0),会显示便道上的车数;若输入(‘E ’,0,0),程序会跳出循环,同时程序结束;若输入为其他字母,程序会显示“ERROR !”报错。

若便道上没有车辆停靠,会显示便道为空的信息:用户每输入一组数据,程序就会根据相应输入给出输出。

输入值第一个必须为字母,后两个为数字。

3.测试数据要求:用户输入字母时,输入大写或小写,都可以被该程序识别,正常运行。

但要求用户输入数据时,三个数据项之间必须用逗号相分隔开。

三.概要设计为了实现上述功能,该程序以栈模拟停车场以及临时停放为给要离去的汽车让路而从停车场退出来的汽车的场地,以队列模拟车场外的便道,因此需要栈和队列这两个抽象数据类型。

1.栈抽象数据类型定义: ADT SqStack{数据对象:D={char d c b a d c b a i i i i i i i i ∈∈∈∈int,int,int,|,,,, i=1,2,3....,n,n 0≥}数据关系:R={(i i i d b a ,,)|∈i i i d b a ,,D,∈i i i d b a ,,struct car}; 基本操作:Judge_Output(s,q,r);列抽象数据类型定义: ADT LinkQueue{数据对象:D={∈i i i i a c b a |,,Qnode *,∈i b Qnode *,int ∈i c ,i=1,2,3....,n,n 0≥}; 数据关系:R=φ;基本操作:Judge_Output(s,q,r);要算法流程图: I .Judge_Output 算法流程图:开始输入为E (e )输入为P (p )输入为W (w )输入为A (a )输入为D (d )输出“STOP !”输出停车场车辆的数目输出便道上车辆数目调用A_cars函数调用D_cars函数结束FTTFTFTFII .A_cars 算法流程图:开始停车场未满车进停车场车进便道结束TFIII .D_cars 算法流程图:开始该车是最后进停车场的车在该车后进的车退出停车场后让其结账离开结账离开便道上有车便道上第一辆车进停车场结束TFTF4.本程序保护模块:主函数模块栈单元模块:实现栈的抽象数据类型队列单元模块:实现队列的抽象数据类型调用关系:栈单元模块主函数模块队列单元模块四.详细设计1.相关头文件库的调用说明:#include<>#include<>#define MAXSIZE 14#define n 2#define fee 102.元素类型、结点类型和结点指针类型:struct car{ char bb;int num;int time;};struct rangweicar{int num;int time;};typedef struct stackk{struct rangweicar H[MAXSIZE];int topp;#define QNODE struct QnodeQNODE { int data;QNODE *next;};3.栈类型和队列类型:typedef struct stack{struct car G[n];int top;}SqStack;typedef struct linkqueue{QNODE *front,*rear;int geshu;}LinkQueue;b=='E'||(*r).bb=='e')printf("STOP!\n");else if((*r).bb=='P'||(*r).bb=='p')printf("The number of parking cars is %d\n",(s->top)+1); else if((*r).bb=='W'||(*r).bb=='w')printf("The number of waiting cars is %d\n",q->geshu); else if((*r).bb=='A'||(*r).bb=='a')A_cars(s,q,*r);else if((*r).bb=='D'||(*r).bb=='d')D_cars(s,q,*r);elseprintf("ERROR!\n");}A_cars(SqStack *s,LinkQueue *q,struct car a) {QNODE *t;if(s->top!=n-1)(s->G[s->top]).bb=;(s->G[s->top]).num=;(s->G[s->top]).time=;}else{printf("The parking place is full!\n");t=(QNODE *)malloc(sizeof(QNODE));t->data=;t->next=NULL;q->rear->next=t;q->rear=t;printf("the number of the car in the access road is:%d\n",q->rear->data);q->geshu++;}}int D_cars(SqStack *s,LinkQueue *q,struct car d){int i,j,l;float x,y;QNODE *p;SqStackk *k;if==(s->G[s->top]).num){x=(s->G[s->top]).time;y=fee*x;printf("The time is %.2f hours,the fee is %.2f yuan\n",x,y);if(q->geshu==0){printf("The queue is empty!\n");return 0;}else{p=q->front->next;q->front->next=p->next;(s->G[s->top]).num=p->data;(s->G[s->top]).time=;free(p);q->geshu--;if(q->front->next==NULL)q->rear=q->front;return 1;}}else{for(i=0;i<(s->top);i++){if((s->G[i]).num!= continue;else break;}if(i>=(s->top)){printf("ERROR!!\n");return -1;}x=(s->G[i]).time;y=fee*x;printf("The time is %.2f hours,the fee is %.2f yuan\n",x,y); k=(SqStackk *)malloc(sizeof(SqStackk));k->topp=-1;for(j=(s->top);j>i;j--){k->topp++; (k->H[k->topp]).num=(s->G[j]).num;(k->H[k->topp]).time=(s->G[j]).time;s->top--;}for(l=0;l<=(k->topp);l++){printf("the information(number and time) in the new stack is:\n"); printf("%d,%d\n",(k->H[l]).num,(k->H[l]).time);}s->top--;while(k->topp>=0){s->top++;(s->G[s->top]).bb='A';(s->G[s->top]).num=(k->H[k->topp]).num;(s->G[s->top]).time=(k->H[k->topp]).time;k->topp--;}if(q->geshu==0){printf("The access road is empty!\n");return 2;}else{s->top++;p=q->front->next;q->front->next=p->next;(s->G[s->top]).num=p->data;(s->G[s->top]).time=;free(p);q->geshu--;if(q->front->next==NULL)q->rear=q->front;return 3;}}}4.主函数的伪码:main(){SqStack *s;LinkQueue *q;QNODE *p;struct car aa[MAXSIZE];int i;s=(SqStack *)malloc(sizeof(SqStack));s->top=-1;q=(LinkQueue *)malloc(sizeof(LinkQueue));p=(QNODE *)malloc(sizeof(QNODE));p->next=NULL;q->front=q->rear=p;q->geshu=0;printf("************************************************************* *****************\n");printf("**************************************************\n");printf("************************* 停车场管理系统*************************\n");printf("**************************************************\n");printf("*************************************************************** ***************\n");for(i=0;i<MAXSIZE;i++){printf("Please input the state,number and time of the car:\n");scanf("%c,%d,%d",&(aa[i].bb),&(aa[i].num),&(aa[i].time));getchar();Judge_Output(s,q,&aa[i]);if(aa[i].bb=='E'||aa[i].bb=='e') break;}}5.函数调用关系:main函数调用Judge_Output函数调用A_cars函数调用D_cars函数五.测试分析:1.出现问题及解决办法:该程序是四个程序调试中最顺利的一个,只在一个地方上出了问题,就是输入字符时由于回车键也是字符,回车键总会被读入,导致经常输出“ERROR!”。

相关文档
最新文档