停车场管理系统
开始Y 根据
开始
Y 根据n的值 调用各功能模块 函
1题目要求
设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进 出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到
达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆 只能在停车场大门外的便道上等待, 一旦停车场内有车开走,则排在便道上的第 一辆车就进入停车站。停车站内如有某辆车要开走,在它之后进入停车场的车都 必须先退出停车站为它让路,待其开出停车场后,这些车辆再依原来的次序进场。 每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。 如果停留 在便道上的车未进停车场就要离去, 允许其离去,不收停车费,并且仍然保持在 便道上等待的车辆的次序。编制一程序模拟该停车场的管理。
【基本要求】要求程序输出每辆车到达后的停车位置(停车场或便道上),以及
某辆车离开停车场是的停车时间及它应该交的费用。
2需求分析
根据题目要求,因为停车场是一个单条的序列,可以用结构体实现;在程序中, 需要知道每辆来车的具体停放位置,应提供提示、查找、标记工作。车辆离开要 计时计费。另外,每天开始时,停车场要初始化 。
3总体设计
这个系统可以分为:初始化、有车进入、有车离开、退出四个模块。
4详细设计
mai n()函数体内包含了界面选则部分 men u(),并单独 抽出来作为一个独立函数,目的在于系统执行每部分 模块后能够方便返回到系统界面。即ma in ()函数写为
如下:
void mai n()/* 主函数 */
{
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");
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);/* 退出*/
}
}
初始化模块设计:
【需求分析】
该模块是将每一天开始的停车场内和便道车位清零。 首先建立场内场外的结
构体,结构体内成员即车位的状态。用循环实现车位的致零即可。
struct changnei/*场内车道信息*/
{
int neikong;
}chn[N-1];
struct changwai/*场外车道信息*/
{
int waikong;
}chw[M-1];
N 和 M 分别是停车场和便道的车位预设值,用宏定义。用户可根据实际情况改 变。
#define N 100/*预设停车场有 100个车位*/
#define M 100/*预设便道有 100个出位*/
void chushi()/*初始化函数 */
{
int i,j;
for(i=0;i<=N-1;i++)
chn[i].neikong=0;/*将场内车道设置为空*/
for(j=0;j<=M-1;j++)
chw[i].waikong=0;/* 将便道车道设置为空 */
printf("\n\n\t\t 已初始化 \n\n");
menu();
} 函数出示化后将回到菜单界面。
车辆进入函数:
【需求分析】
车辆到达后,要指定车辆的停车位置。 用户根据菜单函数进入车辆进入模块 按照每辆车的到达次序给予车辆次序号,由 0 号开始。车辆信息也建立结构体
struct car/*车辆信息 */
{
int car_num;/*车辆次序号*/ int car_arr;/*车辆到达时间*/ int car_lef;/*车辆离开时间*/
int car_stay;/*车辆停放位置*/ }car[CIXUHAO];
其中,CIXUHAO是车辆次序号的宏定义:
#define CIX