目录
Start 开始函数(登陆/注册函数)
Query 查询车位(包含更改颜色函数)
Stop 停车(选车位停车)
Come 取车(闰年判断,求天数,判断停车费)
Order 预约(用户预约停车)
UserInformation 用户信息(管理员查询/修改)
Account 管理员查看交易记录
—— name.txt
—— p.txt
—— time.txt
图例:
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