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
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;
|
|
}
|