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

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

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; 停车场

管理系统

车辆进入 车辆退出 车辆等待 车辆信息

显示

车辆查询 退出系统

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

car[i].state='E';

for(i=0;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);

}

相关文档
最新文档