数据结构课程设计 停车场模拟管理系统报告含源码Word下载.docx
《数据结构课程设计 停车场模拟管理系统报告含源码Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计 停车场模拟管理系统报告含源码Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
(三)界面设计
1、主菜单界面
图1
2、车辆到达界面
图2
3、车辆离开界面
图3
4、列表显示界面
图4列表显示菜单
图5停车场情况
图6便道等待情况
5、车辆查询界面
图7
五、设计结果与分析
测试结果已达到我预期的结果,可以模拟实现车辆的进入、离开停车场,可以大体上让人了解到停车场的工作情况。
六、总结(收获和不足)
(一)课设的不足
本次课程设计完成的系统,只能简单的模拟停车场的车辆进出、收费情况和查询功能,没有将进入停车场的车辆信息进行存盘保存。
而且功能单一,有车离开时,还有可能要其他的车退出停车场让车(不够人性化);
模拟的停车场只是一个狭长的通道,存放的车辆只能是一种类型的,即占地面积是一样的;
按道理停车场可以存放各种类型的车,各种车的收费标准也应该不一样,这都应该是要完善的。
(二)课设的收获
历时四天,终于把数据结构课程设计做完了!
本次课设,我还是挑了比较简单的题目(停车场模拟管理系统)来做,在这个题目里,只用到了两个数据结构:
顺序栈和链式队列.顺序栈模拟停车场,队列模拟便道.通过这次课设,确实对自己的水平提高了很多,至少再次熟悉了本学期所学的栈和队列的使用和应用.记得在刚开始的时候,看到课设指导书上面的题目,感觉自己什么都做不出来,所以迟迟不敢动手。
当时间一天天逼近时,不能再拖了,就只能开工了。
抱着试一试的心态,我参考着资料上面的指示,一步一步地做,居然做出了一个简单的系统;
最后通过请教XX同学,对系统做了些完善(虽然还不是很完善),在此对他表示感谢!
通过这次课设,我再次强烈的感受到:
只要敢于尝试,很多我们自己认为做不到的事情都是可能做到的.勇于尝试,定有收获!
附录程序源码
#include<
iostream。
h〉
fstream。
h>
iomanip。
#include<
windows。
stdio.h〉
#include〈math.h〉
#definemaxnum5
#defineprice0.5
enumreturninfo{ok,error};
typedefstructtime//时间结构体
{
inthour;
intminute;
}TIME;
typedefstructnodea//汽车结构体
{
charnumber[10];
TIMEreach;
TIMEleave;
}CARNODE;
typedefstructnodeb//停车场
CARNODE*stack[maxnum+1];
inttop;
}SEQSTACKCAR;
typedefstructcar//车场中已停有的车链表结点
CARNODE*data;
structcar*next;
}QUEUENODE;
classLINKQUEUECAR//链表,存放等待进入停车场的车
public:
QUEUENODE*head;
QUEUENODE*rear;
LINKQUEUECAR()
{
head=rear=NULL;
};
};
voidstackpark(SEQSTACKCAR*s)
inti;
s->
top=0;
for(i=0;
i<
=maxnum;
i++)
s-〉stack[i]=NULL;
}
intqueuehall(LINKQUEUECAR*q)//
if(q—>
head==NULL)
q—〉head=(QUEUENODE*)malloc(sizeof(QUEUENODE));
q-〉head->
next=NULL;
q—>
rear=q-〉head;
returnok;
}
else
returnerror;
voidprint(CARNODE*p,introom)//已选中的停车场中的车,确定其离开的时间,并显示计费
inta1,a2,b1,b2;
doublePrice;
cout〈<
"
请输入车辆离开的时间(时和分用空格隔开):
;
cin>
>
p-〉leave。
hour〉〉p-〉leave.minute;
while(p->
leave。
hour〈0||p-〉leave.hour>
24||p-〉leave。
minute〈0||p—〉leave.minute>
60)
cout<
<
时间输入有错,请重新输入:
;
cin〉〉p—>
leave.hour>
〉p—〉leave.minute;
}
\n离开车辆的车牌号码:
”;
cout<
p->
number;
\n该车辆到达的时间为:
if(p—〉reach。
hour<
10)
cout〈〈"
0”<
〈p-〉reach。
”:
cout〈<
p—>
reach。
hour〈<
if(p—〉reach.minute<
0"
〈〈p—〉reach.minute〈〈endl;
cout〈〈p->
minute<
endl;
〈”离开时间为:
if(p—>
hour〈10)
”0”〈〈p—>
hour〈〈"
:
p-〉leave.hour〈〈"
”;
leave.minute<
〈<
minute〈〈endl;
〈endl;
a1=p—>
reach.hour;
a2=p->
minute;
b1=p—〉leave.hour;
b2=p->
leave.minute;
Price=((b1-a1)*60+(b2-a2))*price;
if(Price<
1)
Price=1;
〈"
\n该车应交费用为:
〈〈setprecision
(2)〈〈setiosflags(ios:
fixed)〈〈Price〈〈”元"
endl;
free(p);
}
intArrive(SEQSTACKCAR*enter,LINKQUEUECAR*w)//车进入停车场
CARNODE*p;
QUEUENODE*t;
p=(CARNODE*)malloc(sizeof(CARNODE));
请输入车牌号码(鄂C12345):
cin〉>
p—〉number;
if(enter—〉top〈maxnum)
enter—〉top++;
\n车辆在停车场的第”<
〈enter->
top〈<
”个位置。
〈〈endl;
cout〈〈”请输入车辆到达的时间的时和分(用空格隔开):
cin>
p-〉reach.hour〉>
p-〉reach。
minute;
while(p->
0||p—〉reach。
hour>
24||p—〉reach。
minute〈0||p->
reach.minute〉60)
{
cout〈<
cin>
hour〉〉p-〉reach.minute;
}
enter—〉stack[enter->
top]=p;
车辆停放完毕!
”<
〈”\n该车辆需在便道等待!
\n"
flush;
t=(QUEUENODE*)malloc(sizeof(QUEUENODE));
t—〉data=p;
t—>
w—>
rear—>
next=t;
w-〉rear=t;
returnok;
voidLeave(SEQSTACKCAR*enter,SEQSTACKCAR*temp,LINKQUEUECAR*w)//确定要离开的车所在的车道
introom;
CARNODE*p,*t;
QUEUENODE*q;
if(enter—〉top〉0)
{
while
(1)
{
\n请输入车所在停车场的位置:
cin〉>
room;
if(room〉=1&&room<
=enter-〉top)
break;
while(enter—〉top>
room)
temp—〉top++;
temp->
stack[temp—>
top]=enter->
stack[enter—>
top];
enter-〉stack[enter—>
top]=NULL;
enter-〉top--;
}
p=enter-〉stack[enter—>
top];
enter—>
stack[enter-〉top]=NULL;
enter-〉top——;
while(temp->
top〉=1)
enter->
top++;
enter—〉stack[enter—>
top]=temp->
stack[temp->
top];
temp-〉stack[temp—〉top]=NULL;
temp—〉top——;
print(p,room);
〈”\n车辆已离开!
〈endl;
system("
pause"
);
if((w—>
head!
=w—〉rear)&
&
enter—>
top<
maxnum)
q=w—〉head—〉next;
t=q->
data;
enter—>
”\n便道的”<
t-〉number〈〈"
号车进入停车场"
〈enter—>
〈”号位置。
cout<
”请输入现在的时间(时和分用空格隔开):
cin〉〉t—>
〉t->
while(t->
0||t—>
reach.hour>
24||t-〉reach。
{
cout〈〈”时间输入有错,请重新输入:
cin〉〉t—>
t—>
reach.minute;
}
w—>
head—>
next=q-〉next;
if(q==w—>
rear)
w—>
rear=w-〉head;
stack[enter->
top]=t;
free(q);
停车场里没有车!
endl〈<
system(”pause"
);
intsearchcar(SEQSTACKCAR*enter,LINKQUEUECAR*w)
charnum[256]="
intpos=enter-〉top,flag=0;
QUEUENODE*p=NULL;
”请输入要查询的车牌号:
”〈〈endl;
num;
while(pos〉0)
if(!
strcmp(enter—〉stack[pos]-〉number,num))
flag=1;
break;
pos—-;
if(flag)
{
车位号到达时间车牌号\n”;
if(pos<
”"
〈〈”0”<
pos<
\t\t”;
else
”<
pos〈〈”\t\t"
if(enter—〉stack[pos]->
0”〈〈enter—〉stack[pos]—>
〈”:
enter-〉stack[pos]-〉reach。
:
if(enter-〉stack[pos]->
0”〈〈enter-〉stack[pos]-〉reach.minute;
cout〈〈enter->
stack[pos]—〉reach.minute;
\t\t"
stack[pos]—〉number〈〈endl;
pause”);
p=w—>
head-〉next;
while(p)
if(!
strcmp(p—>
data—>
number,num))
flag=1;
break;
p=p—>
next;
if(flag)
〈”\n车牌号状态\n”;
cout〈〈””<
〈p—>
data-〉number<
\t\t等待中”<
〈endl〈<
system(”pause”);
”停车场内没有此车!
system("
returnflag;
voidlist1(SEQSTACKCAR*s)//显示停车场中的停车情况
if(s-〉top〉0)
”\n停车场:
车位号到达时间车牌号\n"
for(i=1;
=s—〉top;
if(i<
cout<
”0”〈〈i〈〈"
\t\t"
else
"
i〈<
”\t\t"
if(s->
stack[i]-〉reach.hour<
〈s-〉stack[i]—>
hour〈〈”:
〈s—〉stack[i]—>
stack[i]->
reach.minute<
0”〈<
s—〉stack[i]-〉reach.minute〈<
”\t\t"
cout〈〈s—>
stack[i]->
reach.minute〈〈”\t\t”;
〈s-〉stack[i]—〉number<
\n停车场里没有车!
voidlist2(LINKQUEUECAR*w)//显示正在等待进入停车场的车
QUEUENODE*p;
p=w-〉head—>
if(w—〉head!
=w-〉rear)
\n等待车辆的号码有:
while(p!
=NULL)
p=p-〉next;
cout〈〈”\n便道里没有车!
voidlist(SEQSTACKCARs,LINKQUEUECARw)//列表显示
intflag,tag;
flag=1;
while(flag)
cls”);
cout〈〈”**************************”〈〈endl;
|列表显示菜单|”<
cout〈〈”**************************"
”||"
|1。
车场停车情况|"
cout〈〈”|2。
便道车辆等待情况|"
”|3。
返回主菜单|"
||”〈〈endl;
**************************”<
”请输入你的选择:
〉tag;
while(tag〈1||tag>
3)
”你的输入有错!
请重新输入:
〉tag;
switch(tag)
case1:
system(”cls"
list1(&
s);
case2:
system(”cls”);
list2(&
w);
case3:
system(”cls”);
flag=0;
default:
intinstruct()//说明
rewind(stdin);
〈”=====================欢迎阅读系统说明========================="
||||”<
cout〈〈”||请仔细阅读以下说明:
||"
”||||"
”||1、本系统设置车位数固定,车位数为2(便于操作);
||"
〈”||2、该停车场最低收费1元,小于1元均按1元收费;
||”〈〈endl;
”||3、时间输入:
按24进制输入,时和分用空格隔开;
”||4、车牌输入:
先输入一个省号简称和字母,后输入一串数字;
||"
||5、车辆离开:
当输入车位号时,再输入离开的时间;
〈”||车辆离开后,便道的第一辆车进入停车场;
||6、车辆停留时间最长为一天,驶离时间应大于驶入时间;
||"
〈”||||"
”=======================停车场,谢谢阅读======================="
return0;
intmain()
SEQSTACKCARenter,temp;
LINKQUEUECARwait;
intchoice;
system(”colorf0”);
stackpark(&
enter);
temp);
queuehall(&
wait);
while
(1)
system(”cls”);
╭────────────╮”<
|停车场模拟管理系统|”〈〈endl;
|T1123—03-|"
”|2013.7。
1|"
”╰─────────────╯"
〈”===========================”