停车场管理系统课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、课程设计内容
1.有一个两层的停车场, 每层有6个车位, 当第一层车停满后才允许使用第二层. ( 停车场可用一个二维数组实现, 每个数组元素存放一个车牌号 ) 每辆车的信息包括车牌号, 层号, 车位号, 停车时间共4项. 其中停车时间按分钟计
算
2. 假设停车场初始状态为第一层已经停有4辆车, 其车位号依次为1—4 , 停
车时间依次为20, 15, 10 , 5 . 即先将这四辆车的信息存入文件”car.txt”
中( 数组的对应元素也要进行赋值 )
3. 停车操作: 当一辆车进入停车场时, 先输入其车牌号, 再为它分配一个层号和一个车位号(分配前先查询车位的使用情况, 如果第一层有空则必须停在第一层), 停车时间设为5 , 最后将新停入的汽车的信息添加文件”car.txt”中, 并将在此之前的所有车的停车时间加5.
4. 收费管理(取车): 当有车离开时, 输入其车牌号, 先按其停车时间计算费用, 每5分钟0.2元. (停车费用可设置一个变量进行保存), 同时从文件”car.txt”中删除该车的信息, 并将该车对应的车位设置为可使用状态(即二维数组对应元素清零). 按用户的选择来判断是否要输出停车收费的总计.
5. 输出停车场中全部车辆的信息.
6. 退出系统.
实验程序流程图
停车
取车
实验源程序
#include
#include
#include
#include
#define N 12
void park();//停车
void getout();//取车并计算停车费用
int x=4;
int Time=0;
struct C
{
char car_number[8];//车牌号
int fooler;//层数
int carport;//车位号
int time;//停车时间
}Car[N]={{"031098X",1,1,20},{"223X334",1,2,15},{"47328J3",1,3,10},{"3232G34",1,4,5}};//初始化
void main()
{
char choose,ch='\0';
FILE*fp=NULL;
fp=fopen("car.txt","aw");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
fprintf(fp," 车牌号码层数车位号停车时间\n");
for(int i=0;i<=3;i++)
{
fprintf(fp,"%10s%5d%5d%10d\n",Car[i].car_number,Car[i].fooler,Car[i].carport,Car[i].time);
}
do{
printf("请输入选择的编号:(0--2)\n");
system("cls");
printf("*********************************\n");
printf("1--- 停车\n");
printf("2--- 取车,并计算停车费用\n");
printf("0--- 退出\n");
printf("********************************\n");
choose=getch();
switch(choose)
{
case '1':park();break;
case '2':getout();break;
case '0':exit(0);
default : printf("您输入的为非法选项!\n");
}
printf("要继续吗?(Y or N)");
scanf("%c",&ch);
}while (ch=='Y'||ch=='y') ;
}
void park()
{
FILE*fp=NULL;
fp=fopen("car.txt","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
printf("请输入车牌号码(以#开头):");
do{
//gets(Car[x].car_number);
getchar();
gets(Car[x].car_number);
// scanf("%s",&Car[x].car_number);
}while(strcmp(Car[x].car_number," ")==0);
for(int j=0;j<=11;j++)
{
if(Car[j].fooler==0)
{
if(j<6)
Car[x].fooler=1;
else if (j>=6)
Car[x].fooler=2;
Car[x].carport=++j;
break;
}
}
Car[x].time=Time;
for(int i=0;i<=x;i++)
{ Car[i].time+=5;
}
printf("登记成功!\n");
printf(" 车牌号码层数车位号停车时间\n");
printf(" %5s%5d%5d%10d\n",Car[x].car_number,Car[x].fooler,Car[x].carport,Car[x].time);
fprintf(fp," 车牌号码层数车位号停车时间\n");
for(i=0;i<=x;i++)
fprintf(fp,"%10s%5d%5d%10d\n",Car[i].car_number,Car[i].fooler,Car[i].carport,Car[i].time);
x++;
}
void getout()
{
struct C temp={0};
double M=0;
FILE*fp=NULL;
fp=fopen("car.txt","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
printf("请输入您停车的车位号:");//改成车位号比较方便计算(1234车位号已经初始化了)
// getchar();//吃掉一个字符
// gets(temp.car_number);
scanf("%d",&temp.carport);
// for(int i=0;i<=x;i++)