版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、标准数据结构课程设计停车场管理系统目录一、课设目的2二、问题描述2三、基本要求2四、详细设计2(1)原理分析3(2)功能模块3(3)用户手册5(4)流程图6(5)测试用例7(6)测试目的7(7)测试要求7五、程序源码7六、测试结果13七、课设总结15八、参考文献15一、课设目的(1)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(2)初步掌握软件开发过程中的问题分析,系统设计,程序编码,测试等基本方法和技能;(3)提高综合应用所学的理论知识和方法独立分析和解决问题的能力;(4)训练用系统的观点和软件开发和一般规范进行软件开发,培养软件工作者所应具有的科学的工作方法和作风。二
2、、问题描述设停车场内只有一个可停放 n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即 可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。三、基本要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输
3、入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据 进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表实现。四、详细设计(1) 原理分析:栈是一种只能在一段进行输入和输出操作的线性表,表尾称为栈顶,表头称为栈底。栈的主要特点是“后进先出”,即后进栈的元素先处理,停车场的容量即为栈的存储空间。队列是限定仅能在表的一段进行插入,在表的另一端进行删除的线性表。队列中可以插入的一段称
4、为队尾,可以删除的一端称为队首。队列的主要特点是“先进先出”。停车场管理系统是充分利用数据结构中栈和队列的思想实现的,用到两个堆栈,一个用来模拟停车场,另一个为临时栈,存储为离开停车场的车辆让道的其他车辆;一个队列结构,存储便道的车辆信息。定义栈,表示停车场停车场的堆栈底停车场的堆栈顶停车场的容量typedef structCarNode *base;CarNode *top; int stacksize;/ Park;typedef struct定义队列,表示便道CarPtr fron t;便道的队列的队头CarPtr rear;/ 便道的队列的队尾int len gth; Shortcut
5、;(2) 功能模块:车辆到达:a、若栈不满,车辆进栈,停到停车场;b、若栈满,车辆入队,停到便道;Status Arrival(Park & P,Shortcut &S)int nu mber,ar_time;/对进站车辆的处理:prin tf(请输入车牌号:);/记录车牌号,时间,并根据停车场sca nf(%d,&nu mber);/疋否满来判断入栈还疋入队列printf(进场的时刻:);sea nf(%d,&ar_time);if(P.stacksize nu mber;Push(P,m);/后面的车开出停车场让路,进入备用栈备用栈中的车开入停车场便道中的车开入停车场free(w);pri
6、ntf(车牌号为d的车已由便道进入停车场n,m.number);printf( 停车费为 %d,占用车位数为 dn,money,P.stacksize);else pri ntf(停车场不存在牌号为 d的车n, nu mber);return OK;(3) 用户手册:输出菜单选项;请选择(A,D,E): 如果选择A,即车辆到达:若栈不满,车辆进栈,停到停车场;若栈满,车辆入队,停到便道; 如果选择D,即车辆离开:计算时间及费用;如果队列不空且栈不满,队列上的车出队入栈; 如果选择E,则退出程序。(4 )流程图:图一、函数关系调用图图二、操作流程图(5)测试用例:(A , 1, 5), ( A,
7、,2,10),( D1, 15), ( A3,20 ) , ( A ,4,25), ( A ,5, 30), ( D, 2, 35) , ( D, 4, 40), ( E, 0, 0)。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,其中,A表示到达,D表示离去,E表示输入结束。(6 )测试目的:测试菜单显示方法,到达方法和离开方法能否正确完成,时间和费用计算是否正确。(7)测试要求:测试用例要合理并足够,既要有正确用例,也要有错误用例,检验程序的正确性和健壮性。五、程序源码#i nclude#i nclude#in clude#defi ne OK
8、1 / 函数返回状态代码,宏定义#defi ne ERROR 0#defi ne TRUE 1#defi ne FALSE 0#defi ne INFEASIBLE -1#defi ne OVERFLOW -2#defi ne SIZE 2 /停车场位置数#defi ne PRICE 2 typedef int Status;/栈,模拟停车场定义一个结构体来表示停车场中的车typedef struct Car1 /int nu mber;/汽车车号int ar_time;/汽车到达时间定义栈,表示停车场停车场的堆栈底停车场的堆栈顶停车场的容量CarNode;typedef structCarN
9、ode *base;/CarNode *top; int stacksize;/ Park;typedef int Status;/队列,模拟便道typedef struct Car2/用另一个结构体来表示便道中停放的车int nu mber;/汽车车号int ar_time;/ 汽车到达时间 struct Car2 *n ext;*CarPtr;typedef struct/定义队列,表示便道CarPtr fron t;/ 便道的队列的队头CarPtr rear;/ 便道的队列的队尾int len gth;Shortcut;Status Ini tStack(Park &P)/初始化停车场P
10、.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 Ini tQue
11、ue(Shortcut &S) S.fro nt=S.rear=(CarPtr)malloc(sizeof(Ca );/if(!S.fro nt|!S.rear) exit(OVERFLOW);车离开停车场,栈的输出操作初始化便道S.fro nt- next=NULL;S.le ngth=O;return OK;Status En Queue(Shortcut &S,i nt nu mber,i nt ar_time) CarPtr p;/p=(CarPtr)malloc(sizeof(Car2);if(!p) exit(OVERFLOW);p-nu mber =nu mber;p-ar_ti
12、me=ar_time;p- next=NULL;S.rear- n ext=p;S.rear=p;+S.le ngth;return OK;Status DeQueue(Shortcut & S,CarPtr &w) if(S.le ngth = 0)/printf( 通道为空.);else w = S.fron t- n ext;S.fro nt- next=S.fr on t- next-next;-S.le ngth;return OK;车进入便道,队列的输入操作车离开便道,队列的输出操作Status Arrival(Park & P,Shortcut &S)int nu mber,ar
13、_time;/prin tf(请输入车牌号:);/sca nf(%d,&nu mber);/printf(进场的时刻:);sca nf(%d,&ar_time);if(P.stacksize nu mber;Push(P,m);/便道中的车开入停车场free(w);printf(车牌号为d的车已由便道进入停车场n,m.number);printf(停车费为 %d,占用车位数为 dn,money,P.stacksize);else pri ntf(停车场不存在牌号为 d的车n, nu mber);return OK;int mai n() int m=1;char flag;/ 选项Park P
14、,Q;Shortcut S;In itStack(P);In itStack(Q);Ini tQueue(S);while(m) pri ntf(n停车场管理程序n);prin tf(n ”);printf(”请选择(A,D,E):);scan f(%c, &flag);switch(flag) caseA:车进入停车场车离开停车casea: Arrival(P,S);break; /caseD:cased: Leave(P,Q,S);break; /caseE:casee: m=0; break;default: prin tf(I nput error! n );break;caseE:w
15、hile (flag != n)scan f(%c, &flag);六、测试结果停车场管理稈序请选择(扎D, E): A请输入车牌号;1进场的时刻由 该车应停在第1号车道.停车场曽理程序请选择(A, DP E) : A 请输入车牌号,2 睡场的时刻:1Q 该车应停在第2号车道.停车场管理程宇请选择(A, D, E): D 请输入乍牌号;1 出场的时刻5 停车裁为20,占用车位数为1停车场管理程庁请选择(A,D,E): A请输入车牌号:3 进场的时刻;20 该车应停在第2号车道.停车场管理程宇请选择(扎氏E): A请输入车牌号:4进场的时刻:2b停车场己满,请暂时停在便道的第1个位置.停车场管理
16、程序请选S(At D, E) : A请输入车牌号:5进场的时刻:就尊车场己满,请暂时停在便道的第2个位背.停车场管理程序请选择(A, Dt E) : D请输入车牌号乂 2岀场的时刻:防车課号为4的车已由便道进入停车场停车费为右占用车位数为戈停车场管埋程字请选择(A, D, E): D请输入车牌号;4 出场的时刻:40 车牌号为5的车已由便道进入停车场 停车费为10.占用车位数为2停车场管理稈序 请选择(A, D, E) : EProcess exited after 110 seconds with return value 0 请按任意键继续七、课设总结通过这次课程设计,我充分理解了用栈和队列实现模拟停车场的基本原理,探究了栈的顺序存储结构和 队列的链式存储结构的定义和算法描述,同时也学会了编写停车场问题的程序。虽然此次的程序比较简单, 没有加入一些更完善的功能,但总体上来说比较完整,实现了基础功能。在实践的过程中,我了解到了自己的一些不足,因为很多书
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年二手合法房屋买卖合同(样本)2篇
- 城市更新2024年度砂石料采购及运输合同3篇
- 2024年度广告发布合同的广告内容、发布时间和费用2篇
- 2024年度戊公司为甲公司提供维修服务合同2篇
- 红色金色新中式个人年终总结课件模板
- 2024年度厦门抗浮锚杆工程监理合同
- 2024年度全新食堂场地租赁合同范本示例3篇
- 房产离婚过户及相关法律服务协议(2024版)3篇
- 二零二四年度商务考察与市场调研协议3篇
- 二零二四年度范香与亲戚赵十一之财产赠与合同3篇
- 盾构机的发展及应用(PPT版60页)
- 关于赴XXX医院参观学习联系函
- 过滤操作实验报告
- T∕CIS 71001-2021 化工安全仪表系统安全要求规格书编制导则
- 部编版小学语文75首古诗默写专项练习
- 燃气入户安检培训PPT.ppt
- 公司4M变更管理矩阵图
- 医院试剂管理制度
- 不合格分析报告培训ppt课件
- 法兰对应长度螺栓(美标)
- 平板车操作保养规程
评论
0/150
提交评论