停车场管理系统一 c语言实习报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); }