起因

去年,在学习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,欢迎给我们加个小星星。


他走了一圈又一圈,终于明白了无价真理:悲喜交替,无有终点