起因
去年,在学习C语言不多久,学校下发了学期大作业,要求使用简单的C语言实现一个小功能。经过与小组同学的讨论,我们完成了一个停车场管理程序。虽然代码写的很乱,功能也不完备,但雀雀食食可以运行起来。与其把代码留在仓库里,不如记下来当作纪念。所以就放在这里吧。
代码
下面是全部代码,可能有点长:
(不会有人没发现代码框可以全屏吧)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int total=100,price=1,c; //定义全局变量,total是车位总数,默认100;price是收费单价,默认为1;c用于结构体数组调用,是车辆索引号
char selfcar [9999999][5];
struct car //定义结构体数组,储存车辆信息
{
char license[5]; //车牌号,5位
int hourin; //入场时间:时
int minin; //入场时间:分
int secondin; //入场时间:秒
int hourout; //出场时间:时
int minout; //出场时间:分
int secondout; //出场时间:秒
int status; //车辆状态,0为在场外,1为在场内
}pcar[9999999];
void meum (void);
void self (void)
{
int s,j;
while (1)
{
printf ("请输入索引号:");
scanf ("%d",&s);
printf ("\n");
printf ("请输入内部车辆牌号:");
scanf ("%s",selfcar[s]);
if(strlen(selfcar[s])>5)
{printf("车牌输入错误");
printf("请重新输入内部车辆牌号:");
scanf("%s",selfcar[s]);}
printf ("\n");
printf ("是否要继续录入(y=1,n=0)\n");
scanf ("%d",&j);
if (j==0)
{
break;
}
}
}
void setting (void) //停车场设置函数
{
int s;
printf ("设置\n");
printf ("---------------------\n");
printf ("1.设置停车场总车位数量\n");
printf ("2.设置停车场计费单价(元/小时)\n");
printf ("---------------------\n");
scanf ("%d",&s);
if (s==1)
{
printf ("请输入停车场车位总数(默认100个)\n");
scanf ("%d",&total);
}
if (s==2)
{
printf ("请输入停车场计费单价(元/小时)(默认1元/小时)\n");
scanf ("%d",&price);
}
}
void left (void) //剩余车位数函数
{
printf("剩余车位数:%d\n",total);
}
void cin (void) //车辆入场函数
{
if (total==0)
{
printf ("车位已满,暂停入场\n");
meum ();
}
printf ("\n");
printf ("您已进入车辆驶入管理系统\n");
printf ("---------------------\n");
printf ("请输入车辆索引号:");
scanf ("%d",&c);
printf ("\n");
printf ("请输入车牌号:");
scanf ("%s",pcar[c].license);
if(strlen(pcar[c].license)>5)
{printf("车牌输入错误");
printf("请重新输入车牌号:");
scanf("%s",pcar[c].license);}
printf ("\n");
printf ("请输入入场时间\n");
printf ("时(24小时制):\n");
scanf ("%d",&pcar[c].hourin);
if(pcar[c].hourin>24||pcar[c].hourin<0)
{
printf("输入错误,请重新输入\n");
printf("时(24小时制):\n");
scanf("%d",&pcar[c].hourin);
}
printf ("分:\n");
scanf ("%d",&pcar[c].minin);
if(pcar[c].minin>60||pcar[c].minin<0)
{
printf("输入错误,请重新输入\n");
printf("分:\n");
scanf("%d",&pcar[c].minin);
}
printf ("秒:\n");
scanf ("%d",&pcar[c].secondin);
if(pcar[c].secondin>60||pcar[c].secondin<0)
{
printf("输入错误,请重新输入\n");
printf("秒:\n");
scanf("%d",&pcar[c].secondin);
}
total--;
pcar[c].status=1;
}
void cout(void)
{
char l[5];
int i,st,flag=0,j;
int z;
double d,money;
printf("\n");
printf ("您已进入车辆驶出管理系统\n");
printf ("---------------------\n");
printf("请输入车牌号:");
scanf ("%s",l);
if(strlen(l)>5)
{printf("车牌输入错误");
printf("请重新输入车牌号:");
scanf("%s",l);}
printf ("\n");
for (j=0;j<9999999;j++)
{
if (strcmp(l,selfcar[j])==0)
{
printf ("内部车辆,请直接离场\n");
total++;
pcar[j].status=0;
printf ("请输入0返回主菜单\n");
scanf ("%d",&st);
meum ();
}
}
for (i=0;i<9999999;i++)
{
if (strcmp (l,pcar[i].license)==0)
{
flag++;
break;
}
}
if (flag==0)
{
printf ("没有进场信息\n");
printf ("请输入0返回主菜单\n");
scanf ("%d",&st);
meum();
}
printf ("该车辆牌照为:");
fputs (pcar[i].license,stdout);
if(strlen(pcar[i].license)>5)
{printf("车牌输入错误");
printf("请重新输入车牌号:");
scanf("%s",pcar[i].license,stdout);}
printf ("\n");
printf("请输入离场时(24小时制):");
scanf ("%d",&pcar[i].hourout);
if(pcar[i].hourout>24||pcar[i].hourout<0)
{
printf("输入错误,请重新输入\n");
printf("请输入离场时(24小时制):\n");
scanf("%d",&pcar[i].hourout);
}
printf ("\n");
printf("请输入离场分:");
scanf ("%d",&pcar[i].minout);
if(pcar[i].minout>60||pcar[i].minout<0)
{
printf("输入错误,请重新输入\n");
printf("请输入离场分:\n");
scanf("%d",&pcar[i].minout);
}
printf ("\n");
printf("请输入离场秒:");
scanf ("%d",&pcar[i].secondout);
if(pcar[i].secondout>60||pcar[i].secondout<0)
{
printf("输入错误,请重新输入\n");
printf("请输入离场秒:\n");
scanf("%d",&pcar[i].secondout);
}
printf ("\n");
z=(pcar[i].hourout-pcar[i].hourin)*3600+(pcar[i].minout-pcar[i].minin)*60+(pcar[i].secondout-pcar[i].secondin);
d=(double)z/3600;
printf ("该车辆停放时间为%.2f小时\n",d);
money=(double)price*d;
printf ("收费:%.2f元\n",money);
total++;
pcar[i].status=0;
printf ("请输入0返回主菜单\n");
scanf ("%d",&st);
}
void check (void) //查询系统函数
{
int a,b,i,st;
printf ("欢迎使用查询系统\n");
flag1:
printf ("---------------------\n");
printf ("1.按照索引号查询车辆\n");
printf ("2.显示场内全部车辆\n");
printf ("0.退出并返回主菜单\n");
printf ("---------------------\n");
scanf ("%d",&a);
if (a==1)
{
printf ("请输入索引号:");
scanf ("%d",&b);
printf ("\n");
printf ("您查找的车辆牌号为:");
fputs (pcar[b].license,stdout );
if(strlen(pcar[b].license)>5)
{printf("车牌输入错误");
printf("请重新输入车牌号:");
scanf("%s",pcar[b].license,stdout);}
printf ("\n");
printf("该车辆在场状态:");
if(pcar[b].status==1)
printf("在场\n");
else
printf("离场\n");
printf ("---------------------\n");
goto flag1;
}
if (a==2)
{
printf ("目前仍然在场的车辆牌号为:\n");
for (i=0;i<9999999;i++)
{
if (pcar[i].status==1)
{
fputs (pcar[i].license,stdout);
printf ("\n");
}
}
printf ("返回请输入0\n");
scanf ("%d",&st);
}
if (a==0)
{
}
}
void about (void) //关于函数
{
int a;
printf ("---------------------\n关于\n");
printf ("这是一个用C语言编写的停车场自助管理系统。主要功能有录入和查询车辆信息,自动计费,剩余车位计算等\n");
printf ("您可以根据提示输入相应序号使用本程序功能\n");
printf ("开源项目地址:https://gitee.com/astrophel02/parking\n");
printf ("使用MulanPSL-2.0协议共享\n首先用于中国石油大学(华东)C语言大作业\n输入0返回主菜单\n");
scanf ("%d",&a);
}
void welcome (void) //欢迎函数
{
printf ("---------------------\n");
printf ("欢迎使用停车场自助管理系统\n");
printf ("---------------------\n");
}
void meum (void) //主菜单函数
{
int a; //定义a,用于判断使用哪个功能
flag:
printf ("---------------------\n");
printf ("1.内部车辆信息录入\n");
printf ("2.车辆入场\n");
printf ("3.车辆离场\n");
printf ("4.停车场设置\n");
printf ("5.剩余车位数量查询\n");
printf ("6.查询系统\n");
printf ("7.关于\n");
printf ("请键入序号进入功能菜单\n");
printf ("---------------------\n");
scanf ("%d",&a); //给a赋值,通过下面的if语句决定进入哪个功能函数
if (a==1)
{
self ();
}
if (a==2)
{
cin ();
}
if (a==3)
{
cout ();
}
if (a==4)
{
setting ();
}
if (a==5)
{
left();
}
if (a==6)
{
check ();
}
if (a==7)
{
about ();
}
goto flag;
}
int main() //主函数
{
welcome ();
meum ();
return 0;
}
项目地址
整个项目都是跟同学一起完成的,所以在结尾把公共仓库的地址放一下:Gitee,欢迎给我们加个小星星。
Comments | NOTHING