停车场模拟管理程序的设计与实现课程设计.doc_第1页
停车场模拟管理程序的设计与实现课程设计.doc_第2页
停车场模拟管理程序的设计与实现课程设计.doc_第3页
停车场模拟管理程序的设计与实现课程设计.doc_第4页
停车场模拟管理程序的设计与实现课程设计.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

数据结构课程设计报告河南科技大学课 程 设 计 说 明 书课程名称 数据结构课程设计 题 目 停车场模拟管理程序的设计与实现 院 系 班 级 学生姓名 指导教师 日 期 2012.6.1-2012.6.19 数据结构课程设计任务书课程设计题目停车场模拟管理程序的设计与实现姓名刘鹏飞学号10125020125专业班级计算机科学与技术101组别组长同组成员 指导教师刘中华 李艳霞课程设计目的进一步理解栈和队列的逻辑结构和存储结构,提高使用理论知识指导解决实际问题的能力。课程设计环境386以上的微机上进行,运行环境为TurboC课程设计任务和要求设计停车场模拟管理程序,要求实现4个大的功能模块1. 程序功能介绍和操作提示2. 汽车进入停车位的管理模块3. 汽车离开停车位的管理模块4. 查看停车厂停车状态的的查询模块参考文献1、杨秀金等. 数据结构(C语言版). 西安电子科技大学出版社20042、谭浩强. C语言程序设计. 清华大学出版社. 20023、李春保. 数据结构教程上机实验指导. 清华大学出版社. 2005 时 间 进 度 安 排序号起止日期工 作 内 容12012.6.12012.6.5下达课程设计任务、查阅资料、确定方案 22012.6.62012.6.14编写程序、调试、运行 32012.6.15验收 42012.6.162012.6.18撰写课程设计报告 52012.6.19提交文档停车场模拟管理程序的设计与实现 一、简介1设计目的:理解线性表的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。2问题的描述:设停车场只有一个可停放几辆汽车的狭长通道,只有一个大门可供汽车进出。汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车辆开走,则排在便道上的第一辆汽车即可进入;当停车场内某辆汽车要开走时,由于停车场是狭长的通道,在它之后开入的车辆必须先推出车场为他让路,待车辆开出大门,为他让路的车辆再按原次序进入车场。试设计这样一个停车场模拟管理程序。二、数据结构的设计:typedef struct time int hour; int min; Time; 定义一个时间结点,以便区分车辆typedef struct node char num10; Time reach; Time leave; CarNode; 对车的信息进行定义,且车只有一个车牌号typedef struct NODE CarNode *stackMAX+1; int top; SeqStackCar; 定义一个栈,用以表示车位typedef struct car CarNode *data; struct car *next; QueueNode;/*队列元素*/typedef struct Node QueueNode *head; QueueNode *rear; LinkQueueCar;/*队列*/定义一个队列,并定义头尾指针void InitStack(SeqStackCar *s) /*初始化栈*/ int i; s-top=0; for(i=0;istacks-top=NULL; 创建一个栈,并初始化int InitQueue(LinkQueueCar *Q) /*初始化便道*/ Q-head=(QueueNode *)malloc(sizeof(QueueNode); if(Q-head!=NULL) Q-head-next=NULL; Q-rear=Q-head; return(1); else return(-1); 创建一个队列,并初始化int Arrival(SeqStackCar *Enter,LinkQueueCar *W) /*车辆到达*/ CarNode *p; QueueNode *t; p=(CarNode *)malloc(sizeof(CarNode); flushall(); printf(n请输入车的车牌号(例:豫C1234):); gets(p-num); if(Enter-toptop+; printf(n车进入站所在的位置%d,Enter-top); printf(n车到达的时间:/*:*/); scanf(%d:%d,&(p-reach.hour),&(p-reach.min); Enter-stackEnter-top=p; return(1); else /*车场已满,车进便道*/ printf(n该车须在便道等待!); t=(QueueNode *)malloc(sizeof(QueueNode); t-data=p; t-next=NULL; W-rear-next=t; W-rear=t; return(1); 有车进入停车场,车场有空位则进入,否则进入便道等待void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) /*车辆离开*/ int i, room; CarNode *p,*t; QueueNode *q; /*判断车场内是否有车*/ if(Enter-top0) /*有车*/ while(1) /*输入离开车辆的信息*/ printf(n请输入车在车场的位置/1-%d/:,Enter-top); scanf(%d,&room); if(room=1&roomtop) break; while(Enter-toproom) /*车辆离开*/ Temp-top+; Temp-stackTemp-top=Enter-stackEnter-top; Enter-stackEnter-top=NULL; Enter-top-; for(i=1;itop;i+)printf(n车牌号为%s车为其让路n,Temp-stacki-num); p=Enter-stackEnter-top; Enter-stackEnter-top=NULL; Enter-top-; while(Temp-top=1) Enter-top+; Enter-stackEnter-top=Temp-stackTemp-top; Temp-stackTemp-top=NULL; Temp-top-; PRINT(p,room); /*判断通道上是否有车及车站是否已满*/ if(W-head!=W-rear)&Enter-tophead-next; t=q-data; Enter-top+;if (roomtop)for(i=1;itop;i+)printf(n车牌号为%s的车进入第%d号的位置.n,Enter-stacki-num,i); printf(n便道的%s号车进入车场第%d位置.,t-num,Enter-top); printf(n请输入现在的时间/*:*/:); scanf(%d:%d,&(t-reach.hour),&(t-reach.min); W-head-next=q-next; if(q=W-rear) W-rear=W-head; Enter-stackEnter-top=t; free(q); elsefor(i=1;itop;i+)printf(车牌号为%s的车进入第%d号车位n,Enter-stacki-num,i);printf(n便道里没有车.n); else printf(n车场里没有车.); /*没车*/ 有离开车位:1.进行查找,从栈的最后一个开始查找,若有不符合的,则让其离开,到辅助栈。2.查找成功,将其出栈,辅助栈中的汽车重新回到车位中;道上的的汽车进入车位,将车位补满。3.查找失败,进行上方的else,将进入辅助栈的车重新回到车位中,并显示没有此车。flag=1; while(flag) printf(n请选择 1|2|3:); printf(n1.车场n2.便道n3.返回n); while(1) scanf(%d,&tag); if(tag=1|tag=3) break; else printf(n请选择 1|2|3:); switch(tag) case 1:List1(&S);break; /*列表显示车场信息*/ case 2:List2(&W);break; /*列表显示便道信息*/ case 3:flag=0;break; default: break; 用的是一个switch语句实现输入不同的操作选项,调用不同的函数进入不同的操作板块三. 功能(函数)设计一本程序从总体上分为四个功能模块,分别为:一:(1)程序功能介绍和操作提示模块:该模块是为了让用户了解本程序的用途。菜单中含有“汽车进入停车位”“汽车离开停车位”“查看停车场状态”及“退出”四个选项。(2)汽车进入停车位模块:在这一模块主要完成记录停车场汽车的车牌号和对该车进入车位过程中状态改变的记录。(3)汽车离开停车位模块:此模块主要用来完成对停车位上的车停开停车场的过程及其他汽车的状态的改变的记录。(4)查看停车场状态的查询模块:此模块主要用来显示停车位即便道上的状态。二流程图如下(1)程序功能介绍和操作提示模块操作选项菜单车辆进入车辆离开列表信息退出程序(2)汽车进入停车位的管理模块车辆进入车站输入车牌号判断车站内车辆是否已满进入便道进入车站(3)汽车离开停车位的管理模块车辆离开车站输入车牌号判断车站是否有该车该车是否在停车位上该车不存在于车站YN该车离开该车不存在YN便道车按顺序进入 四、界面设计:1.欢迎界面2. 系统界面3.车辆到达界面4.车辆离开界面本程序所得界面描述如下:1:到达汽车。2:离开汽车。3:列表信息。4:退出程序。-请选择一个数 1/2/3/4 :可以清楚地显示车辆的状态,而且简单易懂。五、程序设计:1.主函数流程图Main Check、ArrivalLeave输入车牌号输入车牌号退出程序便道信息站内信息N该车是否存在Y判断车站内车辆是否已满该车不存在该车离开进入车站进入便道其他车按顺序进入车站2.主要函数:Arrival函数:有车辆进入停车场的实现Leave 函数: 有车辆离开停车场的实现List 函数:对停车场的车位信息的实现Print 函数:打印出车的各种信息编写代码期间遇到的问题:1. 在定义函数时,定义了不同的指针,出现了不同的错误,程序运行时出现定义错误等错误信息指示。2. 在车辆进出车站时,需要不停的调用查找函数以及出栈函数,要进行出栈与临时栈的数据转存,需要设置不同的标志量和判断函数进行出栈进栈的函数的调用,此过程细节非常复杂,比较容易出现错误。解决办法:通过查找程序中隐藏得错误,加上重新温习C语言和其他资料,进一步对程序有了深入的了解。先在保证各函数准确的情况下,调用函数,画出程序的流程图,对照流程图进行判断条件的编写和函数的调用。六、运行与测试:1.运行结果如下2、运行与测试期间遇到的问题及其解决办法。(1).问题1:忽视了车牌号中含有字母导致刚开始的程序不合题意,只能输入数字而无法输入字母;通过复习C语言知识及请教别人才得以解决(2)问题2:输入车牌号时不小心加入了运算符号,使程序运行进入死循环;仔细检查后,加以修改才得以解决。(3)问题3:出现很多小错误,通过检查及请教老师和同学最后改动一处错误使程序变为了正确(4)问题 4:使用字符串是没有使用字符串复制,导致输出车牌号只能是一个字母;通过请教同学及参考C语言课本最终解决。(5),问题 5:在输入变量时没有注意变量的大小写,导致程序运行错误,修改后,程序运行正常。七、结论:本程序创建了一个简单的停车场模型,可以生动形象的反映车辆进场出场的过程。但在车辆出场和便道停车还有待于改善;同时当车辆少于停车位时汽车出站也需要进一步改善。另外,在找到合适的函数后许可以实现停车场的动态变化。八、设计后的思考:(1),该实验涉及到顺序栈的建立,插入,删除等操作;涉及到链队列的建立,插入,删除等操作,做这个实验,加深了我对以上知识点的认识和理解。(2),在输入变量时要注意大小写,否则会发现一系列错误,对于变量一定要先声明在使用,作为一个学习编程者,调试程序能力也是严格要求的。(3),最后,在这两周的课程设计中,我的收获还是挺大的,我不仅对专业课有了更好的认识,而且在实验的过程中,更加的了解到,拥有丰富的知识的重要性。参考文献:1、杨秀金等. 数据结构(C语言版). 西安电子科技大学出版社20042、谭浩强. C语言程序设计. 清华大学出版社. 20023、李春保. 数据结构教程上机实验指导. 清华大学出版社. 2005课程设计

温馨提示

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

评论

0/150

提交评论