停车场管理系统数据结构课程设计.docx

上传人:b****4 文档编号:6997787 上传时间:2023-05-10 格式:DOCX 页数:11 大小:55.83KB
下载 相关 举报
停车场管理系统数据结构课程设计.docx_第1页
第1页 / 共11页
停车场管理系统数据结构课程设计.docx_第2页
第2页 / 共11页
停车场管理系统数据结构课程设计.docx_第3页
第3页 / 共11页
停车场管理系统数据结构课程设计.docx_第4页
第4页 / 共11页
停车场管理系统数据结构课程设计.docx_第5页
第5页 / 共11页
停车场管理系统数据结构课程设计.docx_第6页
第6页 / 共11页
停车场管理系统数据结构课程设计.docx_第7页
第7页 / 共11页
停车场管理系统数据结构课程设计.docx_第8页
第8页 / 共11页
停车场管理系统数据结构课程设计.docx_第9页
第9页 / 共11页
停车场管理系统数据结构课程设计.docx_第10页
第10页 / 共11页
停车场管理系统数据结构课程设计.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

停车场管理系统数据结构课程设计.docx

《停车场管理系统数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《停车场管理系统数据结构课程设计.docx(11页珍藏版)》请在冰点文库上搜索。

停车场管理系统数据结构课程设计.docx

停车场管理系统数据结构课程设计

停车场管理系统

一编程思想:

将停车场设计成一个虚拟的栈,将其入口设计成栈顶,在设计一个倒车场,也将其设计成一个虚拟的栈,使其入口为栈顶,再根据队列设计一个供车来停放的便道,当停车场里的车辆不为满时,车辆进入停车场,当停车场里的车辆为满时,车辆在便道里等候,当车辆从停车场里出来的时候,如果出来的不是第一个车辆,则其前面的车辆将进入倒车场里面,待车辆出去后,倒车场里的车再依次进入停车场,如果停车场不满的话,便道里等候的第一辆车进入停车场,进入停车场的时间为停车场中车辆出来的时间,再设计一个函数用来显示停车场以及便道中车辆的信息。

二程序流程图:

 

NY

三,程序代码:

#include

#defineSize3/*车库容量*/

#definePrice5/*单位价格*/

#defineNull0

typedefstructtime

{

inthour;/*时间结点*/

}Time;

typedefstruct

{

intcar_number;

Timearrivetime,leavetime;/*车信息结点*/

intfee;

}car_info;

typedefstruct

{

car_info*north;

car_info*south;/*停车场信息*/

intnumber;

}car_park;

typedefstruct

{

car_info*west;

car_info*east;/*倒车场信息*/

intnumber;

}car_park_back;

 

Typedefstructcar

{

car_info*data;

structcar*next;/*结点信息*/

}carnode;

typedefstructnode

{

carnode*head;

carnode*rear;/*便道信息*/

intnumber;

}car_park_temp;

voidinit_car_park(car_park*cp)

{

cp->north=(car_info*)malloc(Size*sizeof(car_info));/*初始化停车场*/

if(!

cp->north)printf("error\n");

cp->south=cp->north;/*令栈顶等于栈底*/

cp->number=0;

}

voidenter_car_park(car_park*cp,car_info*car)

{

*cp->south++=*car;/*车辆进入停车场*/

cp->number++;

}

intnotfull_car_park(car_park*cp)

{

inte;

if(cp->south-cp->north>=Size)/*判断常常是否已满*/

e=0;

else

e=1;

return(e);

}

intnotempty_car_park_back(car_park_back*cpb)

{

inte;

if(cpb->east==cpb->west)

e=0;/*判断倒车场是否不空*/

else

e=1;

return(e);

}

voidback_car_park(car_park*cp,car_info*car)

{

*car=*cp->south;/*进行倒车操作*/

cp->number--;

}

voidinit_car_park_back(car_park_back*cpb)

{

cpb->west=(car_info*)malloc(Size*sizeof(car_info));

if(!

cpb->west)printf("error\n");/*倒车场初始化*/

cpb->east=cpb->west;

cpb->number=0;

}

voidenter_car_park_back(car_park_back*cpb,car_info*car)

{

*cpb->east++=*car;

cpb->number++;/*进入倒车场操作*/

}

voidleave_car_park_back(car_park_back*cpb,car_info*car)

{

*car=*--cpb->east;

cpb->number--;/*离开倒车场操作*/

}

voidinit_car_park_temp(car_park_temp*cpt)

{

cpt->head=cpt->rear=(carnode*)malloc(sizeof(carnode));/*初始化便道*/

cpt->head->next=Null;

cpt->number=0;

}

voidenter_car_park_temp(car_park_temp*cpt,car_info*car)

{

carnode*p;

p=(carnode*)malloc(sizeof(carnode));/*进入便道操作*/

p->data=car;

p->next=Null;

cpt->rear->next=p;

cpt->rear=p;

cpt->number++;

}

voidleave_car_park_temp(car_park_temp*cpt,car_info*car,car_park*cp)

{

carnode*p;

p=cpt->head->next;

car=p->data;/*离开便道操作*/

cpt->head->next=p->next;

enter_car_park(cp,car);/*进入停车场操作*/

cpt->number--;

}

intnotempty_car_park_temp(car_park_temp*cpt)

{

inte;

if(cpt->head==cpt->rear)/*判断便道是否为空*/

e=0;

else

e=1;

return(e);

}

voidleave_car_park(car_park*cp,car_info*car,car_park_back*cpb)

{

inte,a1,b1,t;/*定义时间变量*/

car_info*car1,*car2;

car1=(car_info*)malloc(sizeof(car_info));/*车辆实体化*/

car2=(car_info*)malloc(sizeof(car_info));

while((--cp->south)->car_number!

=car->car_number)/*判断车号是否为要出去的车号*/

{

back_car_park(cp,car1);/*进行倒车操作*/

enter_car_park_back(cpb,car1);/*进入倒车场*/

}

car->arrivetime.hour=cp->south->arrivetime.hour;

a1=car->arrivetime.hour;

b1=car->leavetime.hour;

t=(b1-a1);

car->fee=t*Price;/*计算价格*/

printf("thetimeofthecaris%3dhour\n",t);

printf("themoneyis%3dyuan\n",car->fee);

e=notempty_car_park_back(cpb);/*判断倒车场是否为空*/

while(e==1)

{

leave_car_park_back(cpb,car2);/*离开倒车场

enter_car_park(cp,car2);进入停车场

e=notempty_car_park_back(cpb);判断倒车场是否为空*/

}

cp->number--;

}

 

voidmain()/*主函数*/

{

charch;/*定义字符和

inte,n,i;整形变量*/

car_park_back*cpb;/*定义停车场,倒车场以及便道的变量*/

car_park*cp;

car_park_temp*cpt,*cpt2;

car_info*car;

cp=(car_park*)malloc(sizeof(car_park));/*实体化变量*/

cpb=(car_park_back*)malloc(sizeof(car_park));

cpt=(car_park_temp*)malloc(sizeof(car_park_temp));

init_car_park(cp);/*实体化停车场,倒车场,便道*/

init_car_park_back(cpb);

init_car_park_temp(cpt);

do

{

car=(car_info*)malloc(sizeof(car_info));

printf("\ninputthe'A'or'L'or'X',endwith'0':

");/*输入待操作的命令*/

scanf("%s",&ch);

e=notfull_car_park(cp);/*判断车场是否为空*/

switch(ch)/*判断要输入的命令*/

{

case'A':

if(e==1)/*车场不满,进入车辆*/

{

printf("inputthecar_number:

");/*输入车辆的基本信息*/

scanf("%d",&car->car_number);

printf("inputthearrivetime:

");

scanf("%d",&(*car).arrivetime.hour);

enter_car_park(cp,car);/*进入车场*/

printf("thecarisinthecar_park,theplaceis%d\n",cp->number);

}

else/*若车场满,进入便道*/

{

enter_car_park_temp(cpt,car);

printf("inputthecar_number:

");

scanf("%d",&car->car_number);

printf("thecarisinthecar_park_temp,theplaceoftempis%d\n",cpt->number);

}

break;

case'L':

/*离开停车场*/

printf("inputthecar_number:

");/*输入要离开车辆的号码以及离开时间*/

scanf("%d",&car->car_number);

printf("inputtheleavetimeofthecar:

");

scanf("%d",&(*car).leavetime.hour);

leave_car_park(cp,car,cpb);/*执行离开车场*/

i=(*car).leavetime.hour;/*令便道里车辆进入车场的时间和车场里面的

车离开的时间相等*/

n=notempty_car_park_temp(cpt);/*判断便道是否不空*/

if(n==1)

printf("Thecar%d",cpt->head->next->data->car_number);/*记住便道里第一辆车的号码*/

leave_car_park_temp(cpt,car,cp);/*离开便道,进入停车场*/

printf("isenterthecar_park,arrivetimeis%d,theplaceofcarparkis%d\n",i,cp->number);

break;

case'X':

/*查看车场以及便道里的车辆信息*/

printf("\nThereare%dcarsincarpark!

\nFolowingisthecarnumberinthecarpark:

\n",cp->number);

for(i=1;i<=cp->number;i++)/*做循环,依次输出停车场里车辆的信息*/

printf("%d,",(cp->north++)->car_number);

cp->north=cp->north-cp->number;

cpt2->head=cpt->head;/*设一个虚拟指针使其指向头结点的下一个位置*/

if(cpt->number==0)/*便道里没有车的情况*/

printf("\nThereisnocarsintemp!

");

else

{printf("\nThereare%dcarsincartemp!

\nFolowingisthecarnumberinthecartemp:

\n",cpt->number);

for(i=1;i<=cpt->number;i++)/*做一个循环,输出便道里车辆的信息*/

{

printf("%d",cpt2->head->next->data->car_number);/*输出车辆的号码*/

cpt2->head=cpt2->head->next;

}

}

break;

default:

break;/*退出循环*/

}

}while(ch!

='0');/*退出操作*/

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2