泊车管理系统(c语言大作业)

目录

main                        ​​​​​​​        ​​​​​​​          主函数

Start                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​  开始函数(登陆/注册函数)

Query                                ​​​​​​​        查询车位(包含更改颜色函数)

Stop                                ​​​​​​​        ​​​​​​​  停车(选车位停车)

Come                ​​​​​​​                ​​​​​​​        取车(闰年判断,求天数,判断停车费)

Order                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​ 预约(用户预约停车)

UserInformation                ​​​​​​​        ​​​​​​​ 用户信息(管理员查询/修改)

Account                ​​​​​​​        ​​​​​​​        ​​​​​​​     管理员查看交易记录

History                                      用户查询自己的车

其他所需文件

               —— ​​​​​​​  name.txt

               ——   p.txt

               ——   time.txt



源码下载


图例:

泊车管理系统(c语言大作业)泊车管理系统(c语言大作业)


main

主函数

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Windows.h>
#include <time.h>
#include "Start.c"
#include "Menu.c"
#include "Query.c"
#include "Stop.c"
#include "Come.c"
#include "History.c"
#include "Order.c"
#include "UserInformation.c"
#include "Account.c"
int main()
{
    char name[12];
    int id,n=1;
    id=Start(name);//开始,登录+注册,返回id,修改name。原型 int Start(char name[12]);
    while(n)
    {
        n=Menu(id);//菜单,根据id不同输出功能,返回用户选择。原型 int Menu(int id);
    if(n==1)
        Query(id);//查询车位,id只区分(1,2)和3(更详细)原型void Query(int id);
    if(n==2)
        Stop(name,id);//用户选车位停车,记录当前时间,改p.txt。原型 void Stop(char name[12],int id);
    if(n==3)
        Come(name,id);//遍历车位找到用户停的所有车,用户选择一个车位号取车,并计费(1,2,3价格不一样)原型 void Come(char name[12],int id);
    if(n==4)
        History(name,id);//用户查time。txt中所有名称是自己的信息原型 void History(char name[12],int id);
    if(n==5)
        Order(name,id);//预定车位原型 void Order(char name[12],int id);
    if(n==6)
        UserInformation();//管理员查所有用户信息 void UserInformation();
    if(n==7)
        Account();//管理员查所有交易记录,并显示总额原型 void Account();
    }
    return 0;
}


Start

开始函数(登陆/注册函数)

#include <stdio.h>
#include <string.h>

int Start(char name[12])//开始函数,包含登录,注册,返回用户ID(1、2、3、)。
{
    int i,j,c,t=0;
    char n[20],s[10];
    struct account
    {
        char name[12];
        char secret[10];
        int id;
    };
    struct account x[100]={"","",0};
    FILE *p=fopen("name.txt","r+");
    if(p==NULL)
    {
    printf("缺少文件“name.txt”");
    exit(0);
    }

    //正片开始
    //将所有用户信息录入数组 x
    for(i=0,c=0;fscanf(p,"%s %s %d",&x[i].name,&x[i].secret,&x[i].id)!=-1;c++,i++);
    do
    {
        t=3;
        printf("------------------------------------\n1.登录    2.注册\n\n选择 1 或 2 :");
        scanf("%d",&i);
        //1.登录
        if(i==1)
        {
            t=0;
            printf("请输入手机号:");
            while(t==0)
            {
                scanf("%s",n);
                for(i=0;i<c;i++)
                {
                    if(strcmp(x[i].name,n)==0)//遍历手机号查找用户,找到输密码
                    {
                        t=1;
                        printf("请输入6位密码:");
                        scanf("%s",s);
                        if(strcmp(x[i].secret,s)==0)//密码对
                        {
                            printf("登陆成功");
                            fclose(p);
                            strcpy(name,n);
                            return x[i].id;
                        }
                        else
                        {
                            printf("输入错误,您还有一次机会。\n请输入密码:");
                            scanf("%s",s);
                            if(strcmp(x[i].secret,s)==0)//密码对
                            {
                                printf("登陆成功");
                                fclose(p);
                                strcpy(name,n);
                                return x[i].id;
                            }
                            else
                                t=0;
                            break;
                        }
                    }
                }
                if(strcmp("off",n)==0)//off返回
                        t=3;
                if(t==0)
                    printf("错误输入\n请重新输入手机号,或输入off重新选择登录、注册:\n");
            }
        }

        else
        //注册
        if(i==2)
        {
            t=0;
            printf("请输入11位手机号:");
            while(t==0)
            {
                scanf("%s",n);
                if(strlen(n)==11)
                {
                    for(i=0;i<c;i++)
                    {
                        if(strcmp(x[i].name,n)==0)
                        {
                            t=1;
                            printf("已注册账户,改密请联系工作人员\n请重新输入手机号,或输入off重新选择登录、注册:\n");
                            break;
                        }
                    }
                    if(t==0)
                    {
                        printf("请输入密码:");
                        scanf("%s",s);
                        fprintf(p,"%s",n);
                        fprintf(p," %s",s);
                        fprintf(p," 1\n");
                        fclose(p);
                        printf("注册成功");
                        strcpy(name,n);
                        return 1;
                    }
                    t=0;
                }
                else
                    if(strcmp("off",n)==0)//off返回
                        t=3;
                else
                    printf("错误输入,改密请联系工作人员\n请重新输入手机号,或输入off重新选择登录、注册:\n");
            }
        }

        else
        //错误序号重新开始
        printf("请输入正确序号\n");
    }while(t==3);
}


Query

查询车位(包含更改颜色函数)

#include <stdio.h>
#include <string.h>
#include <Windows.h>

#define ParkingPlace 100//车位数目
//根据参数改变后面所有输出的颜色。
//输入0绿色,1红色,其他数字白色。
void color(int x)
{
    if(x==0)
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 2);
    else
    if(x==1)
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 4);
    else
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}

void Query(int id)//查询车位函数,需要颜色函数void color(int x),
//id只区分(1,2)和3(更详细)
{
    int i,c;
    struct parking
    {
        int be;
        int t1[5];
        int t2[5];
        char name[12];
    };
    struct parking x[ParkingPlace];
    FILE *fp=fopen("p.txt","r+");
    if(fp==NULL)
    {
        printf("缺少文件“p.txt”");
        exit(0);
    }
    //正片开始
    for(i=0;fscanf(fp,"%d %d/%d/%d/%d:%d %d/%d/%d/%d:%d %s"
        ,&x[i].be,&x[i].t1[0],&x[i].t1[1],&x[i].t1[2],&x[i].t1[3],&x[i].t1[4]
        ,&x[i].t2[0],&x[i].t2[1],&x[i].t2[2],&x[i].t2[3],&x[i].t2[4]
        ,&x[i].name)!=-1;i++);//所有车位信息录入x
        if(id!=3)
        {
            for(i=0,c=0;i<ParkingPlace;i++,c++)
            {
                color(x[i].be);//无车绿字,有车红字
                if(x[i].be==0)
                    printf("  %03d.无车  ",i+1);
                else
                    printf("  %03d.有车  ",i+1);
                if(c==4)
                {
                   printf("\n");
                   c=-1;
                }
            }
            color(7);//回归白色
            fclose(fp);
        }
        else
        {
            printf("车位号.\t状况\t存  车  时  间\t\t用户\n");
            for(i=0;i<ParkingPlace;i++)
            {

                color(x[i].be);//无车绿字,有车红字
                if(x[i].be==0)
                    printf("   %03d.\t无车\t----/--/--/--:--\t-----------\n",i+1);
                else
                    printf("   %03d.\t有车\t%04d/%02d/%02d/%02d:%02d\t%s\n"
                    ,i+1,x[i].t1[0],x[i].t1[1],x[i].t1[2],x[i].t1[3],x[i].t1[4],x[i].name);
            }
            color(7);//回归白色
            fclose(fp);
        }
}

Stop

停车(选车位停车)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define ParkingPlace 100//车位数目
void Stop(char name[12],int id)//用户选车位停车,记录当前时间,改p.txt。
{
    int i,n,c=0;
    struct parking
    {
        int be;
        int t1[5];
        int t2[5];
        char name[12];
    };
    struct parking x[ParkingPlace];
    FILE *fp=fopen("p.txt","r+");
    if(fp==NULL)
    {
        printf("缺少文件“p.txt”");
        exit(0);
    }
    time_t t;
    struct tm *lt;
    //正片开始
    for(i=0;fscanf(fp,"%d %d/%d/%d/%d:%d %d/%d/%d/%d:%d %s"
        ,&x[i].be,&x[i].t1[0],&x[i].t1[1],&x[i].t1[2],&x[i].t1[3],&x[i].t1[4]
        ,&x[i].t2[0],&x[i].t2[1],&x[i].t2[2],&x[i].t2[3],&x[i].t2[4]
        ,&x[i].name)!=-1;i++);//所有车位信息录入x
    fclose(fp);//关闭文件
    while(c==0)//循环停车
    {
        printf("请选择停车位置(1~%d)或输入0退出:",ParkingPlace);
        scanf("%d",&n);
        n--;
        if(n==-1)
        {
            c=1;
        }
        else
        if((n>ParkingPlace)||(n<0))
        {
            printf("不存在的车位。\n");
        }
        else
        if(x[n].be==1)
        {
                printf("该车位已有车。\n");
        }
        else
        {
            c=1;
            x[n].be=1;//改为有车。
            time(&t);//获取Unix时间戳。
            lt=localtime(&t);//转为时间结构。
            x[n].t1[0]=(lt->tm_year+1900);
            x[n].t1[1]=lt->tm_mon+1;
            x[n].t1[2]=lt->tm_mday;
            x[n].t1[3]=lt->tm_hour;
            x[n].t1[4]=lt->tm_min;
            x[n].t2[0]=0000;
            x[n].t2[1]=00;
            x[n].t2[2]=00;
            x[n].t2[3]=00;
            x[n].t2[4]=00;
            strcpy(x[n].name,name);
            fp=fopen("p.txt","w");//重建文件
            for(i=0;i<ParkingPlace;i++)//信息录入
                fprintf(fp,"%d %04d/%02d/%02d/%02d:%02d %04d/%02d/%02d/%02d:%02d %s\n"
                ,x[i].be,x[i].t1[0],x[i].t1[1],x[i].t1[2],x[i].t1[3],x[i].t1[4]
                ,x[i].t2[0],x[i].t2[1],x[i].t2[2],x[i].t2[3],x[i].t2[4]
                ,x[i].name);
            fclose(fp);//关闭文件
            printf(" %s 的存车时间为:%04d/%02d/%02d/%02d:%02d\n"
            ,x[n].name,x[n].t1[0],x[n].t1[1],x[n].t1[2],x[n].t1[3],x[n].t1[4]);//输出结果
        }
    }

}

Come

取车(闰年判断,求天数,判断停车费)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define ParkingPlace 100//车位数目
int leapyear(int year)//闰年判断
{
	if((year%4==0 && year%100!=0) || year%400==0)
		return 1;
	else
		return 0;
}

int days(int *day1, int *day2)//求天数
{
	int i=0;
	int *tmp;
	int diff = 0;
	const int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	if(day1[0] == day2[0])
	{
		if(day1[1] == day2[1])
		{
			diff = day1[2] - day2[2];
			diff = (diff < 0)?(-diff):diff;
		}
		else
		{
			if(day1[1] < day2[1])
			{
				tmp = day1;
				day1 = day2;
				day2 = tmp;
			}
			for(i=day2[1]+1; i<day1[1]; i++)
			{
				diff +=  month[i];
			}
			diff += month[day2[1]] - day2[2] + day1[2];
			if(day2[1] <= 2 && day1[1] >2)
				if(leapyear(day2[0]))
					diff++;
		}
	}
	else
	{
		if(day1[0] < day2[0])
		{
			tmp = day1;
			day1 = day2;
			day2 = tmp;
		}
		for(i=day2[0]+1; i<day1[0]; i++)
		{
			if(leapyear(i))
				diff += 366;
			else
				diff += 365;
		}
		for(i=day2[1]+1; i<=12; i++)
		{
			diff += month[i];
		}
		diff += (month[day2[1]] - day2[2]);
		if(day2[1] <= 2)
			if(leapyear(day2[0]))
				diff++;
		for(i=1; i<day1[1]; i++)
		{
			diff += month[i];
		}
		diff += day1[2];
		if(day1[1] > 2)
			if(leapyear(day1[0]))
				diff++;
	}

	return diff;
}
void Come(char name[12],int id)//遍历车位找到用户停的所有车,用户选择一个车位号取车,并计费(1,2,3价格不一样)
{
    int i,j=0,a[ParkingPlace],c=0,b;
    float money=0;
    struct parking
    {
        int be;
        int t1[5];
        int t2[5];
        char name[12];
    };
    struct parking x[ParkingPlace];
    FILE *fp=fopen("p.txt","r+");
    if(fp==NULL)
    {
        printf("缺少文件“p.txt”");
        exit(0);
    }
    time_t t;
    struct tm *lt;
    //正片开始
    for(i=0;fscanf(fp,"%d %d/%d/%d/%d:%d %d/%d/%d/%d:%d %s"
        ,&x[i].be,&x[i].t1[0],&x[i].t1[1],&x[i].t1[2],&x[i].t1[3],&x[i].t1[4]
        ,&x[i].t2[0],&x[i].t2[1],&x[i].t2[2],&x[i].t2[3],&x[i].t2[4]
        ,&x[i].name)!=-1;i++);//所有车位信息录入x
    fclose(fp);//关闭文件

        printf("车位号\t 停  车  时  间\n");
        for(i=0;i<ParkingPlace;i++)
        {
            if((x[i].be==1)&&(x[i].t1[0]!=0)&&(strcmp(x[i].name,name)==0))//输出所有该用户停的车
            {
                printf(" %03d.\t%04d/%02d/%02d/%02d:%02d\n"
                    ,i+1,x[i].t1[0],x[i].t1[1],x[i].t1[2],x[i].t1[3],x[i].t1[4]);

                a[j]=i;
                j++;
            }
        }
        while(c==0)//循环取车
        {
            printf("请选择要取的车位号,或输入0退出:");
            scanf("%d",&b);//选车位
            b--;
            if(b==-1)//退出
                break;
            for(i=0;i<=j;i++)
            {
                if(a[i]==b)
                {
                    c=1;
                    break;
                }
            }
            if(c==0)
                printf("这不是你的车位,");
        }
        if(c==1)//取车计费
        {
            c=0;
            time(&t);//获取Unix时间戳。
            lt=localtime(&t);//转为时间结构。
            x[a[i]].be=0;//腾出车位,记录取车时间。
            x[a[i]].t2[0]=(lt->tm_year+1900);
            x[a[i]].t2[1]=lt->tm_mon+1;
            x[a[i]].t2[2]=lt->tm_mday;
            x[a[i]].t2[3]=lt->tm_hour;
            x[a[i]].t2[4]=lt->tm_min;

            c+=x[a[i]].t2[4]-x[a[i]].t1[4];//分钟
            c+=(x[a[i]].t2[3]-x[a[i]].t1[3])*60;//小时
            c/=60;//转小时
            c+=24*days(x[a[i]].t1,x[a[i]].t2);//天数
            if(c<=3)
                money=5;
            else
                money=c+2;
		if(id!=1)
                money=money*8/10;
            printf("———————————————————————————\n");
            printf(" 停  车  时  间\t\t取  车  时  间\t\t费用\n");
            printf("%04d/%02d/%02d/%02d:%02d\t%04d/%02d/%02d/%02d:%02d\t%.2f\n"
               ,x[a[i]].t1[0],x[a[i]].t1[1],x[a[i]].t1[2],x[a[i]].t1[3],x[a[i]].t1[4]
               ,x[a[i]].t2[0],x[a[i]].t2[1],x[a[i]].t2[2],x[a[i]].t2[3],x[a[i]].t2[4]
               ,money);

            fp=fopen("time.txt","a");//记账
            fprintf(fp,"%03d\t%04d/%02d/%02d/%02d:%02d\t%04d/%02d/%02d/%02d:%02d\t%s\t%.2f\n"
                ,a[i]+1
                ,x[a[i]].t1[0],x[a[i]].t1[1],x[a[i]].t1[2],x[a[i]].t1[3],x[a[i]].t1[4]
                ,x[a[i]].t2[0],x[a[i]].t2[1],x[a[i]].t2[2],x[a[i]].t2[3],x[a[i]].t2[4]
                ,x[a[i]].name,money);
            fclose(fp);//关闭文件

            fp=fopen("p.txt","w");//重建文件
            for(i=0;i<ParkingPlace;i++)//信息录入
                fprintf(fp,"%d %04d/%02d/%02d/%02d:%02d %04d/%02d/%02d/%02d:%02d %s\n"
                ,x[i].be,x[i].t1[0],x[i].t1[1],x[i].t1[2],x[i].t1[3],x[i].t1[4]
                ,x[i].t2[0],x[i].t2[1],x[i].t2[2],x[i].t2[3],x[i].t2[4]
                ,x[i].name);
            fclose(fp);//关闭文件


        }
}

Order

预约(用户预约停车)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define ParkingPlace 100//车位数目
void Order(char name[12],int id)
{
    int i,n,c=0;
    struct parking
    {
        int be;
        int t1[5];
        int t2[5];
        char name[12];
    };
    struct parking x[ParkingPlace];
    FILE *fp=fopen("p.txt","r+");
    if(fp==NULL)
    {
        printf("缺少文件“p.txt”");
        exit(0);
    }
    time_t t;
    struct tm *lt;
    //正片开始
    for(i=0;fscanf(fp,"%d %d/%d/%d/%d:%d %d/%d/%d/%d:%d %s"
        ,&x[i].be,&x[i].t1[0],&x[i].t1[1],&x[i].t1[2],&x[i].t1[3],&x[i].t1[4]
        ,&x[i].t2[0],&x[i].t2[1],&x[i].t2[2],&x[i].t2[3],&x[i].t2[4]
        ,&x[i].name)!=-1;i++);//所有车位信息录入x
        fclose(fp);//关闭文件
    for(i=0;i<ParkingPlace;i++)
    {
        if(x[i].be==1&&x[i].t1[0]==0&&strcmp(x[i].name,name)==0)
        {
            printf("您已预约,存车请选择1,退出请选择0:");
            scanf("%d",&n);
            c=1;
            if(n==1)
            {
                x[n].be=1;//改为有车。
                time(&t);//获取Unix时间戳。
                lt=localtime(&t);//转为时间结构。
                x[i].t1[0]=(lt->tm_year+1900);
                x[i].t1[1]=lt->tm_mon+1;
                x[i].t1[2]=lt->tm_mday;
                x[i].t1[3]=lt->tm_hour;
                x[i].t1[4]=lt->tm_min;
                x[i].t2[0]=0000;
                x[i].t2[1]=00;
                x[i].t2[2]=00;
                x[i].t2[3]=00;
                x[i].t2[4]=00;
                strcpy(x[n].name,name);
                fp=fopen("p.txt","w");//重建文件
                for(i=0;i<ParkingPlace;i++)//信息录入
                    fprintf(fp,"%d %04d/%02d/%02d/%02d:%02d %04d/%02d/%02d/%02d:%02d %s\n"
                    ,x[i].be,x[i].t1[0],x[i].t1[1],x[i].t1[2],x[i].t1[3],x[i].t1[4]
                    ,x[i].t2[0],x[i].t2[1],x[i].t2[2],x[i].t2[3],x[i].t2[4]
                    ,x[i].name);
                fclose(fp);//关闭文件
                printf(" %s 的存车时间为:%04d/%02d/%02d/%02d:%02d\n"
                ,x[n].name,x[n].t1[0],x[n].t1[1],x[n].t1[2],x[n].t1[3],x[n].t1[4]);//输出结果
            }
            break;
        }
    }
    while(c==0)//循环停车
    {
        printf("请选择预约停车位置(1~%d)或输入0退出:",ParkingPlace);
        scanf("%d",&n);
        n--;
        if(n==-1)
        {
            c=1;
        }
        else
        if((n>ParkingPlace)||(n<0))
        {
            printf("不存在的车位。\n");
        }
        else
        if(x[n].be==1)
        {
            printf("该车位已有车。\n");
        }
        else
        {
            c=1;
            printf("预约成功\n");
            x[n].be=1;//改为有车。
            x[n].t1[0]=x[n].t1[1]=x[n].t1[2]=x[n].t1[3]=x[n].t1[4]=
            x[n].t2[0]=x[n].t2[1]=x[n].t2[2]=x[n].t2[3]=x[n].t2[4]=0;

            strcpy(x[n].name,name);
            fp=fopen("p.txt","w");//重建文件
            for(i=0;i<ParkingPlace;i++)//信息录入
                fprintf(fp,"%d %04d/%02d/%02d/%02d:%02d %04d/%02d/%02d/%02d:%02d %s\n"
                ,x[i].be,x[i].t1[0],x[i].t1[1],x[i].t1[2],x[i].t1[3],x[i].t1[4]
                ,x[i].t2[0],x[i].t2[1],x[i].t2[2],x[i].t2[3],x[i].t2[4]
                ,x[i].name);
            fclose(fp);//关闭文件
        }
    }
}

UserInformation

用户信息(管理员查询/修改)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void UserInformation()//管理员查所有用户信息
{
    int i,j,c,a,t=0;
    char name[12],secret1[10],secret2[10];
    struct History
    {
        char name[12];
        char secret[10];
        int id;
    };
    struct History x[100];
    FILE *fp=fopen("name.txt","r");
    if(fp==NULL)
    {
        printf("缺少文件“name.txt”");
        exit(0);
    }
    //正片开始
    //将所有用户信息录入数组 x
    for(i=0,c=0;fscanf(fp,"%s %s %d",&x[i].name,&x[i].secret,&x[i].id)!=-1;c++,i++);
    fclose(fp);
    while(t==0)
    {
        printf("-------------------------------------\n");
        printf("1.用户查询\t|\t2.用户改密\n");
        printf("3.用户删除\t|\t4.会员管理\n");
        printf("5.退出\t\t|\n");
        printf("-------------------------------------\n");
        printf("选择功能:");
        scanf("%d",&t);
        if(t<1||t>5)
        {
            printf("无效选择,重新输入:\n");
            t=0;
        }
        if(t==1)
        {
            t=0;
            printf("用  户  名\t密  码\t\t身份\n");
            for(i=0;i<c;i++)
            printf("%s\t%s\t\t%d\n",x[i].name,x[i].secret,x[i].id);
        }
        if(t==2)
        {
            printf("请输入改密账号:");
            scanf("%s",name);
            for(i=0;i<c;i++)
            {
                if(strcmp(x[i].name,name)==0)
                {
                    t=0;
                    printf("请输入新密码:");
                    scanf("%s",&secret1);
                    printf("请再次输入新密码:");
                    scanf("%s",&secret2);
                    if(strcmp(secret1,secret2)==0)
                    {
                        strcpy(x[i].secret,secret2);
                        fp=fopen("name.txt","w");
                        for(i=0;i<c;i++)
                        {
                            fprintf(fp,"%s %s %d\n",x[i].name,x[i].secret,x[i].id);
                        }
                        fclose(fp);
                        printf("改密成功\n");
                    }
                    else
                        printf("密码错误\n");
                    break;
                }
            }
            if(t==2)
            {
                printf("不存在的账号,请先注册。\n");
                t=0;
            }

        }
        if(t==3)
        {
            printf("选择删除用户:");
            scanf("%s",name);
            for(i=0;i<c;i++)
            {
                if(strcmp(x[i].name,name)==0)
                {
                    t=0;
                    for(;i<c;i++)
                    {
                        strcpy(x[i].name,x[i+1].name);
                        strcpy(x[i].secret,x[i+1].secret);
                        x[i].id=x[i+1].id;
                    }
                    c--;
                    fp=fopen("name.txt","w");
                        for(i=0;i<c;i++)
                        {
                            fprintf(fp,"%s %s %d\n",x[i].name,x[i].secret,x[i].id);
                        }
                        fclose(fp);
                        printf("已删除\n");
                    break;
                }
            }
            if(t==3)
            {
                printf("不存在的账号,请先注册。\n");
                t=0;
            }
        }
        if(t==4)
        {
            printf("选择用户:");
            scanf("%s",name);
            for(i=0;i<c;i++)
            {
                if(strcmp(x[i].name,name)==0)
                {
                    printf("选择更改的身份(1-用户\t2-会员\t3-管理员):");
                    scanf("%d",&t);
                    if(t==1||t==2||t==3)
                    {
                        x[i].id=t;
                    fp=fopen("name.txt","w");
                    for(i=0;i<c;i++)
                    {
                        fprintf(fp,"%s %s %d\n",x[i].name,x[i].secret,x[i].id);
                    }
                    fclose(fp);
                    printf("身份已更改\n");
                    t=0;
                    }
                    else
                        printf("不存在的身份\n");
                }
            }
            if(t==4)
            {
                printf("不存在的账号,请先注册。\n");
                t=0;
            }
        }
    }
}


Account

管理员查看交易记录

#include <stdio.h>
#include <stdlib.h>

void Account()//管理员查所有交易记录,
{
    int i;
    struct History
    {
        int a;
        int t1[5];
        int t2[5];
        char name[12];
        float money;
    };
    struct History x;
    FILE *fp=fopen("time.txt","r");
    if(fp==NULL)
    {
        printf("缺少文件“time.txt”");
        exit(0);
    }
    //正片开始
    printf("车位========停车时间================取车时间================用户========费用\n");
    for(i=0;fscanf(fp,"%d	%d/%d/%d/%d:%d	%d/%d/%d/%d:%d	%s	%f"//看所有数据
        ,&x.a,&x.t1[0],&x.t1[1],&x.t1[2],&x.t1[3],&x.t1[4]
        ,&x.t2[0],&x.t2[1],&x.t2[2],&x.t2[3],&x.t2[4]
        ,&x.name,&x.money)!=-1;i++)
        {
            printf("%03d	%04d/%02d/%02d/%02d:%02d	%04d/%02d/%02d/%02d:%02d	%s	%.2f\n"
            ,x.a,x.t1[0],x.t1[1],x.t1[2],x.t1[3],x.t1[4]
            ,x.t2[0],x.t2[1],x.t2[2],x.t2[3],x.t2[4]
            ,x.name,x.money);
        }
    fclose(fp);
}


Menu

菜单

#include <stdio.h>
#include <string.h>

int Menu(int id)//菜单,根据id不同输出功能,返回用户选择。原型 int Menu(int id);
{
    int n=-1;
    printf("\n————————————————————————————————————\n");
    printf("请选择需要的服务:\n");
    printf("0.退出\t\t|   1.查询车位\n2.停车\t\t|   3.取车\n4.停车记录\t|   5.预定车位\n");
    if(id>=3)
        printf("6.所有用户信息\t|   7.所有交易记录\n");
    printf("————————————————————————————————————\n");//根据id输出菜单。
    while(n==-1)//直到做出正确选择
    {
        printf("\n您选择:");
        scanf("%d",&n);
        if(id==1&&n==5)
        {
            printf("会员专属,请找工作人员充值,充值会员更有停车8折优惠哦\n");
            n=-1;
        }
        else if(id<3&&(n>=6||n<=-1))
        {
            printf("没有这个选项,请重新选择");
            n=-1;
        }
        else if(n>=8||n<=-1)
        {
            printf("没有这个选项,请重新选择");
            n=-1;
        }
    }
    return n;
}

History

用户查询自己的车

#include <stdio.h>
#include <stdlib.h>

void History(char name[12],int id)//用户查time。txt中所有名称是自己的信息
{
    int i;
    struct History
    {
        int a;
        int t1[5];
        int t2[5];
        char name[12];
        float money;
    };
    struct History x;
    FILE *fp=fopen("time.txt","r");
    if(fp==NULL)
    {
        printf("缺少文件“time.txt”");
        exit(0);
    }
    //正片开始
    printf("车位========停车时间================取车时间================用户========费用\n");
    for(i=0;fscanf(fp,"%d	%d/%d/%d/%d:%d	%d/%d/%d/%d:%d	%s	%f"//看所有数据
        ,&x.a,&x.t1[0],&x.t1[1],&x.t1[2],&x.t1[3],&x.t1[4]
        ,&x.t2[0],&x.t2[1],&x.t2[2],&x.t2[3],&x.t2[4]
        ,&x.name,&x.money)!=-1;i++)
        {
            if(strcmp(x.name,name)==0)//发现该用户数据
            {
                printf("%03d	%04d/%02d/%02d/%02d:%02d	%04d/%02d/%02d/%02d:%02d	%s	%.2f\n"
                ,x.a,x.t1[0],x.t1[1],x.t1[2],x.t1[3],x.t1[4]
                ,x.t2[0],x.t2[1],x.t2[2],x.t2[3],x.t2[4]
                ,x.name,x.money);
            }
        }
    fclose(fp);
}

其他所需文件

name.txt

手机号 密码 权限(3管理,2vip ,1普通)

00000000000 123456 3
12345678900 123456 2
12345678901 123456 1
12345678910 123456 1

p.txt

是否有车(1有)停车时间 取车时间 停车人

0 2020/01/01/06:00 2020/12/26/23:05 12345678900
1 2020/12/26/22:18 0000/00/00/00:00 00000000000
1 2020/12/26/00:00 2020/12/26/18:31 00000000000
1 2020/12/26/13:19 2020/12/26/18:33 00000000000
1 2020/12/26/13:23 2020/12/26/18:33 00000000000
1 2020/12/26/22:19 0000/00/00/00:00 00000000000
1 2020/12/26/23:04 0000/00/00/00:00 12345678900
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
1 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
1 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 0000/00/00/00:00 0000/00/00/00:00 00000000000
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2020/01/01/06:00 2020/01/01/06:00 name
0 2021/01/07/20:45 2021/01/07/20:46 12345678910
1 2020/12/26/13:23 2020/12/26/17:13 00000000000

 time.txt

车位 停车时间 取车时间 用户 价格

002    2020/12/24/16:00    2020/12/26/17:14    12345678900    5.00
005    2020/12/24/18:00    2020/12/26/18:14    12345678900    5.00
008    2020/12/26/19:00    2020/12/26/19:14    00000000000    5.00
001    2020/12/26/20:00    2020/12/26/20:14    00000000000    5.00
008    2020/12/26/19:00    2020/12/26/19:14    00000000000    5.00
001    2020/12/26/20:00    2020/12/26/20:14    00000000000    5.00
003    2020/12/26/00:00    2020/12/26/18:31    00000000000    16.00
004    2020/12/26/13:19    2020/12/26/18:33    00000000000    5.60
005    2020/12/26/13:23    2020/12/26/18:33    00000000000    7.00
001    2020/01/01/06:00    2020/12/26/23:05    12345678900    6927.20
099    2021/01/07/20:45    2021/01/07/20:46    12345678910    5.00
 

上一篇:oracle的悲观锁与乐观锁


下一篇:深入了解Docker存储驱动