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.1 车位管理智能停车系统需要能够准确地判断车位的空闲和占用情况,同时具备对车位进行分配和释放的能力。
这需要通过传感器和控制器实现硬件和软件的有效配合。
1.2 车辆识别为了确保车主的正常使用,智能停车系统需要能够准确地识别车辆的相关信息,例如车牌号码、车型和颜色等。
这可以通过图像识别和车载设备配合实现。
1.3 支付结算智能停车系统可以通过与车主的手机或信用卡绑定,实现电子支付和自动结算。
这要求系统具备安全可靠的数据传输和存储机制。
二、C语言智能停车系统控制原理在进行智能停车系统编程前,我们首先要理解系统的工作原理和流程。
下面将介绍一种基于C语言的智能停车系统控制框架。
2.1 硬件连接与初始化使用C语言开发智能停车系统时,首先要初始化所使用的硬件设备,例如传感器、摄像头和控制器等。
这需要编写相关的驱动程序和初始化函数。
2.2 车位管理通过编程实现对每个车位状态的监测和控制,以确定车位的空闲和占用情况。
当有车辆进入或离开停车场时,系统应能及时进行更新和响应。
2.3 车辆识别与信息存储对于每辆车辆的识别信息,可以采用数据库或文件的形式进行存储。
通过编程实现车牌等信息的提取和比对,以确保车主信息的准确和安全。
2.4 支付结算与报表生成智能停车系统应具备支付和结算功能。
编程通过与第三方支付平台或信用卡系统进行接口对接,实现车主账号扣费和生成支付报表等。
三、C语言优化停车场管理除了实现智能停车系统的基本功能外,我们还可以通过C语言编程优化停车场管理,提高系统的效率和用户体验。
数据结构c语言版课程设计停车场管理系统样本
课程设计:停车场c语言版本的数据结构课程设计,要求用栈模拟停车场,用队列模拟便道,实现停车场的收费管理系统停车场停满车后车会停在便道上面下面附上源码,vc:(下编译#include <stdio.h>//#include <stdlib.h> //malloc#include <time.h> //获取系统时间所用函数#include <conio.h> //getch()#include <windows.h> //设置光标信息 mallco#define MaxSize 5 /*定义停车场栈长度*/#define PRICE 0.05 /*每车每分钟收费值*/#define BASEPRICE 0.5 //基础停车费#define Esc 27 //退出系统#define Exit 3 //结束对话#define Stop 1 //停车#define Drive 2 //取车int jx=0,jy=32; //全局变量日志打印位置typedef struct{int hour;int minute;}Time,*PTime; /*时间结点*/typedef struct /*定义栈元素的类型即车辆信息结点*/{int num ; /*车牌号*/Time arrtime; /*到达时刻或离区时刻*/}CarNode;typedef struct /*定义栈,模拟停车场*/{CarNode stack[MaxSize];int top;}SqStackCar;typedef struct node /*定义队列结点的类型*/{int num; /*车牌号*/struct node *next;}QueueNode;typedef struct /*定义队列,模拟便道*/{QueueNode *front,*rear;}LinkQueueCar;/*函数声明*/PTime get_time();CarNode getcarInfo();void qingping(int a);void gotoxy(int x,int y);void printlog(Time t,int n,int io,char ab,int po,double f); void printstop(int a,int num,int x0,int y0);void printleave(int a,int po,int num);/*初始化栈*/void InitSeqStack(SqStackCar *s){s->top=-1;}/* push入站函数 */int push(SqStackCar *s,CarNode x) //数据元素x入指针s所指的栈{if(s->top==MaxSize-1)return(0); //如果栈满,返回0 else{s->stack[++s->top]=x; //栈不满,到达车辆入栈return(1);}}/*栈顶元素出栈*/CarNode pop(SqStackCar *s){CarNode x;if(s->top<0){x.num=0;x.arrtime.hour=0;x.arrtime.minute=0;return(x); //如果栈空,返回空值}else{s->top--;return(s->stack[s->top+1]); //栈不空,返回栈顶元素}}/*初始化队列*/void InitLinkQueue(LinkQueueCar *q){q->front=(QueueNode*)malloc(sizeof(QueueNode)); //产生一个新结点,作头结点if(q->front!=NULL){q->rear=q->front;q->front->next=NULL;q->front->num=0; //头结点的num 保存队列中数据元素的个数}}/*数据入队列*/void EnLinkQueue(LinkQueueCar *q,int x){QueueNode *p;p=(QueueNode*)malloc(sizeof(QueueNode)); //产生一个新结点p->num=x;p->next=NULL;q->rear->next=p; //新结点入队列q->rear=p;q->front->num++; //队列元素个数加1}/*数据出队列*/int DeLinkQueue(LinkQueueCar *q){QueueNode *p;int n;if(q->front==q->rear) //队空返回0return(0);else{p=q->front->next;q->front->next=p->next;if(p->next==NULL)q->rear=q->front;n=p->num;free(p);q->front->num--;return(n); //返回出队的数据信息}}/********************* 车辆到达***************************///参数: 停车栈停车队列车辆信息//返回值: 空//功能: 对传入的车辆进行入栈栈满则入队列void Arrive(SqStackCar *stop,LinkQueueCar *lq,CarNode x){int f;f=push(stop,x); //入栈if (f==0) //栈满{EnLinkQueue(lq,x.num); //入队printstop(1,lq->front->num,0,23);printlog(x.arrtime,x.num,1,'B',lq->front->num,0);qingping(0); printf("您的车停在便道%d号车位上\n",lq->front->num); //更新对话}else{printstop(0,stop->top+1,0,23);printlog(x.arrtime,x.num,1,'P',stop->top+1,0);qingping(0); printf("您的车停在停车场%d号车位上\n",stop->top+1); //更新对话}qingping(1); printf("按任意键继续");getch();}/************************** 车辆离开*************************************///参数: 停车栈指针s1, 暂存栈指针s2, 停车队列指针p, 车辆信息x//返回值: 空//功能: 查找栈中s1的x并出栈, 栈中没有则查找队p中并出队, 打印离开收费信息void Leave(SqStackCar *s1,SqStackCar *s2,LinkQueueCar *p,CarNode x){double fee=0;int position=s1->top+1; //车辆所在车位int n,f=0;CarNode y;QueueNode *q;while((s1->top > -1)&&(f!=1)) //当栈不空且未找到x{y=pop(s1);if(y.num!=x.num){n=push(s2,y);position--;}elsef=1;}if(y.num==x.num) //找到x{gotoxy(33,17);printf("%d:%-2d",(x.arrtime.hour-y.arrtime.hour),(x.arrtime.minute-y.arrtime.minute) );fee=((x.arrtime.hour-y.arrtime.hour)*60+(x.arrtime.minute-y.arrtime.minute))*PRICE+BASEPRICE;gotoxy(48,17); printf("%2.1f元\n",fee);qingping(0); printf("确认您的车辆信息");qingping(1); printf("按任意键继续");getch();while(s2->top>-1){ y=pop(s2);f=push(s1,y);}n=DeLinkQueue(p);if(n!=0){y.num=n;y.arrtime=x.arrtime;f=push(s1,y);printleave(p->front->num+1,position,s1->top+1); //出栈动画ji队列成员入栈printlog(x.arrtime,x.num,0,'P',position,fee);printlog(y.arrtime,y.num,1,'P',s1->top+1,0);}else{printleave(0,position,s1->top+2);printlog(x.arrtime,x.num,0,'P',position,fee);}}else //若栈中无x{while(s2->top > -1) //还原栈{y=pop(s2);f=push(s1,y);}q=p->front;f=0;position=1;while(f==0&&q->next!=NULL) //当队不空且未找到xif(q->next->num!=x.num){q=q->next;position++;}else //找到x{q->next=q->next->next;p->front->num--;if(q->next==NULL)p->rear=p->front;gotoxy(33,17); printf("0:0");gotoxy(48,17); printf("0元");qingping(0); printf("您的车将离便道");qingping(1); printf("按任意键继续");getch();printleave(-1,position,p->front->num+1); //出队动画printlog(x.arrtime,x.num,0,'B',position,0);f=1;}if(f==0) //未找到x{qingping(0); printf("停车场和便道上均无您的车");qingping(1); printf("按任意键继续");getch();}}}/*获取系统时间*///返回PTime类型PTime get_time(){Time *t;t=new Time;time_t timer;struct tm *tblock;timer=time(NULL);tblock=localtime(&timer);t->minute=tblock->tm_min;t->hour=tblock->tm_hour;return t;}/*移动光标*///蒋光标移动到( x, y) 点void gotoxy(int x,int y){COORD coord;coord.X=x;coord.Y=y+3;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE) ,coord);}/*画图*///画出系统界面void panitPL(){gotoxy(20,4);printf("****************对话框****************");int x=18,y=6; //起始点int a[2][4]={2,0,0,1,-2,0,0,-1}; //方向for(int i=0;i<2 ;i++){for(int j=0; j<20; j++){x+=a[i][0]; y+=a[i][1];gotoxy(x,y);printf("═");}x+=a[i][0]; y+=a[i][1];gotoxy(x,y);if(i==0)printf("╗");elseprintf("╚");for(j=0; j<12; j++){x+=a[i][2]; y+=a[i][3];gotoxy(x,y);printf("║");}x+=a[i][2]; y+=a[i][3];gotoxy(x,y);if(i==0)printf("╝");elseprintf("╔");}gotoxy(22,8);printf("小王: ");gotoxy(22,11);printf("顾客: ");gotoxy(22,14); printf("*********** 停车信息***********");gotoxy(23,15); printf("车牌号: ");gotoxy(42,15); printf("时间: ");gotoxy(23,17); printf("停车时长: ");gotoxy(42,17); printf("收费: ");}/*清屏函数*///更新对话框前将原对话晴空void qingping(int a){if(a==0) //清空小王的对话{gotoxy(28,8); printf(" ");gotoxy(28,9); printf(" ");gotoxy(28,8);}else if(a==1) //清空顾客的对话{gotoxy(28,11); printf(" ");gotoxy(28,12); printf(" ");gotoxy(28,13); printf(" ");gotoxy(28,11);}else //清空车辆信息{gotoxy(31,15); printf(" ");gotoxy(48,15); printf(" ");gotoxy(33,17); printf(" ");gotoxy(48,17); printf(" ");gotoxy(31,15);}}//用上下键移动选择int getkey(){char c;int x=28,y=11;while(1){gotoxy(x,11); printf(" ");gotoxy(x,12); printf(" ");gotoxy(x,13); printf(" ");gotoxy(x,y); printf(">>");c=getch();if(c==13) return y-10; //enter键返回当前选项if(c!=-32)continue; //不是方向键进行下次循环c=getch();if(c==72) if(y>11) y--; //上if(c==80) if(y<13) y++; //下}}//输入车辆信息CarNode getcarInfo(){PTime T;CarNode x;qingping(0); printf("请输入您的车牌号\n");qingping(1); printf("在下面输入车辆信息");qingping(2);scanf("%d",&(x.num));T=get_time();x.arrtime=*T;gotoxy(48,15);printf("%d:%d",x.arrtime.hour,x.arrtime.minute);getch();return x;}//打印停车场void printcar(){gotoxy(0,20); //╔ ╗╝╚═║pr intf("═══════════════════════════════════════╗");printf(" 出场暂放区║ 12 3 4 5 ║");printf("---------------------------------------------------------------------- ║");printf(" 主车道║");printf("---------------------------------------------------------------------- ║");printf(" 12 11 10 9 8 7 6 54 3 2 1 ║");printf("═══════════════════════════════════╗ ║");printf(" ↑ ╔══════════════╝ ║");printf(" 便道停车区→ ║ 12 3 4 5 ║");printf("╚══════════════════╝");printf(" 停车场管理日志\n\n");printf(" 时间车牌号进(1)/出(0) 车位(B便道P停车场) 收费(元) ");}//打印日志记录void printlog(Time t,int n,int io,char ab,int po,double f){jy++;gotoxy(jx,jy);// printf(" 时间车牌号进(1)/出(0) 车位(B便道P停车场) 收费(元) ");if(io==0)printf(" / %2.1f",f);gotoxy(jx,jy);printf(" / %d/ %c:%d",io,ab,po);gotoxy(jx,jy);printf(" %d:%d / %d",t.hour,t.minute,n);}void printstop(int a,int num,int x0,int y0){static char *car="【█】";// int x0=0,y0=23;int x=0,y=28;if(a==0){x=(num+6)*6;for(;x0<72;x0++){gotoxy(x0,y0); printf("%s",car); Sleep(30);gotoxy(x0,y0); printf(" ");}for(;y0<y;y0++){gotoxy(x0,y0); printf("%s",car); Sleep(100);gotoxy(x0,y0); printf(" ");}for(;x0>x;x0--){gotoxy(x0,y0); printf("%s",car); Sleep(50);gotoxy(x0,y0); printf(" ");}gotoxy(x,y);printf("%s",car);}else{x=(12-num)*6;y=y-3;for(;x0<x;x0++){gotoxy(x0,y0); printf("%s",car); Sleep(30);gotoxy(x0,y0); printf(" ");}gotoxy(x,y);printf("%s",car);}}void printleave(int a,int po,int num){static char *car="【█】";int x0=0,y0=23;int x=0,y=28;int i;if(a==-1){x=(12-po)*6;y=y-3;gotoxy(x,y); printf(" ");gotoxy(x,y-2); printf("%s",car);Sleep(100);if(12>num){gotoxy((12-num)*6,y);printf(" ");}gotoxy(x,y); printf("%s",car);for(;x>x0;x--){gotoxy(x,y-2); printf("%s",car); Sleep(30);gotoxy(x,y-2); printf(" ");}}else{i=num+1;for(;num>po;num--){x=(num+6)*6; y=28;for(;x<72;x++){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}for(;y>21;y--){gotoxy(x,y); printf("%s",car); Sleep(50);gotoxy(x,y); printf(" ");}for(;x>(i-num+6)*6;x--){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}gotoxy(x,y); printf("%s",car);}x=(po+6)*6; y=28;for(;x<72;x++){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}for(;y>23;y--){gotoxy(x,y); printf("%s",car); Sleep(50);gotoxy(x,y); printf(" ");}for(;x>0;x--){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}num++;for(;i-num>0;num++){x=(i-num+6)*6; y=21;for(;x<72;x++){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}for(;y<28;y++){gotoxy(x,y); printf("%s",car); Sleep(50);gotoxy(x,y); printf(" ");}for(;x>(num-1+6)*6;x--){gotoxy(x,y); printf("%s",car); Sleep(30);gotoxy(x,y); printf(" ");}gotoxy(x,y); printf("%s",car);}if(a>0){x=66;y=25;gotoxy(x,y); printf(" ");gotoxy(x,y-2); printf("%s",car); Sleep(100);if(12>a){gotoxy((12-a)*6,y);printf(" ");}if(a>1){gotoxy(x,y); printf("%s",car);}printstop(0,i-1,x,y-2);}}}/************************************************************ main ********************************************************/int main(void){SqStackCar s1,s2; //停车栈和暂存栈LinkQueueCar p; //队列InitSeqStack(&s1);InitSeqStack(&s2);InitLinkQueue(&p);printf(" 停车场管理系统\n\n");printf("************************* 欢(=^_^=)迎***************************\n");printf(" 收费标准: 基础费0.5元, 每分钟收取0.05元,收费精确到0.1元\n");printf(" PS:车牌号由阿拉伯数字组成");panitPL();printcar(); gotoxy(0,-3);char c=0; //接受按键while(1) //按ESC退出系统{for(int i=2;i>-1 ;i--) //初始化对话框qingping(i);printf("按ESC退出系统,其它键开始对话");c=getch();if(c==Esc){qingping(0);break;}while(1){qingping(2);gotoxy(28,8); printf("欢迎来到停车场! 我是管理员小王。
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语言pta
停车场管理c语言pta
停车场管理系统是一个常见的项目,可以使用C语言来实现。
这个系统可以包括车辆进入和离开的记录、收费计算、停车位管理
等功能。
在PTA(Programming Teaching Assistant)上实现停车
场管理系统可以通过以下步骤进行:
1. 数据结构设计,首先,需要设计合适的数据结构来存储车辆
信息、停车位状态等。
可以使用结构体来表示车辆信息,使用数组
或链表来管理停车位的状态。
2. 车辆进入和离开记录,编写函数来处理车辆进入和离开的记录,包括记录车辆的进入时间、离开时间,以及相应的费用计算。
3. 收费计算,根据停车时间和车辆类型(例如小型车、大型车)来计算停车费用。
可以设置不同的收费标准,并编写函数来进行费
用计算。
4. 停车位管理,设计算法来管理停车位的分配和释放,确保停
车场的停车位能够合理利用。
5. 用户界面,可以使用C语言的控制台来实现简单的用户界面,让用户可以输入车辆信息、查询停车费用等操作。
在PTA上实现停车场管理系统需要考虑到输入输出的格式,以
及对各种异常情况的处理。
同时,还需要编写测试用例来验证程序
的正确性和稳定性。
总之,通过合理的数据结构设计、功能模块划分和用户界面实现,可以在PTA上使用C语言实现停车场管理系统。
这样的项目可
以帮助学生加深对C语言的理解,并锻炼编程能力。
停车场管理系统--c语言
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语言知识方案报告停车场管理系统
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。
/*模拟通道*/三、算法的设计思想由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车场内按车辆到达时间的先后顺序,依次由北向南排列。
由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,又每个汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素我设计成汽车的车牌号。
当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。
停车场管理系统实习报告
停车场管理系统实习报告一、实习背景及目的随着我国经济的快速发展和城市化进程的推进,城市交通问题日益凸显,特别是停车问题。
为了缓解停车难问题,提高停车场管理效率,本次实习我选择了停车场管理系统作为研究对象。
实习的目的是了解停车场管理系统的现状,掌握停车场管理系统的运作模式,探讨如何优化停车场管理系统,提高停车效率和管理水平。
二、实习内容及过程1. 停车场管理系统的了解在实习过程中,我首先对停车场管理系统的基本概念、组成部分和运作原理进行了学习。
停车场管理系统主要包括车位信息实时更新、车牌识别、车位预约、自动计费、支付处理等功能。
通过这些功能,停车场管理系统可以实现对车辆的快速进出、车位的高效利用和管理。
2. 停车场管理系统的实际操作为了更深入地了解停车场管理系统,我参与了实际操作。
在操作过程中,我学习了如何使用车位探测器收集车位信息,如何通过车牌识别系统快速识别车辆,以及如何处理预约车位、自动计费和支付等业务。
此外,我还学习了如何通过管理系统对停车场进行实时监控,确保车位的高效利用和管理。
3. 停车场管理系统的优化探讨在实际操作过程中,我发现停车场管理系统存在一些问题,如车位信息更新不及时、支付方式单一、客户服务不足等。
针对这些问题,我提出了以下优化建议:(1)引入智能算法,提高车位信息更新的实时性,减少误差。
(2)增加多种支付方式,如微信支付、支付宝支付等,方便顾客支付。
(3)加强客户服务,如设立客户服务中心,提供导航、咨询等服务。
(4)开展停车场共享计划,将空闲车位共享给周边商户和居民,提高车位利用率。
三、实习收获及反思通过本次实习,我对停车场管理系统有了更深入的了解,认识到了停车场管理的重要性。
同时,我也学会了如何使用停车场管理系统进行实际操作,掌握了相关技能。
实习过程中,我发现停车场管理系统还存在一些问题,这让我意识到优化停车场管理系统的重要性。
在今后的学习和工作中,我将不断探索停车场管理系统的优化方法,为提高停车场管理水平和停车效率做出贡献。
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语言实习报告
停车场管理系统C语言实习报告一、实习背景在城市化进程不断加速的背景下,汽车数量急剧增长,停车难的问题日益突出,停车场管理系统成为解决这一问题的重要途径。
为了更好地了解和掌握停车场管理系统的开发过程和实现方法,我选择了该方向作为我的实习内容。
二、实习过程在实习过程中,我主要参与了停车场管理系统的需求分析、模块设计和编码实现等工作。
1.需求分析首先,我对停车场管理系统的需求进行了详细地分析和理解。
通过与公司内部相关人员的交流和讨论,我了解到停车场管理系统主要包括车辆信息管理、停车记录管理和收费管理等功能。
2.模块设计在需求分析的基础上,我开始进行停车场管理系统的模块设计工作。
根据需求,我划分出了车辆信息管理模块、停车记录管理模块和收费管理模块等多个模块。
然后,我详细地设计了这些模块的功能和数据流程,并与其他开发人员进行了交流和讨论。
3.编码实现在模块设计完成后,我开始进行停车场管理系统的编码实现工作。
首先,我选择了C语言作为开发语言,并使用了相关的开发工具。
然后,我按照设计的流程和规范进行了编码工作,并通过反复调试和测试,最终实现了一个具有基本功能的停车场管理系统。
三、实习收获通过这次实习,我对停车场管理系统的开发和实现过程有了更深入的了解和掌握。
首先,我学会了如何进行需求分析和模块设计,并将其应用于实际开发中。
其次,我通过实际编码实现了停车场管理系统,并通过调试和测试不断完善和优化。
最后,我还与其他开发人员进行了紧密的合作和协调,提高了我与他人沟通和协作的能力。
四、总结与展望通过这次实习,我对停车场管理系统有了全面的认识和了解,并学会了如何进行开发和实现。
但是,在实际工作中还存在一些不足之处,比如对一些技术的了解不够深入和对一些问题的解决不够完善。
因此,我希望今后能够进一步加强相关技术的学习和研究,提高自己的综合能力和解决问题的能力。
在未来的工作中,我将继续深入研究和学习停车场管理系统的相关技术,并通过不断地实践和探索,提高自己的专业能力和水平。
停车场管理系统C语言实现
一.问题描述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_Outputs,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_Outputs,q,r;要算法流程图:I.Judge_Output算法流程图:II.A_cars算法流程图:III.D_cars算法流程图:4.本程序保护模块:主函数模块栈单元模块:实现栈的抽象数据类型队列单元模块:实现队列的抽象数据类型调用关系:四.详细设计1.相关头文件库的调用说明:include<>include<>define MAXSIZE 14define n 2define fee 102.元素类型、结点类型和结点指针类型:struct car{ char bb;int num;int time;};struct rangweicar{int num;int time;};typedef struct stackk{struct rangweicar HMAXSIZE;int topp;}SqStackk;define QNODE struct QnodeQNODE { int data;QNODE next;};3.栈类型和队列类型:typedef struct stack{struct car Gn;int top;}SqStack;typedef struct linkqueue{QNODE front,rear;int geshu;}LinkQueue;b=='E'||r.bb=='e'printf"STOP\n";else ifr.bb=='P'||r.bb=='p'printf"The number of parking cars is %d\n",s->top+1; else ifr.bb=='W'||r.bb=='w'printf"The number of waiting cars is %d\n",q->geshu; else ifr.bb=='A'||r.bb=='a'A_carss,q,r;else ifr.bb=='D'||r.bb=='d'D_carss,q,r;elseprintf"ERROR\n";}A_carsSqStack s,LinkQueue q,struct car a {QNODE t;ifs->top=n-1{s->top++;s->Gs->top.bb=;s->Gs->top.num=;s->Gs->top.time=;}else{printf"The parking place is full\n";t=QNODE mallocsizeofQNODE;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_carsSqStack s,LinkQueue q,struct car d{int i,j,l;float x,y;QNODE p;SqStackk k;if==s->Gs->top.num{x=s->Gs->top.time;y=feex;printf"The time is %.2f hours,the fee is %.2f yuan\n",x,y;ifq->geshu==0{printf"The queue is empty\n";return 0;}else{p=q->front->next;q->front->next=p->next;s->Gs->top.num=p->data;s->Gs->top.time=;freep;q->geshu--;ifq->front->next==NULLq->rear=q->front;return 1;}}else{fori=0;i<s->top;i++{ifs->Gi.num= continue;else break;}ifi>=s->top{printf"ERROR\n";return -1;}x=s->Gi.time;y=feex;printf"The time is %.2f hours,the fee is %.2f yuan\n",x,y; k=SqStackk mallocsizeofSqStackk;k->topp=-1;forj=s->top;j>i;j--{k->topp++; k->Hk->topp.num=s->Gj.num;k->Hk->topp.time=s->Gj.time;s->top--;}forl=0;l<=k->topp;l++{printf"the informationnumber and time in the new stack is:\n"; printf"%d,%d\n",k->Hl.num,k->Hl.time;}s->top--;whilek->topp>=0{s->top++;s->Gs->top.bb='A';s->Gs->top.num=k->Hk->topp.num;s->Gs->top.time=k->Hk->topp.time;k->topp--;}ifq->geshu==0{printf"The access road is empty\n";return 2;}else{s->top++;p=q->front->next;q->front->next=p->next;s->Gs->top.num=p->data;s->Gs->top.time=;freep;q->geshu--;ifq->front->next==NULLq->rear=q->front;return 3;}}}4.主函数的伪码:main{SqStack s;LinkQueue q;QNODE p;struct car aaMAXSIZE;int i;s=SqStack mallocsizeofSqStack;s->top=-1;q=LinkQueue mallocsizeofLinkQueue;p=QNODE mallocsizeofQNODE;p->next=NULL;q->front=q->rear=p;q->geshu=0;printf"\n";printf" \n";printf" 停车场管理系统\n";printf" \n";printf"\n";fori=0;i<MAXSIZE;i++{printf"Please input the state,number and time of the car:\n";scanf"%c,%d,%d",&aai.bb,&aai.num,&aai.time;getchar;Judge_Outputs,q,&aai;ifaai.bb=='E'||aai.bb=='e' break;}}5.函数调用关系:五.测试分析:1.出现问题及解决办法:该程序是四个程序调试中最顺利的一个,只在一个地方上出了问题,就是输入字符时由于回车键也是字符,回车键总会被读入,导致经常输出“ERROR”;后来找到原因后在scanf函数后紧接着加了一个getchar;语句后就恢复了正常;2.方法优缺点分析:优点:用栈和队列来模拟停车场让整个问题显得简单,易于实现;缺点:栈和队列这两个数学模型用在停车场管理上还是有失妥当的,现实中停车场出口入口不可能为同一处,不可能当一辆车要离开,在它后面进来的车必须为它让路,因此无法用栈的“后进先出”原则来模拟;而且没有考虑便道上的车在等待过程中可以中途开走等情况,而这些都无法用队列的“先进先出”原则来模拟;3.主要算法的时间和空间复杂度分析:1由于算法Judge_Output函数根据判断条件,每次只选择一个程序段执行,所以其时间复杂度是O1;2由于算法A_cars函数根据判断条件,将数据入栈或入队列,所以其时间复杂度也是O1;3由于算法D_cars函数在出栈数据不在最顶端时需将n个数据先出该栈,再入新栈,再回旧栈的操作,故其时间复杂度是On;4所有算法的空间复杂度都是O1;六.使用说明程序运行后用户根据提示一次输入车辆的状态信息,车牌编号,时间,程序会根据车辆的状态信息调用相应的函数,并输出用户想得到的信息;七.调试结果输入数据:‘A’,1,5,‘A’,2,10,‘D’,1,15,‘A’,3, 20,‘A’,4,25,‘A’,5,30,‘D’,2,35,‘D’,4,40,‘P’,0,0,‘W’,0,0,‘F’,0,0,‘E’,0,0;输出数据:1号车停放时间为10小时,收费100元;2号车停放时间为25小时,收费250元;4号车停放5小时,收费50元;此时停车场有两辆车,便道上无车;若停车场已满,则会显示停车场已满的信息;若便道上无车等待停车,会显示便道上无车的信息;若中途有车离开,需其后的车让道,会显示进入临时停车场的车辆的信息;若输入‘F’,0,0,输出“ERROR”;若输入‘E’,0,0,程序结束;运行结果截屏:八.附录源程序文件清单:include<> /调用的头文件库声明/include<>define MAXSIZE 14define n 2define fee 10struct car /用该结构体来存放车的状态,编号和时间信息/ { char bb;int num;int time;};typedef struct stack /用该栈来模拟停车场/{struct car Gn;int top;}SqStack;struct rangweicar /用该结构体来存放临时让出的车辆的编号以及时间信息/ {int num;int time;};typedef struct stack /用该栈来模拟临时让出的车辆的停靠场地/ {struct rangweicar HMAXSIZE;int topp;}SqStackk;define QNODE struct QnodeQNODE { int data; /链队结点的类型/QNODE next;};typedef struct linkqueue /用该链队来模拟便道/{QNODE front,rear;int geshu;}LinkQueue;void Judge_OutputSqStack s,LinkQueue q,struct car r /该算法通过传递来的车辆信息调{ 用相关函数实现操作/ ifr.bb=='E'||r.bb=='e' /若车辆状态为‘E’,终止程序/printf"STOP\n";else ifr.bb=='P'||r.bb=='p' /若车辆状态为‘P’,输出停车场车辆数/ printf"The number of parking cars is %d\n",s->top+1;else ifr.bb=='W'||r.bb=='w' /若车辆状态为‘W’,输出便道车辆数/ printf"The number of waiting cars is %d\n",q->geshu;else ifr.bb=='A'||r.bb=='a' /若车辆状态为‘A’,调用A_cars函数/A_carss,q,r;else ifr.bb=='D'||r.bb=='d' /若车辆状态为‘D’,调用D_cars函数/D_carss,q,r;elseprintf"ERROR\n"; /若车辆状态为其他字母,报错/}A_carsSqStack s,LinkQueue q,struct car a /该算法实现对车辆状态为到达的车辆的操{QNODE t; 作/ifs->top=n-1 /若停车场还没有满,则车进停车场,并存入车辆的状态,车牌编{s->top++; 号和到达时间信息/s->Gs->top.bb=;s->Gs->top.num=;s->Gs->top.time=;}else{printf"The parking place is full\n"; /若停车场已满,车进便道,并显示该车的车牌编t=QNODE mallocsizeofQNODE; 号,同时记录便道车辆数目/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_carsSqStack s,LinkQueue q,struct car d /该算法实现车辆状态为离开的车{int i,j,l; 辆的操作/float x,y;QNODE p;SqStackk k;if==s->Gs->top.num /若待离开车为最后进停车场的车的情况/{x=s->Gs->top.time;y=feex; /直接计算停车时间,费用并离去/printf"The time is %.2f hours,the fee is %.2f yuan\n",x,y;ifq->geshu==0 /若便道上无车,函数返回/{printf"The queue is empty\n";return 0;}Else /若便道上有车,第一辆车进停车场/{p=q->front->next;q->front->next=p->next;s->Gs->top.num=p->data; /并存入其车牌编号及进停车场的时间/s->Gs->top.time=;freep;q->geshu--;ifq->front->next==NULLq->rear=q->front; /若此时便道上无车,返回1/return 1;}}Else /待离开的车不是最后进停车场的那辆车的情况/ {fori=0;i<s->top;i++ /先找到待离开车在停车场中的位置/ {ifs->Gi.num= continue;else break;}ifi>=s->top{printf"ERROR\n";return -1;}x=s->Gi.time; /计算待离开车的停车时间并计算费用/y=feex;printf"The time is %.2f hours,the fee is %.2f yuan\n",x,y;k=SqStackk mallocsizeofSqStackk; /设立一个新栈临时停放为该车离开而让k->topp=-1; 路的车辆/forj=s->top;j>i;j--{k->topp++; k->Hk->topp.num=s->Gj.num;k->Hk->topp.time=s->Gj.time;s->top--;}forl=0;l<=k->topp;l++{printf"the informationnumber and time in the new stack is:\n";printf"%d,%d\n",k->Hl.num,k->Hl.time;} /显示在新栈中的车辆信息/ s->top--;whilek->topp>=0 /将新栈中的车重新开入停车场中/{s->top++;s->Gs->top.bb='A';s->Gs->top.num=k->Hk->topp.num;s->Gs->top.time=k->Hk->topp.time;k->topp--;}ifq->geshu==0 /若便道上无车,则返回2,无车开入停车场中/ {printf"The access road is empty\n";return 2;}Else /若便道上有车,则第一辆车开入停车场中/{s->top++;p=q->front->next;q->front->next=p->next;s->Gs->top.num=p->data;s->Gs->top.time=;freep;q->geshu--;ifq->front->next==NULLq->rear=q->front;return 3;}}}main{SqStack s;LinkQueue q;QNODE p;struct car aaMAXSIZE;int i;s=SqStack mallocsizeofSqStack; /对停车场初始化/s->top=-1;q=LinkQueue mallocsizeofLinkQueue;p=QNODE mallocsizeofQNODE; /对便道初始化/p->next=NULL;q->front=q->rear=p;q->geshu=0;printf"\n";printf" \n";printf" 停车场管理系统\n";printf" \n";printf"\n";fori=0;i<MAXSIZE;i++ /输入车辆信息/ {printf"Please input the state,number and time of the car:\n"; scanf"%c,%d,%d",&aai.bb,&aai.num,&aai.time; getchar;Judge_Outputs,q,&aai;ifaai.bb=='E' break;}}。
停车场管理系统实习报告
一、实习背景随着我国经济的快速发展,汽车保有量逐年攀升,停车难问题日益凸显。
为解决这一问题,停车场管理系统应运而生。
本次实习旨在通过对停车场管理系统的学习和实践,了解停车场管理的基本流程,掌握系统操作技能,提高自己的实践能力。
二、实习内容1. 停车场管理系统概述停车场管理系统主要由车辆进出管理、车位管理、收费管理、报表统计等模块组成。
系统通过自动化设备(如车牌识别、道闸、地感线圈等)实现车辆进出、收费、车位管理等功能,提高停车场管理效率。
2. 实习过程(1)系统学习实习初期,我主要学习停车场管理系统的基本原理和操作流程。
通过阅读相关资料和请教同事,我对停车场管理系统的功能模块、操作方法有了初步了解。
(2)系统操作在实习过程中,我参与了停车场管理系统的实际操作。
具体包括:1)车辆进出管理:通过车牌识别设备,实现车辆快速进出停车场,提高通行效率。
2)车位管理:实时显示停车场车位使用情况,方便管理人员了解车位分布,合理调配车位。
3)收费管理:根据车辆类型、停放时间等因素,自动计算停车费用,实现收费自动化。
4)报表统计:生成各类报表,如收入报表、进出车辆报表等,为管理层提供决策依据。
(3)问题解决在实习过程中,我遇到了一些问题,如系统操作不熟练、设备故障等。
通过请教同事、查阅资料和与供应商沟通,我成功解决了这些问题。
3. 实习成果通过本次实习,我取得了以下成果:(1)掌握了停车场管理系统的基本原理和操作流程。
(2)熟悉了各类自动化设备的使用方法。
(3)提高了自己的实践能力,为今后从事停车场管理工作打下了基础。
三、实习心得1. 理论与实践相结合本次实习让我深刻体会到理论与实践相结合的重要性。
在学习理论知识的基础上,通过实际操作,我对停车场管理系统有了更深入的了解。
2. 团队合作精神在实习过程中,我与同事共同解决问题,相互学习,共同进步。
这使我认识到团队合作精神在停车场管理工作中的重要性。
3. 良好的沟通能力在实习过程中,我学会了如何与同事、供应商沟通,解决问题。
c语言停车场管理系统
cteam* initTeam(){
cteam *Q;
Q=(cteam *)malloc(sizeof(teamNode));
Q->front=(teamPtr)malloc(sizeof(teamNode));
Q->front->next=NULL;
// 仅供参考
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 50 //停车场最多停车数
typedef struct{
char cnum[8];
float date;
}pnode; //栈中结点数据类型
printf(" >>\n");
printf(" 3.退出系统\n\n\n");
printf("***>>>>>>>>>>>>>>>>>>>> Made by Lemon'x <<<<<<<<<<<<<<<<<<<<<***\n\n");
Q->front->number=50;
Q->rear=Q->front;
return Q;
} //初始化队列
int inTeam(cteam *Q,char cnum[]){ //接收队列的地址,来车的车牌号码
c语言实习报告 停车场管理系统
C语言课程设计院系:工程学院姓名:姚品品学号:20051001635班号:05205224指导教师:王老师日期:2007年9月一课程设计编号、名称、内容编号:第二十七题名称:停车场管理系统2内容:[要求](1)有一个两层的停车场,每层有6个车位,当第一层车停满是才允许在第二层停车,(停车场可用一个二维数组来实现,每个数组中存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算(2)假设停车场初始状态为第一层已经停有四辆,车其车位号依次为1—4,停车时间依次为20,15,10,5。
即先将这四俩车的信息存入文件“car.dat”中(数组的对应元素也要进行赋值)(3)停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件”car.dat”中,并将在此之前的所有车的停车时间加5.(4)收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用每5分钟0.2元.(停车费用可设置一个变量进行保存),同时从文件”car.dat”中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零).按用户的选择来判断是否要输出停车收费的总计.(5)输出停车场中全部车辆的信息.(6)退出系统.[提示](1)需求分析车辆信息要用文件存储,提供文件的输入输出操作;当车离开时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择.(2)总体设计整个管理系统可设计为停车模块、取车模块、车辆信息浏览模块.二.总体设计该题目为一个两层停车场的停车,取车以及对停车场内现有所有车辆信息的浏览问题。
车辆的信息包括车牌号码,层号,车位号以及停车时间4四项信息,可以用一个结构体来实现。
双层停车场的信息可以有一个二维数组来实现。
停车场管理系统—C语言课程设计
停车场管理系统1题目要求设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。
停车站内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场是的停车时间及它应该交的费用。
2需求分析根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。
车辆离开要计时计费。
另外,每天开始时,停车场要初始化。
3总体设计这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。
4详细设计main()函数体内包含了界面选则部分menu(),并单独Array抽出来作为一个独立函数,目的在于系统执行每部分模块后能够方便返回到系统界面。
即main()函数写为如下:void main()/*主函数*/{menu();/*菜单函数*/}菜单函数:void menu(){int n,w;do{puts("\t\t**************MENU**************\n\n");puts("\t\t\t 1.初始化");puts("\t\t\t 2.有车进入");puts("\t\t\t 3.有车离开");puts("\t\t\t 4.退出");puts("\n\n\t\t*********************************\n");printf("Please choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4)/*对选择的数字作判断*/{w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:chushi();break;/*初始化函数*/case 2:jinru();break;/*车辆进入函数*/case 3:likai();break;/*车辆离开函数*/case 4:exit(0);/*退出*/}}初始化模块设计:【需求分析】该模块是将每一天开始的停车场内和便道车位清零。
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语言实习报告 停车场管理系统.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
学海无 涯
一 课程设计编号、名称、内容
编号:第二十七题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计院系:工程学院姓名:姚品品学号:20051001635班号:05205224指导教师:王老师日期:2007年9月一课程设计编号、名称、内容编号:第二十七题名称:停车场管理系统2内容:[要求](1)有一个两层的停车场,每层有6个车位,当第一层车停满是才允许在第二层停车,(停车场可用一个二维数组来实现,每个数组中存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算(2)假设停车场初始状态为第一层已经停有四辆,车其车位号依次为1—4,停车时间依次为20,15,10,5。
即先将这四俩车的信息存入文件“car.dat”中(数组的对应元素也要进行赋值)(3)停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件”car.dat”中,并将在此之前的所有车的停车时间加5.(4)收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用每5分钟0.2元.(停车费用可设置一个变量进行保存),同时从文件”car.dat”中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零).按用户的选择来判断是否要输出停车收费的总计.(5)输出停车场中全部车辆的信息.(6)退出系统.[提示](1)需求分析车辆信息要用文件存储,提供文件的输入输出操作;当车离开时要删除文件中该车的信息,因而要提供文件的删除操作;另外还要用键盘式菜单实现功能选择.(2)总体设计整个管理系统可设计为停车模块、取车模块、车辆信息浏览模块.二.总体设计该题目为一个两层停车场的停车,取车以及对停车场内现有所有车辆信息的浏览问题。
车辆的信息包括车牌号码,层号,车位号以及停车时间4四项信息,可以用一个结构体来实现。
双层停车场的信息可以有一个二维数组来实现。
三.模块设计1.停车信息结构体车辆信息包括车牌号carNO,层号floor,车位号position,停车时间time,把四个成员作为结构体Car的成员以便处理struct Car{int carNO;int floor;int position;int time;}car[12]2.车位信息数组因为停车场为两层,每层6个车位,所以定义一个二维数组park[2][6]来存储结构体int park[2][6]3.主菜单四项功能1)停车(TING CHE)2)取车(QU CHE)3)浏览(LIU LAN)4)退出(TUI CHU)程序:for(; ;){printf(" please choose:1停车2取车3输出停车场中全部车辆的信息0退出\n" );4.车位分析和停车模块因为只有第一层车位停满才能在第二层停车,所以在停车之前先要对车位的情况进行分析,然后停车,停车时停车时间为5分钟,原有车辆停车时间加5分钟。
进行分析时先打开文件检查停车车牌号是否为NULL,是的话就可以在该车位停车,否则就不行,应用FOR语句来保证第一层优先停车。
停车后存储文件。
scanf(" %c", &a);if(a== '1'){printf(" 请输入车牌号fprintf(stderr,"error opening file\n");exit(1);}for (j = 0; j<i+1;++j)fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",j,car[j].carNO,j,car[j].floor ,j,car[j].position,j,car[j].time);fclose(fp);printf("\n"); for (j = 0; j<2;++j){for (k = 0; k<6;++k){if(park[j][k] ==0){park[j][k] = car[i].carNO; break;}}if(park[j][k] == car[i].carNO)break;}car[i].floor = j+1;car[i].position = k+1;car[i].time = 5;for (j = 0; j<i;++j)car[j].time += 5;printf(" 停车操作完成\n " )5.取车模块取车时,输入一车牌号,如果与文件中任何一个车牌号相同,便可以取车,并按一分钟0.2元算出停车费用,并且把该车停车记录从文件中删除。
如果没有这个车牌号就给出提示。
if(a== '2'){printf(" 请输入要离开车的车牌号: " );scanf(" %d",&carNUM);for (j = 0; j<i;++j){if(carNUM == car[j].carNO){fee = (float)car[j].time/5*0.2;printf(" 车牌号为%d的停车费为:" ,carNUM);printf("%f\n",fee);printf("-----------------------------------------------------------------\n " );park[j/6][j%6] = 0;if((fp=fopen("car.dat","w")) ==NULL){fprintf(stderr,"error opening file\n");exit(1);}for (k = 0; k<j;++k)fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",k,car[k].carNO,k,car[k].floor ,k,car[k].position,k,car[k].time);for (++k; k<i;++k)fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",k,car[k].carNO,k,car[k].floor ,k,car[k].position,k,car[k].time);fclose(fp);printf("\n");break;}}if(j == i)printf(" 没有此号码或者输入错误!\n" );else continue;printf(" -----------------------------------------------------------------\n " );}6.浏览模块浏览即是输出所有停车车辆的所有信息if(a== '3'){printf(" 停车场所有车辆信息如下:\n ");printf(" 车牌号层号车位号停车时间\n ");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);else continue;}}if((fp=fopen("car.dat","w")) ==NULL){fprintf(stderr,"error opening file\n");exit(1);}printf(" -----------------------------------------------------------------\n" );}7.退出模块if(a== '0'){printf(" press any key to continue... " );break;四.实习心得在老师的带领下进行了C语言程序实践学习。
在短短一周的实习期间使我获取了不少新知识也巩固了许多老知识。
在这之前,我们已经对C语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在学习了解的范围,对里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很不好动手。
C语言是需要有一定基础、而且动手能力强的学科。
上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。
对于程序设计语言的学习目的,可以概括为学习语法规定、巩固贯穿系统知识、掌握程序设计方法、提高程序设计能力,这些都必须通过充分的实际上机操作才能完成。
课堂上许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用C语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是一个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。
这次上机实习让我学到了很多有用的东西,巩固了之前的学习,让我学到了在教室和做题中学不到的一些知识,通过这个程序的学习,使我进一步理解和运用结构化程序设计的思想和方法。
初步掌握开发一个小型实用系统的基本方法,学会调试一个比较长程序的基本方法,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。
我认为,这次实习对于我是非常有意义的,对我个人的影响比较大,对我的动手能力有了很大的提高。
程序原代码:#include<stdio.h>#include<stdlib.h>#define MAX 2 /*车库容量*/#define price 0.2 /*每车每分钟费用*/struct Car /* 车的信息*/{int carNO;int floor;int position;int time;}car[12];int main(){int i,j,k;int carNUM;float fee;/*计算停车费用*/char a;FILE *fp;int park[2][6]={1001,1002,1003,1004,0,0,0,0,0,0,0,0}; /*停车场状态若为0表示车位空,否则值为carNO*//* 初始化已停车的信息-------------------------------------------*/car[0].carNO = 1001;car[0].floor = 1;car[0].position = 1;car[0].time = 20;car[1].carNO = 1002;car[1].floor = 1;car[1].position = 2;car[1].time = 15;car[2].carNO = 1003;car[2].floor = 1;car[2].position = 3;car[2].time = 10;car[3].carNO = 1004;car[3].floor = 1;car[3].position = 4;car[3].time = 5;if((fp=fopen("car.dat","w")) ==NULL){fprintf(stderr,"error opening file\n");exit(1);}for (i = 0; i<4;++i)fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",i,car[i].carNO,i,car[i].floor ,i,car[i].position,i,car[i].time);fclose(fp);printf("\n");/*初始化完毕---------------------------------*/for(; ;){printf(" please choose:1停车2取车3输出停车场中全部车辆的信息0退出\n" );scanf(" %c", &a);if(a== '1'){printf(" 请输入车牌号: " );scanf(" %d",&car[i].carNO);for (j = 0; j<2;++j){for (k = 0; k<6;++k){if(park[j][k] ==0){park[j][k] = car[i].carNO; break;}}if(park[j][k] == car[i].carNO)break;}car[i].floor = j+1;car[i].position = k+1;car[i].time = 5;for (j = 0; j<i;++j) /*将在此前的所有车的停车时间加5*/car[j].time += 5;if((fp=fopen("car.dat","w")) ==NULL)/*将所有停车信息刷新后写出到car.dat*/{fprintf(stderr,"error opening file\n");exit(1);}for (j = 0; j<i+1;++j)fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",j,car[j].carNO,j,car[j].floor ,j,car[j].position,j,car[j].time);fclose(fp);printf("\n");printf(" 停车操作完成\n " );printf(" -----------------------------------------------------------------\n " );++i;}else if(a== '2'){printf(" 请输入要离开车的车牌号: " );scanf(" %d",&carNUM);for (j = 0; j<i;++j){if(carNUM == car[j].carNO){fee = (float)car[j].time/5*0.2;printf(" 车牌号为%d的停车费为:" ,carNUM);printf("%f\n",fee);printf(" -----------------------------------------------------------------\n " );park[j/6][j%6] = 0;if((fp=fopen("car.dat","w")) ==NULL)/*将所有停车信息刷新后写出到car.dat*/{fprintf(stderr,"error opening file\n");exit(1);}for (k = 0; k<j;++k)fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",k,car[k].carNO,k,car[k].floor ,k,car[k].position,k,car[k].time);for (++k; k<i;++k)fprintf(fp,"car[%d].carNO = %d\n car[%d].floor = %d\n car[%d].position = %d\n car[%d].time = %d\n",k,car[k].carNO,k,car[k].floor ,k,car[k].position,k,car[k].time);fclose(fp);printf("\n");break;}}if(j == i)printf(" 没有此号码或者输入错误!\n" );else continue;printf(" -----------------------------------------------------------------\n " );}else if(a== '3'){printf(" 停车场所有车辆信息如下:\n ");printf(" 车牌号层号车位号停车时间\n ");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);else continue;}}if((fp=fopen("car.dat","w")) ==NULL)/*将所有停车信息刷新后写出到car.dat*/{fprintf(stderr,"error opening file\n");exit(1);}printf(" -----------------------------------------------------------------\n " );}else if(a== '0'){printf(" press any key to continue... " );break;}else{printf(" input error! please input again!\n" );printf(" -----------------------------------------------------------------\n " );}}}程序运行结果:(1)对于停车模块的操作如下:输入“1”按下”enter”进入停车操作。