当前位置:文档之家› C语言停车场管理实验报告

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

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

设停车场内只有一个可停放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

void Pop( LPTCARSTACK &lpCarStack, TCARINFORMATION &carinfo ) {

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

lpCarStack->nTop--;

}

// 若栈lpCarstack 空,返回TRUE;否则,返回FALSE

BOOL IsStackEmpty( LPTCARSTACK lpCarStack )

{

return lpCarStack->nTop == -1;

}

// 若栈lpStackFull 满,返回TRUE;否则,返回FALSE

BOOL IsStackFull( LPTCARSTACK lpCarStack )

{

return lpCarStack->nTop == ( lpCarStack->nStackSize - 1 );

}

// 销毁栈lpCarStack,将指针lpCarStack 置为NULL

void DestroyStack( LPTCARSTACK &lpCarStack )

{

free( lpCarStack->lpCarInformation );

free( lpCarStack );

lpCarStack = NULL;

}

typedef struct carnode // 链队结点信息

{

TCARINFORMATION carinfo; // 车辆信息

struct carnode *lpNext; // 指向下一个元素的指针

} TCARNODE, *LPTCARNODE;

typedef struct carqueue // 链队

{

LPTCARNODE lpHead; // 头结点

LPTCARNODE lpRear; // 指向当前队尾的指针

int nEffectiveSize; // 当前队中元素个数

} TCARQUEUE, *LPTCARQUEUE;

// 初始化链队lpCarQueue

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;

}

// 车辆信息carinfo 入队lpCarQueue

void EnQueue( LPTCARQUEUE &lpCarQueue, TCARINFORMATION carinfo )

{

LPTCARNODE lpCarNode = ( LPTCARNODE ) malloc( sizeof( carnode ) );

lpCarNode->carinfo = carinfo;

lpCarNode->lpNext = NULL;

lpCarQueue->lpRear->lpNext = lpCarNode;

lpCarQueue->lpRear = lpCarQueue->lpRear->lpNext;

lpCarQueue->nEffectiveSize++;

}

// 队头元素从链队lpCarQueue 中出队并存入carinfo

void DeQueue( LPTCARQUEUE &lpCarQueue, TCARINFORMATION &carinfo )

{

LPTCARNODE lpTemp = lpCarQueue->lpHead->lpNext;

carinfo = lpTemp->carinfo;

lpCarQueue->lpHead->lpNext = lpTemp->lpNext;

free( lpTemp );

lpCarQueue->nEffectiveSize--;

}

// 若链队lpCarQueue 为空,返回TRUE;否则,返回FALSE

BOOL IsQueueEmpty( LPTCARQUEUE lpCarQueue )

{

return lpCarQueue->nEffectiveSize == 0;

}

// 销毁链队lpCarQueue

void DestroyQueue( LPTCARQUEUE &lpCarQueue )

{

LPTCARNODE lpNextCarNode = NULL;

for ( LPTCARNODE lpCarNode = lpCarQueue->lpHead; lpCarNode != NULL; lpCarNode = lpNextCarNode )

{

lpNextCarNode = lpCarNode->lpNext;

free( lpCarNode );

}

free( lpCarQueue );

lpCarQueue = NULL;

}

// 将字符串时间格式转换为数字(分钟)格式,例如12:36 将被转换为756 ( 12 * 60 + 36 )

int ConvertTimeFormat( char *lpTime )

{

int nHour = 0;

int nMinute = 0;

sscanf( lpTime, "%d:%d", &nHour, &nMinute );

return nHour * 60 + nMinute;

}

// 根据在停车场内的停留时间nContinuanceMinutes (分钟)计算费用

double CalculateExpense( int nContinuanceMinutes )

{

return nContinuanceMinutes * ( 5.0 / 60 );

}

int main( void )

{

setcolor();

int nParkCapability = 0; // 停车场容量

putchar( '\n' );

printf( "请输入停车场容量:" );

scanf( "%d", &nParkCapability );

LPTCARSTACK lpCarStack = NULL; // 停车场,用栈模拟豫InitStack( lpCarStack, nParkCapability );

LPTCARQUEUE lpCarQueue = NULL; // 便道,用链队模拟InitQueue( lpCarQueue );

char cCommandType = NULL; // 命令类型

char szUserInput[128] = { NULL }; // 用户输入

do

{

ClearScreen();

setcolor();

putchar( '\n' );

puts( "--------------------" );

puts( "[命令类型]" );

puts( "A - 车辆到达" );

puts( "D - 车辆离开" );

puts( "E - 停止输入" );

puts( "O - 显示当前停车场和便道使用情况" );

putchar( '\n' );

puts( "例:" );

puts( "A,豫A1234,14:26" );

puts( "D,豫A1234,16:51" );

puts( "E" );

puts( "O" );

putchar( '\n' );

printf( "请输入命令:" );

scanf( "%s", szUserInput );

puts( "--------------------" );

char szCarInformation[128] = { NULL };

sscanf( szUserInput, // 将命令类型与车辆信息分开存放

"%c,%s",

&cCommandType, // 用户输入的前半部分,即命令类型

szCarInformation // 用户输入的后半部分,即车辆信息

);

char *lpCommaLocation = NULL; // 车辆信息字符串中的逗号位置

for ( lpCommaLocation = szCarInformation; *lpCommaLocation != '\0'; lpCommaLocation++ ) {

if ( *lpCommaLocation == ',' )

{

break;

}

}

*lpCommaLocation = '\0';

TCARINFORMATION carinfo = { NULL }; // 存储本次用户输入的车辆信息

strcpy( carinfo.szRegistrationMark, szCarInformation );

if ( cCommandType == 'A' )

{

strcpy( carinfo.szArrivalTime, lpCommaLocation + 1 );

if ( FALSE == IsStackFull( lpCarStack ) )

{

strcpy( carinfo.szEntranceTime, carinfo.szArrivalTime );

Push( lpCarStack, carinfo );

printf( "已进入停车场第%d 个车位\n",

lpCarStack->nTop + 1

);

printf( "车牌号:\t\t%s\n", carinfo.szRegistrationMark );

printf( "进入时间:\t%s\n", carinfo.szEntranceTime );

puts( "是否收费:\t是" );

}

else

{

EnQueue( lpCarQueue, carinfo );

printf( "停车场已满,已停放在便道的第%d 个车位\n",

lpCarQueue->nEffectiveSize

);

printf( "车牌号:\t\t%s\n", carinfo.szRegistrationMark );

printf( "停放时间:\t%s\n", carinfo.szArrivalTime );

puts( "是否收费:\t否" );

}

}

else if ( cCommandType == 'D' )

{

strcpy( carinfo.szDepartureTime, lpCommaLocation + 1 );

LPTCARSTACK lpTempCarStack = NULL;

InitStack( lpTempCarStack, nParkCapability );

TCARINFORMATION carinfoOut = { NULL };

BOOL bIsCarFound = FALSE;

while ( FALSE == IsStackEmpty( lpCarStack ) )

{

Pop( lpCarStack, carinfoOut );

if ( 0 != strcmp( carinfoOut.szRegistrationMark, carinfo.szRegistrationMark ) ) {

Push( lpTempCarStack, carinfoOut );

}

else

{

bIsCarFound = TRUE;

break;

}

}

while ( FALSE == IsStackEmpty( lpTempCarStack ) )

{

TCARINFORMATION tempcarinfo = { NULL };

Pop( lpTempCarStack, tempcarinfo );

Push( lpCarStack, tempcarinfo );

}

if ( FALSE == bIsCarFound )

{

printf( "车牌号为%s 的车未进入停车场.\n", carinfo.szRegistrationMark ); Pause( "--------------------\n按任意键输入下一条信息...\n" );

continue;

}

strcpy( carinfoOut.szDepartureTime, carinfo.szDepartureTime );

int nEntranceTime = ConvertTimeFormat( carinfoOut.szEntranceTime );

int nDepartureTime = ConvertTimeFormat( carinfoOut.szDepartureTime );

int nContinuanceMinutes = nDepartureTime - nEntranceTime;

printf( "计费时段:\t%s - %s (共%d 分钟)\n",

carinfoOut.szEntranceTime,

carinfoOut.szDepartureTime,

nContinuanceMinutes

);

double rExpense = CalculateExpense( nContinuanceMinutes );

printf( "应交纳的费用:\t%.1lf 元\n", rExpense );

if ( FALSE == IsQueueEmpty( lpCarQueue ) )

{

TCARINFORMATION tempcarinfo = { NULL };

DeQueue( lpCarQueue, tempcarinfo );

strcpy( tempcarinfo.szEntranceTime, carinfoOut.szDepartureTime ); Push( lpCarStack, tempcarinfo );

puts( "--------------------" );

printf( "停放在便道的第1 个车位,车牌号为%s 的车已进入停车场\n", tempcarinfo.szRegistrationMark

);

}

}

else if ( cCommandType == 'E' )

{

puts( "********************" );

puts( " 姓名:肖熊\n" );

puts( "学号:200813080245 \n" );

puts( "********************" );

break;

}

else if ( cCommandType == 'O' )

{

ClearScreen();

setcolor();

putchar( '\n' );

puts( "[停车场使用情况]\n" );

puts( "[车位]\t[车牌号]\t[到达时间]\t[进入(开始计费)时间]\n");

for ( int i = 0; i <= lpCarStack->nTop; i++ )

{

printf( "%d\t%s\t\t%s\t\t%s\n",

i + 1,

lpCarStack->lpCarInformation[i].szRegistrationMark,

lpCarStack->lpCarInformation[i].szArrivalTime,

lpCarStack->lpCarInformation[i].szEntranceTime

);

}

putchar( '\n' );

putchar( '\n' );

putchar( '\n' );

puts( "[便道使用情况]\n" );

puts( "[车位]\t[车牌号]\t[到达时间]\t[进入(开始计费)时间]\n");

int nNum = 0;

for ( LPTCARNODE lpCarNode = lpCarQueue->lpHead->lpNext;

lpCarNode != NULL; lpCarNode = lpCarNode->lpNext )

{

nNum++;

printf( "%d\t%s\t\t%s\t\t%s\n",

nNum,

lpCarNode->carinfo.szRegistrationMark,

lpCarNode->carinfo.szArrivalTime,

lpCarNode->carinfo.szEntranceTime

);

}

putchar( '\n' );

}

else

{

puts( "输入信息有误.第一个字符只能为'A' 或'D' 或'E' 或'O' (区分大小写)." ); }

Pause( "--------------------\n按任意键输入下一条信息.\n" );

} while ( TRUE );

DestroyStack( lpCarStack );

DestroyQueue( lpCarQueue );

Pause( "\n按任意键退出程序...\n" );

return 0;

}

停车场管理系统—C语言课程设计.doc

停车场管理系统 1题目要求 设有一个可以停放n 辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n 辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车站。停车站内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟该停车场的管理。 【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场是的停车时间及它应该交的费用。 2需求分析 根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中,需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。车辆离开要计时计费。另外,每天开始时,停车场要初始化。 3总体设计 这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。 4详细设计 main()函数体内包含了界面选则部分menu(),并单独 抽出来作为一个独立函数,目的在于系统执行每部分 模块后能够方便返回到系统界面。即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; /*车辆进入函数*/

停车场数据结构实验报告附代码

数据结构实验报告 ——实验三停车场模拟管理程序的设计与实现 本实验的目的是进一步理解线性表的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。 一、【问题描述】 设停车场只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该车辆开出大门,为它让路的车辆再按原次序进入车场。在这里假设汽车不能从便道上开走,试设计这样一个停车场模拟管理程序。为了以下描述的方便,停车场的停车场用“停车位”进行叙述,停车场的便道用“便道”进行叙述。 二、【数据结构设计】 1、为了便于区分每辆汽车并了解每辆车当前所处的位置,需要记录汽车的牌照号码和汽车的当前状态,所以为汽车定义一个新的类型CAR,具体定义如下: typedef struct { char *license //汽车牌照号码,定义为一个字符指针类型 char state; //汽车当前状态,字符s表示停放在停车位上,//字符p表示停放在便道上,每辆车的初始状态用字符i来进行表示 } 2、①由于车位是一个狭长的通道,所以不允许两辆车同时出入停车位,当有车到来要进入停车位的时候也要顺次停放,当某辆车要离开时,比它后到的车要先暂时离开停车位,而且越后到的车就越先离开停车位,显然这和栈的“后进先出”特点相吻合,所以可以使用一个栈来描述停车位。 由于停车位只能停放有限的几辆车,而且为了便于停车场的管理,为每个车位要分配一个固定的编号,不妨设为1、2、3、4、5(可利用数组的下标),分别表示停车位的1车位、2车位、3车位、4车位。5车位,针对这种情况使用一个顺序栈比较方便。 ②当某辆车要离开停车场的时候,比它后进停车位的车要为它让路,而且当它开走之后让路的车还要按照原来的停放次序再次进入停车位的某个车位上,为了完成这项功能,再定义一个辅助栈,停车位中让路的车依次“压入”辅助栈,待提出开走请求的车开走后再从辅助栈的栈顶依次“弹出”到停车位中。对辅助栈也采用顺序栈。

停车场运营管理系统方案设计.doc

停车场运营管理系统方案设计1 X X 集团 停车场营运管理方案 编制: 审核: 审批: 编制日期:二0一八年三月二十六日 目录 第一章管理目的(3) 第二章岗位设置及管理架构(3) 第三章停车场收费管理制度(4) 第四章车场进出动线(6) 第五章管理人员岗位职责(6) 第六章停车场使用守则(10) 第七章车场管理工作规程(12) 第八章停车场特殊事件处理程序(15) 第九章装卸货物管理规定(20)

第十章停车场清洁服务安排(21) 第十一章停车场系统维护保养要求(22) 第十二章车场日常安全巡查及常用表格(22) 第十三章停车场运作费用预算(26) 第十四章停车场其它服务管理规定(27) 第十五章停车场常用标志样式(31) 第十六章附加《商场开业期间车场收费优惠标准》(34) 第一章管理目的 为完善停车场的安全管理,辖区交通畅顺,出入有序,规范停车场的日常经营管理,防止各项安全事故的发生,明确停车场管理的有偿保管责任,以及让现场值班人员能对各项应急突发事件的快速处理,为顾客、业主提供一个安全舒适便利的停车环境,特制定以下车场运营管理方案。 第二章岗位设置及管理架构 一、停车场主管1人,负责停车场的整体管理工作。 二、值班人员9名,早、中班负三负四层各一名,巡逻人员各一名,夜班2名,顶休一名。 三、消防中心监控岗负责停车场内监控管理,发现异常情况通知现场车管处理。

四、停车场日常管理架构图如下: 第三章停车场收费管理制度 一、停车场收费系统为车牌识别出入,微信扫码缴费系统,车场进出口不设人工收费。 二、场内停放的车辆设有月保、临保、VIP等三种形式。VIP 免费停车需经OA《免费停车申请》审批。 三、进入车场15分钟内不计时收费。 四、军车、警车、救护车及抢救车辆等特种车进入停车场执行任务,可免费通行。 五、无特殊情况进出车禁止私自抬杆,出车禁止收取现金。若遇特殊情况需抬杆处理,需按如下流程: 1、出车操作 (1)车主已缴费,系统无法正常起杆,经核实后由主管报部门经理同意后方可手动起杆,并通知信息部将系统恢复正常同时做好记录。 (2)车主未缴费,系统正常,为避免车道的堵塞可将车辆暂时引导到空置区域进行缴费后方可放行。 (3)如整套系统出现故障,人工及自动缴费无法正常进行,由主管报部门经理,经公司领导同意后,可手动起杆免费放行,并通知信息部、财物部现场跟进并清理相关记录。

停车场管理系统 c语言

2015-2016学年第二学期《高级语言程序设计》 课程设计报告 题目:停车场管理系统 专业:计算机科学与技术 班级:15级计科<1>班 姓名:胡玉玉 指导教师:陈广宏 成绩: 计算机学院 2016 年 4月 25 日

目录 1. 设计内容及要求 (1) 1.1 课程设计内容 (1) 1.2 课程设计的要求 (2) 2概要设计 (3) 2.1 设计思路 (3) 2.2 程序基本框架结构图 (4) 3设计过程或程序代码 (5) 3.1 主要程序代码及解释 (5) 4设计结果与分析 (13) 4.1 程序运行结果截图与分析 (13) 5参考文献 (16)

1.设计内容及要求 1.1 课程设计内容 ①通过本次课程设计,强化上级动手能力,在理论和实践的基础 上巩固《C语言程序设计》课程的学习内容。掌握软件设计的基本方法。 ②熟悉C语言的基本内容从而掌握C语言的基本知识以及了解C 语言的基本编写及运行。 ③了解程序的分模块编写并对程序的每个模块进行详细的设计并 且能理解一般C语言编写的程序。 ④掌握书写程序设计说明文档的能力。 ⑤熟悉C程序设计的开发环境及C程序的调试过程 1.2 课程设计的要求 ①分析课程设计题目的要求。 ②写出详细设计说明。 ③编写程序代码,调试程序使其能正确运行。 ④设计完成的软件要便于操作和使用。 ⑤设计完成后提交课程设计报告。

2.概要设计 2.1设计思路 停车场是一个可停放n辆汽车的狭长通道,并只有一个大门可供汽车进出,汽车在停车场内按车辆到达的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),如车长内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车”到达” 或”离去”信息,汽车牌照号码以及到达或离去的时刻(到达或离去的时刻也可用计算机控制).对每一组输入数据进行操作后的输入信息为:如是车辆到达,则输入汽车在停车场。 2.2程序基本框架结构图

停车场管理系统实验报告汇总

华北水利水电学院数据结构实验报告 2011~2012学年第二学期2011级计算机专业 班级:**** 学号:***** 姓名:**** - 实验二栈和队列及其应用 一、实验目的: 1.掌握栈的特点(先进后出FILO)及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构,以便在实际问题背景下灵活应用。 2.掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活运用。 二、实验内容: 1.链栈的建立、入栈、出栈操作。 2.环形队列的建立、入队、出队操作。 3.停车场管理。设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 实现提示:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表(带头结点)实现。 需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。 设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’表示到达;‘D’表示离去,‘E’表示输入结束。 三、实验要求: 1.C/ C++完成算法设计和程序设计并上机调试通过。 2.撰写实验报告,提供实验结果和数据。 3.写出算法设计小结和心得。 四、程序源代码: 1.#include #include typedef struct stnode { int data; stnode *next;

停车场运营管理方案 (2)

阳光嘉苑小区停车运营管理方案 2014年10月17日

前言 停车管理就是物业管理工作中得一项重要工作,因存在车辆收费难、车辆管理难、服务工作难、停车工作难、停车纠纷多等诸多问题,已成为困扰物业管理公司得重要难题。根据停车场现状与未来停车发展需求,引进专业停车管理公司(专业外包)就是必然趋势,通过合理规划运营,实现车辆停放有序、专业管理到位、责任划分清晰,最大程度地满足广大车主得需求,提升物业管理公司得服务形象与水平,利用租赁经营场地资金实现企业脱困减负或再投入经营发展,进而最终实现物业增值、保值得目得。 若有幸能与贵方进行合作,我公司将结合阳光嘉苑小区停车实际情况,合理得调整解决停车位利用率,运用专业得运营管理手段,提供给车主最安全、最便捷、最贴心得泊车服务,并保证贵方在经济利益与社会效益方面得双重效益。 为了加深贵方对我方管理过程得了解,我公司现向贵方提交下列停车场管理方案,并愿就有关方面得问题进一步与贵方商椎,为最终达成合作奠定基础。 为协助河南文博物业管理有限公司做好阳光嘉苑小区停车管理工作,全面接受停车场地经营管理得委托,满足客人得停车需求,做到停车有位、停车有序、停车安全、创造良好得交通环境,方便小区业主生活,特制定以下管理方案。 一、停车场地位规模及规划 停车场地处国基路99号阳光嘉苑住宅小区,我公司对停车场地进

行了现场勘测、分析调研,根据本小区建筑得品质与居民经济层次、车场规模及效益,利用车场现有资源,科学规划建设,配置相应得停车场管理设施设备,力争打造精品停车场地,并实现三赢(物业公司、业主或使用人、我公司)之目得。 1、阳光嘉苑小区实划有效车位约481个,流动车位350个,属于居民服务区。 2、根据甲方以往得运作模式要求,阳光嘉苑小区地面停车场地位为长租与零收两种管理模式。 3、运用科技手段加强管理力度,车场内配置视频监控设备、门禁系统、挡车器等交通设施设备,各种标识、标线、指示灯箱配备齐全。 4、预留消防通道,通道内不规划车位。 二、停车场泊车管理 机动车泊车管理模式:车辆进入停车场泊车,如果就是临时停靠车辆先由进口门岗发放停车计时卡,固定停车位可自行刷卡进入,巡视引导员提示、引导车辆安全出入车位,车辆驶离时到出口门岗处交还计时卡或刷卡,临时停车按卡上计录时间收取停车费,同时付给停车场专用发票。 1、根据本车辆停车得性质划分区域,分出专用固定停车位区与临时停车区,以便于管理。 2、停车专用车位区得固定车辆,配发本车辆得专用车证。一车一证一位,车辆不准随意停放。 3、停车证就是为方便业主停车而采取得以年交停车费方式得凭

停车场管理系统源代码

// 停车场管理系统 #include #include #define OVERFLOW 0 #define ERROR 0 #define OK 1 #define STACKSIZE 2 /车/ 库容量 // 时间节点typedef struct time{ int hour; int min; }Time; // 车辆信息typedef struct{ char CarNum; float time; int pos_a; // 车在停车场中的位置int pos_b; // 车 在便道上的位置int flag; }Car,Car2; // 车库信息 (顺序栈) typedef struct{ Car *top; Car *base; int stacksize; }SqStack; // 初始化int InitStack(SqStack &S){ S.base=new Car[STACKSIZE]; if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize=STACKSIZE; return OK; } // 判空int StackEmpty(SqStack S){ if(S.top==S.base) return OK; else return ERROR;

// 判满 int StackFull(SqStack S){ if(S.top-S.base>=S.stacksize) return OK; else return ERROR; } // 入栈 int Push(SqStack &S,Car e){ if(S.top-S.base==S.stacksize) return ERROR; *S.top++=e; return OK; } // 出栈 int Pop(SqStack &S,Car &e){ if(S.top==S.base) return ERROR; e=*--S.top; return OK; } // 遍历栈 int StackTraverse(SqStack S) { Car *p=S.top; Car *q=S.base; int l=1; if(StackEmpty(S)){ for(int j=1;j<=STACKSIZE;j++){ printf("\t 车牌:"); printf("\t\t 到达时间:"); printf("\t 位置%d:空空",j); printf("\n"); } return OK; } while(p!=q){ Car car=*(q); printf("\t 车牌: %d",car.CarNum); printf("\t\t 到达时 间: %5.2f",car.time); printf("\t\t 位置: %d",l++); printf("\n"); q++; return OK; } // 备用车道 (顺序栈) typedef struct { Car2 *top2; Car2 *base2; // int stacksize2; }SqStack2;

停车场管理系统C语言实现1

一.问题描述 1.实验题目: 设停车场是一个可停放n 辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端)。若停车场内已经停满n辆车,那么后来的车只能在门外的便道上等候。一旦有车开走,则排在便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场。每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用。试为停车场编制按上述要求进行管理的模拟程序。 要求:根据各结点的信息,调用相应的函数或者语句,将结点入栈入队,出栈或者出队。 二.需求分析 1.程序所能达到的基本可能: 程序以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入数据的序列进行模拟管理。栈以顺序结构实现,队列以链表结构实现。同时另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车。输入数据按到达或离去的时刻有序。当输入数据包括数据项为汽车的“到达”(‘A’表示)信息,汽车标识(牌照号)以及到达时刻时,应输出汽车在停车场内或者便道上的停车位置;当输入数据包括数据项为汽车的“离去”(‘D’表示)信息,汽车标识(牌照号)以及离去时刻时,应输出汽车在停车场停留的时间和应缴纳的费用(便道上停留的时间不收费);当输入数据项为(‘P’,0,0)时,应输出停车场的车数;当输入数据项为(‘W’, 0, 0)时,应输出候车场车数;当输入数据项为(‘E’, 0, 0),退出程序;若输入数据项不是以上所述,就输出"ERROR!"。 2.输入输出形式及输入值范围: 程序运行后进入循环,显示提示信息:“Please input the state,number and time of the car:”,提示用户输入车辆信息(“到达”或者“离开”,车牌编号,到达或者离开的时间)。若车辆信息为“到达”,车辆信息开始进栈(模拟停车场),当栈满,会显示栈满信息:“The parking place is full!”,同时车辆进队列(模拟停车

大学 C语言 停车场管理系统 设计c语言课程设计 (含调试图)

Xxxxx大学 xxxxxxxxxxx系 20xx-20xx学年第一学期 《C程序设计》课程设计 题目名称:停车场管理系统设计 姓名: 学号: 班级: 指导教师: 编写日期: 20 年1月5日—20 年1月31日 成绩:

目录 (一)需求分析 (3) 1-1停车 (3) 1-2取车 (3) 1-3功能的选择 (3) (二)总体设计(程序设计组成框图) (3) 2-1停车模块 (3) 2-2取车模块 (3) 2-3车辆信息浏览模块 (4) 2-4程序设计组成框图 (4) (三)详细设计 (4) 3-1停车场分析 (4) 3-2停车操作 (4) 3-3收费管理(取车) (5) 3-4车辆信息 (5) 3-5退出系统 (5) (四)程序运行结果测试与分析 (5) (五)结论与心得 (7) (六)参考文献 (7) (七)致谢 (8) 附录: (8)

(一)需求分析 1-1停车 车辆信息要用文件存储,因而要提供文件的输入输出操作。 1-2取车 当车离开时,要删除文件中该车的信息,因而要提供文件的删除操作。 1-3功能的选择 提供现实操作和用键盘式菜单实现功能选择。 (二)总体设计(程序设计组成框图) 2-1停车模块 对车辆信息赋值,分配前检查车位使用情况(按行查找park 数组,元素为0 表示车位为空,则允许分配)。把新添加的车辆信息以追加的方式写入汽车信息文件,并更改汽车信息文件中其他汽车信息的停车时间(停车时间加5)。 2-2取车模块 计算费用(停车费用=停车时间*0.2 元),从文件中删除该车信息。并将该车位对应的二位数组变量设为0,表示该车位可用。输出提示信息:是否输出停车费用总计?(Y/N)如果选择Y,则输出停车费用,否则回到上级菜单。

停车场经营管理方案66380

目录 1、管理目标 2、岗位设置及管理架构 3、管理人员岗位职责、纪律和职业道德 4、管理工作规程 5、停车场之保安安全程序 6、停车场承包费及其它 7、停车场特殊情况处理程序 8、停车场使用守则 9、停车场清洁服务安排 停车场经营管理方案 一、管理目标 制定及落实停车场管理规范,完善停车场的安全管理,保障车辆停放安全,辖区交通畅顺,出入有序,确保车场设施设备之运转正常安全,防止事故发生。明确停车场管理的有偿保管责

任及车位的有偿使用,并向进入停车场车主明确此关系。 二、岗位设置及管理架构 1、建议停车场之岗位设置如下: 1.1摩托车、非机动车出口各设固定收费岗; 1.2机动车入口设固定岗,出口设收费岗及固定岗; 1.3停车场内设流动巡逻岗,同时,监控中心也负责停车场内部之监控;

2、建议停车场之管理架构如下: 三、管理人员岗位职责、纪律和职业道德 1、停车场主管职责 1.1对保安主管负责,服从上级安排,听从指挥做到令行禁止,依法循章对交通、车 辆进行管理。 1.2经常视察车场、并确保各停车位正确使用,保证车道、车场出入口周围道路畅通。 1.3熟悉掌握车辆流通情况,车位情况,合理布署安排,优先保证商户使用车位,按 物价部门规定收取车位停放费。 1.4安排和调整属下人员的工作时间,合理分派所有工作给予属下员工,确使他们严 格遵照指示工作,提高工作效率。 1.5负责监督和落实员工岗位职责,对员工进行岗位职责、工作规程、车管仪器操作 等相关知识的培训和法制教育及职业道德教育,并安排定期对员工进行考核,,提高员工的工作技能及服务质素。 1.6负责每日工作检查,并做好相关记录。 1.7负责对外协调与联系,处理车辆管理方面的问题和客户投诉。 停车场主管 (根据情况确定职务,可以兼物业服务中心 收 费岗 机动车 巡逻岗 非机动车出入车场 车场 工程

停车场管理系统源代码

//停车场管理系统 #include #include #define OVERFLOW 0 #define ERROR 0 #define OK 1 #define STACKSIZE 2 //车库容量 //时间节点 typedef struct time{ int hour; int min; }Time; //车辆信息 typedef struct{ char CarNum; float time; int pos_a; //车在停车场中的位置 int pos_b; //车在便道上的位置 int flag; }Car,Car2; //车库信息(顺序栈) typedef struct{ Car *top; Car *base; int stacksize; }SqStack; //初始化 int InitStack(SqStack &S){ S.base=new Car[STACKSIZE]; if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize=STACKSIZE; return OK; } //判空 int StackEmpty(SqStack S){ if(S.top==S.base) return OK; else return ERROR; }

//判满 int StackFull(SqStack S){ if(S.top-S.base>=S.stacksize) return OK; else return ERROR; } //入栈 int Push(SqStack &S,Car e){ if(S.top-S.base==S.stacksize) return ERROR; *S.top++=e; return OK; } //出栈 int Pop(SqStack &S,Car &e){ if(S.top==S.base) return ERROR; e=*--S.top; return OK; } //遍历栈 int StackTraverse(SqStack S) { Car *p=S.top; Car *q=S.base; int l=1; if(StackEmpty(S)){ for(int j=1;j<=STACKSIZE;j++){ printf("\t车牌:"); printf("\t\t到达时间:"); printf("\t位置%d:空空",j); printf("\n"); } return OK; } while(p!=q){ Car car=*(q); printf("\t车牌: %d",car.CarNum); printf("\t\t到达时间:%5.2f",car.time); printf("\t\t位置:%d",l++); printf("\n");

C语言课程设计报告停车场管理系统

停车场管理一 一.要求: 1.设计一个停车场用长度为N的堆栈来模拟。由于停车场内如有某辆车要开走,在它之后进来的车都必须先退出为它让道,待其开出停车场后,这些车再依原来的顺序进入。 2.程序输出每辆车到达后的停车位置,以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。 二、程序中所采用的数据结构及存储结构的说明 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。栈以顺序结构实现,队列以链表实现。 程序中分别采用了“栈”和“队列”作为其存储结构。 “栈”的定义可知,每一次入栈的元素都在原栈顶元素之上成为新的元素,每一次出栈的元素总是当前栈顶元素使次栈元素成为新的栈顶元素,即最后进栈者先出栈。程序中采用的结构是: typedef struct NODE{ CarNode *stack[MAX+1]; int top; }SeqStackCar; /*模拟车库*/ “队列”是限定所有插入操作只能在表的一端进行,而所有的删除操作都只能在表的另一端进行。插入端叫队尾,删除端叫对头。按先进先出规则进行。程序中采用的结构是:typedef struct Node{ QueueNode *head; QueueNode *rear; }LinkQueueCar; /*模拟通道*/ 三、算法的设计思想 由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车

场内按车辆到达时间的先后顺序,依次由北向南排列。由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,又每个汽车的车牌号都不一样,这样一来可以根据车牌号准确找到汽车位置,所以堆栈里的数据元素我设计成汽车的车牌号。当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车车牌号。当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队列来模拟便道,队列中的数据元素仍然设计成汽车的车牌号。另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间,车辆离开停车场时的时间不需要记录,当从终端输入时可直接使用。由于时间不象汽车一样需要让道,我设计了一个顺序表来存放时间。又用顺序表用派生法设计了一个堆栈,恰好满足上面模拟停车场的需要。 四.设计原理、框图

数据结构实验报告—停车场问题

《计算机软件技术基础》实验报告I—数据结构 实验二:停车场管理问题 一、问题描述 1.实验题目: 设停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端)。若停车场内已经停满 n辆车,那么后来的车只能在门外的便道上等候。一旦有车开走,则排在便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场。每辆停放在车场的车在它离开停车场时必须按它停留的时间长短缴纳费用。试为停车场编制按上述要求进行管理的模拟程序。 2.基本要求: 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入数据的序列进行模拟管理。每一组输入数据包括三个数据项:汽车的“到达”(‘A’表示)或“离去”(‘D’表示)信息、汽车标识(牌照号)以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或者便道上的停车位置;若是车辆离去,则输出汽车在停车场停留的时间和应缴纳的费用(便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。 3.测试数据: 设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’表示到达;‘D’表示离去,‘E’表示输入结束。其中:(‘A’,1,5)表示1号牌照车在5这个时刻到达,而(‘D’,1,15)表示1号牌照车在15这个时刻离去。 二、需求分析

停车场经营管理方案

停车场经营管理方案 Revised by Petrel at 2021

停车场经营管理方案 一、车场门卫服务规范 1、负责维护车场秩序,疏导交通,引导车辆入位,合理收费,文明服务。 2、指导车辆有序停放,保持车道和消防通道畅通。 3、负责做好车辆登记工作,做到出、入登记,认真填写车辆进出计时卡的时间,对入场车辆进行车况检查,如有损坏当场通知车主,并做好记录。 4、车辆进出先敬礼,使用文明用语,严格执行收发卡和验证制度,进场验发卡,出场收卡,出入卡发出时间和收回时车辆应保持一致,出入卡不得丢失。 5、负责对出场车辆进行检查校对,如发现可疑应拒绝出场,并立即报告负责人,直至校对清楚后方可放其出场,夜间车辆出入需验明“三证”(驾驶证、行驶证、车辆计时卡)。 6、负责提醒车主下车后锁好车门、窗,贵重物品不要遗留在车内。 7、禁止小商、小贩、闲杂人员进入车场或逗留。 8、禁止携带易燃、易爆等危险物品进入车场,禁止在车场内堆放杂物等。 9、严格执行交接班制度,做好值班记录及其它记录,按规定办理移交手续,交班前做好周边卫生。 二、车场巡视人员服务规范 1、按规定的路线时间进行巡视,根据具体情况进行负责车辆引导入位及引导车辆出位,在巡视终端设置签到箱进行签字,确保巡逻人员忠于职守,巡视到位。 2、对车场内可疑人员、车辆进行监视、盘问和检查,发现问题及时予以解决。 3、熟悉车场内设施设备情况,发现车辆碰撞或人为破坏立即制止并给予处理。 4、巡视停车场内车辆有无漏油及烟火,线路安全隐患,不能处理时应及时报告车场主管或值班人员协助处理。 5、检查停放车辆有无异常情况,门窗是否关好,车内有无贵重物品,有无被撬痕迹,并做好巡视记录,必要时通知车主和车场主管。 6、检查停车场内有无可疑箱包,危险物等,并及时处理。 7、遇重大紧急情况应立即报警。 8、夜班巡视人员必须保持高度警觉状态,不得脱岗或打盹睡觉,一经发现将严肃处理。 三、收费管理 (一)收费依据 (二)收费标准 按照上述规定,结合停车场实际停车情况,我公司建议将停车收费定为: 地面:小型车位:XXX元/月,货车XXX元每月,或按排气量大小 临时停车:起价XXX元/两小时、两小时以后每小时加收XXX元 (三)收费管理形式 1、以固定车位月租及临时停放形式,指定具体停车位,并保证交费的业主的车位不被他人侵占,做到专车专用。 2、对已交费的业主发放停车证,凭证进出车场。 3、对一些特定车辆可采用免费发放停车场专用通行证 4、对外来车辆发放计时卡,进门时登记时间,出门时根据停车时间计时交费。

停车场管理系统 C语言实习报告

C 语 言 课 程 实 习 报 告 【要求】 设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进来的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制一程序模拟停车场管理。 【提示】 汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。 基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某

辆车离开停车场时应交纳的费用和它在停车场内停留的时间。 根据题目要求,停车场可以用一个长度为n 的堆栈来模拟。由于停车场内如有某辆车要开走,在它之后进来的车辆都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场,所以可以设两个堆栈。 一、需求分析 根据题目要求,程序应该提供“到达/离去,汽车牌照号码,到达/离去”的输入、输出操作;在程序中需要浏览停车场的车位信息,应提供显示、查找、排序等操作;此外还应提供键盘式菜单实现功能选择。 二、总体设计: 根据需求分析,可以将系统的设计分为以下五大模块:(1)车辆进入;(2)车辆退出; (3)车辆等待;(4)车辆查询;(5)退出。 一、详细设计: 主函数中只包含菜单函数,菜单部分单独写成函数,只提供输入、功能处理和输出部分的函数调用,其中各功能模块用菜单方式选择。 [程序] #define N 30 /*等待车辆*/ #define M 20 /*车位*/ #define P 2 /*单位时间所收费用*/ #include #include #include struct cars /*定义车辆信息*/ { char state; int num; int in_time; 停车场 管理系统 车辆进入 车辆退出 车辆等待 车辆信息 显示 车辆查询 退出系统

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

设停车场内只有一个可停放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;

停车场管理系统代码

// 1、停车场管理.cpp : Defines the entry point for the console application. // ^include stdafx.h*' ^include vcon 1o.h> ^include ^include ^include ^include //清空当前屏幕 #define ClearScreen() system( 'cls M ) 〃设置背景前景颜色 //#define setcolor() system(u color 2f ) //显不字符串szPrompt并等待用户按下任意键 #define Pause( szPrompt) printf( %s: szPrompt ),getch() typedef struct carinformation // 车辆信息 { char szRegistrationMark[64]; // 车牌号 char szArrivalTime[16]; // 到达时间 char szEntranceT1me[16]; //进入停车场(开始计费)时间 char szDepartureTime[16]; // 离开时间 } TCARINFORMATION, *LPTCARINFORAAATION; typedef struct carstack { LPTCARINFORMATION IpCarlnformation; // 车辆信息 int nTop; //栈顶元素下标 int nStackSize; // 栈容量

经典C源码 之 停车场管理系统

停车场管理系统 #include "stdio.h" #define STACKSIZE 2 struct Car { char Label; float InTime; }; struct StackCar { struct Car *Top; struct Car *BottomStack; int Size; }; int StackInitial(struct StackCar *stackcar) { stackcar->BottomStack=(struct Car *)malloc(STACKSIZE*sizeof(struct Car)); if(!(stackcar->BottomStack)) return 0; stackcar->Top=stackcar->BottomStack; stackcar->Size=STACKSIZE; return 1; } int StackEmpty(struct StackCar stackcar) { if(stackcar.Top==stackcar.BottomStack) return 1; return 0; } int StackFull(struct StackCar stackcar) { if(stackcar.Top-stackcar.BottomStack>=STACKSIZE) return 1; return 0; } int Push(struct StackCar *stackcar,struct Car car) { if(stackcar->Top-stackcar->BottomStack>=STACKSIZE) return 0; *(stackcar->Top++)=car; return 1; } int Pop(struct StackCar *stackcar,struct Car *car)

相关主题
文本预览
相关文档 最新文档