




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、风从水上走过,留下粼粼波纹;骆驼从沙漠上走过,留下深深的脚印 ;哨鸽从天空飞过,留下串串欢韵;岁月从树林穿过,留下圈圈年轮。啊,朋友,我们从时代的舞台走过,将给社会留下些什么?花从春走过,留下缕缕花香;叶从夏走过,留下片片荫凉;风从秋走过,留下阵阵金浪;雪从冬走过,留下种种希望。啊,朋友,我们从人生的四季走过,将给人生留下些什么班级:物联网姓名:XXX学号:XXXXXXX日期:4月9日一、需求分析1、程序的功能描述按照从终端输入的数据序列进行模拟管理。1 )狭道停车用栈来实现,并且用的顺序栈,等车位的便道用队列来实现,并用链式存储。2 )每一组输入信息包含三个数据项,汽车的“到达”和“离去”的
2、信息,汽车牌照号码,汽车“到达”或“离去”的时刻。3 )对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出车辆在停车场内或便道上的停车位置;若是车子离去,则输出车辆在停车场内停留的时间和缴纳的费用。(假设在便道等车的时间不收费)4 )选作内容:(1)便道也是要收费的,仅仅比狭道收费便宜点。(2)狭道上的车可以直接开走。2、输入/输出的要求首先选择操作的模块,根据提示输入车牌和到达时间,程序会告知是否停满或者停车车位。车牌为10个字符以内的字符串,时间的输入中间有冒号把时分隔开。3、测试数据1苏D5431:101苏Q1231:201苏D1451:30二、概要设计1、本程序所用的抽象数据
3、类型的定义typedefstructNODECarNode*stackMAX+1;inttop;SeqStackCar;/狭道的堆栈顺序存储typedefstructcarCarNode*data;structcar*next;QueueNode;/队列的链式存储typedefstructNodeQueueNode*head;QueueNode*rear;LinkQueueCar;/便道上等候的队列定义2、主模块的流程及各子模块的主要功能车辆到达:intArrival(SeqStackCar*Enter,LinkQueueCar*W)首先定义一个栈和队列的结构体指针为:*p,*t。然后申请一个
4、车辆信息的内存空间,并把它赋给栈指针。车辆到达时就输入车牌号,并通过if(Enter->top<MAX)来判断该车是进车场内还是进便道上,如果是进车场内就把top加1,显示在车场内的位置,还要输入进车场的时间,然后把该节点进栈。如果是else就显示该车要停在便道上,并进行进队列的操作。车辆离开:voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)定义一个整型变量room记录要离开车辆的位置,定义两个栈指针和一个队列指针,用个if(Enter->top>0)确保栈不空,然后用个while(1)确保输入的车
5、辆离开位置的合法性。如果不和法,显示输入有误,要重新输入。通过while(Enter->top>room)判断离开车辆的位置,如果是中间位置,就要再用一个栈前面临时开出来的车,等要开出的车开出后,再把临时栈的车看进车场内,并要调用PRINT(p,room);这个函数计算显示费用。然后还要用if(W->head!=W->rear)&&Enter->top<MAX)语句判断便道上有没有车,如果有车就要显示进车场的车的车牌号,并登记进入时间。没有落日般的瑰丽,没有流云般的飘逸,但可以有水晶般的清纯与透明。没有大山般的巍峨,没有湖水般的轻柔,但可以有
6、岩石般的坚毅与稳重。没有大海般的浩瀚,没有瀑布般的飞泻,但可以有泥土般的朴素与随和。风从水上走过,留下粼粼波纹;骆驼从沙漠上走过,留下深深的脚印 ;哨鸽从天空飞过,留下串串欢韵;岁月从树林穿过,留下圈圈年轮。啊,朋友,我们从时代的舞台走过,将给社会留下些什么?花从春走过,留下缕缕花香;叶从夏走过,留下片片荫凉;风从秋走过,留下阵阵金浪;雪从冬走过,留下种种希望。啊,朋友,我们从人生的四季走过,将给人生留下些什么3、模块之间的层次关系主函数中包含着各个函数模块,各模块也在互相调用。比如,离开函数中要计算停车费,故要调取价格函数。价格函数计算要用到离开和进入的时间,又要调用进入和离开函数。三、详细
7、设计1、采用C语言定义相关的数据类型#defineMAX3/停车场最大容量为3辆,便于观察#defineprice0.05typedefstructtime/定义时间结构体inthour;intmin;Time;typedefstructnode/定义车辆信息结构体charnum10;Timereach;Timeleave;CarNode;2、写出各模块的伪码算法voidPRINT(CarNode*p,introom)/车辆收费intA1,A2,B1,B2;printf("n车辆离开的时间:");scanf("%d:%d",&(p->lea
8、ve.hour),&(p->leave.min);printf("n离开车辆的车牌号为:");puts(p->num);printf("n其到达停车位时间);printf("n离开停车位时间为:);A1=p->reach.hour;A2=p->reach.min;B1=p->leave.hour;B2=p->leave.min;printf("n应交费用为:%2.1f元”,(B1-A1)*60+(B2-A2)*price+PRINTE(p,room);没有落日般的瑰丽,没有流云般的飘逸,但可以有水晶般
9、的清纯与透明。没有大山般的巍峨,没有湖水般的轻柔,但可以有岩石般的坚毅与稳重。没有大海般的浩瀚,没有瀑布般的飞泻,但可以有泥土般的朴素与随和。风从水上走过,留下粼粼波纹;骆驼从沙漠上走过,留下深深的脚印 ;哨鸽从天空飞过,留下串串欢韵;岁月从树林穿过,留下圈圈年轮。啊,朋友,我们从时代的舞台走过,将给社会留下些什么?花从春走过,留下缕缕花香;叶从夏走过,留下片片荫凉;风从秋走过,留下阵阵金浪;雪从冬走过,留下种种希望。啊,朋友,我们从人生的四季走过,将给人生留下些什么free(p);intArrival(SeqStackCar*Enter,LinkQueueCar*W)进入便道或者狭道CarN
10、ode*p;QueueNode*t;p=(CarNode*)malloc(sizeof(CarNode);flushall();printf("n请输入车牌号(例:豫B1234):");gets(p->num);if(Enter->top<MAX)Enter->top+;printf("n车辆在车场第明置.",Enter->top);printf("n车辆到达时间:");scanf("%d:%d",&(p->reach.hour),&(p->reach.mi
11、n);Enter->stacktop=p;return(1);elseprintf("n该车须在便道等待!有车位时进入车场");t=(QueueNode*)malloc(sizeof(QueueNode);进入队列,调整指针;printf("请输入进入便道的时间");scanf("%d:%d",&(p->reach.hour),&(p->reach.min);return(1);voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)/车
12、辆的离开introom;CarNode*p,*t;QueueNode*q;if(Enter->top>0)/判断车场是否为空while(1)printf("n请输入车在车场的位置/1-%d/:",Enter->top);scanf("%d",&room);if(room>=1&&room<=Enter->top)break;elseprintf("n输入有误,请重输:");while(Enter->top>room)/把要删除的车辆的前面的车开出来,进临时栈。Te
13、mp->top+;Temp->stackTemp->top=Enter->stackEnter->top;Enter->stackEnter->top=NULL;Enter->top-;p=Enter->stackEnter->top;/把要删除的车辆节点赋给p。Enter->stackEnter->top=NULL;Enter->top-;while(Temp->top>=1)/再把临时栈里德车辆进停车场Enter->top+;Enter->stackEnter->top=Temp-&
14、gt;stackTemp->top;Temp->stackTemp->top=NULL;Temp->top-;PRINT(p,room);/调用计费函数计费。if(W->head!=W->rear)&&Enter->top<MAX)/如果便道上有车,则再开进停车场。q=W->head->next;t=q->data;Enter->top+;scanf("%d:%d",&(t->reach.hour),&(t->reach.min);/t->leave.h
15、our=t->reach.hour;t->leave.min=t->reach.min;W->head->next=q->next;if(q=W->rear)W->rear=W->head;Enter->stackEnter->top=t;PRINTE(t,room);free(q);elseprintf("n便道里没有车.n");elseprintf("n车场里没有车.");3、画出函数的调用关系图|>到达函数|>离开函数>停车费用主函数>显示车场里的情况|>
16、;显示便道里的情况四、调试分析1、调试中遇到的问题及对问题的解决方法因为时间结构体里的小时,分钟都是用的是整型,所以如果出现1:01这个时间的话,会导致显示列表是1:1;这样的话会造成人的误解,同时会导致程序对停车缴纳的费用计算错误。解决方法1,可以用数组和或者字符串来表示时间,但是问题来了,要是用字符串的话,算停车费有点问题,要废上一段时间的,会提高复杂度。解决方案2:将输出用右对齐方式,缺位的用0补齐,这样最快捷啦!2、算法的时间复杂度和空间复杂度由于没有进行循环嵌套之类的运算,只有简单的循环语句,所以时间复杂度T(O)=O(n),在数据的存储方面,除了车牌号用的是数组以外,便道用的是顺序
17、栈,这些是提前要申请一定的存储空间的,这样非动态分配的存储空间,在某些时候是会导致空间的浪费,增加其空间复杂度。其余的都是结构体和链式存储的队列属于动态存储。当停车场的规模较小时,空间复杂度较小,随着规模的增加,动态存储的扩充,空间复杂度也随之增加。五、使用说明及测试结果(给出程序的使用说明、注意事项及不同情况的测试结果)时间以24进制计算,停车时间不能跨越24进制。车牌号是10个字符串以内,不可溢出。"G:新建文件夹冲停2mbugZexe”ttttttttttttttiiatttttttttttttt3.车辆列表显示,ttttttttttttttntttttttttttttt04.
18、退出系统.tttttttttttttttttttltttttttttttt请选择:2请输入车在车场的位置"一3,:T车辆离开的时间式二加离开车辆的车牌号为:苏DS3没有落日般的瑰丽,没有流云般的飘逸,但可以有水晶般的清纯与透明。没有大山般的巍峨,没有湖水般的轻柔,但可以有岩石般的坚毅与稳重。没有大海般的浩瀚,没有瀑布般的飞泻,但可以有泥土般的朴素与随和。开车辆的车牌号为:苏D543置一位01 -1 1机1:元元.进进间为吼号号小!_ : -"2323道时为为HIW1便道用父道蛤第一个应缴费用是在便道中的费用,第二个费用是总费用。六、源程序(要求程序简洁、清晰、主要语句带注释
19、)代码非本人写,对其进行改进而已#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX3/停车场最大容量为3辆,便于观察#defineprice0.05#definepricee0.02typedefstructtime/定义时间结构体inthour;intmin;Time;typedefstructnode/定义车辆信息结构体charnum10;Timereach;Timeleave;CarNode;typedefstructNODECarNode*stackMAX+1;inttop;
20、SeqStackCar;typedefstructcarCarNode*data;structcar*next;QueueNode;typedefstructNodeQueueNode*head;QueueNode*rear;LinkQueueCar;voidInitStack(SeqStackCar*);intInitQueue(LinkQueueCar*);intArrival(SeqStackCar*,LinkQueueCar*);voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);voidList(SeqStackCar,LinkQue
21、ueCar);voidmain()SeqStackCarEnter,Temp;LinkQueueCarWait;intch;system("color4A");InitStack(&Enter);InitStack(&Temp);InitQueue(&Wait);while(1)printf("n§派§派§派§§派§欢迎使用停车场系统.§X§X§X§X § X § tnn");printf("n'
22、;t# 1.printf("n't# 2.printf("nt# 3.printf("nt# 4.while(1)printf("请选择:");车辆到达登记.#t'n"); 车辆离开登记.#tn"); 车辆歹”表显示.#tn"); 退出系统.#tnn");scanf("%d",&ch);if(ch>=1&&ch<=4)break;elseprintf("n输入有误,请重新选择:14:");switch(ch)cas
23、e1:Arrival(&Enter,&Wait);break;case2:Leave(&Enter,&Temp,&Wait);break;case3:List(Enter,Wait);break;case4:exit(0);default:break;/自定义函数voidInitStack(SeqStackCar*s)/栈的初始化inti;s->top=0;for(i=0;i<=MAX;i+)s->stacks->top=NULL;intInitQueue(LinkQueueCar*Q)/队列的初始化Q->head=(Que
24、ueNode*)malloc(sizeof(QueueNode);if(Q->head!=NULL)Q->head->next=NULL;Q->rear=Q->head;return;elsereturn(-1);floatPRINTE(CarNode*p,introom)/车辆收费intA1,A2,B1,B2;printf("n车辆离开便道的时间:");scanf("%d:%d",&(p->leave.hour),&(p->leave.min);printf("n离开车辆的车牌号为:&
25、quot;);puts(p->num);printf("n其到达便道时间为:d:%d",p->reach.hour,p->reach.min);printf("n离开便道时间为:d:%d",p->leave.hour,p->leave.min);A1=p->reach.hour;A2=p->reach.min;B1=p->leave.hour;B2=p->leave.min;printf("n应交费用为:%2.1f元”,(B1-A1)*60+(B2-A2)*pricee);return(B1
26、-A1)*60+(B2-A2)*pricee);free(p);voidPRINT(CarNode*p,introom)/车辆收费intA1,A2,B1,B2;printf("n车辆离开的时间:");scanf("%d:%d",&(p->leave.hour),&(p->leave.min);printf("n离开车辆的车牌号为:");puts(p->num);printf("n其到达停车位时间为:d:%d",p->reach.hour,p->reach.min);pr
27、intf("n离开停车位时间为:d:%d",p->leave.hour,p->leave.min);A1=p->reach.hour;A2=p->reach.min;B1=p->leave.hour;B2=p->leave.min;printf("n应交费用为:2.1f元”,(B1-A1)*60+(B2-A2)*price+PRINTE(p,room);free(p);/车辆的到达登记intArrival(SeqStackCar*Enter,LinkQueueCar*W)CarNode*p;QueueNode*t;p=(CarN
28、ode*)malloc(sizeof(CarNode);flushall();printf("n请输入车牌号(例:豫B1234):");gets(p->num);if(Enter->top<MAX)Enter->top+;printf("n车辆在车场第明置.",Enter->top);printf("n车辆到达时间:");scanf("%d:%d",&(p->reach.hour),&(p->reach.min);Enter->stackEnter-&
29、gt;top=p;return(1);elseprintf("n该车须在便道等待!有车位时进入车场");t=(QueueNode*)malloc(sizeof(QueueNode);t->data=p;t->next=NULL;W->rear->next=t;W->rear=t;printf("请输入进入便道的时间");scanf("%d:%d",&(p->reach.hour),&(p->reach.min);return(1);voidLeave(SeqStackCar*E
30、nter,SeqStackCar*Temp,LinkQueueCar*W)风从水上走过,留下粼粼波纹;骆驼从沙漠上走过,留下深深的脚印 ;哨鸽从天空飞过,留下串串欢韵;岁月从树林穿过,留下圈圈年轮。啊,朋友,我们从时代的舞台走过,将给社会留下些什么?花从春走过,留下缕缕花香;叶从夏走过,留下片片荫凉;风从秋走过,留下阵阵金浪;雪从冬走过,留下种种希望。啊,朋友,我们从人生的四季走过,将给人生留下些什么/车辆的离开introom;CarNode*p,*t;QueueNode*q;if(Enter->top>0)/判断车场是否为空while(1)printf("n请输入车在车
31、场的位置/1-%d/:",Enter->top);scanf("%d",&room);if(room>=1&&room<=Enter->top)break;elseprintf("n输入有误,请重输:");while(Enter->top>room)/把要删除的车辆的前面的车开出来,进临时栈。Temp->top+;Temp->stackTemp->top=Enter->stackEnter->top;Enter->stackEnter->top
32、=NULL;Enter->top-;p=Enter->stackEnter->top;/把要删除的车辆节点赋给p。Enter->stackEnter->top=NULL;Enter->top-;while(Temp->top>=1)/再把临时栈里德车辆进停车场Enter->top+;Enter->stackEnter->top=Temp->stackTemp->top;Temp->stackTemp->top=NULL;Temp->top-;PRINT(p,room);/调用计费函数计费。if(W-
33、>head!=W->rear)&&Enter->top<MAX)/如果便道上有车,则再开进停车场。q=W->head->next;t=q->data;Enter->top+;printf("n便道的$号车进入车场第d位置.",t->num,Enter->top);printf("n请输入s号车进入车场的时间:",t->num);scanf("%d:%d",&(t->reach.hour),&(t->reach.min);没有落
34、日般的瑰丽,没有流云般的飘逸,但可以有水晶般的清纯与透明。没有大山般的巍峨,没有湖水般的轻柔,但可以有岩石般的坚毅与稳重。没有大海般的浩瀚,没有瀑布般的飞泻,但可以有泥土般的朴素与随和。风从水上走过,留下粼粼波纹;骆驼从沙漠上走过,留下深深的脚印 ;哨鸽从天空飞过,留下串串欢韵;岁月从树林穿过,留下圈圈年轮。啊,朋友,我们从时代的舞台走过,将给社会留下些什么?花从春走过,留下缕缕花香;叶从夏走过,留下片片荫凉;风从秋走过,留下阵阵金浪;雪从冬走过,留下种种希望。啊,朋友,我们从人生的四季走过,将给人生留下些什么/t->leave.hour=t->reach.hour;t->l
35、eave.min=t->reach.min;W->head->next=q->next;if(q=W->rear)W->rear=W->head;Enter->stackEnter->top=t;PRINTE(t,room);free(q);elseprintf("n便道里没有车.n");elseprintf("n车场里没有车.");voidList1(SeqStackCar*S)/显示车场里的车辆情况inti;if(S->top>0)printf("n车场:");printf("n位置到达时间车牌号n");for(i=1;i<=S->top;i+)printf("%d",i);pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预付貨款合同范本
- 个人承运劳务合同范本
- 量具订货合同范本
- 夫妻出轨赔偿合同范本
- 建设储水塘合同范本
- 合办公司合同范本
- 国内旅游攻略
- 厨房出品操作讲解
- 面膜的工艺流程
- 2025年中考作文模拟预测:《成长中的那束光》写作指导+佳作展示
- GB 30510-2024重型商用车辆燃料消耗量限值
- DB34∕ 1659-2022住宅工程质量常见问题防治技术规程
- 2024江苏宿迁宿豫区总工会公开招聘5人易考易错模拟试题(共200题)试卷后附参考答案
- 延长石油行测真题
- 2024过敏性休克抢救指南(2024)课件干货分享
- 2024年黑龙江省通信工程安全员(B证)考试题库及答案(管局版)
- 2024-2025学年高考数学一轮复习解题技巧方法第三章第3节角平分线性质定理与张角定理教师版
- 消防设施检查记录
- 2024智能网联汽车自动驾驶功能仿真试验方法及要求
- 重大事件保电作业指导书
- 山东省济南市2022-2023学年六年级下学期语文期末考试试卷(含答案)
评论
0/150
提交评论