数据结构课程设计-停车场管理系统.doc
《数据结构课程设计-停车场管理系统.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计-停车场管理系统.doc(20页珍藏版)》请在咨信网上搜索。
1、目录一课题分析3二逻辑分析32。1 数据结构的描述和每个基本操作的功能说明32。1 给出本程序包含的模块及模块之间的调用关系图42。3 写出重要部分的伪码算法4三详细设计53。1 数据结构的定义,及其基本操作的实现53。2主函数和其他函数的实现或伪码算法63.3 程序的层次结构的函数调用关系图83.4 详细设计8四程序源代码9五程序调试与测试175.1 主界面175。2 具体操作185.2。1进站时间与车牌号185.2。2 车站已满,请进入临时车道195。2.3 出站与收费205。2。4 结束205。3 相关操作20六程序中遇到的问题与解决方法216.1 写提纲216。2 在程序调试过程,遇到
2、的相关问题21七总结25八参考文献26一 课题分析a) 该程序主要利用栈和队列来实现车的到达及其离开功能,其中主要有对各种情况的处理,要求如下:1、要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的数据序列进行模拟管理2、要求处理的数据元素包括三个数据项:汽车“到达或“离去”信息,汽车牌照号码及到达或离去的时间 3、该系统完成以下功能:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是离去,则输出汽车在停车场内停留的时间和应缴纳的费用(在便道上停留的时间不收费)4、要求栈以顺序结构实现;b) 程序的输入,程序功能选择,字符型,A为到达,D离开,E退出系统;车的编号是整型,输入
3、数字即可;时间是float类型,可精确到分钟c) 程序的输出,当车到达,程序输出车的编号及到达时间,若栈满则提示停到便道上;车离开时,输出车的编号及其所需费用。d) 测试数据,(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以及a)中的要求。其中A表示到达,D表示离开,E表示结束。二逻辑分析2。1 数据结构的描述和每个基本操作的功能说明ADT stack数据对象:D=ai aiCharSet,i=1,2,,n,n0数据关系:R1=ai1,ai| ai1, aiD,i=2,,n基本操作:initsta
4、ck()操作结果:构造一个空栈,并返回地址。gettop(S)初使条件:栈S已存在。操作结果:栈S不为空,输出顶元素.stop(&S,e)初始条件:栈S已存在。操作结果:要栈S中栈顶插入新的栈顶元素e.ADT queue数据对象:D=ai aiElemSet,i=1,2,n,n0数据关系:R1= ai-1, aiD,i=2,,n约定其中ai端为队列的头,an端为队列的尾initqueue(&Q)操作结果:构造一个空栈,并返回地址.gethead(&S)初使条件:栈S已存在。操作结果:栈S不为空,输出顶元素。enqueue(&S,e)初始条件:栈S已存在.操作结果:要栈S中栈顶插入新的栈顶元素e
5、2。1 给出本程序包含的模块及模块之间的调用关系图本程序包含三个模块:1)主程序模块:Void main()初始化;do接受命令;处理命令;while(命令!=“退出”)2)栈模块实现栈抽象数据类型3)队列模块实现队列抽象数据类型2。3写出重要部分的伪码算法 车辆到达或者离开的伪码算法:do 输出菜单选项; 如果选择A,即车辆到达, 则若栈不满,车辆进栈,停到停车场; 否则,车入队,车停在便道上;如果选择D,即车辆离开,则 如果队不空并且栈不满,被选的车辆离开,队列上的车出队入栈;被选的车辆离开;计算时间及其所需费用;如果选择E,退出程序;while(输入的菜单选项不正确)三 详细设计3。1数
6、据结构的定义,及其基本操作的实现typedef struct timeint hour;int min;Time;typedef struct/车信息char label10;float time;Car,Car2;typedef struct/车库信息Car *top;Car *base;int stacksize;SqStack;typedef struct/临时车道Car2 top2;Car2 *base2;int stacksize2;SqStack2;typedef struct QNode/车道信息Car data;struct QNode next;QNode,*QueuePtr
7、;typedef structQueuePtr front;QueuePtr rear;LinkQueue;3。2主函数和其他函数的实现或伪码算法void main()SqStack S;SqStack2 S2;InitStack(&S);InitStack2(&S2);InitQueue(Q);/初始化while(ch=1)doprintf(”nttttA-车辆到达 nttttD-车辆离开 nttttE退出nttttA/D/E ?b”);scanf(”c”,status);getchar();while(status!=A&status!=astatus!=D&status!=d&statu
8、s!=E&status!=e);if(status=A|status=a)/当车到达输入车号;输入车到达时间;if(!StackFull(S))/栈不满车入栈;printf(ntttt继续请输入1ntttt放弃请输入 0 ?b);scanf(”d”,ch);getchar();/ifelse 车入队;printf(”ntttt继续请输入1ntttt放弃请输入 0 ?b);scanf(d”,&ch);getchar();/else/if当车到达else if(status=D|status=d)/*当车离开/do输入车号;输入车离开时间;doPop(S,&car_M);if(car_D。labe
9、l!=car_M。label)Push2(&S2,car_M);elsecar_I。time=car_M。time;while(car_D。label!=car_M。label);position_s-;while(!StackEmpty2(S2))/栈2不空Pop2(&S2,&car_M);Push(&S,car_M);/whilewhile(!QueueEmpty(Q)&!StackFull(S))if(!StackFull(S)栈不满的话,临时车道上的车进栈/if/whiletime=car_D。timecar_I。time;if(timebase;S-stacksize=STACK_I
10、NIT_SIZE;return OK;int StackEmpty(SqStack S)/栈空if(S。top=S。base)return OK;elsereturn ERROR;int StackFull(SqStack S)/栈满if(S。topS。base=STACK_INIT_SIZE)return OK;elsereturn ERROR;int Push(SqStack S,Car e)/入栈if(S-topSbase=STACK_INIT_SIZE)return OVERFLOW;else *(S-top+)=e;return OK;/elseint Pop(SqStack S,C
11、ar e)/出栈if(Stop=S-base)return ERROR;else *e=*((Stop));return OK;int GetTop(SqStack S,Car e)/返回栈顶元素if(S-top=S-base) return ERROR;else e=*(S-top1);return OK;typedef struct/临时车道Car2 top2;Car2 *base2;int stacksize2;SqStack2;int InitStack2(SqStack2 S2)S2-base2=(Car2 )malloc(STACK_INIT_SIZE*sizeof(Car2));
12、if(!(S2top2) return ERROR;S2top2=S2base2;S2stacksize2=STACK_INIT_SIZE;return OK;int Push2(SqStack2 *S2,Car2 e2)if(S2-top2S2base2=STACK_INIT_SIZE)return OVERFLOW;(S2top2+)=e2;return OK;int Pop2(SqStack2 *S2,Car2 *e2)if(S2top2=S2base2)exit(OVERFLOW);*e2=(-(S2-top2));return OK;int StackEmpty2(SqStack2
13、S2)if(S2。top2=S2。base2)return OK;elsereturn ERROR;typedef struct QNode/车道信息Car data;struct QNode next;QNode,*QueuePtr;typedef structQueuePtr front;QueuePtr rear;LinkQueue;int InitQueue(LinkQueue Q)/初始化队列Qfront=Qrear=(QueuePtr)malloc(sizeof(QNode);if(!(Q-front) return ERROR;Qfront-next=NULL;return OK
14、;int EnQueue(LinkQueue Q,Car e)/插入元素QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode);if(!p) return ERROR;pdata=e;pnext=NULL;Qrearnext=p;Qrear=p;return OK;int QueueEmpty(LinkQueue Q)/队空if(Q.front=Q。rear)return OK;elsereturn ERROR;int DeQueue(LinkQueue *Q,Car e)QueuePtr p;if(Q-front=Q-rear) return ERROR;p=
15、Qfront-next;*e=pdata;Qfront-next=pnext;if(Qrear=p)Q-rear=Qfront;free(p);return OK;void main()int i,position_s=1,position_q=1,mistime=1;int ch=1;char status;float time,money;LinkQueue Q;Car car_I,car_D,car_M,car_S;SqStack S;SqStack2 S2;InitStack(S);InitStack2(S2);InitQueue(Q);for(i=0;i80;i+)printf(”)
16、;printf(”ntttt停车场管理系统”);printf(”nnnttt09计算机科学与技术学院 刘婷 200917020117n”);printf(”ntttt停车场tt”);printf(”n”);printf(tttt相关信息:n”);printf(”tttt请输入字符(A D E)进行相关操作);printf(”n);while(ch=1)doprintf(”nttttA.车辆到达 nttttD。车辆离开 nttttE。退出 nttttA/D/E ?b”);scanf(”%c”,&status);getchar();while(status!=Astatus!=a&status!=
17、D&status!=dstatus!=Estatus!=e);if(status=Astatus=a)printf(”ntttt请输入车牌号 :”);gets(car_I.label);/scanf(”%d”,(car_I。label));printf(”ntttt请输入车辆到达时间: ?b”);scanf(f,(car_I.time);if(!StackFull(S)/栈不满Push(S,car_I);printf(nn”);for(i=0;i80;i+) printf(”-”);printf(n”);printf(tttt输出车牌号:);printf(” %sn,car_I。label);
18、printf(”ntttt请输出车辆到达时间:”);printf(” 5。2f”,car_I。time);printf(nn”);for(i=0;i80;i+) printf(”-”);printf(”nn”);printf(”ntttt欢迎您来我们车站!nntttt您的车位号是: d”,position_s);position_s+;printf(”n”);printf(”tttt继续请输入1ntttt放弃请输入0 ?b);scanf(%d”,ch);getchar();/ifelse EnQueue(Q,car_I);printf(”ttttWelcome to our CAR POSIT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 停车场 管理 系统
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。