版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计报告设计题目停车场管理系统班 级网络1102姓 名翟瑜璇学 号40指导教师刘延岭日 期2012年6月25日计算机与信息工程系数据结构课程设计评阅表设计题目停车场管理系统班级网络1102姓名翟瑜璇学号40答辩评语:总结报告评语:功能实现答辩效果设计报告创 新总 分一、 引言设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,
2、在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开车场时必须按它停留的时间长短交纳费用。由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车场内按车辆到达时间的先后顺序,依次由北向南排列。由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,又每个汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素我设计成汽车的车牌号。当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。这是个一退一进的
3、过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车牌号。当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。二、 设计过程开始1、流程图设计输入车辆的号码及到达时间停车场是否已满?进
4、入停车场进入便道等候离开停车场判断停车场是否为空?车场里没有车输出离开时间计算价格判断便道为空?便道里面没有车辆车辆进入停车场车辆进入停车场结束2、设计思想此停车场管理系统是在一个狭长的通道上的,而且只有一个大门可以供车辆进出,并且要实现停车场内某车辆车要离开时,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后, 这些车再依原来的次序进场的功能,就可以设计两个堆栈,其中一个堆栈用来模拟停车场,另一个堆栈用来模拟临时停车场,该临时停车场用来存放当有车辆离开时,原来停车场内为其让路的车辆。至于当停车场已满时,需要停放车辆的通道可以用一个链队列来实现。当停车场内开走一辆车时,通道上
5、便有一辆车进入停车场,此时只需要改变通道上车辆结点的链接方式就可以了,使通道上第一辆车进入停车场这个堆栈,并且使通道上原来的第二车辆成为通道上的第一辆车,此时只需将模拟通道的链队列的头结点连到原来的第二辆车上就可以了。3、主要模块首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量,然后编写主函数,在此主函数中实现对其它各个模块的调用。在主函数中首先调用option()函数,出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个工用户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车场内停放车辆的信息以及退出程序这四个函数模块。4、模块间关系
6、开始初始化两个栈及一个队列。进入主菜单车离开车到达列表显示退出车场内信息车场是否为空便道车信息是否退出列表显示room前车辆进临时栈对room计费否判便道是否有车判断栈是否为满是是否便道车进车场元素进栈元素进队列栈元素出栈队列中元素出队结束队列中元素进栈三、 测试及运行结果1、 常见的错误容易将程序中的字母打错:在写程序时多注意,尽量不打错2、 运行过程及结果(1)程序开始运行(2)车辆到达输入信息(3)车辆离开(4)车辆信息(5)退出系统四、 总结一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情的方法和技巧。
7、再设计过程中,和同学们相互探讨,相互学习,相互监督。我学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世,这次课程设计对我来说受益良多。课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个比不少的过程,“千里之行始于足下”,通过这次课程设计,我深深体会到了这句千古名言的真正含义,我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健的在社会大潮中奔跑打下坚实的基础。我这次设计的科目是停车场管理系统。数据结构,是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和运算等的学科,而且确保经过这些运算后所得到的新结构仍然是原来的结构
8、类型。作为一门独立的课程在国外是从1968年才开始设立的。1968年美国唐-欧-克努特教授开创了数据结构的最初体系,他所著的计算机程序设计技巧第一卷基本算法是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。“数据结构”在计算机科学中是一门综合性的专业基础课。数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据结构这一门课的内容不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。通过这次模具设计,我在多方面都有所提高。通过这次的课程设计,更是让我深刻认识到自己在学习中的不足,同时也找到了克服这些不足的方法,这也是一笔很大的
9、资源。在以后的时间中,我们应该利用更多的实践去上机实验,加强自学的能力,多编写程序,相信不久后我们的编程能力都会有很大的提高,能设计出更多的更有创新的作品。五、 参考文献1、c语言程序设计 高等教育出版社 廖雷 第三版 2009年2、数据结构(c语言描述) 中国水利水电出版社 马秋菊 2006年3、4、六、 附录#include stdio.h #include stdlib.h #include string.h #include conio.hint max; /*定义一个全局变量用来存储车库最大容量*/ float price;/*每车每小时的费用*/ typedef struct ti
10、me 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 initst
11、ack(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;istacks-t
12、op=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); /*初始化通道*/
13、 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);b
14、reak; /*车辆到达*/ 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元/小时
15、。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-toptop+;printf(n停车的位置:%d号停车位。,in-top
16、); /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();re
17、turn(1); void leave(sqstack *in,sqstack *out,linkqueue *w) /*车辆离开*/ int room; car *p,*t; qnode *q; /*判断车场内是否有车*/ if(in-top0) /*有车*/ while(1) /*输入离开车辆的信息*/ printf(n请输入车在停车场的位置(1-%d):,in-top); scanf(%d,&room); if(room=1&roomtop) break; while(in-toproom) /*车辆离开*/ out-top+; out-stackout-top=in-stackin-t
18、op;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-tophead-next; t=q-data; in-top+; printf(n便道的%s号车进入车场第%d号停车位。,t-num,in-top
19、); /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-top0) /*判断停车场内是否有车*/ printf(n车场:); printf(n 位置 到达时间 车牌号n);for(i=1;itop;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) /*显示便道信息*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年就餐实施方案
- 美甲店临时涨价方案
- 期中测试提升卷-2024-2025学年人教PEP版英语六年级上册(含答案含听力原文无音频)
- 山西公务员面试模拟46
- 小学语文学习任务单的设计与实施
- 江苏行政职业能力C类模拟12
- 浙江公务员面试模拟78
- 2015年6月28日上午陕西公务员面试真题
- 地方公务员广东申论40
- 河北省公务员面试模拟202
- 《榜样就在身边》课件
- 《西溪湿地博物馆》课件
- (医院护理安全警示教育)课件
- 热稳定校验计算书
- 组建医疗服务公司方案
- 部编版六年级上册道德与法治《公民的基本权利和义务》课件
- 2023-2024学年四川省成都市高一上英语期末考试题(含答案和音频)
- 《班组长工作职责》课件
- 儿童合唱团管理制度
- 职业健康法律法规清单
- 银行业波特五力分析报告
评论
0/150
提交评论