C语言停车场管理实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。

功能描述

以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表实现

系统设计及实现

1.头文件及宏定义

#include

#include

#include

#include

#include

#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.停止输入显示制作者信息及退出程序

实训心得

通过这次实训我对课本上的理论知识有了更深层次的了解,可能在仅一周的时间内学到的东西有限,不过却也是受益非浅,实训本来就是对平常所学的理论知识通过具体的实现表示出来是在完成理论课程学习之后安排的综合实践

训练,任何一个优秀的程序员都是从实践中获得经验和教训的。经过仅仅一周的实训从总体上说收获是很不错的!

首先代码的编写能力明显提高,有了想法基本都能顺利表达出来;再者就是数据结构的选择使用能力也有了很大的提高!虽然,平时的实验课我们也有用各种数据做题,但那些都是很明确的该做什么操作,存什么,我们的发挥空间不大一般照做就行,然而这次实习我们却是在自主的选择判断,这本身就是一个很大的提高!

但是还是很多的知识不了解,不过收获真的很多,但是最大的收获可能就是对编程的兴趣吧,在一次次的改掉错误,一次次的完成想要的效果后,越写越有感觉,越写越有成就感!当然还收获了无知,更确切的说是自知,原来我们现在什么也不算,还有很多有用的知识等着我们去学习!

附录(代码)

#include

#include

#include

#include

#include

// 清空当前屏幕

#define ClearScreen() system( "cls" )

//设置背景前景颜色

#define setcolor() system("color 2f")

// 显示字符串szPrompt 并等待用户按下任意键

#define Pause( szPrompt ) printf( "%s", szPrompt ),getch()

typedef struct carinformation // 车辆信息

{

char szRegistrationMark[64]; // 车牌号

char szArrivalTime[16]; // 到达时间

char szEntranceTime[16]; // 进入停车场(开始计费)时间

char szDepartureTime[16]; // 离开时间

} TCARINFORMATION, *LPTCARINFORMATION;

typedef struct carstack

{

LPTCARINFORMATION lpCarInformation; // 车辆信息

int nTop; // 栈顶元素下标

int nStackSize; // 栈容量

} TCARSTACK, *LPTCARSTACK;

// 初始化栈lpCarStack, 将其容量设置为nSize

void InitStack( LPTCARSTACK &lpCarStack, int nSize )

{

lpCarStack = ( LPTCARSTACK ) malloc( sizeof ( TCARSTACK ) ); lpCarStack->lpCarInformation = ( LPTCARINFORMATION ) malloc( nSize * sizeof ( TCARINFORMATION )

);

lpCarStack->nTop = -1;

lpCarStack->nStackSize = nSize;

}

// 车辆信息carinfo 入栈lpCarStack

void Push( LPTCARSTACK &lpCarStack, TCARINFORMATION carinfo ) {

lpCarStack->nTop++;

lpCarStack->lpCarInformation[lpCarStack->nTop] = carinfo;

}

// 车辆信息从栈lpCarStack 中弹出并存入carinfo

相关文档
最新文档