停车场模拟管理系统实验报告001Word文档下载推荐.docx
- 文档编号:20270917
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:15
- 大小:29.64KB
停车场模拟管理系统实验报告001Word文档下载推荐.docx
《停车场模拟管理系统实验报告001Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《停车场模拟管理系统实验报告001Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
(1)STOPPING*init_stopping()/*初始化停车位*/酽锕极額閉镇桧猪訣锥顧荭。
{
STOPPING*s;
s=(STOPPING*)malloc(sizeof(STOPPING));
if(!
s)
{
printf("
STOPPING空间不足!
"
);
returnNULL;
}
else
s->
top=-1;
returns;
}
(2)BUFFER*init_buff()/*初始化辅助栈*/彈贸摄尔霁毙攬砖卤庑诒尔。
BUFFER*b;
b=(BUFFER*)malloc(sizeof(BUFFER));
b)
BUFFER空间不足!
b->
returnb;
(3)PAVEMENT*init_pavement()/*初始化便道*/謀荞抟箧飆鐸怼类蒋薔點鉍。
PAVEMENT*p;
p=(PAVEMENT*)malloc(sizeof(PAVEMENT));
p->
front=p->
rear=MAX_PAVE-1;
returnp;
主要功能模块的伪码算法:
voidcar_come(char*plate,char*in_time)
If(停车为未满)
来车进入停车位;
Else
来车进入便道等候;
voidcar_leave(intpos,char*out_time)
输入汽车所在位置;
If(汽车不在最后一个车位)
stop_to_buff(intpos);
所选汽车离去;
显示应缴费用;
If(辅助栈不空)
buff_to_stop(intpos);
if(便道不空)
pave_to_stop();
voidshow_car(char*plate)
遍历停车位,如找到所查汽车则停止;
If(停车位无此车)
遍历便道,如找到停止;
if(便道无此车)
显示信息无此车;
Welcome()
函数调用关系:
Stop_to_buff()
Display()
Buff_to_stop()
Main()
Car_leave()
Pave_to_stop()
Car_come()
Checkout()
Show_car()
调试分析:
调试中的问题及解决方法:
各函数无法都作用于顺序队和顺序栈,解决方法:
将顺序队和顺序栈定义成全局变量;
无法将输入的字符指针char*plate接收的车牌号字符串传递给各函数,解决方法:
在给plate输入前给plate开辟空间厦礴恳蹒骈時盡继價骚卺癩。
plate=(char*)malloc(sizeof(char));
无法将字符串型的时间逐个转换成整型,解决方法:
定义字符型指针,逐一指向字符串中的每个字符;
使用说明及测试结果:
使用说明:
输入C(L、F、Q)表示来车(离车、查询、退出),接下来按照提示输入;
测试结果:
请选择您要的操作:
c
请输入您的车牌号:
JE001
请输入您的入场时间:
10:
10
请您停放在1号车位!
您的入场时间为:
停车位的情况:
1车位——JE001
(2)离车:
请选择您要的操作:
L
请输入您的汽车所在停车位的车位数:
1
请输入您的离场时间:
10:
40
牌照为JE003的汽车暂时退出停车位!
牌照为JE002的汽车暂时退出停车位!
拍照为JE001的汽车从停车场开走!
请交费3.0元!
牌照为JE002的汽车停回停车位的1车位!
牌照为JE003的汽车停回停车位的2车位!
停车位的情况:
1车位——JE002
2车位——JE003
(3)请选择您要的操作:
F
请输入您要查找的车牌号:
JE002
您的汽车JE002位于停车位的1车位!
源程序:
#include"
stdio.h"
stdlib.h"
string.h"
#defineMAX_STOP5/*停车位*/
#defineMAX_PAVE100/*便道位*/
typedefstruct
char*license_plate;
/*车牌号*/
char*in_time;
/*进入停车场的时间*/
char*out_time;
/*离开停车场的时间*/
charstate;
/*状态,S表示停车位,P表示便道,L表示离开*/
}CAR;
typedefstruct/*定义停车为类型*/
CARSTOP[MAX_STOP];
inttop;
}STOPPING;
typedefstruct/*定义便道类型*/
CARPAVE[MAX_PAVE];
intfront,rear;
}PAVEMENT;
typedefstruct/*定义辅助栈类型*/
CARBUFF[MAX_STOP];
}BUFFER;
STOPPING*init_stopping()/*初始化停车位*/
BUFFER*init_buff()/*初始化辅助栈*/
PAVEMENT*init_pavement()/*初始化便道*/
staticSTOPPING*stopping=init_stopping();
/*定义停车位*/茕桢广鳓鯡选块网羈泪镀齐。
staticBUFFER*buff=init_buff();
/*定义辅助栈*/鹅娅尽損鹌惨歷茏鴛賴縈诘。
staticPAVEMENT*pavement=init_pavement();
/*定义便道*/籟丛妈羥为贍偾蛏练淨槠挞。
voidcar_come(char*plate,char*in_time)/*来车函数*/預頌圣鉉儐歲龈讶骅籴買闥。
if(stopping->
top!
=MAX_STOP-1)
stopping->
top++;
STOP[stopping->
top].license_plate=plate;
top].in_time=in_time;
stopping->
top].state='
S'
;
请您停放在%d号车位!
%s\n"
stopping->
top+1,stopping->
top].in_time);
渗釤呛俨匀谔鱉调硯錦鋇絨。
pavement->
rear=(pavement->
rear+1)%MAX_PAVE;
PAVE[pavement->
rear].license_plate=plate;
铙誅卧泻噦圣骋贶頂廡缝勵。
rear].in_time=in_time;
pavement->
rear].state='
P'
停车位已满!
请在便道等待!
pavement->
rear].in_time);
擁締凤袜备訊顎轮烂蔷報赢。
voidstop_to_buff(intpos)/*暂入辅助栈函数*/贓熱俣阃歲匱阊邺镓騷鯛汉。
buff->
BUFF[buff->
top].license_plate=stopping->
STOP[pos].license_plate;
坛摶乡囂忏蒌鍥铃氈淚跻馱。
top].in_time=stopping->
STOP[pos].in_time;
蜡變黲癟報伥铉锚鈰赘籜葦。
top--;
printf("
牌照为%s的汽车暂时退出停车位!
\n"
STOP[pos].license_plate);
買鲷鴯譖昙膚遙闫撷凄届嬌。
voidbuff_to_stop(intpos)/*由辅助栈返回停车位函数*/
STOP[pos].license_plate=buff->
top].license_plate;
綾镝鯛駕櫬鹕踪韦辚糴飙钪。
STOP[pos].in_time=buff->
top].in_time;
驅踬髏彦浃绥譎饴憂锦諑琼。
STOP[pos].state='
牌照为%s的汽车停回停车位的%d车位!
STOP[pos].license_plate,pos+1);
猫虿驢绘燈鮒诛髅貺庑献鵬。
voidpave_to_stop()/*由便道进入停车位函数*/
{
front=(pavement->
front+1)%MAX_PAVE;
top].license_plate=pavement->
front].license_plate;
锹籁饗迳琐筆襖鸥娅薔嗚訝。
top].in_time=pavement->
front].in_time;
構氽頑黉碩饨荠龈话骛門戲。
牌照为%s的汽车从便道上进入停车位的%d车位!
front].license_plate,MAX_STOP);
輒峄陽檉簖疖網儂號泶蛴镧。
floatcheckout(char*in_time,char*out_time)/*记时收费函数*/尧侧閆繭絳闕绚勵蜆贅瀝纰。
intsum1=0,sum2=0;
char*a,*b;
a=in_time;
b=out_time;
sum1+=(*(a+4)-'
0'
)+(*(a+3)-'
)*10;
sum1+=((*(a+1)-'
)+(*a-'
)*10)*60;
sum2+=(*(b+4)-'
)+(*(b+3)-'
sum2+=((*(b+1)-'
)+(*b-'
return((sum2-sum1)*0.1);
voidcar_leave(intpos,char*out_time)/*离车函数*/识饒鎂錕缢灩筧嚌俨淒侬减。
inta=pos;
intb=a-1;
intc,d;
floatmoney;
money=checkout(stopping->
STOP[b].in_time,out_time);
凍鈹鋨劳臘锴痫婦胫籴铍賄。
if(a>
MAX_STOP||a<
1)
车位号只能是1——5,请重新输入!
scanf("
%d"
&
a);
car_leave(a,out_time);
return;
if(b!
=stopping->
top)
for(c=stopping->
top;
c>
b;
c--)
stop_to_buff(c);
d=buff->
牌照为%s的汽车从停车场开走!
请交费%f元!
STOP[b].license_plate,money);
恥諤銪灭萦欢煬鞏鹜錦聰櫻。
if(buff->
=-1)
for(c=b;
c<
=b+d;
c++)
buff_to_stop(c);
if(pavement->
front!
=pavement->
rear)
pave_to_stop();
voidwelcome()/*欢迎界面*/
\n●欢迎使用本程序●\n\n"
本程序为停车场的模拟管理程序,有车到来时请按C(或c)键。
然后根据屏幕提示进行相关操作,有车要走时请按L(或l)键。
然后根据屏幕提示进行相关操作,查找汽车时请按F(或f)键。
然后根据屏幕提示进行相关操作,要退出程序请按Q(或q)键。
\n\n\n"
voiddisplay()/*显示停车场情况函数*/
inti=0,j;
intk=1;
/*表示便道位置*/
top==-1)
停车位上暂无车辆!
\n\n"
while(i<
{
printf("
%d车位——%s\n"
i+1,stopping->
STOP[i].license_plate);
鯊腎鑰诎褳鉀沩懼統庫摇饬。
i++;
}
if(pavement->
j=(pavement->
便道上的情况:
while(j<
{
%d位置——%s\n"
k,pavement->
PAVE[j].license_plate);
硕癘鄴颃诌攆檸攜驤蔹鸶胶。
j++;
k++;
}
voidshow_car(char*plate)/*查找并显示信息函数*/
inti,j;
for(i=0;
i<
i++)
if(!
strcmp(stopping->
STOP[i].license_plate,plate))break;
阌擻輳嬪諫迁择楨秘騖輛埙。
if(i==stopping->
top+1)
for(j=(pavement->
j<
rear;
j++)氬嚕躑竄贸恳彈瀘颔澩纷釓。
if(!
strcmp(pavement->
PAVE[j].license_plate,plate))break;
釷鹆資贏車贖孙滅獅赘慶獷。
if(i<
stopping->
您的汽车%s位于停车位的%d车位!
plate,i+1);
if(j<
pavement->
rear+1)
您的汽车位于便道的%d位置!
j-(pavement->
front+1)%MAX_PAVE+1);
怂阐譜鯪迳導嘯畫長凉馴鸨。
else
对不起,停车场中无此车!
voidmain()
charkey;
char*plate,*in_time,*out_time;
inta;
welcome();
display();
do
%c"
key);
if(key=='
c'
||key=='
C'
)
plate=(char*)malloc(sizeof(char));
%s"
plate);
in_time=(char*)malloc(sizeof(char));
scanf("
in_time);
car_come(plate,in_time);
display();
l'
L'
请输入您的汽车所在停车位的车位数:
请输入您的离场时间:
out_time=(char*)malloc(sizeof(char));
out_time);
car_leave(a,out_time);
display();
f'
F'
)
请输入您要查找的车牌号:
plate=(char*)malloc(sizeof(char));
scanf("
show_car(plate);
}while(key!
='
q'
&
key!
Q'
谢谢使用本程序,再见!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场 模拟 管理 系统 实验 报告 001