C语言课设之停车场管理系统Word文档下载推荐.docx
- 文档编号:17209610
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:14
- 大小:225.78KB
C语言课设之停车场管理系统Word文档下载推荐.docx
《C语言课设之停车场管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言课设之停车场管理系统Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
无点x
有
四.具体程序
#include〈stdio.h>
#include〈malloc。
h>
#defineSIZE3
#defineNULL0
typedefstruct
{inthour;
intmin;
}time;
{intnum;
intposition;
timet;
floatmoney;
}Car;
{Carelem[SIZE+1];
inttop;
}Stack;
typedefstructNode
{Cardata;
structNode*next;
}CQueueNode;
{CQueueNode*front;
CQueueNode*rear;
}LinkQueue;
voidInitStack(Stack*S)
{S-〉top=0;
}
voidPush(Stack*S,Car*r)
{S-〉top++;
S—〉elem[S—〉top].num=r—>
num;
r-〉position=S->
elem[S->
top]。
position=S-〉top;
S->
elem[S—>
top].t.hour=r—>
t。
hour;
S-〉elem[S->
top].t.min=r—〉t。
min;
}
intIsEmpty(Stack*S)
{return(S->
top==0?
1:
0);
intIsFull(Stack*S)
{return(S->
top==SIZE?
1:
0);
intGetTop(Stack*S,Car*n)
{n—〉num=S->
top].num;
n—>
position=S-〉elem[S->
top].position;
n—>
t.hour=S->
t.hour;
t.min=S-〉elem[S—〉top].t。
return1;
voidInitQueue(LinkQueue*Q)
{Q—>
front=(CQueueNode*)malloc(sizeof(CQueueNode));
if(Q—>
front!
=NULL)
{Q—〉rear=Q->
front;
Q—>
front—>
next=NULL;
intEnterQueue(LinkQueue*Q,Car*t)
{CQueueNode*NewNode;
NewNode=(CQueueNode*)malloc(sizeof(CQueueNode));
if(NewNode!
{NewNode-〉data.num=t—>
NewNode->
data.t.hour=t—〉t。
data。
t.min=t-〉t.min;
NewNode-〉next=NULL;
Q—〉rear—〉next=NewNode;
rear=NewNode;
return1;
}
elsereturn0;
}
intDeleteQueue(LinkQueue*Q,Car*x)
{CQueueNode*p;
if(Q-〉front==Q—〉rear)
return0;
p=Q—>
front->
next;
Q—〉front—〉next=p—>
next;
if(Q->
rear==p)
Q-〉rear=Q—>
x-〉num=p->
num;
x—>
hour=p—〉data。
x->
t.min=p—>
data.t。
min;
free(p);
voidprint1(Stack*S)
{inttag;
Carx;
printf(”停车场停车情况:
\n"
);
if(IsEmpty(S))
printf("
无车!
"
for(tag=S-〉top;
S—>
top〉0;
S—〉top—-)
if(GetTop(S,&x))
车牌号%d,所在位置%d,到达/离开时间%d:
%d\n"
,x。
num,x。
position,x。
hour,x.t。
min);
S—〉top=tag;
voidprint2(LinkQueue*Q)
{CQueueNode*p;
p=Q—〉front—>
for(;
p!
=NULL;
p=p—>
next)
printf(”等待车牌号%d,到达/离开时间%d:
%d"
,p-〉data.num,p->
t.hour,p-〉data。
voidTaM(Car*r,inth,intm)
{if(m〉r-〉t.min)
{r->
min+=60;
r—>
hour-=1;
h=r—>
hour—h;
m=r->
t.min-m;
printf(”\n停车%d小时%d分钟\n"
h,m);
printf(”每小时收费30元\n"
h=h*60;
m=h+m;
r->
money=0.5*m;
printf(”请支付金额%。
2f元\n”,r—>
money);
voidIn(Stack*S,LinkQueue*Q,Car*r)
{if(IsFull(S))
{printf(”车库已满,请等待!
);
EnterQueue(Q,r);
else
{Push(S,r);
printf(”\n您现在所在位置%d"
,r—〉position);
voidOut(Stack*S,Stack*S0,Car*r,LinkQueue*Q)
{inttag=S—〉top;
Carx;
if(IsEmpty(S))printf(”没有此车!
else
{for(;
num!
=S-〉elem[tag]。
num&
&tag〉0;
tag--)
{Push(S0,&S->
elem[tag]);
S—>
top-—;
if(r->
num==S—>
elem[tag].num)
{TaM(r,S—〉elem[tag]。
hour,S—>
elem[tag].t。
top-—;
S0—>
top-—)
Push(S,&S0-〉elem[S0—>
top]);
if(S—〉top<
SIZE&&Q—>
=Q—〉rear)
{DeleteQueue(Q,&x);
Push(S,&
x);
elseif(tag==0)
{printf(”未进入停车场应支付金额0元!
”);
S0-〉top〉0;
S0->
voidprint()
{printf(”\n***********************************欢迎光临*************************************\n”);
printf(”\n请选择:
\n”);
printf(”\n1:
到达"
\n2:
离开"
printf(”\n3:
搜索”);
printf(”\n4:
退出\n”);
printf(”\n"
intmain()
{intn,m,i=1,j,flag=0;
Carc[10];
StackS,S0;
LinkQueueQ;
InitStack(&
S);
S0);
InitQueue(&Q);
while
(1)
{print();
scanf("
%d”,&
m);
switch(m)
{case1:
printf("
\n请输入车牌号:
scanf("
c[i]。
num);
\n请输入到达/离开时间:
”);
%d:
%d”,&c[i].t.hour,&c[i]。
min);
In(&S,&
Q,&
c[i]);
i++;
break;
case2:
scanf(”%d"
&n);
for(j=0;
j<
10;
j++)
if(n==c[j].num)break;
scanf(”%d:
%d”,&c[j]。
hour,&c[j].t.min);
Out(&S,&
S0,&c[j],&
Q);
break;
case3:
print1(&S);
print2(&
break;
case4:
flag=1;
default:
printf(”\n输入错误,请输入1,2,3或4”);
if(flag)break;
}return0;
}
运行MicrosoftVisualC++,进入运行状态:
1.主菜单:
根据页面提示,输入相应数字。
车辆到达:
车辆到达停车场,输入数字1,根据页面提示输入车牌号和到达时间.页面将显示车辆目前所处位置
4.停车场情况查询:
该程序可提供随时查询,输入数字3,可获知停车场现在停车情况。
停车场无车:
停车场有车:
5。
车辆离开
车辆离开,输入数字2,页面显示该车停放具体情况,包括总计停放时间以及相应金额。
六.存在问题与不足
本程序只考虑到数字操作,字母、字符无法执行,因时间问题未作进一步完善。
以及对于堆栈知识的不熟悉导致程序有本质上的繁杂,应彻底完善。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 停车场 管理 系统