目录
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; }
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; 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普通)
p.txt00000000000 123456 3
12345678900 123456 2
12345678901 123456 1
12345678910 123456 1是否有车(1有)停车时间 取车时间 停车人
time.txt0 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车位 停车时间 取车时间 用户 价格
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)