毕业设计数据结构a类停车场管理系统Word格式文档下载.docx
- 文档编号:22707284
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:59
- 大小:513.29KB
毕业设计数据结构a类停车场管理系统Word格式文档下载.docx
《毕业设计数据结构a类停车场管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《毕业设计数据结构a类停车场管理系统Word格式文档下载.docx(59页珍藏版)》请在冰豆网上搜索。
4.2程序设计关键技术4
4.3个人设计实现4
4.3.1张晓峰设计实现4
4.3.2曹乔家设计实现11
4.3.3王子骄设计实现15
5测试与调试19
5.1个人测试19
5.1.1张晓峰测试19
5.1.2曹乔家测试20
5.1.3王子骄测试21
5.2组装与系统测试21
5.3系统运行22
6课题总结24
6.1课题评价24
6.2团队协作25
6.3团队协作25
6.4个人设计小结25
6.4.1张晓峰设计小结25
6.4.2曹乔家设计小结25
6.4.3王子骄设计小结25
7附录A课题任务分工26
A-1课题程序设计分工26
A-2课题报告分工27
附录B课题设计文档(光盘)28
B-1课程设计报告(电子版)28
B-2源程序代码(*.H,*.CPP)28
B-3工程与可执行文件)28
B-4屏幕演示录像文件(可选)28
附录C用户操作手册(可选)28
C.1运行环境说明28
C.2操作说明28
1课题概述
1.1课题任务
【问题描述】
地上入口处各有一个单车道的等候通道,并允许等候的车辆因急事从等待通道直接开走。
【设计要求】
1.2课题原理
本程序主要运用栈来模拟停车场,建立上下两个栈来模拟上下停车场,一列表模拟车场便道,按照从终端输入的数据序列进行模拟管理,把停车的车位信息保存在新建的链表中,每组输入的数据保存车牌号,自动生成车位号和车辆到达时间保存在链表中,对每一组的数据输出信息,包括车辆到达时间,离开时间,及停车费用,用队列保存便车道停靠的车辆,以及车辆的登记和离开,最后的栈是以顺序栈结构实现,队列和链表以链式结构实现。
1.3相关知识
本实验主要运用链表、栈、队列等数据结构,运用C语言中的指针、数组字符串等相关知识。
2需求分析
2.1课题调研
通过在网上对各个停车场的调查,我们查到停车场有车辆的入场登记,车辆的离开及费用,还有就是车辆的信息保存,每个车辆有车牌号,到达和离开时间及停车费用等等。
2.2用户需求分析
本程序采用简单的界面,使使用者可以简单可了解软件的使用,界面简单、大方。
链表保存的车位信息,只需输入车牌号,其他车位信息自动由系统生成,
可以免去使用的其他操作,为使用者省事,省力。
同时本软件的使用达到人性化,方便化,便于使用者的使用。
3方案设计
3.1总体功能设计
本软件要实现对进入停车场的车辆登记功能,车辆离开的收费功能,以及车辆进入便车道的等待及从便车道,还有对车辆信息的查询和对车场进入和离开车辆的统计。
3.2数据结构设计
(1)时间的结构体
structnow_time{
intmday;
inthour;
intmin;
}
(2)车位信息的结构体
structinformation
{
intsetnumber;
charnum[10];
structnow_timereach;
structnow_timeleave;
}set[MAX*2]
(3)便车道队列
typedefstruct
char*base;
intfront;
intrear;
}SqQueue
(4)停车场的栈
typedefstruct
int*base;
int*top;
intstacksize;
}SqStack
(5)车位信息的链表
typedefstructLNode
struct
{
intstnumber;
floatfee;
inttotalhour;
}data;
structLNode*next;
}LNode,*LinkList
3.3函数原型设计
()voidCreateList_L(LinkList&
L)建立车辆信息链表
()StatusinitStack1(SqStack&
S)建立地上停车场的栈
()StatusinitStack2(SqStack&
S)建立地下停车场的栈
()StatusPush(SqStack&
S,inte)车辆入栈即出场
()StatusPop(SqStack&
S,int&
e)车辆出栈即入场
()StatusinitQueue(SqQueue&
Q)建立便车道的队列
()StatusQueueLength(SqQueueQ)计算便车道的车辆数量
()Statusstack_empty(SqStackS)判断停车场是否车满
()voidenterstop(LinkListclist,SqStack&
S,charnumber[10],int*come,inti)车辆进入停车场
()Statusleavestop(LinkListllist,LinkListclist,SqStack&
S,SqQueue&
Q,int*come,int*leave,inti)车辆离开停车场
()voidccord(LinkListclist,inti,intsetnumber)信息登记
()StatusListInsert_Link(LinkList&
L,inti,intsetnumber)保存车辆到来的信息
()voidcopy(char*a,char*b)进行车位号的比对
()StatuslListInsert_Link(LinkList&
llist,inti,intlset,inttotalhour,floatfee,intday,inthour,intmin)保存车辆离开的信息
()voidshowcome(LinkListlist)显示车辆到来时间
()voidshowleave(LinkListlist)显示车辆离开时间
3.4主算法设计
程序运行时,当车辆入场时,车辆信息保存在链表里,并出栈来表示进入一辆车,其车位和时间自动生成,当汽车离场时,输入车位信息,显示时间,费用。
并把车辆离开时间等保存在离开的链表里,然后通过车位信息的输入,即出场和离场链表表示输出。
3.5用户界面设计
主界面分别有车辆登记,车辆离场,车场信息,退出系统四个功能,进入车辆登记窗口输入车牌号,自动生成车位信息显示。
车辆离场窗口进入输入车场及车位信息,即弹出车位信息及停车费用。
车位信息即显示地上下停车场进出车辆的车辆信息,包括到达时间、离开时间、车位号、车牌号、停车费用等。
退出系统即退出本软件。
4方案实现
4.1开发环境与工具
本程序在window7下实现和运行,并使用VisualC++6.0编译的。
4.2程序设计关键技术
本程序主要用栈来保存车位车位的信息,当车场为空时,栈此时是满的,而当车场满时,栈是空的。
所以当车辆入场时是出栈,而车辆进场时时出栈。
此外就是车辆信息的保存在链表里。
因为是地上下两个停车场,故我们采用两个栈和两个链表来保存其对应的信息,我们还采用了系统时间,减少了使用者的输入。
4.3个人设计实现
4.3.1张晓峰设计实现
设计时间车位两个结构体,以及时间函数。
主函数的设计。
保存车辆到达与离开信息(利用链表)
(1)时间与车位信息的结构体源程序:
structnow_time
};
}set[MAX*2];
(2)保存车辆到来信息源程序:
车辆信息,包括车牌号,到达时间。
储存在链表中,后续查询车场信息中利用此函数。
StatusListInsert_Link(LinkList&
L,inti,intsetnumber)
LNode*p,*s;
intj;
p=L;
j=0;
while(p&
&
j<
i-1)
p=p->
next;
++j;
if(!
p||j>
returnERROR;
s=(LinkList)malloc(sizeof(LNode));
s->
data.stnumber=set[setnumber].setnumber;
data.reach.hour=set[setnumber].reach.hour;
data.reach.mday=set[setnumber].reach.mday;
data.reach.min=set[setnumber].reach.min;
copy(s->
data.num,set[setnumber].num);
next=p->
p->
next=s;
returnOK;
}
(3)保存车辆离开
离开时,记录离开时间,算出总时间,为后续计算费用做铺垫。
同样将信息储存在链表中,在离开停车场函数中利用该函数。
StatuslListInsert_Link(LinkList&
llist,inti,intlset,inttotalhour,floatfee,intday,inthour,intmin)
p=llist;
data.fee=fee;
data.totalhour=totalhour;
data.stnumber=lset;
data.leave.mday=day;
data.leave.hour=hour;
data.leave.min=min;
data.num,set[lset].num);
}
(4)时间函数源代码:
采用系统时间,日小时分钟格式。
分为入场时间和出场时间。
voidshowcome(LinkListlist)
LNode*p;
p=list->
while(p)
{
printf("
\n%s\t%d号\t%d日%d时%d分"
p->
data.num,p->
data.stnumber,p->
data.reach.mday,p->
data.reach.hour,p->
data.reach.min);
voidshowleave(LinkListlist)
data.leave.mday,p->
data.leave.hour,p->
data.leave.min);
(5)主函数:
本程序的关键所在。
对所有函数进行调用,并实现界面的显示。
登记,离开,查询,退出四个部分。
主菜单的建立,界面设计等。
voidmain()
intchoice1,choice2,choice3,wait,ture=1;
inti;
intcome1=0;
intleave2=0;
intcome3=0;
intleave4=0;
int*p1,*p2,*p3,*p4;
p1=&
come1;
p2=&
leave2;
p3=&
come3;
p4=&
leave4;
charnumber[10];
SqStackstack_set1;
SqStackstack_set2;
SqQueuequeue_turn;
initStack1(stack_set1);
initStack2(stack_set2);
initQueue(queue_turn);
LinkListllist1,llist2,clist1,clist2;
CreateList_L(llist1);
CreateList_L(clist1);
CreateList_L(llist2);
CreateList_L(clist2);
for(i=1;
i<
=MAX+1;
i++)
set[i].setnumber=i;
set[i].num[1]='
#'
;
system("
color3B"
);
printf("
\n\n\n\n\n\n\n\n\n*******************欢迎使用停车场管理系统,按任意键进入主菜单******************"
do
getchar();
cls"
欢迎使用停车场管理系统\n\n\n"
主菜单\n\n"
*1*汽车登记\n"
*2*汽车离场\n"
*3*车场信息\n"
*0*退出系统\n\n"
***请按提示输入:
\n"
scanf("
%d"
&
choice1);
switch(choice1)
{
case1:
system("
***********************汽车登记******************\n\n\n"
if(!
stack_empty(stack_set1))//进入停车场
{
printf("
\n*请输入您的车牌号(例:
辽A3475):
"
scanf("
%s"
number);
enterstop(clist1,stack_set1,number,p1,1);
}
elseif(!
stack_empty(stack_set2))
enterstop(clist2,stack_set2,number,p3,2);
else//进入便车道等待
wait=w_total(queue_turn);
******您好,当前停车场已满,有%d在等待!
*****\n您是否愿意进入便车道等待:
wait);
printf("
*1*:
愿意等待!
\t\t*2*:
不愿意等待\n"
while(ture==1)
{
scanf("
choice3);
getchar();
switch(choice3)
{
case1:
enterlane(queue_turn,wait);
//汽车进入便车道
***您好,请进入便车道等待***!
ture=0;
break;
case2:
\n***汽车离开!
break;
default:
\n***您好,输入错误,请重新输入!
}
}
ture=1;
break;
case2:
printf("
***********************汽车离场******************\n\n\n"
*1*地上车场\n"
*2*地下车场\n"
scanf("
choice2);
switch(choice2)
case1:
****************地上停车场******************\n"
leavestop(llist1,clist1,stack_set1,queue_turn,p1,p2,1);
break;
case2:
*****************地下停车场*****************\n"
leavestop(llist2,clist2,stack_set2,queue_turn,p3,p4,2);
break;
default:
***您输入的有误,请重新输入:
case3:
/*今天信息的显示*/
***********************车场信息******************\n\n"
if((come1+come3)==0)
**********无车辆到达!
else
**********到达%d辆车:
come1+come3);
printf("
\n**汽车信息*车牌号*\t*车位号*\t*到达时间*\t"
printf("
\n*地上车场*\t"
showcome(clist1);
\n*地下车场*\t"
showcome(clist2);
if((leave2+leave4)==0)
**********无车辆离开!
**********离开%d辆车:
leave2+leave4);
printf("
\n**汽车信息:
**车牌号**\t**车位号**\t**到达时间**\t"
\n**地上车场:
\t"
showleave(llist1);
\n**地下车场:
showleave(llist2);
case0:
***************退出停车系统!
******************\n"
default:
}
getchar();
while(choice1!
=0);
4.3.2曹乔家设计实现
设计进入停车场和离开停车场函数,结合之前栈,链表,队列以及数组。
(1)进入停车场源代码:
voidenterstop(LinkListclist,SqStack&
S,charnumber[10],int*come,inti)
{
inte;
*come=*come+1;
Pop(S,e);
set[e].setnumber=e;
copy(set[e].num,number);
structtm*newtime;
charam_pm[]="
AM"
time_tlong_time;
time(&
long_time);
newtime=localtime(&
set[e].reach.hour=newtime->
tm_hour;
set[e].reach.mday=newtime->
tm_mday;
set[e].reach.min=newtime->
tm_min;
\n\n************请核对您的停车信息***************\n"
*停车牌号*:
%s\n"
set[e].num);
if(i==1)
*地上车场*:
%d\n"
set[e].setnumber);
if(i==2)
*地下车场*:
*到达时间*:
%d:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 数据结构 停车场 管理 系统