毕业设计数据结构a类停车场管理系统Word格式文档下载.docx

上传人:b****7 文档编号:22707284 上传时间:2023-02-05 格式:DOCX 页数:59 大小:513.29KB
下载 相关 举报
毕业设计数据结构a类停车场管理系统Word格式文档下载.docx_第1页
第1页 / 共59页
毕业设计数据结构a类停车场管理系统Word格式文档下载.docx_第2页
第2页 / 共59页
毕业设计数据结构a类停车场管理系统Word格式文档下载.docx_第3页
第3页 / 共59页
毕业设计数据结构a类停车场管理系统Word格式文档下载.docx_第4页
第4页 / 共59页
毕业设计数据结构a类停车场管理系统Word格式文档下载.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

毕业设计数据结构a类停车场管理系统Word格式文档下载.docx

《毕业设计数据结构a类停车场管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《毕业设计数据结构a类停车场管理系统Word格式文档下载.docx(59页珍藏版)》请在冰豆网上搜索。

毕业设计数据结构a类停车场管理系统Word格式文档下载.docx

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:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1