停车场管理系统.doc_第1页
停车场管理系统.doc_第2页
停车场管理系统.doc_第3页
停车场管理系统.doc_第4页
停车场管理系统.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

停车场管理系统及源码目录一、需求分析31、输入的形式和输入值的范围;32、输出的形式;33、程序所能达到的功能;34、测试数据:3二 概要设计41 基本操作:42 本程序包含三个模块:4三 详细设计41 元素类型,结点类型和指针类型:42 每个模块的分析:53 完整的程序:10四 使用说明、测试分析及结果16五、实验总结19一、需求分析1、输入的形式和输入值的范围; 本演示程序中,停车场车位n应为12,首先应输入一个值赋给初始报数上限12,程序应能自动保存车主的车牌号和分配的车位号。车牌号为4为有效数字。2、输出的形式; 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入相应数据(即每位车主的车牌号),停车场内车位序号由程序自动分配。3、程序所能达到的功能;a.地下停车场共有m(m =12)个停车位。 b.停车登记:车牌号,系统分配的车位,等候时间,停车费用。要求:i.车位已全部占用时,不能办理停车,要在过道上等待停车位空出 来。ii.当有空位出来时,提示停在过道上的车进入停车场。c.取车登记:车牌号要求:i.与停车登记时记录的信息共同构成一条停车记录。ii.当车离开时,要去除相应的信息。d.统计 i.当前全部停靠车辆的车牌号及车位。4、测试数据:本系统为了方便测试,先初始化了11个满位,只要再输入一个测试数据测试入场功能就可以进入到,场满入队的操作。因为中文显示页面会出现乱码,所以本系统所有的提示句子用英语指示,有语法错误请原谅。测试数据如下: (1)在首显的操作版面上从提示语言可以实现相应的操作。离开和查询停车场相应的信息(这项有,停车场内的空位情况和等候队列停车的情况)。(2)n1=1598:测试是否能停车场。为测试队满,所以程序数组只定义了一个空位。操作步骤会有相应提示。 n2=1587:由于队满,所以程序转像等候队列。操作成功会有相应提示。二 概要设计 为了实现上述操作,在停车场管理方面,考虑到汽车停放绝对位置是不变,所以用到了二维数组。而在等候队列方面,顾名思义,用到了队列的存储。系统则是在这两个数据结构上传递数据的。用到文件存储方法。1 基本操作:int InitQueue();操作结果:构造空队列,若成功就初始化停车队列的相关信息。int readcommand() ; /*选择功能*/void initialization() ;int readcommand() ;操作结果:显示界面。2 本程序包含三个模块十个函数体: 文件存储:void save();停车场二维数组操作:void car_park(); /*停车操作*/void car_get(); /*取车操作*/void printfdata() /*打印停车场内信息*/void initialization() ; /*初始函数*/队列操作:int InitQueue(); /*初始化队列*/int EnQueue(); /*入队*/int DeQueue(); /*出队*/int print(); /*打印队列*/三 详细设计 1 元素类型,结点类型和指针类型:Int cars124=1111,1,1,5,2222,1,2,10,3333,1,3,10,4444,1,4,15,5555,1,5,20,6666,1,6,25,7777,2,1,10,8888,2,2,10,9999,2,3,10,1212,2,4,10,1313,2,5,10,0,2,6,0; /*二维数组代表停车信息*/(carsio车牌号 carsi1楼层 carsi2楼层对应的车位 carsi3停车时间)typedef struct int number;Car; /*车牌 */typedef struct QNode /*定义一个链式队列(候车道)*/ Car data; struct QNode *next; /*指向下一结点*/QNode,*QueuePtr;typedef struct QueuePtr front; QueuePtr rear;LinkQueue;2 每个模块的分析:(1) 主程序模块:void main() while(1) /*初始化界面*/ /*读取停车场状况*/ case 1: car_park(); /*停车操作*/ case 2: car_get(); /*取车操作*/ case 3: printfdata(); /*停车/候车信息*/ case 0: exit(0); break; /*推出系统*/ default : printf(ERROR! Press Enter to continue.); (2)停车场二维数组操作;/*停车场汽车管理,执行顺序是输入车牌后场满,车辆进入等待队列*/void car_park() /*输入车牌号*/ /*检查输入数据是否合格*/ if(i!=12) printf(nWrong number or its parked !n); /*如果此车号以在,打印此车已停*/ else if(/*输入数据合格*/) /*插入数组*/ for(i=0;i=0) /*无空车位,进入等待队列*/ /*选择操作功能。是否入队*/ EnQueue(&Q,e);/*入队*/ /*汽车离场*/void car_get() /*车牌输入*/ for(i=0;i12;i+) /*场内有匹配的车辆则执行相关操作*/ /*计算停车费*/ carsi0=0; /*取车后车牌清0*/ carsi3=0; /*时间清0*/ /*候车队车辆出队操作*/ /*没匹配车牌时的操作*/(3)队列操作:int InitQueue(LinkQueue *Q) /*构造一个空队列 Q*/ int EnQueue(LinkQueue *Q,Car e ) /*候车道插入操作*/void DeQueue(LinkQueue *Q,Car *e) /*等候车辆出队*/int print(LinkQueue *Q) /*输出队列*/ (4) 文件存储模块:void save()FILE *fp;int i,j;if(fp=fopen(cars,w)=NULL)/*打开文件*/if(fwrite(cars,2,1,fp)!=1)/*写入文件*/fclose(fp);void printfdata() /* 停车场信息*/FILE *fp;fp=fopen(cars,r);/*读取文件,停车场数据*/print();/*读取队列内数据*/fclose(fp);(5)初始化页面模块:int readcommand() /*选择函数*/ /*命令行接入数字选择功能操作*/void initialization() /*初始函数*/ /*初始化页面*/(6) 函数调用关系图 有空位入场:开始initialization() readcommand() main()初始化页面车辆入场操作car_park()车牌登记Save()保存信息有空位 N Y是否入等候队列 N YEnQueue()入队操作 完成回到主界面开始 汽车离开:car_get()汽车离开Save()向等候队列的车辆提示有空位等候队列的车主选择入队 N Y出队DeQueue()完成回到主界面 查询停车场内停车情况:开始 printfdata()显示停车场信息printf ()显示等候队列完成回到主界面3 完整的程序:#include /*包含了与标准IO库有关的变量定义和宏定义*/#include /*文件包含所用的文件*/#include /*clrscr()*/#include #include int cars124=1111,1,1,5,2222,1,2,10,3333,1,3,10,4444,1,4,15,5555,1,5,20,6666,1,6,25,7777,2,1,10,8888,2,2,10,9999,2,3,10,1212,2,4,10,1313,2,5,10,0,2,6,0; /*二维数组代表停车信息*/typedef struct int number;Car; /*车牌 */typedef struct QNode /*定义一个链式队列(候车道)*/ Car data; struct QNode *next; /*指向下一结点*/QNode,*QueuePtr;typedef struct QueuePtr front; QueuePtr rear;LinkQueue;void save();void car_park(); /*停车操作*/void car_get(); /*取车操作*/void printfdata(); /*打印停车场车辆信息*/void initialization() ; /*初始函数*/int readcommand() ; /*选择功能*/int InitQueue();int EnQueue();int DeQueue();int print();void save() FILE *fp; int i,j; if(fp=fopen(cars,w)=NULL) printf(cannot open filen); return; for(i=0;i12;i+) for(j=0;j4;j+) if(fwrite(cars,2,1,fp)!=1) printf(file write errorn); fclose(fp); getch();void printfdata() /* 停车场信息*/ int i,j,b,z; FILE *fp; QueuePtr p; fp=fopen(cars,r); printf(n Number Floor Position Timen); for(i=0;i12;i+) for(j=0;jfront=Q-rear=(QueuePtr)malloc(sizeof(QNode); if(!Q-front) exit(0); Q-front-next=NULL; return 1;int EnQueue(LinkQueue *Q,Car e ) /*候车道插入操作*/ QueuePtr p; p=(QueuePtr)malloc(sizeof(QNode); if(!p) exit(0); p-data=e; p-next=NULL; if(Q-rear=NULL) Q-front=Q-rear=p; elseQ-rear-next=p; Q-rear=p; printf(nThanks using this car park!); return 1 ;int DeQueue(LinkQueue *Q,Car e) /*等候车辆出队*/ QueuePtr p=Q-front; if(Q-front=NULL) /*空队*/ printf(nQueue is empty,cant dequeuen); getch(); e=p-data; Q-front=p-next; if(Q-rear=p) /*只有一个结点,则对空顺便制队尾空*/ Q-rear=NULL; free(p); printf(nThanks using this car park!nn); return 1; /*就是这里有点问题*/int print(LinkQueue *Q) /*读取队列*/ QueuePtr p1; p1=Q-front; while(p1!=NULL) printf(the car:%dn,p1-data); p1=p1-next; return; /*停车场汽车管理,执行顺序是输入车牌后场满,车辆进入等待队列*/void car_park() Car e; int x,i,a; QueuePtr p; LinkQueue Q; InitQueue(&Q); printf(nwelcome to our car park-!n); printf(nplease input your car number,then two entern); scanf(%d,&x); /*输入车牌号*/ for (i=0;i12;i+) if(carsi0=x|x9999) break; if(i!=12) printf(nWrong number or its parked !n); getchar(); /*如果此车号以在,打印此车已停*/ else if(i=12&x=1000&x=9999) for (i=0;i=12;i+) if(carsi0=0) /*如果此车号不在,则进行停车操作*/ carsi0=x;save(); printf(nnSUCCESSnn); printf(Floor=%d,position=%dn,carsi1,carsi2); printf(nnnTwo times Enter to end.);break; for(i=0;i=0) /*无空车位,进入等待队列*/ printf(the park is full.nDo you want to wait in waiting queue to a empty positionnn yes-1 no-0nn); scanf(%d,&a); switch(a) case 1: printf(nplease input your number againn); scanf(%d,p-data); EnQueue(&Q,e); /*无空位的时候入队*/ printf(nwe will inform you immediately if there is a empty car positionn); break; case 0: printf(Good Bye!n); getchar(); break; default: getchar(); break; /*取车操作*/void car_get() Car e; int i,y,a,z,q; float paid; LinkQueue Q; InitQueue(&Q); printf(n Get carnn Input your car number:nn); printf(NOTICE:car number is a digit between 1000 and 9999n Wrong load would have no cuenn); scanf(%d,&y); for(i=0;i12;i+) if(carsi0=y) paid=carsi3; printf(nyour paid is:%f yuan,paid); /*计算停车费*/ carsi0=0; /*取车后车牌清0*/ carsi3=0; /*时间清0*/ printf(nnGood Bye!); printf(nn there is a empty position in the park.nif you want to park your car. you can press 0 to continue. n); save(); scanf(%d,&q); /*候车队车辆出队操作*/ switch(q) case 0: DeQueue(&Q,e); break; /*有空位后车主选择入场前出队操作*/ default: getchar(); break; if(i=12) printf(The number is not in the park!n); printf(input two Enter to exit!n); getch();void main() int c ; while(1) initialization(); /*初始化界面*/ c=readcommand(); /*读取停车场状况*/ clrscr(); /*清除文本模式窗口 */ switch(c) case 1: car_park(); /*停车操作*/ printf(nnplease press Enter to continue.n); scanf(%c,&c); break; case 2: car_get(); /*取车操作*/ printf(nnplease press Enter to continue.n); scanf(%c,&c); break; case 3: printfdata(); /*停车/候车信息*/ gotoxy(30,30); printf(nnplease press Enter to continue.n); scanf(%c,&c); break; case 0: printf(nnnn Press Enter to continue.);exit(0); break; default : printf(ERROR! Press Enter to continue.); getchar(); break;int readcommand() /*选择函数*/ int c;while(c!=0)&(c!=1)&(c!=2)&(c!=3) printf(Input 0,1,2,3 choose!n); scanf(%d,&c); printf(n);break; return c;void initialization() /*初始函数*/ int i; getchar(); clrscr(); gotoxy(0,0); for(i=1;i=80;i+) printf(14); for(i=1;i=80;i+) printf(2); gotoxy(15,6); printf(THIS IS MY CAR PART MANAGE SYSTEM!); gotoxy(15,9); printf(NAME: zeng bichun 1); /*我的名字曾碧纯*/ gotoxy(15,10); printf(NUM: 0507508162 2); /*学号*/ gotoxy(1,14); printf(n*n); printf( 1. Park car-1 2. Get car-2 3. Date of parking-3 0.Exit-0); printf(nn*n);四 使用说明、测试分析及结果1、 程序使用说明:(1)运行环境Win-tc。(2)进入演示程序后即显示提示信息:2、 测试结果与分析; (1)在首显的操作版面上从提示语言可以实现相应的操作。离开和查询停车场相应的信息(这项有,停车场内的空位情况和等候队列停车的情况)。(2)n1=1515:测试是否能停车场。为方便测试队满,所以程序数组只定义了一个空位。操作步骤会有相应提示。 n2=1616:由于队满,所以程序转像等候队列。操作成功会有相应提示。3、 调试过程中遇到的问题是如何解决提以及对设计与实现的回顾讨论和分析。break的运用上,在循环体之间的嵌套。使到会跳到不希望执行的循环体里。解决方法就是分离循环体,但结果是不能是程序按照原来的逻辑执行顺序执行,还带点混乱,不过不影响系统功能的实现。4、 运行界面。1.系统主页面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论