欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    数据结构课程设计停车场管理系统.doc

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

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

    数据结构课程设计停车场管理系统.doc

    数据结构课程设计报告设计题目停车场管理系统班 级网络1102姓 名翟瑜璇学 号40指导教师刘延岭日 期2012年6月25日计算机与信息工程系数据结构课程设计评阅表设计题目停车场管理系统班级网络1102姓名翟瑜璇学号40答辩评语:总结报告评语:功能实现答辩效果设计报告创 新总 分一、 引言设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开车场时必须按它停留的时间长短交纳费用。由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车场内按车辆到达时间的先后顺序,依次由北向南排列。由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,又每个汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素我设计成汽车的车牌号。当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车牌号。当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。二、 设计过程开始1、流程图设计输入车辆的号码及到达时间停车场是否已满?进入停车场进入便道等候离开停车场判断停车场是否为空?车场里没有车输出离开时间计算价格判断便道为空?便道里面没有车辆车辆进入停车场车辆进入停车场结束2、设计思想此停车场管理系统是在一个狭长的通道上的,而且只有一个大门可以供车辆进出,并且要实现停车场内某车辆车要离开时,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后, 这些车再依原来的次序进场的功能,就可以设计两个堆栈,其中一个堆栈用来模拟停车场,另一个堆栈用来模拟临时停车场,该临时停车场用来存放当有车辆离开时,原来停车场内为其让路的车辆。至于当停车场已满时,需要停放车辆的通道可以用一个链队列来实现。当停车场内开走一辆车时,通道上便有一辆车进入停车场,此时只需要改变通道上车辆结点的链接方式就可以了,使通道上第一辆车进入停车场这个堆栈,并且使通道上原来的第二车辆成为通道上的第一辆车,此时只需将模拟通道的链队列的头结点连到原来的第二辆车上就可以了。3、主要模块首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用option()函数,出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个工用户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车场内停放车辆的信息以及退出程序这四个函数模块。4、模块间关系开始初始化两个栈及一个队列。进入主菜单车离开车到达列表显示退出车场内信息车场是否为空便道车信息是否退出列表显示Room前车辆进临时栈对Room计费否判便道是否有车判断栈是否为满是是否便道车进车场元素进栈元素进队列栈元素出栈队列中元素出队结束队列中元素进栈三、 测试及运行结果1、 常见的错误容易将程序中的字母打错:在写程序时多注意,尽量不打错2、 运行过程及结果(1)程序开始运行(2)车辆到达输入信息(3)车辆离开(4)车辆信息(5)退出系统四、 总结一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。再设计过程中,和同学们相互探讨,相互学习,相互监督。我学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世,这次课程设计对我来说受益良多。课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个比不少的过程,“千里之行始于足下”,通过这次课程设计,我深深体会到了这句千古名言的真正含义,我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健的在社会大潮中奔跑打下坚实的基础。我这次设计的科目是停车场管理系统。数据结构,是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。作为一门独立的课程在国外是从1968年才开始设立的。1968年美国唐-欧-克努特教授开创了数据结构的最初体系,他所著的计算机程序设计技巧第一卷基本算法是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。“数据结构”在计算机科学中是一门综合性的专业基础课。数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据结构这一门课的内容不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。通过这次模具设计,我在多方面都有所提高。通过这次的课程设计,更是让我深刻认识到自己在学习中的不足,同时也找到了克服这些不足的方法,这也是一笔很大的资源。在以后的时间中,我们应该利用更多的实践去上机实验,加强自学的能力,多编写程序,相信不久后我们的编程能力都会有很大的提高,能设计出更多的更有创新的作品。五、 参考文献1、C语言程序设计 高等教育出版社 廖雷 第三版 2009年2、数据结构(C语言描述) 中国水利水电出版社 马秋菊 2006年3、4、六、 附录#include "stdio.h"   #include "stdlib.h"   #include "string.h"   #include "conio.h"int MAX; /*定义一个全局变量用来存储车库最大容量*/   float price;/*每车每小时的费用*/   typedef struct time    int hour;    int min;   Time; /*时间结点*/   typedef struct node    char num10;    Time reach;    Time leave;   Car; /*车辆信息结点*/   typedef struct NODE   Car *stack100;    int top;   SqStack; /*停车站*/   typedef struct car   Car *data;    struct car *next;   QNode;   typedef struct Node    QNode *head;    QNode *rear;   LinkQueue; /*通道*/     void InitStack(SqStack *); /*初始化栈*/   int InitQueue(LinkQueue *); /*初始化便道*/   int arrive(SqStack *,LinkQueue *); /*车辆到达*/   void leave(SqStack *,SqStack *,LinkQueue *); /*车辆离开*/   void info(SqStack,LinkQueue); /*显示停车场信息*/   void PRINT(Car *p,int room);void InitStack(SqStack *s) /*初始化栈*/       int i;    s->top=0;    for(i=0;i<=MAX;i+)    s->stacks->top=NULL;      int InitQueue(LinkQueue *Q) /*初始化便道*/      Q->head=(QNode *)malloc(sizeof(QNode);    if(Q->head!=NULL)       Q->head->next=NULL;     Q->rear=Q->head;     return(1);        else return(-1);   void main()       SqStack In,Out;    LinkQueue Wait;    int ch;    InitStack(&In); /*初始化停车站*/    InitStack(&Out); /*初始化让路的临时栈*/    InitQueue(&Wait); /*初始化通道*/    while(1)         printf("-欢迎使用停车场管理系统-n");  printf("t本系统由5011工作室开发,作者:*、*、*、*。nn");  printf("请输入停车场的容量:");  scanf("%d",&MAX);  printf("请输入停车场的收费标准(元/小时):");  scanf("%f",&price);  printf("您输入的停车场容量为%d位,费用为%2.1f元/小时。n",MAX,price);  printf("n(1)车辆到达n(2)车辆离开n(3)停车场信息n(4)退出系统n请选择n");  while(1)          ch=getch();   switch(ch)         case 49:arrive(&In,&Wait);break; /*车辆到达*/       case 50:leave(&In,&Out,&Wait);break; /*车辆离开*/   case 51:info(In,Wait);break; /*输出车站信息*/case 52:printf("谢谢使用!");exit(0); /*退出主程序*/   default:printf("n按键无效,请重新按键选择!");/*49-52分别表示"1"-"4"这四个按键的键值*/system("CLS");printf("-欢迎使用停车场管理系统-n");printf("t本系统由CG工作室开发,作者:*、*、*、*。nnn");printf("您输入的停车场容量为%d位,费用为%2.1f元/小时。n",MAX,price);printf("n(1)车辆到达n(2)车辆离开n(3)停车场信息n(4)退出系统n请选择n");          int arrive(SqStack *In,LinkQueue *W) /*车辆到达*/       Car *p;    QNode *t;    p=(Car *)malloc(sizeof(Car);    flushall();    printf("n停车场还有%d停车位(若停车位为0,车可先进入便道等待)",MAX-In->top); printf("n请输入车牌号码(例:湘D0734):");    gets(p->num);    if(In->top<MAX) /*停车场未满,车进车场*/        In->top+;  printf("n停车的位置:%d号停车位。",In->top);     /printf("n请输入车到达的时间(格式"*:*"):");  printf("n请输入车到达的时间:");  scanf("%d:%d",&(p->reach.hour),&(p->reach.min);     In->stackIn->top=p;  printf("请按任意键返回");  getch();   return(1);        else /*停车场已满,车进便道*/         printf("n停车位已满,该车须在便道等待!");     t=(QNode *)malloc(sizeof(QNode);     t->data=p;     t->next=NULL;     W->rear->next=t;    W->rear=t;   printf("请按任意键返回");    getch();  return(1);         void leave(SqStack *In,SqStack *Out,LinkQueue *W)   /*车辆离开*/    int room;    Car *p,*t;    QNode *q;   /*判断车场内是否有车*/    if(In->top>0) /*有车*/         while(1) /*输入离开车辆的信息*/         printf("n请输入车在停车场的位置(1-%d):",In->top);      scanf("%d",&room);      if(room>=1&&room<=In->top) break;        while(In->top>room) /*车辆离开*/        Out->top+;      Out->stackOut->top=In->stackIn->top;     In->stackIn->top=NULL;      In->top-;       p=In->stackIn->top;     In->stackIn->top=NULL;     In->top-;     while(Out->top>=1)        In->top+;     In->stackIn->top=Out->stackOut->top;     Out->stackOut->top=NULL;     Out->top-;          PRINT(p,room);    /*判断通道上是否有车及车站是否已满*/     if(W->head!=W->rear)&&In->top<MAX) /*便道的车辆进入停车场*/          q=W->head->next;      t=q->data;      In->top+;      printf("n便道的%s号车进入车场第%d号停车位。",t->num,In->top);      /printf("n请输入现在的时间(格式"*:*"):");     printf("n请输入现在的时间:");   scanf("%d:%d",&(t->reach.hour),&(t->reach.min);      W->head->next=q->next;   if(q=W->rear) W->rear=W->head;      In->stackIn->top=t;      free(q);          else printf("n停车场里没有车n"); /*没车*/ printf("请按任意键返回"); getch();void info1(SqStack *S) /*列表输出车场信息*/      int i;    if(S->top>0) /*判断停车场内是否有车*/       printf("n车场:");     printf("n 位置 到达时间 车牌号n");    for(i=1;i<=S->top;i+)         printf("  %dt",i);      printf("%d:%d   ",S->stacki->reach.hour,S->stacki->reach.min);      puts(S->stacki->num);            else printf("n停车场里没有车");    void info2(LinkQueue *W) /*显示便道信息*/       QNode *p;    p=W->head->next;    if(W->head!=W->rear) /*判断通道上是否有车*/         printf("n便道中车辆的号码为:n");     while(p!=NULL)           puts(p->data->num);      p=p->next;             else printf("n便道里没有车n"); printf("请按任意键返回"); getch();  void info(SqStack S,LinkQueue W)      info1(&S); /*显示停车场信息*/    info2(&W); /*显示停便道信息*/     void PRINT(Car *p,int room) /*输出停车站车的信息*/      int A1,A2,B1,B2;    /printf("n请输入车离开的时间(格式"*:*"):");  printf("n请输入车离开的时间:");  scanf("%d:%d",&(p->leave.hour),&(p->leave.min);    printf("n车牌号码:");    puts(p->num);    printf("n车到达的时间是: %d:%d",p->reach.hour,p->reach.min);   printf("车离开的时间是: %d:%d",p->leave.hour,p->leave.min);    A1=p->reach.hour;    A2=p->reach.min;    B1=p->leave.hour;    B2=p->leave.min;    printf("n费用为: %2.1f元",(B1-A1)+(B2-A2)/60.0)*price);    free(p);  

    注意事项

    本文(数据结构课程设计停车场管理系统.doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开