版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构—停车场管理系统武汉理工大学华夏学院课程设计报告书课程名称:《数据结构与算法分析》课程设计实训名称:停车场管理系统姓 名: 陈航院(系): 信息工程系专业班级:软件1141学 号: 指导教师: 王云华成 绩:时间:2015年6月29日至2015年7月3日实训任务书一、题目停车场管理二、实训的性质和任务数据结构实训是在完成理论课程学习之后安排的综合实践训练,要求学生能根据数据结构中所讲到的各种数据类型以及它们顺序和链式存储,在具体的应用中能运用并实现各种数据的各种不同操作。通过一周的综合实训,使学生加深对如何将逻辑关系的数据按一定的存储方式存储在计算机内。并为以后的编程打好基础。三、实训的基本要求1、熟悉各种数据类型及它们在计算机中的存储方式;、熟悉各种数据类型的基本操作,各基本操作的实现。3、能综合运用各种数据类型实现一些具体的问题。四、考核指标及成绩评定实训成绩由下面构成:平时成绩(10%)+作品(70%)+实训报告(20%)=总评成绩作品成绩评定标准:1、全部完成90-1002、主要功能完成 70-903、部分功能完成 60-704、少部分完成40-605、几乎没做0-40完 成 期 限:
年
月 日指导教师签章:专业负责人签章:教学院长签章年 月 日一、 需求说明仅仅认识到栈和队列是两种特殊的线性表是远远不够的,本次实习的目的在于使读者深入了解栈和队列的特征,以便在实际问题背景下灵活运用它们;同时还将巩固这两种结构的构造方法,接触较复杂问题的递归算法设计。以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表实现。设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。二、 功能描述停车场管理系统主要有以下几个功能:1、汽车进入车场添加车辆信息:车牌号、进车时间,如果停车场已满,则将车辆停入临时便道内。2、汽车退出车场根据退出车辆的车牌号,进行优先退出,再根据退出时间计算停车费用。并将临时便道中的车辆停入停车场内 。3、退出系统三、 系统设计及实现软件规格要求合理,基于 C语言程序设计,在有限空间达到效果最优化。3.1设计要求用C语言实现“停车场管理系统”。3.2系统功能(1)系统启动后,出现用户界面,人机交互。(2)根据提示输入选项、汽车进入车场2、汽车退出车场3、退出系统(3)进入车场时录入车辆牌号、和入场时间,输出停靠的停车位置,当停车场车位满时则停靠在临时停车便道内。(4)退出车场时录入车辆牌号、和出场时间,输出停车总时间,和所停的费用。3.3系统性能:1)时间特性需求在网络连接正常的情况下,查询响应时间为秒级。2)灵活性当需求发生某些变化时,机票管理应用软件操作方式、数据结构、运行环境基本不会发生变化,变化只是将对应的数据文件内的记录改变,或改变过滤条件。(3)可用性软件应该尽可能的一目了然,使一般用户能够使用。(4)安全性本套职工信息系统所涉及的数据存放于文件中,在程序中应尽可能的使用调用存储过程的方法以免使某人反编译软件后或入侵到服务器后对数据的结构了如指掌,在程序中应该设置访问时的密码,以保证数据不容易被错改、破坏,而且要经常对数据文件进行备份操作,使得数据一旦受到破坏或是出错能够保证及时的恢复数据,将损失降低到最低。5)可维护性6)应用程序的维护当用户使用本套职工信息系统软件时,遇到了软件本身的逻辑错误时,应当有软件的维护人员对软件进行修改。(7)可转移、可转换性VisualStudio及C编程语言的兼容性很高,在windows95/98.WindowsNT.windows2000.windowsXP等操作系统都可以直接运行。输入项:用户通过软件输入必要的信息,然后保存到数据文件,所输入的信息是经过需求分析限定的内容,同时也是数据文件中每个字段中存储的内容。输出项:本套职工信息系统软件会将所有需要浏览的数据显示在屏幕上,以便使用户能够浏览到数据文件中的数据或用户想要浏览范围中的数据算法:将用户输入的数据,按字段保存到数据文件中。将数据文件中的数据,按字段提取到用户界面中。必要的去除重复项的算法。保持文件和输出数据的一致性。注释设计:尽可能的将软件中插入注释语句,使语句功能明了。制作的时候应该制作两分,一份是标有注释语句的代码,用来给维护人员、测试人员和开发人员了解开发过程所用,另一份是不带有注释语句的代码,用来最后实际应用当中,这样可以充分的利用有限的时间,降低客户的计算机打开系统功能的时间,提高客户的使用速度。限制条件:限制必要的条件,以排除由于用户的误操作造成不必要的错误。测试计划:在软件编辑的工作进行当中,测试人员便要开始制定测试计划,其中要包括白盒和黑盒的具体测试项目,及其必要的测试数据和出错的信息。每次测试的结果要写报告,并就发现和怀疑的问题与编辑人员联系。测试的结果要让编辑人员明白。通过文件存储方式将用户所录入的数据保存妥当,充分地描述了数据间的内在联系,便于数据修改、更新与扩充,同时保证了数据的独立性、可靠性、安全性与完整性,减少了数据冗余,提高了数据共享程度及数据管理效率。3.4设计思路及框架停车场的管理流程如下:①当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进入停车场;如果停车场已满,则车辆进入便道等候。②当车辆要求出栈时,先让在它之后进入停车场的车辆退出停车场为它让路,再让该车退出停车场,让路的所有车辆再按其原来进入停车场的次序进入停车场。之后,再检查在便道上是否有车等候,有车则让最先等待的那辆车进入停车场。四、各功能模块1、交互菜单2、汽车进入停车场13、汽车退出停车场2五、 总结短学期的课程设计是一次非常珍贵的机会, 这是一次可以让我们所学的理论与实际相结合的机会。 其实个人而言,我体会较深的一点是团队互相帮助学习的过程, 自己看书学习的经验,以及从网上以及其他各种途径获得信息和知识的经验。 理论与实际相结合的设计,锻炼了我综合运用所学的基础知识, 解决实际问题的能力,同时也提高我查阅文献资料、对程序整体的把握等其他能力水平。而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,我的各方面经验都得到了极大的丰富。“课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。”在这次课程设计的过程中,我深深地体会到了理论与实践结合的过程,当实践成功时的成就感,从整个过程中我受益匪浅。六、 附录#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#definesize1//停车场位置数//模拟停车场的堆栈的性质;typedefstructzanlind{intnumber;//汽车车号floatar_time;//汽车到达时间}zanInode;typedefstruct{zanInode*base;//停车场的堆栈底zanInode*top;//停车场的堆栈顶intstacksize_curren;}stackhead;//堆栈的基本操作;voidinitstack(stackhead&L)// 构造一个空栈 L{L.base=(zanInode*)malloc(size*sizeof(zanlind));if(!L.base)exit(0); //存储分配失败L.top=L.base;L.stacksize_curren=0;}voidpush(stackhead&L,zanInodee)// 插入元素为新的栈顶元素{*L.top++=e;L.stacksize_curren++;}voidpop(stackhead&L,zanInode&e)//若栈不为空,删除L的栈顶元素,用e返回其值{if(L.top==L.base){printf("停车场为空!!");return;}e=*--L.top;L.stacksize_curren--;}//模拟便道的队列的性质;typedefstructduilie{intnumber;//汽车车号floatar_time;//汽车到达时间structduilie*next;}*queueptr;typedefstruct{queueptrfront;//便道的队列的对头queueptrrear;//便道的队列的队尾intlength;}linkqueue;//队列的基本操作;voidinitqueue(linkqueue&q)// 构造一个空队列q{q.front=q.rear=(queueptr)malloc(sizeof(duilie));if(!q.front||!q.rear)exit(0); //存储分配失败q.front->next=NULL;q.length=0;}voidenqueue(linkqueue&q,intnumber,intar_time)//把元素的插入队列尾(属性为number,ar_time){queueptrp;p=(queueptr)malloc(sizeof(duilie));if(!p) exit(0);//存储分配失败p->number=number;p->ar_time=ar_time;p->next=NULL;q.rear->next=p;q.rear=p;q.length++;}void popqueue(linkqueue &q,queueptr &w)//删除
q的队头元素
w(属性为
number
,ar_time
){queueptrp;if(q.front==q.rear){printf("停车场通道为空");return;}p=q.front->next;w=p;q.front->next=p->next;q.length--;if(q.rear==p)q.front=q.rear;}floatshijiancha(float x,float y) //求时间差的子程序{intshix,shiy,fenx,feny;floatshijiancha;shix=x;shiy=y;fenx=(int)((x-shix)*100);feny=(int)((y-shiy)*100);if(fenx>feny){shijiancha=(shiy-shix-1)+(float)(feny+60-fenx)/100;}elseshijiancha=(shiy-shix)+(float)(feny-fenx)/100;returnshijiancha;}void jinru(stackhead &st,linkqueue &q)//对进入停车场的汽车的处理;{intnumber;floattime_a;printf("请输入车牌号:");scanf("%d",&number);printf("请输入您进车场的时间 (比如说:8点半则输入8.30):");scanf("%f",&time_a);if(st.stacksize_curren<2){zanInodee;e.number=number;e.ar_time=time_a;push(st,e);printf(" 请把你的车停在%d 号车道\n\n",st.stacksize_curren);}else{enqueue(q,number,time_a);printf(" 停车场已满,请把你的车停在便道的第%d个位置上",q.length);}}void likai(stackhead&sl,linkqueue &q)
&st,stackhead//对离开的汽车的处理;{
//st堆栈为停车场,slintnumber,flag=1;
堆栈为倒车场
//q
为便道队列floatsh,time_d,arrivaltime,money1;printf(" 请 输 入 您 的 车 牌 号 :");scanf("%d",&number);printf("请输入您出车场的时间(比如说:8点半则输入8.30):");scanf("%f",&time_d);zanInodee,q_to_s;queueptrw;while(flag) //找到要开出的车,并弹出停车场栈{pop(st,e);push(sl,e);if(e.number==number){flag=0;arrivaltime=e.ar_time;sh=shijiancha(arrivaltime,time_d);money1=(int)sh*2+(sh-(int)sh)*100/30;}}pop(sl,e); //把临时堆栈的第一辆车(要离开的)去掉;while(sl.stacksize_curren) //把倒车场的车倒回停车场{pop(sl,e);push(st,e);}if(st.stacksize_curren<2&&q.length!=0) //停车场有空位,便道上的车开进入停车场{popqueue(q,w);q_to_s.ar_time=time_d;q_to_s.number=w->number;push(st,q_to_s);printf("所
车牌为在
%d 的车已从通道进入停车场的 停 车
,位为%d:\n",q_to_s.number,st.stacksize_curren);}printf("\n收据");printf("车牌号:%d\n",number);n");printf(" 进 车 场 时间:%4.2f\n",arrivaltime);printf(" 出车场时间:%4.2f\n",time_d);printf(" 停留时间:%4.2f\n",sh);printf(" 应付(元)%4.2f\n",money1);n\
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年内蒙古通辽市奈曼旗初三下英语试题期中试题含解析
- 2026年山东省惠民县联考初三下学期第三次模拟考试(期中)语文试题含解析
- 行业内自我约束联合经营声明书9篇
- 生产现场安全管理模板危险源识别与控制
- (正式版)DB32∕T 2674-2014 《企业职工文化示范单位创建规范》
- 2024版英语七年级 下册 Unit 4 Eat well练习(无答案)
- 河东离婚协议书哪里的
- 瓯海会计财务代理协议书
- 湘教版选修六环境概述
- 代收款协议书模板
- 性别社会建构-洞察及研究
- T/ZHCA 106-2023人参提取物稀有人参皂苷Rh2
- 家庭农场合同转让协议书
- 数字经济背景下的企业财务管理数字化转型案例分析
- 光伏合同协议书范本
- 员工外派安全协议书
- 装修工程审价合同协议
- 《分子筛结构与应用》课件
- 毕业设计(论文)-桶装纯净水自动灌装机的设计
- 城市轨道交通行车组织50课件
- 2025年江苏护理职业学院高职单招语文2019-2024历年真题考点试卷含答案解析
评论
0/150
提交评论