欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:93042143       资源大小:854.50KB        全文页数:46页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    东北大学信息科学与工程学院数据结构课程设计报告题目 立体化停车场管理课题组长 张晓峰课题组成员 曹乔家 王子骄专业名称 计算机科学与技术班级 计1307指导教师 杨雷2015 年 1月课程设计任务书题目:立体化停车场管理问题描述:设停车场有地上和地下两层,统一管理。地下停车场采用单入口和单出口。地上停车场采用南北方向的双口,每个口都有一个入口和出口。停车顺序先地上,后地下。地上入口处各有一个单车道的等候通道,并允许等候的车辆因急事从等候通道直接开走。设计要求:设计停车场模拟管理程序。(1)采用栈、队列和有序表等数据结构。(2)等候车辆的管理。(3)地下、地上停车位的管理。(4)停车计费功能。(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 组装与系统测试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 课题任务【问题描述】设停车场有地上和地下两层,统一管理。地下停车场采用单入口和单出口。地上停车场采用南北方向的双口,每个口都有一个入口和出口。停车顺序先地上,后地下。地上入口处各有一个单车道的等候通道,并允许等候的车辆因急事从等待通道直接开走。 【设计要求】设计停车场模拟管理程序。(1)采用栈、队列和有序表等数据结构。(2)等候车辆的管理。(3)地下、地上停车位的管理。(4)停车计费功能。(5)其它完善性功能。1.2 课题原理 本程序主要运用栈来模拟停车场,建立上下两个栈来模拟上下停车场,一列表模拟车场便道,按照从终端输入的数据序列进行模拟管理,把停车的车位信息保存在新建的链表中,每组输入的数据保存车牌号,自动生成车位号和车辆到达时间保存在链表中,对每一组的数据输出信息,包括车辆到达时间,离开时间,及停车费用,用队列保存便车道停靠的车辆,以及车辆的登记和离开,最后的栈是以顺序栈结构实现,队列和链表以链式结构实现。1.3 相关知识 本实验主要运用链表、栈、队列等数据结构,运用C语言中的指针、数组字符串等相关知识。 2 需求分析2.1 课题调研 通过在网上对各个停车场的调查,我们查到停车场有车辆的入场登记,车辆的离开及费用,还有就是车辆的信息保存,每个车辆有车牌号,到达和离开时间及停车费用等等。2.2 用户需求分析 本程序采用简单的界面,使使用者可以简单可了解软件的使用,界面简单、大方。链表保存的车位信息,只需输入车牌号,其他车位信息自动由系统生成,可以免去使用的其他操作,为使用者省事,省力。同时本软件的使用达到人性化,方便化,便于使用者的使用。 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; 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; struct 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 QueueLength(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) 信息登记()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) 显示车辆离开时间3.4 主算法设计 程序运行时,当车辆入场时,车辆信息保存在链表里,并出栈来表示进入一辆车,其车位和时间自动生成,当汽车离场时,输入车位信息,显示时间,费用。并把车辆离开时间等保存在离开的链表里,然后通过车位信息的输入,即出场和离场链表表示输出。3.5 用户界面设计 主界面分别有车辆登记,车辆离场,车场信息,退出系统四个功能,进入车辆登记窗口输入车牌号,自动生成车位信息显示。车辆离场窗口进入输入车场及 车位信息,即弹出车位信息及停车费用。车位信息即显示地上下停车场进出车辆的车辆信息,包括到达时间、离开时间、车位号、车牌号、停车费用等。退出系统即退出本软件。 4 方案实现4.1 开发环境与工具 本程序在window7下实现和运行,并使用Visual C+6.0编译的。4.2 程序设计关键技术 本程序主要用栈来保存车位车位的信息,当车场为空时,栈此时是满的,而当车场满时,栈是空的。所以当车辆入场时是出栈,而车辆进场时时出栈。此外就是车辆信息的保存在链表里。因为是地上下两个停车场,故我们采用两个栈和两个链表来保存其对应的信息,我们还采用了系统时间,减少了使用者的输入。4.3 个人设计实现4.3.1 张晓峰设计实现 设计时间车位两个结构体,以及时间函数。主函数的设计。保存车辆到达与离开信息(利用链表)(1)时间与车位信息的结构体源程序:struct now_timeint mday; 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&&j<i-1)p=p->next; +j; if(!p|j>i-1)return ERROR; 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)保存车辆离开 离开时,记录离开时间,算出总时间,为后续计算费用做铺垫。同样将信息储存在链表中,在离开停车场函数中利用该函数。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&&j<i-1)p=p->next; +j;if(!p|j>i-1)return ERROR; s=(LinkList)malloc(sizeof(LNode); s->data.fee=fee; s->data.totalhour=totalhour; s->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.stnumber,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)主函数: 本程序的关键所在。对所有函数进行调用,并实现界面的显示。登记,离开,查询,退出四个部分。主菜单的建立,界面设计等。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(stack_set2); initQueue(queue_turn); LinkList llist1,llist2,clist1,clist2; CreateList_L(llist1); CreateList_L(clist1); CreateList_L(llist2); CreateList_L(clist2); for(i=1;i<=MAX+1;i+)seti.setnumber=i; seti.num1='#' system("color 3B"); printf("nnnnnnnnn*欢迎使用停车场管理系统,按任意键进入主菜单*"); do getchar(); system("cls"); printf(" 欢迎使用停车场管理系统nnn");printf(" 主菜单nn"); printf(" *1* 汽车登记n"); printf(" *2* 汽车离场n"); printf(" *3* 车场信息n"); printf(" *0* 退出系统nn");printf("*请按提示输入:n"); scanf("%d",&choice1); switch(choice1)case 1:system("cls"); printf(" *汽车登记*nnn");if(!stack_empty(stack_set1)/进入停车场 printf("n *请输入您的车牌号(例:辽A3475):"); scanf("%s",number); enterstop(clist1,stack_set1,number,p1,1);else if(!stack_empty(stack_set2) printf("n *请输入您的车牌号(例:辽A3475):"); scanf("%s",number); enterstop(clist2,stack_set2,number,p3,2); else/进入便车道等待 wait=w_total(queue_turn); printf("*您好,当前停车场已满,有%d在等待!*n 您是否愿意进入便车道等待:n",wait);printf(" *1*:愿意等待!tt*2*:不愿意等待n"); while(ture=1)scanf("%d",&choice3); getchar(); switch(choice3)case 1:enterlane(queue_turn,wait);/汽车进入便车道 printf("*您好,请进入便车道等待*!"); ture=0;break; case 2: printf("n*汽车离开!"); ture=0; break; default: printf("n*您好,输入错误,请重新输入!");ture=1;break;case 2:system("cls");printf("*汽车离场*nnn");printf(" *1* 地上车场n");printf(" *2* 地下车场n"); scanf("%d",&choice2); switch(choice2)case 1:printf(" *地上停车场*n "); leavestop(llist1,clist1,stack_set1,queue_turn,p1,p2,1); break; case 2: printf(" *地下停车场*n "); leavestop(llist2,clist2,stack_set2,queue_turn,p3,p4,2); break; default: printf("*您输入的有误,请重新输入:");break;case 3:/*今天信息的显示*/system("cls"); printf(" *车场信息*nn");if(come1+come3)=0)printf("*无车辆到达!n");else printf("*到达%d辆车:",come1+come3); printf ("n*汽车信息*车牌号*t*车位号*t*到达时间*t"); printf ("n*地上车场*t"); showcome(clist1); printf ("n*地下车场*t"); showcome(clist2); printf("n");if(leave2+leave4)=0) printf("*无车辆离开!n");elseprintf("*离开%d辆车:",leave2+leave4); printf ("n*汽车信息: *车牌号*t*车位号*t*到达时间*t"); printf ("n*地上车场:t"); showleave(llist1); printf ("n*地下车场:t"); showleave(llist2); break;case 0:system("cls");printf(" *退出停车系统!*n"); break;default : printf("*您输入的有误,请重新输入:");getchar();while(choice1!=0);4.3.2 曹乔家设计实现 设计进入停车场和离开停车场函数,结合之前栈,链表,队列以及数组。(1)进入停车场源代码:void enterstop( LinkList clist,SqStack &S,char number10,int *come,int i) int e; *come=*come+1; Pop(S,e); sete.setnumber=e;copy(sete.num,number);struct tm *newtime; char am_pm = "AM" time_t long_time; time( &long_time ); newtime = localtime( &long_time ); sete.reach.hour=newtime->tm_hour;sete.reach.mday=newtime->tm_mday; sete.reach.min=newtime->tm_min; printf("nn *请核对您的停车信息*n"); printf(" *停车牌号*: %sn",sete.num);if(i=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)离开停车场源代码: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;i<=MAX;i+)if(setlset.num1='#')j=0;if(j=0)printf(" *车场并没有停车*n");return ERROR;elseif(lset>MAX |lset<1)printf("*您输入有误,该车号并不存在!*n*请重新输入您的车位号:n");t=1;elseif(setlset.num1='#')printf("*该车位为空,不能进行离开操作!*n*请重新输入您的车位号:n");t=1;elsestruct tm *newtime;char am_pm = "AM"time_t long_time;time( &long_time ); newtime = localtime( &long_time ); totalhour=(newtime->tm_mday-setlset.reach.mday)*24*60+(newtime->tm_hour-setlset.reach.hour)*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_hour,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(!EmptyQueue(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; 离开停车场,包括计费的显示,信息存储在链表中。其中包含出场费用的计算,按分钟计时。实现输入车位号即显示车辆信息(车号,进场时间)离开时,显示所需费用。最后利用一个便车道的判空,判断是否有车辆等待入场,如果有,则停在刚刚空出的车位上。若没有,返回0;4.3.3 王子骄设计实现 停车场栈的建立,便车道的建立,保存车位信息,地上地下两个车场,判断车场是否已满,便车道上的车辆数目函数。(1)便车道的建立源代码:便车道用一队列表示。typedef struct char *base; int front; int rear; SqQueue;(2)代表停车场的栈建立源代码:typedef structint *base; int *top; int stacksize;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

    注意事项

    本文(毕业设计-数据结构a类停车场管理系统.doc)为本站会员(教****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开