You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

412 lines
11 KiB

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int X=0;
int time=3;
int super_1=1;
struct message{
char name[25];
int money;
int mima;
int sign;
};
struct message person[50];
int big_menu(){ int n;char nn[25];
printf("----------------------------\n");
printf("|1.登陆账号 2.注册账号 |\n");
printf("|3.管理员入口 4.*忘记密码 |\n");
printf("|5.退出程序 |\n");
printf("|(╯°口°)╯(┴—┴ |\n");
printf("----------------------------\n");
printf("请输入您的选择\n");
//scanf("%d",&n); system("cls"); return n;
char a[5]={'1'};char b[5]={'2'};char c[5]={'3'};
char d[5]={'4'};char e[5]={'5'};char f[5]={'6'};
if(time==0) printf("您错误输入次数过多,更多事务请咨询大堂经理\n");
for(;;)
{
scanf("%s",nn);
if(strcmp(a,nn)==0) {n=1;break;}
else if(strcmp(b,nn)==0) {n=2;break;}
else if(strcmp(c,nn)==0) {n=3;break;}
else if(strcmp(d,nn)==0) {n=4;break;}
else if(strcmp(e,nn)==0) {n=5;break;}
else if(strcmp(f,nn)==0) {n=6;break;}
else printf("小老弟,别乱输入\n");
} system("cls");time=3;return n;
} //主菜单,返回值为选择哪个项目的数
int small_menu(){ int n;
printf("----------------------------\n");
printf("|1.存款 2.取款 |\n");
printf("|3.查看余额 4.信息修改 |\n");
printf("|5.销户 6.退出 |\n");
printf("|_(:3」∠)_ |\n");
printf("----------------------------\n");
printf("亲爱的用户 %s\n",person[X].name);
printf("请输入您的选择\n");char nn[25];
//scanf("%d",&n); return n;
char a[5]={'1'};char b[5]={'2'};char c[5]={'3'};
char d[5]={'4'};char e[5]={'5'};char f[5]={'6'};
if(time==0||time==-1) n=6;
else for(;;)
{
scanf("%s",nn);
if(strcmp(a,nn)==0) {n=1;break;}
else if(strcmp(b,nn)==0) {n=2;break;}
else if(strcmp(c,nn)==0) {n=3;break;}
else if(strcmp(d,nn)==0) {n=4;break;}
else if(strcmp(e,nn)==0) {n=5;break;}
else if(strcmp(f,nn)==0) {n=6;break;}
else printf("小老弟 %s ,请不要乱输入\n",person[X].name);
}
return n;
}//小菜单,功能同上
int go(){ int A=15,i=0;
FILE *fp_go;
if((fp_go=fopen("register.txt","a+"))==NULL){ printf("File open error!\n"); exit(0); }
while(A){
fread(&person[i],sizeof(message),1,fp_go); i++;A--;
} rewind(fp_go);fclose(fp_go);
}//初始化模块,将文件中的数据写入结构体后关闭文件。
void New(){ static int number=0;
for(int i=0;i<15;i++)
{
if(person[i].sign!=1) { number=i;break;}
}
FILE *fp;
if((fp=fopen("register.txt","a+"))==NULL){ printf("File open error!\n"); exit(0); }
char NEW[20]; char Q[10]={'o','u','t'};int nn=1;
printf("请输入姓名\n输入out退出注册\n进入设置密码的时候就⑧能退出啦\n\n"); scanf("%s",NEW);//person[number].name
if(strcmp(NEW,Q)==0) nn=0;
else if(nn!=0)
{
strcpy(person[number].name,NEW);
printf("设置您的六位数密码(数字)\n"); int n;
for(;;)
{
scanf("%d",&n);
if(n>=100000&&n<=999999) { person[number].mima=n;break;}
else printf("您的输入有误,请重新输入六位数密码\n");
}
person[number].money=0;
person[number].sign=1;
fseek(fp,0,SEEK_END);
//fprintf(fp,"%s,%d,%d,%d",person[number].name,person[number].mima,person[number].note=ID,person[number].money);
fwrite(&person[number],sizeof(message),1,fp);
fclose(fp);
number++;
}
}//注册账号并将此元素信息写入文件
int enter(){ int i=1; time=3;
while(i){ int I=0,p,a=1,b;
printf("输入您的账号姓名\n(输入out退出登录)\n\n"); char N[15]; char NN[15]={'o','u','t'};
scanf("%s",N);if(strcmp(N,NN)==0) {time=-1;i=0;break;}
else
for(I=0;I<20;I++)
{
if(strcmp(N,person[I].name)==0)
{
printf("请务必输入数字,请不要输入字符\n");
p=I;printf("请输入密码\n输入 10086 退出\n"); int Q=10086;
for(int a=0;;a++)
{
int T=time+1;
printf("您还剩 %d 次机会哦\n",T);
int command;scanf("%d",&command);//break;
if(command==Q)
{
i=0;time=-1;break;
}
else if(command==person[p].mima) { i=0;X=p;break;}
else if(time>0)
{
printf("密码错误,请再次输入\n");time--;
}
else if(time==0)
{
i=0;break;
}
} break;
}
}
if(I>=20) { printf("没有这个账号耶弟弟\n");}
}
}//进入账户之前的步骤 ,利用循环完成对姓名和密码的多次试错,还有统计次数模块,错误过多将会返回主菜单
int remainder()
{
printf("您的余额为: %d 元 嗷\n",person[X].money);
printf("按任意键加回车继续\n\n");char nn[25];
char a[5]={'1'};
for(;;)
{
scanf("%s",nn);
if(strcmp(a,nn)==0) break;
else break;
} system("cls");
}//看余额
int earn()
{ int M;while(1)
{
printf("请务必输入数字,请不要输入字符\n");
printf("请输入您想存入的金额\n"); scanf("%d",&M);
if(M>0)
{
FILE *fp_earn;
if((fp_earn=fopen("register.txt","w"))==NULL){ printf("File open error!\n"); exit(0); }
person[X].money+=M;
for(int i=0;i<15;i++)
{
fwrite(&person[i],sizeof(message),1,fp_earn);
}
fclose(fp_earn);
printf("好的,钱已经存入银行\n");
printf("\n现在您的余额为 %d 元\n\n",person[X].money);break;
}
else
printf("你究竟想存多少钱?\n");
}
}//存款
int take()
{
int M;while(1)
{
printf("请务必输入数字,请不要输入字符\n");
printf("请输入您想取出的金额\n"); scanf("%d",&M);
if(M>0&&M<person[X].money)
{
FILE *fp_take;
if((fp_take=fopen("register.txt","w"))==NULL){ printf("File open error!\n"); exit(0); }
person[X].money-=M;
for(int i=0;i<15;i++)
{
fwrite(&person[i],sizeof(message),1,fp_take);
}
fclose(fp_take);
printf("好的,钱已经取出银行\n");
printf("\n现在您的余额为 %d 元\n\n",person[X].money);break;
}
else if(M>person[X].money) printf("亲,您的余额没这么多钱嗷\n您的余额只有 %d 元\n\n",person[X].money);
else printf("你究竟想取多少钱?\n");
}
}//取款
int change()
{ int a;char nn[25];
printf("请问您想改什么信息?\n请输入阿拉伯数字来选择\n");
printf("\n1.改姓名 2.改密码 3.退出 \n");
//scanf("%d",&a);
char e[5]={'1'};char b[5]={'2'};char c[5]={'3'};
char d[5]={'4'};
for(;;)
{
scanf("%s",nn);
if(strcmp(e,nn)==0) {a=1;break;}
else if(strcmp(b,nn)==0) {a=2;break;}
else if(strcmp(c,nn)==0) {a=3;break;}
else if(strcmp(d,nn)==0) {a=4;break;}
else printf("小老弟,别乱输入\n");
}system("cls");
switch(a)
{
case 1:
{
char h[15];
printf("这是你原来的姓名:%s\n",person[X].name);
printf("请输入你准备修改的姓名\n");
scanf("%s",h);
strcpy(person[X].name,h);
FILE *fp_change;
if((fp_change=fopen("register.txt","w"))==NULL){ printf("File open error!\n"); exit(0); }
for(int i=0;i<15;i++)
{
fwrite(&person[i],sizeof(message),1,fp_change);
}
fclose(fp_change);
printf("修改完毕\n");
break;
}
case 2:
{
int h;
printf("这是你原来的密码:%d\n",person[X].mima);
printf("请输入你准备修改的密码\n");
printf("请务必输入数字,请不要输入字符\n");
int n;
for(;;)
{
scanf("%d",&h);
if(h>=100000&&h<=999999) { person[X].mima=h;break;}
else printf("您的输入有误,请重新输入六位数密码\n");
}
FILE *fp_change;
if((fp_change=fopen("register.txt","w"))==NULL){ printf("File open error!\n"); exit(0); }
for(int i=0;i<15;i++)
{
fwrite(&person[i],sizeof(message),1,fp_change);
}
fclose(fp_change);
printf("修改完毕\n");
break;
}
case 3:break;
case 4:
{
int h;
printf(" 嚯嚯嚯,现在我们都是法外狂徒了\n");
printf(" 这是你原来的余额:%d\n",person[X].money);
printf(" 请输入你准备修改后的余额\n");
scanf("%d",&h);
person[X].money=h;
FILE *fp_change;
if((fp_change=fopen("register.txt","w"))==NULL){ printf("File open error!\n"); exit(0); }
for(int i=0;i<15;i++)
{
fwrite(&person[i],sizeof(message),1,fp_change);
}
fclose(fp_change);
printf(" 作弊成功\n");
printf("按任意键加回车继续\n\n");char nn[25];
char a[5]={'1'};
for(;;)
{
scanf("%s",nn);
if(strcmp(a,nn)==0) break;
else break;
} system("cls");
break;
}
}
system("cls");
}//可以修改姓名和密码,甚至可以修改余额
int destroy()
{
printf("确定要销毁这个账户吗?\n");
printf("1.确定 2.取消\n");
int i;//scanf("%d",&i);
char a[5]={'1'};char b[5]={'2'};char nn[25];
for(;;)
{
scanf("%s",nn);
if(strcmp(a,nn)==0) {i=1;break;}
else if(strcmp(b,nn)==0) {i=2;break;}
else printf("臭弟弟,别乱输入\n");
}system("cls");
switch(i)
{
case 1:
{
for(int h=X;h<20;h++)
{
if(person[h+1].sign!=1){
person[h].sign=0; break;
}
strcpy(person[h].name,person[h+1].name);
person[h].mima=person[h+1].mima;
person[h].money=person[h+1].money;
}
FILE *fp_destroy;
if((fp_destroy=fopen("register.txt","w"))==NULL){ printf("File open error!\n"); exit(0); }
for(int i=0;i<15;i++)
{
fwrite(&person[i],sizeof(message),1,fp_destroy);
}
fclose(fp_destroy);
printf("修改完毕\n");
break;
}
case 2:break;
}
}//就是将结构体元素互相覆盖后写入文件并完成覆盖信息。
int super1()
{
super_1=1;
int i=1;
while(i)
{ int I;
printf("输入密令\n"); char N[15],M[15]={'I','G','N','B'}; char MM[10]={'n','m','s','l'};
for(I=0;;I++)
{
scanf("%s",N);if(strcmp(N,MM)==0) {
super_1=0;break;
}
else if(strcmp(N,M)==0)
break;
else
printf("不对啊,再输入一次\n");
} i=0;
if(I>=5) { printf("怎么回事小老弟?\n想这么久\n");}
}
}
int super2()
{
if(super_1==0)
{
printf("┻━┻︵╰(‵□′)╯︵┻━┻\n\n明天买菜必定加倍\n");
}
else
{
printf("姓名 密码 余额/元\n");
for(int A=0;A<15;A++)
{
if(person[A].sign!=1)
break;
printf("%s ",person[A].name);
printf("%d ",person[A].mima);
printf("%d\n",person[A].money);
//printf("%d\n",person[A].sign);
}
}
//int aa=0;scanf("%d",&aa);if(aa=1) aa=2;else aa=3;
printf("看够了吗,看够了就按任意键加回车继续\n\n");char nn[25];
char a[5]={'1'};
for(;;)
{
scanf("%s",nn);
if(strcmp(a,nn)==0) break;
else break;
}
}
int main()
{ go();
int S,s=1;
while(s)
{
S=big_menu();
switch(S)
{
case 1:{int W,w=1;
printf(" 1.登陆账号\n");
enter();system("cls");
while(w)
{
W=small_menu();
switch(W)
{
case 1:printf(" 1.存款\n");system("cls");earn();break;
case 2:printf(" 2.取款\n");system("cls");take();break;
case 3:printf(" 3.查看余额\n");system("cls");remainder();break;
case 4:printf(" 4.信息修改\n");system("cls");change();break;
case 5:printf(" 5.销户\n");system("cls");destroy();
case 6:w=0;system("cls");break;
default :printf(" 输入错误,请再次输入\n");break;
}
} }
break;
case 2:printf(" 2.注册账号\n");New();system("cls");break;
case 3:super1();super2();system("cls");break;
case 4:printf(" 拜拜了您嘞,你怎么不忘记恰饭,嗯?\n 更多事务请咨询大堂经理\n");break;
case 5:s=0;break;
default :printf(" 输入错误,请再次输入\n");break;
}
}
return 0;
}