目录
main 主函数
Start 开始函数(登陆/注册函数)
Query 查询车位(包含更改颜色函数)
Stop 停车(选车位停车)
Come 取车(闰年判断,求天数,判断停车费)
Order 预约(用户预约停车)
UserInformation 用户信息(管理员查询/修改)
Account 管理员查看交易记录
Menu 菜单
History 用户查询自己的车
其他所需文件
—— name.txt
—— p.txt
—— time.txt
源码下载
图例:
main
主函数
#include
#include
#include
#include
#include
#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;
}
#include#include #include #include #include #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
#include
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.注册nn选择 1 或 2 :");
scanf("%d",&i);
//1.登录
if(i==1)
{
t=0;
printf("请输入手机号:");
while(t==0)
{
scanf("%s",n);
for(i=0;i
Query
查询车位(包含更改颜色函数)
#include
#include
#include
#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
Stop
停车(选车位停车)
#include
#include
#include
#include
#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
Come
取车(闰年判断,求天数,判断停车费)
#include
#include
#include
#include
#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; i2)
if(leapyear(day2[0]))
diff++;
}
}
else
{
if(day1[0] < day2[0])
{
tmp = day1;
day1 = day2;
day2 = tmp;
}
for(i=day2[0]+1; i 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;itm_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(" 停 车 时 间tt取 车 时 间tt费用n");
printf("%04d/%02d/%02d/%02d:%02dt%04d/%02d/%02d/%02d:%02dt%.2fn"
,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,"%03dt%04d/%02d/%02d/%02d:%02dt%04d/%02d/%02d/%02d:%02dt%st%.2fn"
,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
Order
预约(用户预约停车)
#include
#include
#include
#include
#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;itm_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;iParkingPlace)||(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
UserInformation
用户信息(管理员查询/修改)
#include
#include
#include
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.退出tt|n");
printf("-------------------------------------n");
printf("选择功能:");
scanf("%d",&t);
if(t<1||t>5)
{
printf("无效选择,重新输入:n");
t=0;
}
if(t==1)
{
t=0;
printf("用 户 名t密 码tt身份n");
for(i=0;i
Account
管理员查看交易记录
#include
#include
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 %.2fn"
,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
#include
int Menu(int id)//菜单,根据id不同输出功能,返回用户选择。原型 int Menu(int id);
{
int n=-1;
printf("n————————————————————————————————————n");
printf("请选择需要的服务:n");
printf("0.退出tt| 1.查询车位n2.停车tt| 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
#include
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 %.2fn"
,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
#include#include 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.注册nn选择 1 或 2 :"); scanf("%d",&i); //1.登录 if(i==1) { t=0; printf("请输入手机号:"); while(t==0) { scanf("%s",n); for(i=0;i
Query
查询车位(包含更改颜色函数)
#include#include #include #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
Stop
停车(选车位停车)
#include#include #include #include #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
Come
取车(闰年判断,求天数,判断停车费)
#include#include #include #include #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 2) if(leapyear(day2[0])) diff++; } } else { if(day1[0] < day2[0]) { tmp = day1; day1 = day2; day2 = tmp; } for(i=day2[0]+1; i 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 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(" 停 车 时 间tt取 车 时 间tt费用n"); printf("%04d/%02d/%02d/%02d:%02dt%04d/%02d/%02d/%02d:%02dt%.2fn" ,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,"%03dt%04d/%02d/%02d/%02d:%02dt%04d/%02d/%02d/%02d:%02dt%st%.2fn" ,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
Order
预约(用户预约停车)
#include#include #include #include #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 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)||(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
UserInformation
用户信息(管理员查询/修改)
#include#include #include 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.退出tt|n"); printf("-------------------------------------n"); printf("选择功能:"); scanf("%d",&t); if(t<1||t>5) { printf("无效选择,重新输入:n"); t=0; } if(t==1) { t=0; printf("用 户 名t密 码tt身份n"); for(i=0;i
Account
管理员查看交易记录
#include#include 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 %.2fn" ,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#include int Menu(int id)//菜单,根据id不同输出功能,返回用户选择。原型 int Menu(int id); { int n=-1; printf("n————————————————————————————————————n"); printf("请选择需要的服务:n"); printf("0.退出tt| 1.查询车位n2.停车tt| 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#include 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 %.2fn" ,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 1p.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 00000000000time.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



