c语言车辆管理系统课程设计.docx
《c语言车辆管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《c语言车辆管理系统课程设计.docx(12页珍藏版)》请在冰点文库上搜索。
![c语言车辆管理系统课程设计.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/0db519e3-ac86-4380-ab79-239a6de7ac4d/0db519e3-ac86-4380-ab79-239a6de7ac4d1.gif)
c语言车辆管理系统课程设计
#include
#incIude
#incIude
#defineMAX3/*车库容量*/
#definepriceOx5/*每车每分钟费用*/
typedefstruettime
{
qinthour;
intmin;
}Time;/*时间结点*/
typedefstruetnode
{
charnum[10];
oTimereach;
Timeleave;
ICarNode;/*车辆信息结点*/
typedefstructNODE
{
CarNode*stack[MAX+1];
qinttop;
}Moni_Cheku;
typedefstruetcar
CarNode*data;structcar*next;
}QueueNode;
typedefstructNode
{
oQueueNode*head;
QueueNode*rear;
*);/*初始化车库*/
}MoniBiandao;
voidInitStack(MoniChekuintlnitQueue(Moni_Biandao*);
/*初始化便道*/
intArrivaI(MoniCheku
沃.Moni_Biandao*);/*
车辆到达*/
voidLea
ve(MoniCheku
*,MoniCheku*,M
oniBiand
ao*);/*车辆离开*/
voidList
(Moni_Cheku,Moni_Biandao);/*显示车库
与便道得存车信息*/
intmain()oMoni_ChekuEnter,Temp;
Moni_BiandaoWait;
iritch;
InitStack(&Enter);/*初始化车站*/
。
InitStack(&Temp);/*初始化让路得临时链表*/
。
InitQueue(&Wait);/沃初始化便道沃/
printfCAnO;
printf(nl八欢迎进入停车场管理系统1!
—\n“);
printf(”\n“);
。
printf(”提示!
(1)、该车库得最大容量为:
%d;\n“,MAX);printf(H
(2)x该车库得收费标准为:
%4、2f元/(辆*分钟)、\n",price);
while
(1)
。
{
osystem("CLS");
printf("******头*************主菜单*******
********头****\门”);
…printf(“1、车辆到达”);
。
printf(H2、车辆离开”);
oprintf("3、列表显示”);
printf("4、退出系统\n");
bprintf("****************沃*****************
************\门”);
oprintf(n请选择(1-4):
[]\b\bn);
oowhile
(1)
»oscanf(”%d",&ch);
a®if(ch>=1&&ch<=4)break;
oooeIseprintf("错误!
请重选(1-4):
[]\b\b");
}
switch(ch)
。
{
case1:
ArrivaI(&Enter,&帕it);break;/*车
辆到达*/
»case2:
Leave(&Enter,&Temp,&Wait);break;/*车辆离开*/
case3:
List(Enter,Wait):
break;/*打印列表信息*/
£>ocase4:
exit(0);/*退出主程序*/
defau11:
break;
。
}
)
oreturn0;
}
voidInitStack(MoniCheku*s)/*初始化车库*/
ointi;
os->top二0;
ofor(i=0;i<=MAX;i++)
s->stack[s->top]=NULL;
}
intInitQueue(Moni_Biandao沃Q)/*初始化便道*/
{
oQ—>head=(QueueNode*)maIIoc(sizeof(QueueNod
e));
oif(Q->head!
=NULL)
。
{
oQ->head->next二NULL;
Q->rear=Q->head;
«return
(1);
。
}
oelsereturn(-1);
}
voidPRINT(CarNode*p,introom)/*输出出库车得信
息、*/
。
intA1,A2,B1,B2;
printf(”请输入离开得时间:
/**:
**/”);
ooseanf("%d:
%d",&(p->leave、hour),&(p—>leave、m
in));
oprintf(“离开车辆得车牌号为:
”);
puts(p->num);
printf("其到达时间为:
%d:
%d\n",p->reach、hour,p-〉reach、min);
oprintf("离开时间为:
%d:
%d\n",p—>leavexhour,p
—>1eave、min);
oA1=p—>reach、hour;
»A2=p->reach、min;
B1=p—>leave、hour:
ooB2=p->Ieavesmin;
printf(u应交费用为:
%4、2f元”,((B1一A1)*60+(B2-A2))*price);
oofree(p);
。
}
}
intArrivaI(MoniCheku*Enter,MoniBiandao*W)
/*车辆到达*/
qCarNode*p;oQueueNode*t;
p=(CarNode*)malloc(sizeof(CarNode));
offIush(stdin);
oprintfC请输入车牌号(例如:
中CUG888):
”);
scanf("%s",&(p—>num));
if(Enter->top{
oEnter—>top++;
printfC1该车在车库位置%八\n”,Enter->top);
printf("请输入到达时间(**:
**):
”);
seanf("%d:
%d",&(p—>reachxhour),&(p->rea
ch、min));
o«>Enter->stack[Enter->top]=p;
oreturn
(1);
。
}
。
else/*车库已满,车进便道*/
{
printf(”该车须在便道等待!
\十);
t=(QueueNode*)maIIoc(sizeof(QueueNode));
t->data=p;
…t一>next二NULL;
0W->rear—>next二t;
qW->rear二t;
return
(1);
)
}
voidLeave(MoniCheku*EnterrMoniCheku
Moni_Biandao*W)/*车辆离开*/
{
inti,room;
CarNode*p,*t;
oQueueNode*q;
0/*判断车库内就是否有车沃/
if(Enter->top>0)/*有车*/
。
{
6printf("请输入车在车库得位置(1--%d):
",
p);/*输入车辆离开得信息*/
while
(1)
{
oscanf("%d",&room);
a。
if(room>=1&&room<=Enter->top)
*Temp,
Enter->to
break;
oeIseprintfC错误!
请重选:
");
0whiIe(Enter->top>room)/*车辆离开*/
aaTemp->top++;
qTemp->stack[Temp—>top]二Enter—>stack[Enter->top];
qqqEnter—>stack[Enter->top]=NULL;
qEnter->top-一;
QQ}
p=Enter->stack[Enter->top];
aEriter->stack[Enter—>top]二NULL;
Eriter->top-一;
while(Temp->top>=1)
。
{
0aEnter—>top++;
ooEnter->stack[Enter—>top]二Temp—>stack[Tetup->top];
qTernp->stack[Temp一〉top]=NULL;
nTemp->top—;
。
}
PRINT(p,room);/*判断通道上就是否有车及车库就是否
已;茜次/
。
if((W—>head!
二W->rear)&&Enter—>top<
MAX)/*便道得车辆进入车库*/
q=W->head->next;
…t二q—>data;
nEnter->top++;
qqprintf(u\n便道得%s号车进入车场第%d位置、t->num,
Enter—>top);bbbprintf("\n请输入现在得时间(**:
**):
”);
noscant("%d:
%d"r&(t->reach、hour).&(t->reachvmin));
qaqW->head-〉next=q->next;
ooif(q==W->rear)W~>rear=W->head;
QEriter->stack[Enter—>top]二t;
°free(q);
。
}
oelseprintfCAn便道里没有车、\nH);
。
}
。
elseprintf("车库里没有车!
\nM);/*没车*/
}
voidList1(Moni_Cheku*S)/*列表显示车库信息*/
。
if(S->top>0)/*判断车库内就是否有车*/
printfC车库号到达时间\t车牌号\n-);
。
for(i=1;i<=S—>top;i++)
。
{
oooprintf(”%d",i);
oooprintf("\t%d:
%d",S->stack[订一>reach、
hour,S->stack[i]->reach、min);
ooprintf("\t\t%s\n",S~>stack[i]->num);
00}
。
}
oelseprintfC1车库里没有车\n”);
}
voidList2(Moni_Biandao*W)/*列表显示便道信息次/
{
QueueNode*p;
op=W—>head->next;
if(W->head!
=W->rear)/*判断便道上就是否有车*/
。
{
。
。
printf(”在便道里等待得车辆得号码为:
\n");
owhile(p!
=NULL)
puts(p->data—>num);
op=p->next;
。
}
。
}
elseprintf(”便道里没有车、\nH);
}
voidList(Moni_ChekuS,Moni_BiandaoW)
{
intflag,tag;
oflag=1;
owhiIe(fIag)
。
{
printf(”**********查瞧**********、门");
printf(n1x车库2、便道3、返回\n");
oprintf("************************\nn);
oprintfC请选择(1-3):
[]\b\b");
owhiIe
(1)
00{
ooscanf("%d",&tag);
oooif(tag>=1&&tag<=3)break;
°elseprintf("错误!
请重选(1-3):
[]\b\b")
switch(tag)
easel:
List1(&S);
。
break;/*列表显示车库信息*/
case2:
l_ist2(&W);
break;/*列表显示便到信息*/
case3:
flag=0;
0break;
default:
break;