数据结构课程设计报告

上传人:汽*** 文档编号:564639483 上传时间:2024-01-29 格式:DOC 页数:25 大小:266KB
返回 下载 相关 举报
数据结构课程设计报告_第1页
第1页 / 共25页
数据结构课程设计报告_第2页
第2页 / 共25页
数据结构课程设计报告_第3页
第3页 / 共25页
数据结构课程设计报告_第4页
第4页 / 共25页
数据结构课程设计报告_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《数据结构课程设计报告》由会员分享,可在线阅读,更多相关《数据结构课程设计报告(25页珍藏版)》请在金锄头文库上搜索。

1、. . . . 数据结构课程设计报告(2011 2012 学年 第 2 学期) 题 目:停车场管理系统学 号:8姓 名:王青山指导教师:印清信息科学与工程系1设计容、任务与具体要求1.1设计容 设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场有车开走,则排以便道上的第一辆车就进入停车场。停车场如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进

2、场。每辆车在离开停车场时,都应根据它在停车场停留的时间长短交费。如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。1.2设计任务与具体要求 任务:实现车辆系统的动态管理 (1) 熟练掌握栈顺存和链存两种存储方式。(2) 掌握栈的基本操作与应用。(3) 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。 具体要求:1栈用顺序结构实现,队列用链式结构实现;2每一组输入数据包括三个数据项:汽车“到达”或“离去” 的信息、汽车牌照、汽车到达或离去的时刻;3对每一组输入数据进行操作后的输出信息为:

3、若是车辆到达, 则输出车辆在停车场或便道上的停车位置;若是车辆离去, 则输出车辆在停车场停留的时间和应缴纳的费用(假设在便 道上等候的时间不收费)。2概要设计2.1该系统的功能简介 主函数:介绍程序的基本功能,并给出程序功能所对应的键盘操作的提示,如车到来或离去的表示方法,停车场或者便道的 状态的查询方法提示等。车辆到达Arrival函数:首先要查询当前停车场的状态,当停车场非满时,将其驶入停车场(入栈),开始计费;当停车场满时,让其进入便道等候(入队)。车辆离开Leave函数:当某辆车要离开停车场的时候,比它后进停车场的车要为它让路,(即将这些车依次“压入”辅助栈), 开走请求离开的车,再将

4、辅助栈中的车依次出栈,“压入”停车场;同时根据离开的车在停车场停留的时间进行收费;最后查询是否有车在便道等候,若有,将便道上的第一辆车驶入停车场(先出队,再入栈),开始交费。车辆信息List函数:用来在屏幕上显示停车位和便道上各位置的状态。2.2 总体程序框图2.3各个模块之间的主要关系此停车场管理系统,主要分为以下若干模块:首先定义用来模拟停车场的堆栈以与用来模拟通道的链队列为全局变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用jiemian()函数,出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个供用户选择的界面,在用户的选择过程中,程

5、序又分别调用车辆的到达、车辆的离开、停车场停放车辆的信息以与退出程序这四个函数模块。其中,在车辆的离开那个模块函数中又调用了打印离开车辆信息的函数,在停车场停放车辆信息的那个模块函数中,又分别调用了显示停车场上车辆信息的函数以与显示便道上车辆信息的函数。最后,从调鼐的这四个函数中回到主函数结束整个程序的运行。在以上各个模块中,出现的调用的函数为: void jianzhan(tingchechang*); int jianduilie(biandao *Q) int jiemian( ) int Arrival(tingchechang *zhan1,biandao *W) void Leav

6、e(tingchechang *zhan1,tingchechang *zhan2,biandao *W) void PRINT(xinxijiedian *p,int weizhi)void List(tingchechang S,biandao W) void List1(tingchechang *S) void List2(biandao *W) 3系统功能模块的具体设计3.1各个模块的程序流程图与运行界面欢迎界面车辆到达车辆离开车辆信息(车场/便道)3.2关键代码分析说明 为了便于区分每辆汽车并了解每辆车当前所处的位置等信息,需要记录汽车的牌照、进入停车场的时间与汽车需要离开的时间,

7、汽车的类型定义描述如下:typedef struct node1 char num10; Time reach; Time leave; xinxijiedian; 由于车位是一个狭长的通道,不允许两辆车同时出入停车位,当有车到来时要进入停车位的时候也要顺次停放,当某辆车要离开时,比它后到的车要先暂时离开停车位,而且越后到的车就越先离开停车位,显然这与栈的“后进先出”特点相吻合,因此用栈来描述停车场是合适的,使用一个顺序栈表示停车场比较方便,具体定义如下:typedef struct node2 xinxijiedian *stackMAX+1; int top; tingchechang;当

8、停车场的停车位上都已经停满了汽车,又有新的汽车到来时要把它停放在便道上,车辆要按照进入便道的先后顺序顺次存放在便道上;当有车从停车场上离开后,便道上等候的第一辆汽车就立即进入停车场中空出的某个车位。这和队列“先进先出”的特点相吻合,使用链队列来模拟便道比较合适,类型定义如下:typedef struct car xinxijiedian *data; struct car *next;chewei;当某辆车要离开停车场的时候,比它后进停车场的车要为它让路,而且当它开走之后让路的车还要按照原来的停放次序再次进入停车位的某个车位上,为了完成这项功能,需要再定义一个辅助栈,停车位中让路的车依次“压入

9、”辅助栈,待提出开走请求的车开走后再从辅助栈的栈顶依次“弹出”到停车位中。对辅助栈也可采用顺序栈,与停车场栈类似:typedef struct node3 chewei *head;chewei *rear;biandao;4程序调试分析本程序的调试运行,总体上情况良好,但中间也出现了一些小问题。其中比较有代表性的主要问题有:在这周课程设计中,我们小组所开发的停车场管理系统,基本上可以完成每一项功能。汽车进入停车场的信息、离开停车场的信息以与通道上的信息都可以在程序上一一实现。但是,在改进的程序中,还应该增加时间的判断功能,即停车场有可能有车辆停放的时间超过一天。还有一个很重要的问题,对于停车

10、场可以停放的最多车辆数,为了测试数据的方便,我在程序中,定为了3,在实际使用中,可以改变程度开头的宏定义以增加停车场的容量。5程序使用说明这个程序用来实现对停车场车辆的管理,整个操作界面为中文,更加符合人性化的标准,使得用户使用方便,而且每一个操作都有提示,使得初次接触该程序的用户也能很快适应程序的操作。这个程序操作简单,对于车牌号,只需输入车牌号就行,而且对于进出停车场的时间,也简化了操作,只需输入几时几分就行,没有具体到哪年哪月哪日,但也许这也是该程序不足之处所在。而且该程序也给用户提供了选择的机会,当点击运行该程序后,如果想退出程序,可以输入n或N退出该运行程序。至于使用过程中的更具体的

11、问题,可以参照该报告书中调试分析那一项的屏幕截图,整个程序的运行界面大致就如上述屏幕截图的容。6总结 通过对停车场管理系统的开发,使得我将计算机课程所学知识与实际问题很好地相联接在了一起。在这次课程设计中,不仅培养了我开发一个中小型程序的能力,而且也培养了我的团队合作能力。在这次对停车场管理系统的开发过程中,我们小组成员互相合作,互相帮助,其中有程序功能成功实现时的欣喜,也有遇到问题、解决问题时的执着以与迷茫。在这次课程设计中,使得我很好地了解了在开发程序过程中合作的重要性。总之,在这周的课程设计中,我以与我们这组的收获还是挺大的,不仅对于 专业课有了更好的认识,而且在合作的过程中更加了解了团

12、队精神的重要性。致非常感我的指导教师印清教授,以与在此次课程设计中我的小组成员和我的同学们,是他们让我在此次课程设计中学到了更多,让我认识到以前学习中存在的不足。参考文献谭浩强,C 语言设计(第三版). : 清华大学严蔚敏 吴伟民 数据结构(C 语言版) 清华大学附:源程序#include /*标准输入输出文件*/#include /*即standard library标准库头文件(利用这个头文件才可以使用malloc,realoc等存的函数)*/#include/*字符串处理头文件*/*-以上为头文件部分-*/#define MAX 3 /*车库容量*/#define price 0.05/

13、*每车每分钟费用两个可以随问题条件而宏观改变的宏定义*/typedef struct time int hour;/*小时*/ int min;/*分*/Time; /*时间Time结构体*/typedef struct node1 char num10; /*10个字符长度的车牌号*/ Time reach; /*到达时间(利用上面的结构体 Time)*/ Time leave; /*离开时间(利用上面的结构体Time)*/xinxijiedian; /*车辆信息结点(记录车牌,进出时间)*/typedef struct node2 xinxijiedian *stackMAX+1;/*声明

14、一个记录车辆信息结点相关信息的指针数组*/ int top;/*车站现有的车辆数目(即上面说的栈顶的位置)*/tingchechang; /*模拟车站(采用栈)*/typedef struct car xinxijiedian *data;/*车辆信息结点声明的指针*/ struct car *next;/*用自身声明一个next指针(这里相当于一个递归)*/chewei;/*便道的每一个车位*/typedef struct node3 chewei *head; /*利用上面的结构体声明便道的head指针*/ chewei *rear; /*利用上面的结构体声明便道的rear指针*/biandao;/*模拟便道(采用队列)*/*-以上部分

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号