版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学号2014-2015学年 第一学期数据结构课程设计报告题目:基于栈的停车场管理系统设计专业:计算机科学与技术班级:13(1)姓名:学号:指导教师:成绩:计算机与信息工程系二零一四年十一月二十二日目 录1 问题描述及要求.11.1 问题描述.11.2 设计任务及具体要求.12 概要设计.12.1 该系统的功能简介.12.2 总体程序框图.32.3各个模块之间的主要关系.33 设计过程.33.1 各个模块的程序流程图.44 设计结果与分析.75 小结.76 致谢.8参考文献.8附: 源程序.81 问题描述及要求1.1 问题描述 设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
2、汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆汽车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留时间的长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。1.2 设计任务及具体要求主要利用C语言的数据结构知识设计开发一个小型的停车场管理系统,基于栈和队列。至少具有如下功能:输入车辆的基本信息,查询停车场的停
3、车情况和车辆相关信息,根据停车时间对指定车辆收费。操作界面要符合用户的一般习惯,图形或文本界面都可以。要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识; 提高学生用C语言数据结构进行程序设计的能力,重点提高用 C 语言和其数据结构进行操作和绘图应用的编程技术水平; 初步了解软件开发的一般方法和步骤; 提高撰写技术文档的能力。2 概要设计2.1 系统的功能简介该系统主要的功能是,确定表示停车场的栈,表示便道的队列。实现输入一辆车的信息并把它放入基于栈的停车场中,如果停车场已满则停在便道中,并可以查询停车场和便道中车辆的相关信息,让车辆开出停车场,并且根据停车
4、时间计算收取费用。2.2 总体程序框图Main(停车场管理系统)车辆到达登记车辆离开登记车辆列表显示退出系统图1 总体程序车辆列表显示车场列表便道列表返回主菜单图2 车辆列表显示2.3 各个模块之间的主要关系该程序的主要功能是实现对基于栈的停车场的模拟,可以对车辆登记,并根据其在停车场内停车时间的长短计算应收费用。各个模块之间的关系是相互联系的。首先,对结构体的定义在主函数之前,主函数包含了所有的子函数。主函数是整个程序的核心。子函数之间也是有联系的,如,车辆到达登记中的信息会在车辆列表显示中输出,车辆离开登记是必须在车辆到达登记之后再执行的,并且收取费用的计算也是在车辆离开登记中执行的,因此
5、车辆到达登记是十分重要的。退出系统与各个函数之间没有多大联系。3 设计过程3.1 各个模块的程序流程图1) 主函数程序流程图及运行界面主函数程序流程图(见图3)定义变量int ch; while(1)case 1: Arrival();break;车辆到达登记case 2:Leave();break; 车辆离开登记case 3:List();break; 车辆列表显示case 4:exit(0);break; 退出系统defult:break;图3主函数程序 简单说明:该功能主要显示的是给用户一个进入界面,它主要的是显示该程序主要能够执行的有哪些功能。下面是显示给用户的界面。主函数程序运行界面
6、:图4 主函数界面2) 车辆到达登记图(见图5)定义指针变量1、 输入车牌号。2、if(Enter-toptop+; /车辆数加一3、输入到达时间(时:分)scanf(%d:%d,&(p-reach.hour),&(p-reach.min);Enter-stackEnter-top=p;4、将车放入基于栈的停车场图5车辆到达登记图3) 车辆离开登记图(见图6)1、 输入车在车场的位置scanf(%d,&room);if(room=1&roomtop) break;Temp-stackTemp-top=Enter-stackEnter-top; Enter-stackEnter-top=NULL
7、; Enter-top-;2、将制定车辆之后的车移出Enter-stackEnter-top=Temp-stackTemp-top; Temp-stackTemp-top=NULL; Temp-top-;3、开出的车移回图6车辆离开登记图4) 、车辆列表显示流程图及运行界面(见图7、8) while(p!=NULL)puts(p-data-num);p=p-next;1、等待车辆的号码if(W-head!=W-rear)2、便道不为空flag=1; while(flag)printf(n请选择 1|2|3:);printf(n1.车场列表n2.便道列表n3.返回主菜单n);while(1) s
8、canf(%d,&tag);if(tag=1|tag=3) break;else printf(n请选择 13:);3、选择要显示的部分图7车辆列表显示流程图图8车辆列表显示运行界面4 设计结果与分析当把程序写好并进行调试时,并不是一帆风顺的,总会遇到很多在调试时遇到的错误。1. 首先在定义函数时,不能输入汉字。否则会程序会显示错误。2.在程序中,如果对数组大小作动态定义,会出现错误。3.如果要调用添加函数,修改函数,修改函数,查找函数,统计函数等要在主函数前面进行声明。否则会显示警告。4.在声明函数时如果参数部分只有一个“*”号也可以通过编译。5.如果程序在运行的过程中,对于一个循环语句,如
9、果你返回的值始终是真的,那么程序将进如死循环,因此要适时使用break关键字。6. 未注意 int,float 型数据的数值范围,int 型数据的数值范围(-3276832767)。7.对应该有花括弧的复合语句,忘记加花括弧。8. 所调用的函数在调用语句之后才定义,而又在调用前未加说明。5 小 结在本课程设计的设计过程中,我刚开始感觉到有点头痛。要通过一学期数据结构的学习后将所学知识运用起来有点困难,但回过头来再去看教课书,对于这些知识点有关的背景,概念和解决方案更进一步的理解,感觉也不是很难。另外我还体会了从事数据结构课程设计工作需要特别谨慎认真地态度和作风,一点都不能马虎。每个细微的细节都
10、必须十分注意,如果不认真思考,就会出现或大或小的错误。如果把早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时会推倒很多前面做的工作。有时候,我自己觉得我写的程序非常正确,但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间没有一点进展。这时候,我一般是先自己通过书本,手册和资料找解决办法,实在没辙才上百度或向同学请教。在开始编写程序的时候,我看到别人的程序功能非常的详细,而且界面非常漂亮,总是希望自己的程序也非常的完善,但是,发现编一个好的程序不是一蹴而就的事情,需要长时间的积累和经验。
11、在反反复复的学习中,我终于作出一个简单的程序,虽然这个程序的功能非常简单,而且在实际运用中还有些不足,因为停车场的真实情况比较复杂,我涉及到的仅仅是停车场管理的一部分简单内容,离实际的客户需求肯定还有差距。由于我的知识浅薄,经验不足及阅历颇浅,在该系统的设计方面还有很多不足,比如功能过少,界面不醒目等问题,我会在以后的学习过程中,根据具体要求不断的修改、完善,争取使系统慢慢趋于完美。6 致 谢在这次数据结构课程设计中,我的老师和同学给了我及大的帮助。特别是我的指导老师陈茅老师,还有我的数据结构任课老师王源老师,以及给我提供帮助的史海兵老师。在此,我对他们表示感谢!感谢他们在我面对困难时给了我帮
12、助和支持。也感谢那些给我帮助的所有同学!参考文献1严蔚敏、吴伟民著.数据结构(C语言版)北京:清华大学出版社,20072李云清、杨庆红、揭安全著.数据结构(C语言版第2版) 人民邮电出版社,20073谭浩强著.C 程序设计(第三版) 北京:清华大学出版社,19994严蔚敏、吴伟民、米宁著.数据结构题集(C语言版) 北京:清华大学出版社,2007源程序#include#include#include#define MAX 50 #define price 0.05typedef struct timeint hour;int min;Time; typedef struct nodechar n
13、um10;Time reach;Time leave;CarNode; typedef struct NODECarNode *stackMAX+1; int top;SeqStackCar; typedef struct carCarNode *data; struct car *next;QueueNode; typedef struct NodeQueueNode *head; QueueNode *rear;LinkQueueCar; void InitStack(SeqStackCar *); int InitQueue(LinkQueueCar *);int Arrival(Seq
14、StackCar *,LinkQueueCar *);void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *);void List(SeqStackCar,LinkQueueCar);void main()SeqStackCar Enter,Temp; LinkQueueCar Wait; int ch;InitStack(&Enter); InitStack(&Temp);InitQueue(&Wait);while(1)printf(n1. 车辆到达登记);printf( 2. 车辆离开登记);printf( 3. 车辆列表显示);pri
15、ntf( 4. 退出系统n);while(1)scanf(%d,&ch);if(ch=1&chtop=0;for(i=0;istacki=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); void PRINT(CarNode *p,int room)int A1,A2,B1,B2;printf(n车辆离开的时间(如12:20):);sca
16、nf(%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)*60+(B2-A2)*price);free(p);int Arrival(Seq
17、StackCar *Enter,LinkQueueCar *W)CarNode *p;QueueNode *t;p=(CarNode *)malloc(sizeof(CarNode); flushall();printf(n请输入车牌号(例:豫B1234):);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该
18、车须在便道等待!有车位时进入车场);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 room;CarNode *p,*t;QueueNode *q;if(Enter-top0) while(1)printf(n请输入车在车场的位置/1-%d/:,Enter-top);scanf(%d,&room);if(room=1&r
19、oomtop) break;while(Enter-toproom)Temp-top+;Temp-stackTemp-top=Enter-stackEnter-top;Enter-stackEnter-top=NULL;Enter-top-;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+;printf(n便道的%s号车进入车场第%d位置.,t-num,Enter-top);printf(n请输入%s号车进入车场的时间:);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);else printf(n便道里
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 七年级地理下册 第七章 我们邻近的地区和国家7.2 东南亚教学设计 (新版)新人教版
- 高中语文 第一课 第2节 古今言殊-汉语的昨天和今天教学设计1 新人教版选修《语言文字应用》
- IEC 63410-2025 高空作业设备锂电池安全标准 中文版完整解读
- 高中数学 第二讲 变换的复合与二阶矩阵的乘法 2.2.4 旋转变换教学设计 新人教A版选修4-2
- 小学苏教版间隔排列获奖教学设计
- 高中体育 坐位体前屈和柔韧教学设计
- 人教版生物七年级下册4.1.3《青春期》教学设计
- 由三视图还原成实物图教学设计
- 职业卫生评价习题及参考答案
- 有毒有害作业防护知识考试题库
- 2026年中医针灸考试题及答案
- 第3课 协商决定班级事务 课件(内嵌视频)2026-2027学年道德与法治四年级上册统编版
- 广东茂名市电白区2026年村(社区)工作人员招聘考试试卷-含答案解析
- 2026河北机关事业单位工人技能等级考试(广播电视机务员)历年参考题库含答案详解
- 陆上风电场培训内容
- 2026年甘肃省兰州市公安招聘辅警考试真题及答案
- 《无人机飞行控制技术》无人机应用技术专业全套教学课件
- 青少年脊柱侧弯诊疗指南(2026版)
- 关键工序工艺参数设定规范
- 2026年全国英语等级考试(PETS)三级模拟试题及答案二
- 《宁夏闽宁镇》课件
评论
0/150
提交评论