停车场管理系统一 c语言实习报告
- 格式:doc
- 大小:566.50 KB
- 文档页数:15
设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
试为停车场编制按上述要求进行管理的模拟程序。
功能描述以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
栈以顺序结构实现,队列以链表实现系统设计及实现1.头文件及宏定义#include <conio.h>#include <malloc.h>#include <stdio.h>#include <stdlib.h>#include <windows.h>#define ClearScreen() system( "cls" ) // 清空当前屏幕#define setcolor() system("color 2f")//设置背景前景颜色#define Pause( szPrompt ) printf( "%s", szPrompt ),getch()2.时间和汽车信息结构体的定义(部分代码)typedef struct carinformation // 车辆信息{char szRegistrationMark[64]; // 车牌号char szArrivalTime[16]; // 到达时间char szEntranceTime[16]; // 进入停车场(开始计费)时间char szDepartureTime[16]; // 离开时间} TCARINFORMATION, *LPTCARINFORMATION;3.栈和队列的定义(部分代码)typedef struct carqueue // 链队{LPTCARNODE lpHead; // 头结点LPTCARNODE lpRear; // 指向当前队尾的指针int nEffectiveSize; // 当前队中元素个数} TCARQUEUE, *LPTCARQUEUE;4.栈和队列的初始化(部分代码)void InitQueue( LPTCARQUEUE &lpCarQueue ){lpCarQueue = ( LPTCARQUEUE ) malloc( sizeof( TCARQUEUE ) );lpCarQueue->lpHead = ( LPTCARNODE) malloc( sizeof( TCARNODE ) );lpCarQueue->lpHead->lpNext = NULL;lpCarQueue->lpRear = lpCarQueue->lpHead;lpCarQueue->nEffectiveSize = 0;}实现过程1.开始界面:输入车库容量2.输入车辆到达信息3.当车库停满车时临时停到便道上不收车费4.车辆离开后车库有车位便道上的车进入车库并显示离去车的收费记录5.显示车库及便道信息6.停止输入显示制作者信息及退出程序实训心得通过这次实训我对课本上的理论知识有了更深层次的了解,可能在仅一周的时间内学到的东西有限,不过却也是受益非浅,实训本来就是对平常所学的理论知识通过具体的实现表示出来是在完成理论课程学习之后安排的综合实践训练,任何一个优秀的程序员都是从实践中获得经验和教训的。
2008.12.25班级:55071——28学号:20071003753指导教师:刘文中姓名:谢永诚停车场管理一一.要求:1.设计一个停车场用长度为N的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出为它让道,待其开出停车场后,这些车再依原来的顺序进入。
2.程序输出每辆车到达后的停车位置,以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
二、程序中所采用的数据结构及存储结构的说明以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
栈以顺序结构实现,队列以链表实现。
程序中分别采用了“栈”和“队列”作为其存储结构。
“栈”的定义可知,每一次入栈的元素都在原栈顶元素之上成为新的元素,每一次出栈的元素总是当前栈顶元素使次栈元素成为新的栈顶元素,即最后进栈者先出栈。
程序中采用的结构是:typedef struct NODE{CarNode *stack[MAX+1]。
int top。
}SeqStackCar。
/*模拟车库*/“队列”是限定所有插入操作只能在表的一端进行,而所有的删除操作都只能在表的另一端进行。
插入端叫队尾,梦芭莎优惠券删除端叫对头。
按先进先出规则进行。
程序中采用的结构是:typedef struct Node{QueueNode *head。
QueueNode *rear。
}LinkQueueCar。
/*模拟通道*/三、算法的设计思想由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车场内按车辆到达时间的先后顺序,依次由北向南排列。
由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,又每个汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素我设计成汽车的车牌号。
当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。
C语言课程设计实习报告姓名:成帅安学号:20141002605院(系):工程学院专业:土木工程2016年6 月2016.6 中国地质大学C语言课程设计 1 第一章停车场管理系统§1.1题目描述1、有一个两层的停车场,每层有6个车位,当第一层车停满后才允许使用第二层,(停车场可用一个二维数组实现,每个数组元素存放一个车牌号)每辆车的信息包括车牌号,层号,车位号,停车时间共4项,其中停车时间按分钟计算。
2、假设停车场初始状态为第一层已经停有4辆车,其车位号依次为1-4,停车时间依次为20,15,10,5。
即先将这四辆车的信息存入文件“car.dat"中(数组的对应元素也要进行赋值)。
3、停车操作:当一辆车进入停车场时,先输入其车牌号,再为它分配一个层号和一个车位号(分配前先查询车位的使用情况,如果第一层有空则必须停在第一层),停车时间设为5,最后将新停入的汽车的信息添加文件"car.dat"中,并将在此之前的所有车的停车时间加5。
4、收费管理(取车):当有车离开时,输入其车牌号,先按其停车时间计算费用,每5分钟0.2元。
(停车费用可设置一个变量进行保存),同时从文件"car.dat"中删除该车的信息,并将该车对应的车位设置为可使用状态(即二维数组对应元素清零)。
按用户的选择来判断是否要输出停车收费的总计。
5、输出停车场中全部车辆的信息。
6、退出系统。
§1.2算法设计1、需求分析:车辆信息用文件储存,提供文件的输入输出操作;当车离开时要删除文件中该车的信息,因而要提供文件的删除操作;用键盘式菜单实现功能选择。
2、总体设计思路:整个管理系统设计可设计为停车模块、取车模块、车辆浏览信息模块。
另外车辆停放信息涉及到从car.dat中读取,保存和修改,为了方便起见和程序的模块化,我将文件的读入和保存单独设计为两个子程序。
整体模块图如下:23、各子程序设计如下:(1)使用全局变量数组,用一个二维数组实现停车场车位的信息,int cars[12][4];2016.6 中国地质大学C语言课程设计 3 (2)通过读取car.dat的数据,对程序初始化。
停车场管理系统实习报告一、实习背景及目的随着我国经济的快速发展和城市化进程的推进,城市交通问题日益凸显,特别是停车问题。
为了缓解停车难问题,提高停车场管理效率,本次实习我选择了停车场管理系统作为研究对象。
实习的目的是了解停车场管理系统的现状,掌握停车场管理系统的运作模式,探讨如何优化停车场管理系统,提高停车效率和管理水平。
二、实习内容及过程1. 停车场管理系统的了解在实习过程中,我首先对停车场管理系统的基本概念、组成部分和运作原理进行了学习。
停车场管理系统主要包括车位信息实时更新、车牌识别、车位预约、自动计费、支付处理等功能。
通过这些功能,停车场管理系统可以实现对车辆的快速进出、车位的高效利用和管理。
2. 停车场管理系统的实际操作为了更深入地了解停车场管理系统,我参与了实际操作。
在操作过程中,我学习了如何使用车位探测器收集车位信息,如何通过车牌识别系统快速识别车辆,以及如何处理预约车位、自动计费和支付等业务。
此外,我还学习了如何通过管理系统对停车场进行实时监控,确保车位的高效利用和管理。
3. 停车场管理系统的优化探讨在实际操作过程中,我发现停车场管理系统存在一些问题,如车位信息更新不及时、支付方式单一、客户服务不足等。
针对这些问题,我提出了以下优化建议:(1)引入智能算法,提高车位信息更新的实时性,减少误差。
(2)增加多种支付方式,如微信支付、支付宝支付等,方便顾客支付。
(3)加强客户服务,如设立客户服务中心,提供导航、咨询等服务。
(4)开展停车场共享计划,将空闲车位共享给周边商户和居民,提高车位利用率。
三、实习收获及反思通过本次实习,我对停车场管理系统有了更深入的了解,认识到了停车场管理的重要性。
同时,我也学会了如何使用停车场管理系统进行实际操作,掌握了相关技能。
实习过程中,我发现停车场管理系统还存在一些问题,这让我意识到优化停车场管理系统的重要性。
在今后的学习和工作中,我将不断探索停车场管理系统的优化方法,为提高停车场管理水平和停车效率做出贡献。
数据结构-停车场管理系统实验报告数据结构停车场管理系统实验报告一、实验目的本次实验旨在通过设计和实现一个停车场管理系统,深入理解和应用数据结构的知识,包括栈、队列、链表等,提高编程能力和解决实际问题的能力。
二、实验环境本次实验使用的编程语言为C++,开发环境为Visual Studio 2019。
三、需求分析1、停车场内有固定数量的停车位。
2、车辆进入停车场时,记录车辆信息(车牌号、进入时间)。
3、车辆离开停车场时,计算停车费用并输出相关信息。
4、能够显示停车场内车辆的停放情况。
四、数据结构设计1、为了实现车辆的先进先出,选择队列来存储停车场内的车辆信息。
2、用栈来存储临时停放的车辆信息,以便在停车场已满时进行处理。
五、算法设计1、车辆进入停车场检查停车场是否已满。
如果未满,将车辆信息加入队列,并记录进入时间。
2、车辆离开停车场在队列中查找要离开的车辆。
计算停车时间和费用。
将车辆从队列中删除。
3、显示停车场内车辆停放情况遍历队列,输出车辆信息。
六、主要代码实现```cppinclude <iostream>include <string>include <ctime>using namespace std;//车辆结构体struct Car {string licensePlate; //车牌号time_t entryTime; //进入时间};//队列类class Queue {private:Car data;int front, rear, capacity;public:Queue(int size) {capacity = size;data = new Carcapacity;front = rear = 0;}~Queue(){delete data;}bool isFull(){return (rear + 1) % capacity == front;}bool isEmpty(){return front == rear;}void enqueue(Car car) {if (isFull()){cout <<"停车场已满!"<< endl; return;}datarear = car;rear =(rear + 1) % capacity;}Car dequeue(){if (isEmpty()){cout <<"停车场为空!"<< endl;return Car();}Car car = datafront;front =(front + 1) % capacity;return car;}void display(){if (isEmpty()){cout <<"停车场内没有车辆。
数据结构实验报告——实验二停车厂模拟管理程序的设计与实现本实验的目的是进一步理解线性表的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。
一、【问题描述】设停车厂只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该车辆开出大门,为它让路的车辆再按原次序进入车场。
在这里假设汽车不能从便道上开走,试设计这样一个停车厂模拟管理程序。
为了以下描述的方便,停车厂的停车场用“停车位”进行叙述,停车厂的便道用“便道”进行叙述。
二、【数据结构设计】1、为了便于区分每辆汽车并了解每辆车当前所处的位置,需要记录汽车的牌照号码和汽车的当前状态,所以为汽车定义一个新的类型CAR,具体定义如下:typedef struct{char *license_plate; //汽车牌照号码,定义为一个字符指针类型char state; //汽车当前状态,字符s表示停放在停车位上,//字符p表示停放在便道上,每辆车的初始状态用字符i来进行表示}2、由于车位是一个狭长的通道,所以不允许两辆车同时出入停车位,当有车到来要进入停车位的时候也要顺次停放,当某辆车要离开时,比它后到的车要先暂时离开停车位,而且越后到的车就越先离开停车位,显然这和栈的“后进先出”特点相吻合,所以可以使用一个栈来描述停车位。
由于停车位只能停放有限的几辆车,而且为了便于停车厂的管理,为每个车位要分配一个固定的编号,不妨设为1、2、3、4、5(可利用数组的下标),分别表示停车位的1车位、2车位、3车位、4车位。
5车位,针对这种情况使用一个顺序栈比较方便,具体定义如下:#define MAX_STOP 5typedef struct{CAR STOP[MAX_STOP]; //各汽车信息的存储空间int top; //用来指示栈顶位置的静态指针}STOPPING;3、当停车场的停车位上都已经停满了汽车,又有新的汽车到来时要把它调度到便道上,便道上的车辆要按照进入便道的先后顺序顺次存放在便道上,为便道上的每个位置也分配一个固定的编号,当有车从停车位上离开后,便道上的第一辆汽车就立即进入停车位上的某个车位,由于问题描述中限制了便道上的汽车不能从便道上开走,即便道上的汽车只有在停车位上停放过之后才能离开停车厂,这样越早进入便道的汽车就越早进入停车位,而且每次进入停车位的汽车都是处于便道“最前面”的汽车,显然,这和队列的先进先出特点相吻合,所以,这里使用一个顺序队来描述便道,可以利用数组的下标表示便道的位置,具体定义如下:#define MAX_PA VE 100 /*便道不限制停放车辆的数目,设为足够大*/typedef struct{CAR PA VE[MAX_PA VE]; //各汽车信息的存储空间int front,rear; //用来指示队头和队尾位置的静态指针}PA VEMENT;4、当某辆车要离开停车厂的时候,比它后进停车位的车要为它让路,而且当它开走之后让路的车还要按照原来的停放次序再次进入停车位的某个车位上,为了完成这项功能,再定义一个辅助栈,停车位中让路的车依次“压入”辅助栈,待提出开走请求的车开走后再从辅助栈的栈顶依次“弹出”到停车位中。
停车场管理系统C语言实习报告一、实习背景在城市化进程不断加速的背景下,汽车数量急剧增长,停车难的问题日益突出,停车场管理系统成为解决这一问题的重要途径。
为了更好地了解和掌握停车场管理系统的开发过程和实现方法,我选择了该方向作为我的实习内容。
二、实习过程在实习过程中,我主要参与了停车场管理系统的需求分析、模块设计和编码实现等工作。
1.需求分析首先,我对停车场管理系统的需求进行了详细地分析和理解。
通过与公司内部相关人员的交流和讨论,我了解到停车场管理系统主要包括车辆信息管理、停车记录管理和收费管理等功能。
2.模块设计在需求分析的基础上,我开始进行停车场管理系统的模块设计工作。
根据需求,我划分出了车辆信息管理模块、停车记录管理模块和收费管理模块等多个模块。
然后,我详细地设计了这些模块的功能和数据流程,并与其他开发人员进行了交流和讨论。
3.编码实现在模块设计完成后,我开始进行停车场管理系统的编码实现工作。
首先,我选择了C语言作为开发语言,并使用了相关的开发工具。
然后,我按照设计的流程和规范进行了编码工作,并通过反复调试和测试,最终实现了一个具有基本功能的停车场管理系统。
三、实习收获通过这次实习,我对停车场管理系统的开发和实现过程有了更深入的了解和掌握。
首先,我学会了如何进行需求分析和模块设计,并将其应用于实际开发中。
其次,我通过实际编码实现了停车场管理系统,并通过调试和测试不断完善和优化。
最后,我还与其他开发人员进行了紧密的合作和协调,提高了我与他人沟通和协作的能力。
四、总结与展望通过这次实习,我对停车场管理系统有了全面的认识和了解,并学会了如何进行开发和实现。
但是,在实际工作中还存在一些不足之处,比如对一些技术的了解不够深入和对一些问题的解决不够完善。
因此,我希望今后能够进一步加强相关技术的学习和研究,提高自己的综合能力和解决问题的能力。
在未来的工作中,我将继续深入研究和学习停车场管理系统的相关技术,并通过不断地实践和探索,提高自己的专业能力和水平。
停车场管理实习报告实习报告
实习报告
一、实习目的
经过实习,我将熟悉并掌握停车场管理的相关知识和技能,提升自己的综合素质和实践能力,了解和掌握实际工作中需注意的问题和解决方法。
二、实习内容
1. 停车场管理流程
通过实际操作和观察,了解停车场管理的流程和各环节的工作内容,包括车辆入场登记、出场结算、停车位管理等。
2. 停车场系统操作
学习和掌握停车场系统的操作方法,包括车辆信息录入、查询、结算等,熟悉系统的功能和使用流程。
3. 停车场秩序维护
参与停车场秩序维护工作,包括指引车辆停放位置、协调解决停车纠纷等,维护停车场的正常秩序和安全。
4. 停车场安全管理
了解停车场安全管理的要求和标准,学习并掌握相关的应急处理方法和安全措施,确保停车场的安全运营。
三、实习心得
1. 实践能力的提升
通过实践操作和与同事的交流学习,我对停车场管理的流程和各环节有了更深入的了解,并且能够熟练地操作停车场系统,提高了自己的实践能力。
2. 团队合作意识的培养
在实习过程中,我与同事们密切合作,互相帮助、互相支持,在工作中形成了团队合作的意识和能力,提高了自己的协作能力。
3. 规范操作和安全意识的培养
在实习过程中,我严格按照规章制度操作,提高了自己的规范操作意识,同时也加强了安全意识,做到了安全第一。
四、实习总结
通过本次实习,我对停车场管理有了更深入的了解,提高了自己的实践能力和团队合作意识,培养了规范操作和安全意识。
在未来的工作中,我将继续努力学习和实践,提升自己的专业素养和工作能力,为停车场管理工作做出更大的贡献。
河南财经政法大学集中实践报告院系:班级:指导老师:小组:小组成员:目录(一)设计目的 (3)(二)问题描述 (3)(三)概要设计 (4)(四)详细设计 (8)(五)调试分析 (9)(六)测试分析 (10)(七)心得体会 (11)(八)附录(源代码) (12)(一)设计目的1.通过课程设计,了解并掌握数据结构的设计方法,具备初步的独立分析和设计能力;2.通过课程设计,初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.通过课程设计,提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.通过课程设计,训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
(二)问题描述及要求基本要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。
对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
栈以顺序结构实现,队列以链表结构实现。
测试数据设n=2,输入数据为:(‘A’,1,5),(‘A’,2,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。
其中:‘A’表示到达(arrival);‘D’表示离去(departure);‘E’表示输出结束(end)。
实现提示需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。
输入数据按到达或离去的时刻有序。
栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。
此外还要实现:(1)两个栈共享空间,思考应开辟数组的空间是多少?(2)汽车可有不同种类,则他们的占地面积不同,收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。
一、实习背景随着我国经济的快速发展,汽车保有量逐年攀升,停车难问题日益凸显。
为解决这一问题,停车场管理系统应运而生。
本次实习旨在通过对停车场管理系统的学习和实践,了解停车场管理的基本流程,掌握系统操作技能,提高自己的实践能力。
二、实习内容1. 停车场管理系统概述停车场管理系统主要由车辆进出管理、车位管理、收费管理、报表统计等模块组成。
系统通过自动化设备(如车牌识别、道闸、地感线圈等)实现车辆进出、收费、车位管理等功能,提高停车场管理效率。
2. 实习过程(1)系统学习实习初期,我主要学习停车场管理系统的基本原理和操作流程。
通过阅读相关资料和请教同事,我对停车场管理系统的功能模块、操作方法有了初步了解。
(2)系统操作在实习过程中,我参与了停车场管理系统的实际操作。
具体包括:1)车辆进出管理:通过车牌识别设备,实现车辆快速进出停车场,提高通行效率。
2)车位管理:实时显示停车场车位使用情况,方便管理人员了解车位分布,合理调配车位。
3)收费管理:根据车辆类型、停放时间等因素,自动计算停车费用,实现收费自动化。
4)报表统计:生成各类报表,如收入报表、进出车辆报表等,为管理层提供决策依据。
(3)问题解决在实习过程中,我遇到了一些问题,如系统操作不熟练、设备故障等。
通过请教同事、查阅资料和与供应商沟通,我成功解决了这些问题。
3. 实习成果通过本次实习,我取得了以下成果:(1)掌握了停车场管理系统的基本原理和操作流程。
(2)熟悉了各类自动化设备的使用方法。
(3)提高了自己的实践能力,为今后从事停车场管理工作打下了基础。
三、实习心得1. 理论与实践相结合本次实习让我深刻体会到理论与实践相结合的重要性。
在学习理论知识的基础上,通过实际操作,我对停车场管理系统有了更深入的了解。
2. 团队合作精神在实习过程中,我与同事共同解决问题,相互学习,共同进步。
这使我认识到团队合作精神在停车场管理工作中的重要性。
3. 良好的沟通能力在实习过程中,我学会了如何与同事、供应商沟通,解决问题。
一.需求分析(1).任务:设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内,按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端)。
若车场内已停满n辆汽车,则后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入。
当停车场内某辆车要离开时,在它之后进入的车辆必须先退出班车场为它让路,待该车开出大门后。
其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用(在变道上停留的时间不收费)。
(2).基本要求:①以栈模拟停车场,以队列模拟车场外的便道。
②从终端读入汽车到达或离去的数据,每组包括三项:1.是“到达”还是“离去”;2.汽车牌照号码;3.“到达”或“离去”的时刻;(3).市场需求:这个软件可以合理的安排停车场车辆的存放,查询目前在停车辆,以及计费。
同时当停车场内部车辆方满之后,我们可以根据在外部等待的车辆的先来后到的顺序,当车场空闲之后,再安排等待的车辆进入。
同时在计费的反面,是按分钟计费的,较为公平。
最后收费,将小于0.1元部分四舍五入。
二.概要设计模块大致划分:界面:main函数;Memu函数(主要界面)计算函数1.进入函数GoIn();2离开函数GoOut().;查看函数3.查看车场LookChang();4.查看变道LookDao();遇到的疑难问题1.根据题目要求,停车场需要用栈,而变道要用的是列队。
由于变道的原则是先到先离开,这和列队的原理是一样的,所以变道的建立是方便的,只要实现变道(列队)和停车场(栈)之间的数据连接即可。
但是栈是后入先出的,而停车场呢的车辆的离开时没有规律的,这样删除数据是十分不方便的2.同时在车辆的离去方面有,根据题目的要求,我们要计算出车俩的停车费用。
由于时间是60进制,而车辆的停车的费用是同过车辆的的停车时长来求的,那么便是通过离去的时间减去进入的时间来得出中间的时间,最后求出来的。
停车场管理系统1题目要求设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。
停车站内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场是的停车时间及它应该交的费用。
2需求分析根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。
车辆离开要计时计费。
另外,每天开始时,停车场要初始化。
3总体设计这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。
4详细设计main()函数体内包含了界面选则部分menu(),并单独Array抽出来作为一个独立函数,目的在于系统执行每部分模块后能够方便返回到系统界面。
即main()函数写为如下:void main()/*主函数*/{menu();/*菜单函数*/}菜单函数:void menu(){int n,w;do{puts("\t\t**************MENU**************\n\n");puts("\t\t\t 1.初始化");puts("\t\t\t 2.有车进入");puts("\t\t\t 3.有车离开");puts("\t\t\t 4.退出");puts("\n\n\t\t*********************************\n");printf("Please choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4)/*对选择的数字作判断*/{w=1;getchar();}else w=0;}while(w==1);switch(n){case 1:chushi();break;/*初始化函数*/case 2:jinru();break;/*车辆进入函数*/case 3:likai();break;/*车辆离开函数*/case 4:exit(0);/*退出*/}}初始化模块设计:【需求分析】该模块是将每一天开始的停车场内和便道车位清零。
实验题目:实验六停车场管理一、需求分析1.程序的功能:设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列〔大门在最南端,最先到达的第一辆车停放在车场的最北端〕,假设车场内已停满n辆汽车,那么后来的汽车只能在门外的便道上等候,一旦有车开走,那么排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
〔1〕建立静态数组栈作为模拟停车场,动态链表栈作为模拟便道。
〔2〕车辆到达,停入停车场或者便道,记录车牌号,到达时间。
〔3〕车辆离开,记录离开时间,输出停车时间和收费。
将便道内车停入停车场,记录进入时间。
〔4〕列表显示停车场,便道内车辆情况。
〔5〕列表显示历史记录〔已经离开车的车牌号,到达离开时间,收费〕。
2.输入输出的要求:(1)输入:字符串车牌号,到达时间,离开时间(2)输出:停车时间和收费,停车场和便道的停车情况,历史记录。
3.测试数据:二.概要设计4.本程序所用的抽象数据类型的定义ADT Stack{数据对象:D={ai|ai为ElemSet,i为正整数}数据关系:R1={<ai-1,ai>|ai-1,ai都属于D,i为正整数}根本操作:InitStack(&S) //构建一个空栈SDestroyStack(&S) //S 被销毁StackLength(S) //返回S 的元素个数,即栈的长度。
StackEmpty(s) //假设栈S 为空栈,那么返回TRUE,否那么FALE。
GetTop(S, &e) //用e 返回S 的栈顶元素ClearStack(&S) //将S 清为空栈Push(&S, e) //入元素e 为新的栈顶元素。
课程设计任务书学生:专业班级:软件2101(计算2101)指导教师:黄启荃钱小红工作单位:华夏学院计算机教研室设计题目:用C语言实现停车场管理程序的设计初始条件:1、栈与队列的建立和操作.2、带T C或V C的计算机系统。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)主要任务:(在规定的时间完成下列任务)设有一个停放n辆车的狭长停车场,它只有一个大门供车辆出入。
车辆按到达停车场时间的早晚依次从停车场最里面向大门处停放。
若已放满n辆车,则后来的车只能停在外面等待,当有车开走后方依次进入,停在场的车按时计费。
编制一个程序模拟该停车场管理。
1.汽车的模拟输入信息格式可设为:汽车牌照,到达/离去时刻如(‘a’,1,5)为1号车在5时刻到达,(‘b’,5,20)为5号车在20这个时刻离去 2. 要求程序输出每辆车到达后的停车位置,以及离开停车场时应缴纳的费用及停留时间。
3.编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果,并对采用的算法进行分析。
设计报告撰写格式要求:(课程设计报告按统一通用格式书写)具体容如下:①设计任务与要求②总体方案与说明③程序主要模块的流程图④源程序清单与注释⑤问题分析与解决方案(包括调试记录、调试报告,即在调试过程中遇到的主要问题、解决方法及改进设想);⑥小结与体会附录:①源程序(必须有简单注释)②使用说明③参考资料设计题目:用C语言实现停车场管理程序的设计1、问题描述即要求停车场是一个可停放n辆汽车的狭长通道,并只有一个大门可供汽车进出,汽车在停车场按车辆到达的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),如车长已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场某辆车要离开时,在它后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车”到达”或”离去”信息,汽车牌照以及到达或离去的时刻(到达或离去的时刻也可用计算机控制).对每一组输入数据进行操作后的输入信息为:如是车辆到达,则输入汽车在停车场或便道上的停留位置;如是车辆离去,则输入汽车在停车场停留的时间和应交的费用。
C语言课程实习报告【要求】设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟停车场管理。
【提示】汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。
基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
根据题目要求,停车场可以用一个长度为n 的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车辆都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场,所以可以设两个堆栈。
一、需求分析根据题目要求,程序应该提供“到达/离去,汽车牌照号码,到达/离去”的输入、输出操作;在程序中需要浏览停车场的车位信息,应提供显示、查找、排序等操作;此外还应提供键盘式菜单实现功能选择。
二、总体设计:根据需求分析,可以将系统的设计分为以下五大模块:(1)车辆进入;(2)车辆退出;(3)车辆等待;(4)车辆查询;(5)退出。
一、详细设计:主函数中只包含菜单函数,菜单部分单独写成函数,只提供输入、功能处理和输出部分的函数调用,其中各功能模块用菜单方式选择。
[程序]#define N 30 /*等待车辆*/#define M 20 /*车位*/#define P 2 /*单位时间所收费用*/#include<stdio.h>#include<stdlib.h>#include<string.h>struct cars /*定义车辆信息*/{ char state;int num;int in_time; 停车场管理系统车辆进入 车辆退出 车辆等待 车辆信息显示车辆查询 退出系统int out_time;int time_spend;int money_to_pay;}car[M];struct carleft{ char state;int num;}wait[N];1、主函数模块[流程图][程序]main() /*主函数*/{pre_manage();menu(); /*调用主菜单函数*/return 0;}void menu() /*主菜单函数*/{int n,w;do{puts("\t\t************************MENU*******************\n\n");puts("\t\t\t\t 1.car_arrive"); /*有车到来*/puts("\t\t\t\t 2.car_depart"); /*有车离开*/puts("\t\t\t\t 3.car_browse"); /*浏览车位信息*/ puts("\t\t\t\t 4.exit"); /*退出*/ puts("\n\n\t\t *********************************************\n") printf("Choice your number(1-4):[ ]\b\b"); /*选择所需服务*/scanf("%d",&n);getchar();if(n<1||n>4){ w=1; getchar();}else w=0;} while(w==1);switch(n){case 1: car_arrive();break;case 2: car_depart();break;case 3: car_browse();break;case 4: exit(0);}}void pre_manage() /*循环结构*/{ int i;for(i=0;i<M;i++)car[i].state='E';for(i=0;i<N;i++)wait[i].state='E';}2、各功能模块设计:(1)、车辆进入模块[分析]车辆进入停车场后,判断车位和等待车位是否有剩余。
C语言课程实习报告【要求】设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟停车场管理。
【提示】汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。
基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
根据题目要求,停车场可以用一个长度为n 的堆栈来模拟。
由于停车场内如有某辆车要开走,在它之后进来的车辆都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场,所以可以设两个堆栈。
一、需求分析根据题目要求,程序应该提供“到达/离去,汽车牌照号码,到达/离去”的输入、输出操作;在程序中需要浏览停车场的车位信息,应提供显示、查找、排序等操作;此外还应提供键盘式菜单实现功能选择。
二、总体设计:根据需求分析,可以将系统的设计分为以下五大模块:(1)车辆进入;(2)车辆退出;(3)车辆等待;(4)车辆查询;(5)退出。
一、详细设计:主函数中只包含菜单函数,菜单部分单独写成函数,只提供输入、功能处理和输出部分的函数调用,其中各功能模块用菜单方式选择。
[程序]#define N 30 /*等待车辆*/#define M 20 /*车位*/#define P 2 /*单位时间所收费用*/#include<stdio.h>#include<stdlib.h>#include<string.h>struct cars /*定义车辆信息*/{ char state;int num;int in_time; 停车场管理系统车辆进入 车辆退出 车辆等待 车辆信息显示车辆查询 退出系统int out_time;int time_spend;int money_to_pay;}car[M];struct carleft{ char state;int num;}wait[N];1、主函数模块[流程图][程序]main() /*主函数*/{pre_manage();menu(); /*调用主菜单函数*/return 0;}void menu() /*主菜单函数*/{int n,w;do{puts("\t\t************************MENU*******************\n\n");puts("\t\t\t\t 1.car_arrive"); /*有车到来*/puts("\t\t\t\t 2.car_depart"); /*有车离开*/puts("\t\t\t\t 3.car_browse"); /*浏览车位信息*/ puts("\t\t\t\t 4.exit"); /*退出*/ puts("\n\n\t\t *********************************************\n") printf("Choice your number(1-4):[ ]\b\b"); /*选择所需服务*/scanf("%d",&n);getchar();if(n<1||n>4){ w=1; getchar();}else w=0;} while(w==1);switch(n){case 1: car_arrive();break;case 2: car_depart();break;case 3: car_browse();break;case 4: exit(0);}}void pre_manage() /*循环结构*/{ int i;for(i=0;i<M;i++)car[i].state='E';for(i=0;i<N;i++)wait[i].state='E';}2、各功能模块设计:(1)、车辆进入模块[分析]车辆进入停车场后,判断车位和等待车位是否有剩余。
若车位有空余则输入车辆编号和进入时间,记录在已停放车辆信息中;若车位无剩余而等待车位有剩余则输入车辆编号和进入时间,记录在等待车辆信息中;若两者都无剩余则提示无剩余空间。
[流程图][程序]○1车辆到来模块void car_arrive() /*车辆到来模块*/{ int s,w1,w2,t;void menu(); /*显示主菜单*/s=whether(); /*判断是否有空余车位*/w1=whether_cars_full();w2=whether_carwait_full();if(s==1) /*有空余车位*/{puts("\t\tInput the NO. of the coming car! \n "); /*输入车辆编号*/car[w1].state='A';scanf("%d",&car[w1].num);puts("\n\t\tInput the in_time!\n"); /*输入车辆进入时间*/scanf("%d",&car[w1].in_time);}else if(s==2) /*有空余等待车位*/{ puts("\t\tInput the NO. of the coming car! \n "); /*输入车辆编号*/ wait[w2].state='A';scanf("%d",&wait[w2].num);}else printf("No extra space"); /*无剩余空间*/printf("what do you want to do next?\n"); /*选择所需服务*/puts("\t\t************************MENU*******************\n\n");puts("\t\t\t\t 1).Another car is coming");puts("\t\t\t\t 2).Back to Menu");puts("\n\n\t\t *********************************************\n");printf("\n\t\tChoice your number(1-2):[ ]\b\b");scanf("%d",&t);getchar();if(t==1) /*另一辆车进入*/car_arrive();else /*返回主菜单*/menu();}○2判断车位是否空余模块int whether() /*判断车位是否空余模块*/{int w1,w2,s;w1=whether_cars_full();w2=whether_carwait_full();if(w1<M) s=1; /*有空余车位*/else if(w1==M&&w2<N) s=2; /*车位已满,等待车位有空余*/else s=3; /*车位和等待车位都已满*/ return s;}◇1判断停泊车位是否空余模块int whether_cars_full() /*判断停泊车位是否有空余模块*/{int i,k;for(i=0;i<M;i++){if(car[i].state=='E') break; /*当输入为‘“E”的时候退出系统*/}k=i;return k;}◇2判断等待车位是否空余模块int whether_carwait_full() /*判断等待车位是否有空余模块*/{int i,k=N;for(i=0;i<N;i++){if(wait[i].state=='E') k=i;break; /*当输入为‘“E”的时候退出系统*/}return k;}(2)、车辆退出模块[分析]该部分需要实现功能:用户选择车辆离开后,先查询该车位于停泊车位还是等待车位,若位于停泊车位则在输入离开时间后显示所需交纳费用;若位于等待车位则不需交费。
[流程图][程序]○1停泊车辆离开模块void car_in_left(int k) /*停泊车辆离开模块*/ {int w1,i,j,n,s;void car_wait_left(int n);struct cars temp[M];w1=whether_cars_full();n=w1-k-1;for(i=w1,j=0;j<n;i--,j++)temp[j]=car[i];car[k].state='D';printf("Input the out_time!"); /*输入离开时间*/scanf("%d",&car[k].out_time);s=car[k].out_time;car[k].time_spend=car[k].out_time-car[k].in_time; /*计算停泊时间*/car[k].money_to_pay=car[k].time_spend*P; /*计算所需交纳费用*/ printf("the NO.%d car need to pay %d yuan",car[k].num,car[k].money_to_pay);for(i=k,j=n-1;j>=0;i++,j--)car[i]=temp[j];car[M].state=wait[1].state;car[M].in_time=s;car[M].num=wait[1].num;car_wait_left(1);}○2等待车辆离开模块void car_wait_left(int n) /*等待车辆离开模块*/{int i;for(i=n;i<N-1;i++)wait[i]=wait[i+1];wait[N-1].state='E';}○3车辆所处车位查询模块int search() /*查询模块*/{int temp_num,n1,n2,w=0,n;do{printf("Input the num of the leaving car!"); /*输入离开车辆编号*/scanf("%d",&temp_num);if(temp_num==-1)exit(0);n1=search_car(temp_num); /*调用查询已用停泊车位模块*/ n2=search_carwait(temp_num); /*调用查询已用等待车位模块*/if(n1<M){whether_in=1; n=n1;} /*车辆处于停泊车位*/else if(n1==M&&n2<N) /*车辆处于等待车位*/{whether_in=0; return n=n2;}else /*无该车辆信息*/{printf("Not Found!Input again! \nOr input -1 to exit "); w=1;n=-1;}}while(w==1);return n;}◇1查询已用停泊车位模块:int search_car(int temp_num) /*查询已用停泊车位*/{int i,k;for(i=0;i<M;i++){if(car[i].state=='A'&&car[i].num==temp_num) break;}k=i; /*车辆处于停泊车位,返回车辆编号*/return k;}◇2查询已用等待车位模块:int search_carwait(int temp_num) /*查询已用等待车位*/{int i,k;for(i=0;i<N;i++){if(wait[i].state=='A'&&wait[i].num==temp_num) break;}k=i; /*车辆处于等待车位,返回车辆编号*/ return k;}int whether_in; /*判断是否存在*/○4车辆离开模块void car_depart() /*车辆离开模块*/{int n,w;void menu();int search(); /*调用车辆位置查询模块*/n=search();if(whether_in==1) car_in_left(n);else car_wait_left(n);printf("\n\t\t^_^ Do it successful^_^\n");puts("\n\n");printf("what do you want to do?\n"); /*选择所需服务*/puts("\t\t************************MENU*******************\n\n");puts("\t\t\t\t 1).Another car depart"); /*另一车辆离开*/puts("\t\t\t\t 2).Back to Menu"); /*返回主菜单*/puts("\n\n\t\t *********************************************\n");printf("\n\nChoice your number(1-2):[ ]\b\b");scanf("%d",&w);getchar();if(w==1)car_depart(); /*调用车辆离开模块*/elsemenu(); /*返回主菜单*/}(3)、车位信息浏览模块[分析]该模块需要实现功能:用户选择浏览车位信息时进入该模块,查询并显示车位使用信息。