欢迎来到天天文库
浏览记录
ID:22287458
大小:351.12 KB
页数:14页
时间:2018-10-28
《数据结构实验报告模拟停车场管理(含代码)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、模拟停车场管理班级:物联网姓名:XXX学号:XXXXXXX日期:4月9円一、需求分析1、程序的功能描述按照从终端输入的数据序列进行模拟管理。1)狭道停车川栈来实现,丼且川的顺序栈,等车位的便道川队列来实现,并川链式存储。2)每一组输入信息包含三个数据项,汽车的“到达”和“离去”的信息,汽车牌照号码,汽车“到达”或“离去”的吋刻。3)对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出车辆在停车场内或便道上的停车位置;若足车子离去,则输出车辆在停车场内停留的吋间和缴纳的费川。(假设在便道等车的吋间不收费)4)选作内容:(1)便道也是耍收费的,仅仅比狭道收费便
2、宜点。(2)狭道上的车可以直接开走。2、输入/输出的要求首先选择操作的模块,根裾提示输入车牌和到达吋间,程序会告知足否停满或者倥车车位。车牌为10个字符以内的字符中,时间的输入中间有胃号把时分隔开。3、测试数据1苏D5431:101苏Q1231:201苏D1451:30二、概耍设计1、木程序所用的抽象数据类型的定义typedefstructNODE{CarNode*stack[MAX+ll;inttop;}SeqStackCar;//狭道的堆栈顺序存储typedefstructcar{CarNode*data;structcar*ncxt;}QueueNode;/
3、/队列的链式;存储typedefstructNode}QueueNode*head;QueueNode*rear;)LinkQueueCar;//便道上等候的队列定义2、主模块的流程及各子模块的主要功能①午:辆到込:intArrival(SeqStackCar*Enter,LinkQueueCar*W)首先定义一个栈和队列的结构体指针为:*p,*t。然后中诺一个车辆信息的内存空间,并把它赋给栈指针。车辆到达时就输入车牌兮,并通过if(Enter-〉tOp4、1川,然后把该节点进栈。如果足else就显示该车要停在便道上,外进行进队列的操作。©午:辆离开:voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)定义一个整型变量mom记录耍离开车辆的位置,定义W个栈桁针和一个队列指针,川个if(Enter->top>0)确保栈不空,然后用个while(l)确保输入的车辆离开位置的合法性。如果不和法,显示输入存识,要重新输入。通过while(Enter->top>room)判断离开车辆的位H,如果足中间位H,就要再用一个栈前面临吋开出来的车,等要开出的车开出后,5、再把临吋找的车看进车场内,并要凋用PRINT(p,moin);这个函数计算显示费用。然后还耍用if((W->head!=W->rear)&&Enter->top6、,便于观察#defineprice0.05typedefstructtime{//定义时问结构体inthour;intmin;}Time;typedefstructnode{//定义车辆信息结构体charnum[l0];Timereach;Timeleave;}CarNode;2、写出各模块的伪码算法voidPRINT(CarNode*p,introom){//牢辆收费intAl,A2,B1,B2;printf("车辆离开的时间;scanf(,z%d:%d,z,&(p->1cave,hour),&(p->leave.min));printfC离开车辆的车牌7、号为:");puts(p->num);printf("其到达停车位吋问);printf("离JT•停车位时间为:);Al=p->reach.hour;A2=p-〉reach,min;Bl=p->1eave,hour;B2=p->leave.min;printf(〃应交费用为:%2.If元'((Bl-Al)*60+(B2-A2))*price+PRINTE(p,room));free(p);intArrival(SeqStackCar*Rnter,LinkQueueCar*W)//进入便道或者嫉道CarNode*p;QueueNode氺t;p=(CarN8、ode*)
4、1川,然后把该节点进栈。如果足else就显示该车要停在便道上,外进行进队列的操作。©午:辆离开:voidLeave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)定义一个整型变量mom记录耍离开车辆的位置,定义W个栈桁针和一个队列指针,川个if(Enter->top>0)确保栈不空,然后用个while(l)确保输入的车辆离开位置的合法性。如果不和法,显示输入存识,要重新输入。通过while(Enter->top>room)判断离开车辆的位H,如果足中间位H,就要再用一个栈前面临吋开出来的车,等要开出的车开出后,
5、再把临吋找的车看进车场内,并要凋用PRINT(p,moin);这个函数计算显示费用。然后还耍用if((W->head!=W->rear)&&Enter->top6、,便于观察#defineprice0.05typedefstructtime{//定义时问结构体inthour;intmin;}Time;typedefstructnode{//定义车辆信息结构体charnum[l0];Timereach;Timeleave;}CarNode;2、写出各模块的伪码算法voidPRINT(CarNode*p,introom){//牢辆收费intAl,A2,B1,B2;printf("车辆离开的时间;scanf(,z%d:%d,z,&(p->1cave,hour),&(p->leave.min));printfC离开车辆的车牌7、号为:");puts(p->num);printf("其到达停车位吋问);printf("离JT•停车位时间为:);Al=p->reach.hour;A2=p-〉reach,min;Bl=p->1eave,hour;B2=p->leave.min;printf(〃应交费用为:%2.If元'((Bl-Al)*60+(B2-A2))*price+PRINTE(p,room));free(p);intArrival(SeqStackCar*Rnter,LinkQueueCar*W)//进入便道或者嫉道CarNode*p;QueueNode氺t;p=(CarN8、ode*)
6、,便于观察#defineprice0.05typedefstructtime{//定义时问结构体inthour;intmin;}Time;typedefstructnode{//定义车辆信息结构体charnum[l0];Timereach;Timeleave;}CarNode;2、写出各模块的伪码算法voidPRINT(CarNode*p,introom){//牢辆收费intAl,A2,B1,B2;printf("车辆离开的时间;scanf(,z%d:%d,z,&(p->1cave,hour),&(p->leave.min));printfC离开车辆的车牌
7、号为:");puts(p->num);printf("其到达停车位吋问);printf("离JT•停车位时间为:);Al=p->reach.hour;A2=p-〉reach,min;Bl=p->1eave,hour;B2=p->leave.min;printf(〃应交费用为:%2.If元'((Bl-Al)*60+(B2-A2))*price+PRINTE(p,room));free(p);intArrival(SeqStackCar*Rnter,LinkQueueCar*W)//进入便道或者嫉道CarNode*p;QueueNode氺t;p=(CarN
8、ode*)
此文档下载收益归作者所有