收藏 分销(赏)

毕业设计-数据结构a类停车场管理系统.doc

上传人:w****g 文档编号:2185313 上传时间:2024-05-22 格式:DOC 页数:46 大小:854.50KB
下载 相关 举报
毕业设计-数据结构a类停车场管理系统.doc_第1页
第1页 / 共46页
毕业设计-数据结构a类停车场管理系统.doc_第2页
第2页 / 共46页
毕业设计-数据结构a类停车场管理系统.doc_第3页
第3页 / 共46页
毕业设计-数据结构a类停车场管理系统.doc_第4页
第4页 / 共46页
毕业设计-数据结构a类停车场管理系统.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、东北大学信息科学与工程学院数据结构课程设计报告题目 立体化停车场管理课题组长 张晓峰课题组成员 曹乔家 王子骄专业名称 计算机科学与技术班级 计1307指导教师 杨雷2015 年 1月课程设计任务书题目:立体化停车场管理问题描述:设停车场有地上和地下两层,统一管理。地下停车场采用单入口和单出口。地上停车场采用南北方向的双口,每个口都有一个入口和出口。停车顺序先地上,后地下。地上入口处各有一个单车道的等候通道,并允许等候的车辆因急事从等候通道直接开走。设计要求:设计停车场模拟管理程序。(1)采用栈、队列和有序表等数据结构。(2)等候车辆的管理。(3)地下、地上停车位的管理。(4)停车计费功能。(

2、5)其它完善性功能。指导教师签字:年月日 目录1 课题概述11.1 课题任务11.2 课题原理11.3 相关知识12 需求分析12.1 课题调研12.2 用户需求分析13 方案设计23.1 总体功能设计23.2 数据结构设计23.3 函数原型设计33.4 主算法设计43.5 用户界面设计44 方案实现44.1 开发环境与工具44.2 程序设计关键技术44.3 个人设计实现44.3.1 张晓峰设计实现44.3.2 曹乔家设计实现114.3.3 王子骄设计实现155 测试与调试195.1 个人测试195.1.1 张晓峰测试19 5.1.2 曹乔家测试205.1.3 王子骄测试215.2 组装与系统

3、测试215.3 系统运行226 课题总结246.1 课题评价246.2 团队协作256.3 团队协作256.4 个人设计小结256.4.1张晓峰设计小结25 6.4.2 曹乔家设计小结256.4.3 王子骄设计小结257 附录A 课题任务分工26A-1 课题程序设计分工26A-2 课题报告分工27 附录B 课题设计文档(光盘)28B-1课程设计报告(电子版)28B-2源程序代码(*.H,*.CPP)28B-3工程与可执行文件)28B-4屏幕演示录像文件(可选)28 附录C 用户操作手册(可选)28C.1 运行环境说明28C.2 操作说明28 1 课题概述1.1 课题任务【问题描述】设停车场有地

4、上和地下两层,统一管理。地下停车场采用单入口和单出口。地上停车场采用南北方向的双口,每个口都有一个入口和出口。停车顺序先地上,后地下。地上入口处各有一个单车道的等候通道,并允许等候的车辆因急事从等待通道直接开走。 【设计要求】设计停车场模拟管理程序。(1)采用栈、队列和有序表等数据结构。(2)等候车辆的管理。(3)地下、地上停车位的管理。(4)停车计费功能。(5)其它完善性功能。1.2 课题原理 本程序主要运用栈来模拟停车场,建立上下两个栈来模拟上下停车场,一列表模拟车场便道,按照从终端输入的数据序列进行模拟管理,把停车的车位信息保存在新建的链表中,每组输入的数据保存车牌号,自动生成车位号和车

5、辆到达时间保存在链表中,对每一组的数据输出信息,包括车辆到达时间,离开时间,及停车费用,用队列保存便车道停靠的车辆,以及车辆的登记和离开,最后的栈是以顺序栈结构实现,队列和链表以链式结构实现。1.3 相关知识 本实验主要运用链表、栈、队列等数据结构,运用C语言中的指针、数组字符串等相关知识。 2 需求分析2.1 课题调研 通过在网上对各个停车场的调查,我们查到停车场有车辆的入场登记,车辆的离开及费用,还有就是车辆的信息保存,每个车辆有车牌号,到达和离开时间及停车费用等等。2.2 用户需求分析 本程序采用简单的界面,使使用者可以简单可了解软件的使用,界面简单、大方。链表保存的车位信息,只需输入车

6、牌号,其他车位信息自动由系统生成,可以免去使用的其他操作,为使用者省事,省力。同时本软件的使用达到人性化,方便化,便于使用者的使用。 3 方案设计3.1 总体功能设计 本软件要实现对进入停车场的车辆登记功能,车辆离开的收费功能,以及车辆进入便车道的等待及从便车道,还有对车辆信息的查询和对车场进入和离开车辆的统计。3.2 数据结构设计(1)时间的结构体 struct now_timeint mday; int hour; int min; (2)车位信息的结构体struct information int setnumber; char num10; struct now_time reach;

7、 struct now_time leave; setMAX*2(3)便车道队列typedef struct char *base; int front; int rear; SqQueue(4)停车场的栈typedef structint *base; int *top; int stacksize;SqStack(5)车位信息的链表typedef struct LNodestructint stnumber; char num10; struct now_time reach; struct now_time leave; float fee; int totalhour;data; st

8、ruct LNode *next;LNode,*LinkList3.3 函数原型设计()void CreateList_L(LinkList &L) 建立车辆信息链表()Status initStack1(SqStack &S) 建立地上停车场的栈()Status initStack2(SqStack &S) 建立地下停车场的栈()Status Push(SqStack &S,int e) 车辆入栈即出场()Status Pop(SqStack &S,int &e) 车辆出栈即入场()Status initQueue(SqQueue &Q) 建立便车道的队列()Status QueueLeng

9、th(SqQueue Q) 计算便车道的车辆数量()Status stack_empty(SqStack S) 判断停车场是否车满()void enterstop( LinkList clist,SqStack &S,char number10,int *come,int i) 车辆进入停车场 ()Status leavestop(LinkList llist,LinkList clist,SqStack &S,SqQueue &Q,int *come,int*leave,int i) 车辆离开停车场()void ccord(LinkList clist,int i,int setnumber

10、) 信息登记()Status ListInsert_Link(LinkList &L,int i,int setnumber) 保存车辆到来的信息()void copy(char *a,char *b) 进行车位号的比对()Status lListInsert_Link(LinkList &llist,int i,int lset,int totalhour,float fee,int day,int hour,int min) 保存车辆离开的信息()void showcome(LinkList list) 显示车辆到来时间()void showleave(LinkList list) 显示车

11、辆离开时间3.4 主算法设计 程序运行时,当车辆入场时,车辆信息保存在链表里,并出栈来表示进入一辆车,其车位和时间自动生成,当汽车离场时,输入车位信息,显示时间,费用。并把车辆离开时间等保存在离开的链表里,然后通过车位信息的输入,即出场和离场链表表示输出。3.5 用户界面设计 主界面分别有车辆登记,车辆离场,车场信息,退出系统四个功能,进入车辆登记窗口输入车牌号,自动生成车位信息显示。车辆离场窗口进入输入车场及 车位信息,即弹出车位信息及停车费用。车位信息即显示地上下停车场进出车辆的车辆信息,包括到达时间、离开时间、车位号、车牌号、停车费用等。退出系统即退出本软件。 4 方案实现4.1 开发环

12、境与工具 本程序在window7下实现和运行,并使用Visual C+6.0编译的。4.2 程序设计关键技术 本程序主要用栈来保存车位车位的信息,当车场为空时,栈此时是满的,而当车场满时,栈是空的。所以当车辆入场时是出栈,而车辆进场时时出栈。此外就是车辆信息的保存在链表里。因为是地上下两个停车场,故我们采用两个栈和两个链表来保存其对应的信息,我们还采用了系统时间,减少了使用者的输入。4.3 个人设计实现4.3.1 张晓峰设计实现 设计时间车位两个结构体,以及时间函数。主函数的设计。保存车辆到达与离开信息(利用链表)(1)时间与车位信息的结构体源程序:struct now_timeint mda

13、y; int hour; int min;struct information int setnumber; char num10; struct now_time reach; struct now_time leave; setMAX*2;(2)保存车辆到来信息源程序: 车辆信息,包括车牌号,到达时间。储存在链表中,后续查询车场信息中利用此函数。Status ListInsert_Link(LinkList &L,int i,int setnumber)LNode *p,*s;int j; p=L; j=0; while(p&jnext; +j; if(!p|ji-1)return ERR

14、OR; s=(LinkList)malloc(sizeof(LNode); s-data.stnumber=setsetnumber.setnumber; s-data.reach.hour=setsetnumber.reach.hour; s-data.reach.mday=setsetnumber.reach.mday; s-data.reach.min=setsetnumber.reach.min; copy(s-data.num,setsetnumber.num); s-next=p-next; p-next=s; return OK;(3)保存车辆离开 离开时,记录离开时间,算出总时

15、间,为后续计算费用做铺垫。同样将信息储存在链表中,在离开停车场函数中利用该函数。Status lListInsert_Link(LinkList &llist,int i,int lset,int totalhour,float fee,int day,int hour,int min)LNode *p,*s; int j; p=llist; j=0; while(p&jnext; +j;if(!p|ji-1)return ERROR; s=(LinkList)malloc(sizeof(LNode); s-data.fee=fee; s-data.totalhour=totalhour; s

16、-data.stnumber=lset; s-data.leave.mday=day; s-data.leave.hour=hour; s-data.leave.min=min; copy(s-data.num,setlset.num); s-next=p-next; p-next=s; return OK; (4)时间函数源代码: 采用系统时间,日小时分钟格式。分为入场时间和出场时间。void showcome(LinkList list)LNode *p; p=list-next; while(p) printf(n %st%d号t%d日%d时%d分,p-data.num,p-data.s

17、tnumber,p-data.reach.mday,p-data.reach.hour,p-data.reach.min);p=p-next; void showleave(LinkList list)LNode *p;p=list-next;while(p)printf(n %st%d号t%d日%d时%d分,p-data.num,p-data.stnumber,p-data.leave.mday,p-data.leave.hour,p-data.leave.min);p=p-next;(5)主函数: 本程序的关键所在。对所有函数进行调用,并实现界面的显示。登记,离开,查询,退出四个部分。主菜

18、单的建立,界面设计等。void main()int choice1,choice2,choice3,wait,ture=1; int i; int come1=0;int leave2=0;int come3=0;int leave4=0; int *p1,*p2,*p3,*p4; p1=&come1;p2=&leave2; p3=&come3; p4=&leave4; char number10; SqStack stack_set1; SqStack stack_set2; SqQueue queue_turn; initStack1(stack_set1); initStack2(sta

19、ck_set2); initQueue(queue_turn); LinkList llist1,llist2,clist1,clist2; CreateList_L(llist1); CreateList_L(clist1); CreateList_L(llist2); CreateList_L(clist2); for(i=1;itm_hour;sete.reach.mday=newtime-tm_mday; sete.reach.min=newtime-tm_min; printf(nn *请核对您的停车信息*n); printf( *停车牌号*: %sn,sete.num);if(i=

20、1)printf( *地上车场*: %dn,sete.setnumber);if(i=2)printf( *地下车场*: %dn,sete.setnumber); printf( *到达时间*: %d:%d:%dn, sete.reach.mday,sete.reach.hour,sete.reach.min); ccord(clist,*come,sete.setnumber); 利用出栈函数来表示车辆进入停车场,等同于车位出停车场。利用set数组,存储进入车场的车辆信息。包括进入时间,车号等。时间函数的时候,显示到达时间,并按先下后上的顺序,选择上下两个停车场,并输出。(2)离开停车场源代

21、码:Status leavestop(LinkList llist,LinkList clist,SqStack &S,SqQueue &Q,int *come,int*leave,int i)char number10; int t,lset; int j=1; int totalhour; float fee; printf (*请输入您的停车位号:);doscanf (%d,&lset); getchar();for(int i=0;iMAX |lsettm_mday-setlset.reach.mday)*24*60+(newtime-tm_hour-setlset.reach.hou

22、r)*60+(newtime-tm_min-setlset.reach.min); fee=price*totalhour; printf( *以下是您本次停车的信息*n); printf( *停车牌号*:%sn,setlset.num); printf( *停车位号*:%dn,setlset.setnumber); printf( *到达时间*:%d:%d:%dn, setlset.reach.mday,setlset.reach.hour,setlset.reach.min); printf( *离开时间*:%d:%d:%dn, newtime-tm_mday,newtime-tm_hou

23、r,newtime-tm_min); printf( *停车费用*:%f,fee); printf(nnnt*谢谢您的光临,祝您一路平安*!nn); printf(nnnntttmention:press any key continue!); getchar(); system(cls); *leave=*leave+1; lListInsert_Link(llist,*leave,lset,totalhour,fee,newtime-tm_mday,newtime-tm_hour,newtime-tm_min); setlset.num1=#;Push(S,lset);if(!EmptyQ

24、ueue(Q)DeQueue(Q); printf(n *请停在停车便道的客户进入停车场!*n);if(i=1)/判断车场printf(n*输入您的车牌号(例:辽A3475):);scanf(%s,number); enterstop(clist,S,number,come,1); t=0;if(i=2) printf(n*输入您的车牌号(例:辽A3475):); scanf(%s,number); enterstop(clist,S,number,come,2); t=0;elset=0;while(t=1);return OK; 离开停车场,包括计费的显示,信息存储在链表中。其中包含出场费

25、用的计算,按分钟计时。实现输入车位号即显示车辆信息(车号,进场时间)离开时,显示所需费用。最后利用一个便车道的判空,判断是否有车辆等待入场,如果有,则停在刚刚空出的车位上。若没有,返回0;4.3.3 王子骄设计实现 停车场栈的建立,便车道的建立,保存车位信息,地上地下两个车场,判断车场是否已满,便车道上的车辆数目函数。(1)便车道的建立源代码:便车道用一队列表示。typedef struct char *base; int front; int rear; SqQueue;(2)代表停车场的栈建立源代码:typedef structint *base; int *top; int stacks

26、ize;SqStack;(3)保存车位信息: 在进入停车场时,要把车辆信息保存在链表中,调用此函数可以实现该功能。信息包括车牌号以及入场时间。typedef struct LNodestructint stnumber; char num10; struct now_time reach; struct now_time leave; float fee; int totalhour;data; struct LNode *next;LNode,*LinkList;void copy(char *a,char *b)int i;for(i=0;(ai=bi)!=0;i+); void CreateList_L(LinkList &L)L=(LinkL

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服