数据结构c语言版课程设计停车场管理系统Word文档下载推荐.docx
- 文档编号:14681696
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:23
- 大小:98.05KB
数据结构c语言版课程设计停车场管理系统Word文档下载推荐.docx
《数据结构c语言版课程设计停车场管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构c语言版课程设计停车场管理系统Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
//全局变量日志打印位置
typedefstruct
{inthour;
intminute;
}Time,*PTime;
/*时间结点*/
typedefstruct/*定义栈元素的类型即车辆信息结点*/
{intnum;
/*车牌号*/
Timearrtime;
/*到达时刻或离区时刻*/
}CarNode;
typedefstruct/*定义栈,模拟停车场*/
{CarNodestack[MaxSize];
inttop;
}SqStackCar;
typedefstructnode/*定义队列结点的类型*/
{intnum;
structnode*next;
}QueueNode;
typedefstruct/*定义队列,模拟便道*/
{QueueNode*front,*rear;
}LinkQueueCar;
/*函数声明*/
PTimeget_time();
CarNodegetcarInfo();
voidqingping(inta);
voidgotoxy(intx,inty);
voidprintlog(Timet,intn,intio,charab,intpo,doublef);
voidprintstop(inta,intnum,intx0,inty0);
voidprintleave(inta,intpo,intnum);
/*初始化栈*/
voidInitSeqStack(SqStackCar*s)
{
s->
top=-1;
}
/*push入站函数*/
intpush(SqStackCar*s,CarNodex)//数据元素x入指针s所指的栈
if(s->
top==MaxSize-1)
return(0);
//如果栈满,返回0
else
{
s->
stack[++s->
top]=x;
//栈不满,到达车辆入栈
return
(1);
}
}
/*栈顶元素出栈*/
CarNodepop(SqStackCar*s)
CarNodex;
top<
0)
x.num=0;
x.arrtime.hour=0;
x.arrtime.minute=0;
return(x);
//如果栈空,返回空值
top--;
return(s->
stack[s->
top+1]);
//栈不空,返回栈顶元素
}
/*初始化队列*/
voidInitLinkQueue(LinkQueueCar*q)
q->
front=(QueueNode*)malloc(sizeof(QueueNode));
//产生一个新结点,作头结点
if(q->
front!
=NULL)
q->
rear=q->
front;
front->
next=NULL;
num=0;
//头结点的num保存队列中数据元素的个数
}
/*数据入队列*/
voidEnLinkQueue(LinkQueueCar*q,intx)
QueueNode*p;
p=(QueueNode*)malloc(sizeof(QueueNode));
//产生一个新结点
p->
num=x;
rear->
next=p;
//新结点入队列
rear=p;
num++;
//队列元素个数加1
/*数据出队列*/
intDeLinkQueue(LinkQueueCar*q)
intn;
front==q->
rear)//队空返回0
p=q->
next;
next=p->
if(p->
next==NULL)
q->
n=p->
num;
free(p);
num--;
return(n);
//返回出队的数据信息
/*********************车辆到达***************************/
//参数:
停车栈停车队列车辆信息
//返回值:
空
//功能:
对传入的车辆进行入栈栈满则入队列
voidArrive(SqStackCar*stop,LinkQueueCar*lq,CarNodex)
intf;
f=push(stop,x);
//入栈
if(f==0)//栈满
EnLinkQueue(lq,x.num);
//入队
printstop(1,lq->
num,0,23);
printlog(x.arrtime,x.num,1,'
B'
lq->
num,0);
qingping(0);
printf("
您的车停在便道%d号车位上\n"
num);
//更新对话
printstop(0,stop->
top+1,0,23);
P'
stop->
top+1,0);
qingping(0);
您的车停在停车场%d号车位上\n"
top+1);
//更新对话
qingping
(1);
按任意键继续"
);
getch();
/**************************车辆离开*************************************/
停车栈指针s1,暂存栈指针s2,停车队列指针p,车辆信息x
查找栈中s1的x并出栈,栈中没有则查找队p中并出队,打印离开收费信息
voidLeave(SqStackCar*s1,SqStackCar*s2,LinkQueueCar*p,CarNodex)
doublefee=0;
intposition=s1->
top+1;
//车辆所在车位
intn,f=0;
CarNodey;
QueueNode*q;
while((s1->
top>
-1)&
&
(f!
=1))//当栈不空且未找到x
y=pop(s1);
if(y.num!
=x.num)
{
n=push(s2,y);
position--;
}
else
f=1;
if(y.num==x.num)//找到x
gotoxy(33,17);
%d:
%-2d"
(x.arrtime.hour-y.arrtime.hour),(x.arrtime.minute-y.arrtime.minute));
fee=((x.arrtime.hour-y.arrtime.hour)*60+(x.arrtime.minute-y.arrtime.minute))*PRICE+BASEPRICE;
gotoxy(48,17);
%2.1f元\n"
fee);
确认您的车辆信息"
qingping
(1);
getch();
while(s2->
top>
-1)
{y=pop(s2);
f=push(s1,y);
n=DeLinkQueue(p);
if(n!
=0)
y.num=n;
y.arrtime=x.arrtime;
printleave(p->
num+1,position,s1->
//出栈动画ji队列成员入栈
printlog(x.arrtime,x.num,0,'
position,fee);
printlog(y.arrtime,y.num,1,'
s1->
printleave(0,position,s1->
top+2);
else//若栈中无x
{
-1)//还原栈
y=pop(s2);
f=push(s1,y);
q=p->
f=0;
position=1;
while(f==0&
q->
next!
=NULL)//当队不空且未找到x
if(q->
next->
num!
q=q->
position++;
else//找到x
next=q->
p->
if(q->
rear=p->
gotoxy(33,17);
0:
0"
gotoxy(48,17);
0元"
qingping(0);
printf("
您的车将离便道"
qingping
(1);
getch();
printleave(-1,position,p->
num+1);
//出队动画
position,0);
if(f==0)//未找到x
停车场和便道上均无您的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 语言版 课程设计 停车场 管理 系统