数据结构课程设计总结(模板).doc_第1页
数据结构课程设计总结(模板).doc_第2页
数据结构课程设计总结(模板).doc_第3页
数据结构课程设计总结(模板).doc_第4页
数据结构课程设计总结(模板).doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构课程设计报告题 目: 班 级: 计算机系1001班 姓 名: 王彩娟 刘爽 学 号: 42 36 指导教师: 刘 延 岭 日 期: 2011年 7月3日 一、课程设计目标1、问题描述以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。 每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用。2、问题分析汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。例如,(A,1,5)表示1号牌照车在5这个时刻到达,而(D,5,20)表示5号牌照车在20这个时刻离去。整个程序可以在输入信息为(E,0,0)时结束。本题可用栈和队列来实现。二、概要设计1、方案确定/头文件#include#include#include/函数返回状态代码#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define INFEASIBLE -1#define OVERFLOW -2#define SIZE 5/停车场位置数typedef int Status;/栈,模拟停车场typedef struct Car1/车 int number;/汽车车号 int ar_time;/汽车到达时间CarNode;typedef struct/停车场 CarNode *base;/停车场的堆栈底 CarNode *top;/停车场的堆栈顶 int stacksize;Park;/队列,模拟便道typedef struct Car2/车 int number;/汽车车号 int ar_time;/汽车到达时间 struct Car2 *next;*CarPtr;typedef struct/便道 CarPtr front;/便道的队列的对头 CarPtr rear;/便道的队列的队尾 int length;Shortcut;Status InitStack(Park &P)/初始化停车场 P.base=(CarNode*)malloc(SIZE*sizeof(Car1); if(!P.base) exit(OVERFLOW); P.top=P.base; P.stacksize=0; return OK;Status Push(Park &P,CarNode e)/车进入停车场 *P.top+=e; +P.stacksize; return OK;Status Pop(Park &P,CarNode &e)/车离开停车场 if(P.top=P.base) printf(停车场为空。); else e=*-P.top; -P.stacksize; return OK;Status InitQueue(Shortcut &S)/初始化便道 S.front=S.rear=(CarPtr)malloc(sizeof(Car2); if(!S.front|!S.rear) exit(OVERFLOW); S.front-next=NULL; S.length=0; return OK;Status EnQueue(Shortcut &S,int number,int ar_time)/车进入便道 CarPtr p; p=(CarPtr)malloc(sizeof(Car2); if(!p) exit(OVERFLOW); p-number=number; p-ar_time=ar_time; p-next=NULL; S.rear-next=p; S.rear=p; +S.length; return OK;Status DeQueue(Shortcut &S,CarPtr &w)/车离开便道 if(S.length = 0) printf(通道为空。); else w = S.front-next; S.front-next=S.front-next-next; -S.length; return OK;Status Arrival(Park &P,Shortcut &S)/对进站车辆的处理 int number,ar_time; printf(请输入车牌号:); scanf(%d,&number); printf(进场的时刻:); scanf(%d,&ar_time); if(P.stacksizenumber; Push(P,m); free(w); printf(车牌号为%d的车已由便道进入停车场n,m.number); printf(停车费为%d, 占用车位数为%dn,money,P.stacksize); else printf(停车场不存在牌号为%d的车n, number); return OK;int main() int m=1; char flag;/选项 Park P,Q; Shortcut S; InitStack(P); InitStack(Q); InitQueue(S);while(m) printf(n 停车场管理程序 n); printf(=n); printf(* A 汽车进车场 *n); printf(* *n); printf(* D 汽车出车场 *n); printf(* *n); printf(* E 退出程序 *n); printf(=n); printf(请选择(A,D,E): ); scanf(%c,&flag); switch(flag) case A: case a: Arrival(P,S);break; /车进入停车场 case D: case d: Leave(P,Q,S);break; /车离开停车场 case E: case e: m=0; break; default: printf(Input error!n); break; while (flag != n) scanf(%c,&flag); 2、程序设计模块设计连接图3、模块功能描述此停车场管理系统,主要分为以下若干模块:首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用option()函数,出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个供用户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车场内停放车辆的信息以及退出程序这四个函数模块。其中,在车辆的离开那个模块函数中又调用了打印离开车辆信息的函数,在停车场内停放车辆信息的那个模块函数中,又分别调用了显示停车场上车辆信息的函数以及显示便道上车辆信息的函数。最后,从调鼐的这四个函数中回到主函数结束整个程序的运行。在以上各个模块中,出现的调用的函数为:void InitStack(SeqStackCar *s);int InitQueue(LinkQueueCar *Q);option();int Arrival(SeqStackCar *Enter,LinkQueueCar *W);void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W);void PRINT(CarNode *p);void List(SeqStackCar S,LinkQueueCar W);void List1(SeqStackCar *S);void List2(LinkQueueCar *W);4、模块间关系三、详细设计1、方法设计对于此停车场管理系统的实现,就是用两个堆栈来分别模拟停车场以及停车场内车辆为其它车辆让路时退出停车的临时停放地点。至于通道上车辆的停放则用一个链队列来实现,此时,通道上车辆的离开或者进入停车场只需改变此链队列上的结点而已。对于要对停车场内的车辆根据其停放时间收取相应的停车费用,可以记录下车辆进入以及离开停车场的时间,再用时间差乘以相应的单价并且打印出最后的费用就可以实现了。2、程序流程图四、程序清单五、程序测试与运行结果停车场主界面:车子进入停车场:车子出停车场:车子不想进停车场六、课程设计总结在这一个星期中,自己用vc+做了一个停车场管理的应用系统,分别实现了系统的各大功能。在这次项目中,很用心去做,但是,在项目中也出现了很多的问题,最大的问题就是对程序设计框架结构的不了解,在实现代码与功能的连接时经常会出现各种不同的错误,在实现一些功能时系统常常会报错。许多错误不知从哪修改,以致托了整个设计的后腿。课程设计中,既回顾了很多以前的东西,也发现了很多的问题,以前都没遇见过的,收获很大。 通过本次数据结构的课程设计,我学习了很多在上课没懂的知识,更巩固了课堂中学习有关于哈夫曼编码的知识, 此次停车场管理的应用系统的设计让自己对数据结构的了解更深入,可以把它同实际相结合,同时,又让我们学会了如何更好的从网上查找资料,还有同班上同学的交流。虽然我对数据结构有了一定的掌握,但是到了真正使用,做课设的时候还是遇到了许多的问题。 在仔细研究过课设要求和功能需求后,我有了初步的想法。 在整个设计过程中,通过怎样对把各个管理信息连接起来的分析,锻炼了对事情的分析能力,通过怎样解决过程中出现的问题,提高了我们查找文献的能力、对网络资源的利用能力和和其他同学的交流沟通能力。而且,经历这次的课程设计,也学会了自学和分工协作。编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!在编写程序的过程中,错误不断出现,不同的类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,不能半途而废。 每一次的课程设计,都是让我们对原有的知识从了解表面到深入本质,从个体学习到整体把握的跳跃,对新知识的汲取,更是把课本的知识应用到实际中,让我们了解了我们的学习有什么用,能够解决什么样的问题,增加了自信和学习的动力。总之,通过这次的课程设计,我们收获匪浅首先由衷感谢老师提供这样一个锻炼自己的机会,感受到学来的知识不只是用来完成试卷的。一向惯于独立思考的自己学会了积极的同同学、朋友交流,取长补短,共同进步。课程设计使自己发现考试并不是最重要,最重要的是能运用所学的知识。在整个课程设计的学习过程中,不再是用学到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论