版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 成 绩 评 定 表学生姓名曹杰班级学号专 业信息与计算科学课程设计题目停车场管理系统评语组长签字:成绩日期 20 年 月 日课程设计任务书学 院理学院专 业信息与计算科学学生姓名曹杰班级学号课程设计题目停车场管理系统实践教学要求与任务:要求:通过集中性的编程训练,使学生系统的掌握如何将客观实际问题与计算机的算法对应起来,如何将客观信息与数据的逻辑结构和存储结构对应起来,将理论概念的学习转变成能够使用计算机高级语言解决实际问题的方法。任务:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”“离去”信息、汽车牌照号码以及到
2、达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若使车辆离去,则输出汽车在停车场内停留的时间和应缴纳费用(在便道上的停留时间不收费)。栈以顺序结构实现,队列以列表结构实现。工作计划与进度安排:第一、 二天查阅资料、程序设计 ;第三、四天 程序调试与测试 ;第五天、答辩 指导教师:201 年 月 日专业负责人:201 年 月 日学院教学副院长:201 年 月 日摘要 本停车管理系统利用C语言结合数据结构建立而成。实现停车管理的车辆入库、车辆出库登记、所在车库车辆的信息显示、以及停车的收费功能。设计目的为如果停车场已放满n辆车,则后来的
3、车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。栈以顺序结构实现,队列以列表结构实现。利用了栈和队列的五项基本知识,实现插入、删除、查询、判断队列和栈是否为空来实现功能。关键词:停车场管理、线性表、栈、队列目录1.题目概述(内容及要求)11.1设计内容12.功能分析12.1功
4、能模块12.2程序流程图23.设计33.1结构描述33.2 栈描述43.3 函数描述44.运行与测试44.1主菜单44.2车辆到达登记54.3车辆离开登记54.4车辆列表显示64.5退出系统65.总结7参考文献81.题目概述(内容及要求)1.1设计内容(1)问题描述:设有一个可以停放n辆汽车的停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车
5、场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场时,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。(2)基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场应交纳的费用和它在停车场内停留的时间。实现提示:汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。例如,(A,1,5)表示1号牌照车在5这个时刻到达,而(D,5,20)表示5号牌照车在20这个时刻离去。整个程序可以在
6、输入信息为(E,0,0)时结束。本题可用栈和队列来实现1.2设计目的(1)栈以顺序结构实现,队列以列表结构实现。(2)队列的五种要求置空队列、进队、出队、取队头元素、判断空队列。(3)栈的五种要求清空堆栈、压栈、弹出、取栈顶元素、判断栈空。2.功能分析2.1功能模块主菜单车辆离开登记车辆列表显示车辆到达登记退出系统2.2程序流程图3.设计 程序用了一个类,五个结构,两个栈(其中一个为临时栈),除主函数外用了八个函数; 3.1结构描述结构:Time-建立时间结点 CarNode-建立车辆信息结点 SeqStackCar-模拟车站QueueNode-建立数据链结点 LinkQueueCar-模拟便
7、道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 *hea
8、d; QueueNode *rear;LinkQueueCar;3.2 栈描述(1)、在SeqStackCar中定义创建一个栈 CarNode *stackMAX+1; int top;(2)、SeqStackCar Enter,Temp InitStack(&Temp) 在车辆离开时,应用temp临时把将要离开的车辆后续车辆压入,等车辆离开后压回原栈stack void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W)3.3 函数描述函数:(1)int Arrival(SeqStackCar *Enter,LinkQueu
9、eCar *W)/定义车辆到达函数(2)int InitQueue(LinkQueueCar *Q)/定义车辆通道队列函数(3)void InitStack(SeqStackCar *s)/定义车辆位置栈函数(4)void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W)/定义车辆离开函数,调用栈和队列(5)void List(SeqStackCar S,LinkQueueCar W)/定义车辆栈、队列函数(6)void List1(SeqStackCar *S)/定义车辆位置村粗栈函数(7)void List2(LinkQ
10、ueueCar *W)/定义车辆通道队列函数(8)void PRINT(CarNode *p,int room)/定义车辆收费函数4.运行与测试4.1主菜单主菜单包括(图4.1):选择:1:车辆到达登记,2:车辆离开登记3:车辆列表显示,4:退出系统。图4.14.2车辆到达登记 选择1进入“车辆到达登记”输入车牌号;系统自动分配车辆位置;输入到达时间(图4.2)。图4.24.3车辆离开登记选择功能:2车辆离开登记输入离开时间;车辆系统自动输出所缴纳费用(图4.3)图4.34.4车辆列表显示 车辆列表显示功能,选择1:车场列表;2:便道列表;3:返回主菜单;输入1:显示车场位置到达时间和车牌号;
11、输入2:显示车道车辆和车牌号。(图4.4)图4.44.5退出系统功能选择:4:退出系统。(图4.5)图4.55.总结通过这一次的课程设计,加深了我对数据结构这门课程所学内容的进一步的理解与掌握,对C语言也更深的熟悉和应用;同时,通过对停车场管理系统的开发,使得我将以前课程所学知识与实际问题很好地相联接在了一起。在这次课程设计中,培养了我开发一个中小型程序的能力。在这次课程设计中,使得我很好地了解了在开发程序重要性。在这次课程设计中,我所开发的停车场管理系统,基本上可以完成每一项功能。汽车进入停车场的信息、离开停车场的信息以及通道上的信息都可以在程序上一一实现。但是,该程序也有不足的地方。这个程
12、序中,为了简便起见,直接运用链表存储数据,没有使用C语言中的文本文档存入数据,这一点不符合实际应用的情况,这是该程序的主要缺点;所以,在这方面还是有待改进的。总之,在这次的课程设计中,我以及我的收获还是挺大的,对于专业课有了更好的认识。参考文献【1】数据结构与算法严蔚敏 清华大学出版社,2010【2】谭浩强. C语言程序设计(第三版). 北京:清华大学出版社,2005【3】数据结构案例分析与习题解答李筠、姜学军 清华大学出版社,2013附页:源代码#include#include#include#define MAX 200#define price 0.05typedef struct ti
13、me/定义时间结点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;Link
14、QueueCar;void InitStack(SeqStackCar *); /定义模拟车站函数int InitQueue(LinkQueueCar *);/定义便道车辆函数int Arrival(SeqStackCar *,LinkQueueCar *); /定义车辆到达结构(存储)函数void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *);/定义车辆离开函数void List(SeqStackCar,LinkQueueCar); /定义车辆到达结构(存储)函数void main()SeqStackCar Enter,Temp; Lin
15、kQueueCar Wait; int ch; InitStack(&Enter); InitStack(&Temp); InitQueue(&Wait); while(1) printf(*停车场管理系统*n);printf(*曹杰()*n);printf(* 1. 车辆到达登记*n);printf(* 2. 车辆离开登记*n);printf(* 3.车辆列表显示*n);printf(* 4. 退出系统*n);printf(请选择功能:n);while(1) scanf(%d,&ch);/判断数据是否正确 if(ch=1&chtop=0; for(i=0;istacks-top=NULL;i
16、nt 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车辆离开的时间:); scanf(%d:%d,&(p-leave.hour),&(p-leave.min); printf(n离开车辆的车牌号为:); pu
17、ts(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(SeqStackCar *Enter,LinkQueueCar *W) /定义车辆到达函数CarNode *p;/车
18、站节点指针 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该车须在便道等待!有车位时进入车场); t=(Queu
19、eNode *)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,
20、&room); if(room=1&roomtop) break;while(Enter-toproom) Temp-top+;/车位增加1Temp-stack=Enter-stack; Enter-stack=NULL; Enter-top-; p=Enter-stack;/栈中删除车位元素 Enter-stack=NULL; Enter-top-;while(Temp-top=1) Enter-top+;Enter-stack=Temp-stack;/栈中删除车辆信息元素 Temp-stack=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-stack=t; free(q);else printf(n便道里没有车
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 狗狗四季健康护理与疾病预防
- 病情观察:中医护理的独特视角
- 2026年政府采购异常低价审查新规在医疗设备投标应用
- 2026年患者参与度是远程医疗最大挑战55%从业者列为首要优先事项
- 2026年人形机器人测试评价标准体系:从实验室到量产的一致性可靠性验证
- 投资项目的类型和评价程序
- 2026年网络安全管理教育
- 2026年数据安全防护措施
- 2026年实验室安全新技术培训
- 助产护理中的法律法规与伦理问题
- 2026年马鞍山师范高等专科学校单招综合素质考试题库附答案详解(完整版)
- 2026东北三省三校高三下学期一模考试生物试卷和答案
- 2026年未成年人救助保护中心下属事业单位选聘考试试题(附答案)
- 2026年浙江省公安厅招聘警务辅助人员笔试试题(含答案)
- 2025中国水产科学研究院长江水产研究所招聘笔试历年常考点试题专练附带答案详解
- 公安部大数据中心招聘考试试题及答案
- 2026年广东辅警招聘考试历年真题含答案
- 2025-2030中国陶瓷茶具市场运营风险及发展趋势前景展望研究报告
- 2025重庆市生态环境保护综合行政执法总队招聘3人笔试历年备考题库附带答案详解
- (2025年)防洪防汛安全教育测试题含答案
- 拾金不昧培训
评论
0/150
提交评论