版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计汇报课程名称数据结构课程设计设计题目停车场管理专业、班级学号姓名指导教师设计时间年月日引言(一)设计目标和意义对于《数据结构》课程本身有深入了解与提升;提升程序开发能力,深入系统掌握系统研发全过程;培养提升综合利用所学理论知识和方法独立分析和处理实际问题能力;深入提升C语言应用能力;
针对结构化设计思想进行全方面充分了解,初步具备依照应用需求对系统功效选择适当数据结构并进行算法设计能力初步掌握软件开发过程问题分析、系统设计、程序编码、测试等基本方法和技能;训练用系统观点和软件开发通常规范进行软件开发,培养软件工作者所应具备科学工作方法和作风;(二)设计内容问题描述:设有一个能够停放n辆汽车狭长停车场,它只有一个大门能够供车辆进出。车辆按抵达停车场时间早晚依次从停车场最里面向大门口处停放(最先抵达第一辆车放在停车场最里面)。假如停车场已放满n辆车,则日后车辆只能在停车场大门外便道上等候,一旦停车场内有车开走,则排方便道上第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来次序进场。每辆车在离开停车场时,都应依照它在停车场内停留时间长短交费。假如停留在便道上车未进停车场时,允许其离去,不收停车费,而且依然保持在便道上等候车辆次序。编制一程序模拟该停车场管理。实现提醒:汽车模拟输入信息格式能够是:(抵达/离去,汽车牌照号码,抵达/离去时刻)。比如,(‘A’,1,5)表示1号牌照车在5这个时刻抵达,而(‘D’,5,20)表示5号牌照车在20这个时刻离去。整个程序能够在输入信息为(‘E’,0,0)时结束。本题可用栈和队列来实现。基本要求:要求程序输出每辆车抵达后停车位置(停车场或便道上),以及某辆车离开停车场应交纳费用和它在停车场内停留时间。(三)主要任务全方面了解程序设计全过程,掌握基本算法设计思想;掌握完整程序研究开发全过程;程序设计主题思想明确,原创作品。正文(一)设计思想此停车场管理系统是在一个狭长通道上,而且只有一个大门能够供车辆进出,而且要实现停车场内某辆车要离开时,在它之后进入停车场车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来次序进场功效,就能够设计两个堆栈,其中一个堆栈用来模拟停车场,另一个堆栈用来模拟暂时停车场,该暂时停车场用来存放当有车辆离开时,原来停车场内为其让路车辆。至于当停车场已满时,需要停放车辆通道能够用一个链队列来实现。当停车场内开走一辆车时,通道上便有一辆车进入停车场,此时只需要改变通道上车辆结点连接方式就能够了,使通道上第一辆车进入停车场这个堆栈,而且使通道上原来第二辆车成为通道上第一辆车,此时只需将模拟通道链队列头结点连到原来第二辆车上就能够了。(二)实现方法对于此停车场管理系统实现,就是用两个堆栈来分别模拟停车场以及停车场内车辆为其它车辆让路时退出停车暂时停放地点。至于通道上车辆停放则用一个链队列来实现,此时,通道上车辆离开或者进入停车场只需改变此链队列上结点而已。对于要对停车场内车辆依照其停放时间收取对应停车费用,能够统计下车辆进入以及离开停车场时间,再用时间差乘以对应单价而且打印出最终费用就能够实现了。(三)主要模块首先定义用来模拟停车场堆栈以及用来模拟通道链队列为全局变量,然后编写主函数,在此主函数中实现对其它各个模块调用。在主函数中首先调用option()函数,出现欢迎用户使用主界面,然后提醒用户进入此停车场管理系统后,再出现一个供用户选择界面,在用户选择过程中,程序又分别调用车辆抵达、车辆离开、停车场内停放车辆信息以及退出程序这四个函数模块。其中,在车辆离开那个模块函数中又调用了打印离开车辆信息函数,在停车场内停放车辆信息那个模块函数中,又分别调用了显示停车场上车辆信息函数以及显示便道上车辆信息函数。最终,从调用这四个函数中回到主函数结束整个程序运行。附(各模块函数名):voidInitStack(SeqStackCar*s);intInitQueue(LinkQueueCar*Q);option();intArrival(SeqStackCar*Enter,LinkQueueCar*W);voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W);voidPRINT(CarNode*p);voidList(SeqStackCarS,LinkQueueCarW);voidList1(SeqStackCar*S);voidList2(LinkQueueCar*W);(四)模块关系图(五)调试分析调试过程中主要问题因为此停车场管理系统是分模块设计,而且在程序实现过程中又使用了清屏函数,所以,运行时用户选择任务而且执行完任务后,又会回到供用户选择功效主界面,所以整个程序从整体上来讲结构清楚,使用方便。本程序调试运行,总体上情况良好,但也存在一些小问题。测试运行结果欢迎界面主菜单车辆抵达车辆离开停车场车辆信息便到车辆信息(六)用户手册这个程序用来实现对停车场内车辆管理,整个操作界面为汉字,愈加符合人性化标准,使得用户使用方便,而且每一个操作都有提醒,使得首次接触该程序用户也能很快上手操作。这个程序操作简单,对于车牌号,只需输入车牌号上数字就行,而且对于进出停车场时间,也简化了操作,只需输入当初时刻就行,没有详细到小时和分钟,但可能这也是该程序不足之处所在。而且该程序也给用户提供了选择机会,当点击运行该程序后,假如想退出程序,能够输入n或N退出该运行程序。至于使用过程中更详细问题,能够参考该汇报书中调试分析那一项屏幕截图,整个程序运行界面大致就如上述屏幕截图内容。(七)程序源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX2//停车位数量#defineprice2//停车费用(单价)typedefstructnode{ charnum; intreachtime; intleavetime;}CarNode;//车辆信息typedefstructNODE{ CarNode*stack[MAX+1]; inttop;}SeqStackCar;//停车位typedefstructcar{ CarNode*data; structcar*next;}QueueNode;typedefstructNode{ QueueNode*head; QueueNode*rear;}LinkQueueCar;//便道voidInitStack(SeqStackCar*);//初始化停车位intInitQueue(LinkQueueCar*);//初始化便道voidoption();//欢迎页面intArrival(SeqStackCar*,LinkQueueCar*);//车辆抵达voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);//车辆离开voidList(SeqStackCar,LinkQueueCar);//显示车辆信息voidPRINT(CarNode*p);//打印出栈车辆信息voidmain()//主函数{ SeqStackCarEnter,Temp; LinkQueueCarWait; intch; system("color3F"); option();//显示欢迎页 InitStack(&Enter);//初始化停车场 InitStack(&Temp);//初始化暂时栈 InitQueue(&Wait);//初始化通道 while(1) { printf("\n\n⒈车辆抵达\n"); printf("\n⒉车辆离开\n"); printf("\n⒊车辆信息\n"); printf("\n⒋退出程序\n"); printf("\n请选择:"); while(1)//判断输入 { scanf("%d",&ch); printf("\n"); if(ch>=1&&ch<=4) break; else printf("\n※错误!请重新选择!※\n"); } switch(ch) { case1:Arrival(&Enter,&Wait);break;//车辆抵达 case2:Leave(&Enter,&Temp,&Wait);break;//车辆离开 case3:List(Enter,Wait);break;//打印信息 case4:exit(0);//退出主程序 default:break; } printf("****************************************************"); }}voidInitStack(SeqStackCar*s)//初始化栈{ inti; s->top=0; for(i=0;i<=MAX;i++) s->stack[s->top]=NULL;}intInitQueue(LinkQueueCar*Q)//初始化便道{ Q->head=(QueueNode*)malloc(sizeof(QueueNode)); if(Q->head!=NULL) { Q->head->next=NULL; Q->rear=Q->head; return(1); } else return(-1);}voidoption()//欢迎页{ inti; charchoice; printf("\n\n\n\n\n════════════停车场管理════════════\n\n\n"); printf("\n\n\n回车进入系统,N退出\n"); choice=getchar(); system("cls"); if(choice=='N'||choice=='n') exit(0);}voidPRINT(CarNode*p)//打印出栈车辆信息{ inta,b; printf("\n请输入离开时间:"); scanf("%d",&(p->leavetime)); printf("****************************************************"); printf("\n车牌号:%d",p->num); printf("\n车辆抵达时间:%d",p->reachtime); printf("\n车辆离开时间:%d",p->leavetime); a=p->reachtime; b=p->leavetime; printf("\n停车时间:%d",b-a); printf("\n停车费用(单价):¥2元"); printf("\n总停车费用:¥%d元",(b-a)*price); printf("\n"); printf("****************************************************"); free(p);}intArrival(SeqStackCar*Enter,LinkQueueCar*W)//车辆抵达{ CarNode*p; QueueNode*t; p=(CarNode*)malloc(sizeof(CarNode)); flushall(); printf("\n请输入抵达车辆车牌号:"); scanf("%d",&(p->num)); if(Enter->top<MAX)//停车场未满,进入停车场 { Enter->top++; printf("\n请输入该车辆抵达时间:"); scanf("%d",&(p->reachtime)); printf("\n**************************************************"); printf("\n车牌号%d车停放在%d车位\n",p->num,Enter->top); Enter->stack[Enter->top]=p; return(1); } else//停车场已满,车辆进入便道 { printf("\n※停车场已满,该车辆需在便道上等候!※\n"); getch(); t=(QueueNode*)malloc(sizeof(QueueNode)); t->data=p; t->next=NULL; W->rear->next=t; W->rear=t; return(1); }}voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)//车辆离开{ inti,room; CarNode*p,*t; QueueNode*q; //判断车场内是否有车 if(Enter->top>0)//有车 { while(1)//输入离开车辆信息 { printf("\n停车场里停放车辆总数:%d\n",Enter->top); printf("\n请输入要离开车辆车位号:"); scanf("%d",&room); if(room>=1&&room<=Enter->top) break; } while(Enter->top>room)//车辆离开 { Temp->top++; Temp->stack[Temp->top]=Enter->stack[Enter->top]; Enter->stack[Enter->top]=NULL; Enter->top--; } p=Enter->stack[Enter->top]; Enter->stack[Enter->top]=NULL; Enter->top--; while(Temp->top>=1) { Enter->top++; Enter->stack[Enter->top]=Temp->stack[Temp->top]; Temp->stack[Temp->top]=NULL; Temp->top--; } PRINT(p); //判断通道上是否有车及车站是否已满 if((W->head!=W->rear)&&Enter->top<MAX)//便道车辆进入车场 { q=W->head->next; t=q->data; Enter->top++; printf("\n车牌号%d车进入%d车位\n",t->num,Enter->top); printf("\n请输入现在时间:"); scanf("%d",&(t->reachtime)); W->head->next=q->next; if(q==W->rear) W->rear=W->head; Enter->stack[Enter->top]=t; free(q); } else printf("\n※便道里没有车※\n"); } else printf("\n※车场里没有车※\n");}voidList1(SeqStackCar*S)//显示停车场信息{ inti; if(S->top>0)//判断停车场内是否有车 { printf("****************************************************"); printf("\n停车场信息\n"); for(i=1;i<=S->top;i++) { printf("\n车位号:%d",i); printf("\n车牌号:%d",S->stack[i]->num); printf("\n车辆抵达时间:%d",S->stack[i]->reachtime); printf("\n════════════════════"); } } else printf("\n※停车场内没有存放车辆※\n");}voidList2(LinkQueueCar*W)//列表显示便道信息{ QueueNode*p; p=W->head->next; if(W->head!=W->rear)//判断通道上是否有车 { printf("****************************************************"); while(p!=NULL) { printf("\n等候车辆车牌号为:"); printf("%d",p->data->num); printf("\n════════════════════"); p=p->next; } } else printf("\n※便道里没有车※\n");}voidList(SeqStackCarS,LinkQueueCarW){ intflag,tag; flag=1; while(flag) { printf("\n**************************************************"); printf("\n⒈停车场\n"); printf("\n⒉便道\n"); printf("\n请选择:"); printf("\n⒊返回\n"); while(1) { scanf("%d",&tag); printf("\n"); if(tag>=1&&tag<=3) break; else pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网上祭英烈心得
- 26年养老照护参考课件
- 广东省东莞市达标名校2026年高三下学期联考综合试卷含解析
- 广东省韶关市2026届高三下学期3月综合质量检测试题化学试题试卷含解析
- 2026年福建省连江县尚德中学高三接轨考试化学试题文试题含解析
- 护理教师心理健康与压力管理
- 肾移植术中每搏量变异与中心静脉压指导液体管理的效果剖析与比较
- 肾消方对糖尿病肾病大鼠肾脏蛋白激酶C活性影响的实验研究
- 肺鼻同治法对哮喘合并过敏性鼻炎的疗效及作用机制探究
- 肺血管通透性指数:急性呼吸窘迫综合征诊断的关键指标与临床价值探究
- Spark大数据技术与应用智慧树知到期末考试答案2024年
- 电加热供暖工程验收表
- 中医养生保健职业生涯发展规划
- 开封滨润新材料有限公司 20 万吨年聚合氯化铝项目环境影响报告
- 驾考三力测试模拟题含答案
- 技术创新成熟度评价标准及评价细则
- 氩弧焊焊接工艺指导书
- 中国文学理论批评史名词解释
- 小学美术-点线面 黑白灰教学课件设计
- 电力建设施工质量验收及评价规程强制性条文部分
- 力士乐-mtx micro简明安装调试手册v4updated
评论
0/150
提交评论