commit 40b5a459e00cb762c36c5f34e4d60c62c0704c9d Author: Lyd=2413 <18408000329@stu.hut.edu.cn> Date: Mon Jan 7 23:29:39 2019 +0800 first commit diff --git a/1.0.cpp b/1.0.cpp new file mode 100644 index 0000000..8cfc192 --- /dev/null +++ b/1.0.cpp @@ -0,0 +1,410 @@ +#include +#include +#include +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) + { + 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&&Mperson[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; +} diff --git a/1.0.exe b/1.0.exe new file mode 100644 index 0000000..7bab778 Binary files /dev/null and b/1.0.exe differ diff --git a/register.txt b/register.txt new file mode 100644 index 0000000..e59c759 Binary files /dev/null and b/register.txt differ