崩溃了,求解。银行管理系统中的销户与修改密码,谢谢,一输入密码和账号,就退出,其他函数的没有附上,希望能帮忙,万分感谢,
程序代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #define N 1000 #define E 10 struct chuhu { char idnum[9]; //账户 char password[7]; //密码 char name[11]; //姓名 char idnumber[19]; //身份证 double cunkuan; //存款金额 struct chuhu *next; }hu[N]; struct chuhu *deleta(struct chuhu *head); int rrekey() ; //修改密码 void enter(); //登录函数 void menu(); //输出主菜单2 void display(); //显示账户余额 int A=0,key; //A为开户数 double jin; char ch='y'; char password[7]; int k; int flag=0; struct chuhu*Readfile(struct chuhu*head) { struct chuhu *p=NULL,*pr=head; FILE *fp; if((fp=fopen("chuhu.txt","r"))==NULL) { printf("Failure to open yonghu,txt!\n"); exit(0); } while(!feof(fp)) { p=(struct chuhu *)malloc(sizeof(struct chuhu)); fread(p,sizeof(struct chuhu),1,fp); if(head==NULL) { head=p; //pr=head; } else { while(pr->next!=NULL) { pr=pr->next; } pr->next=p; //pr=p; } //pr->next=NULL; p->next=NULL; } fclose(fp); return head; } struct chuhu *saveTorfile(struct chuhu *head) { struct chuhu *p=head; FILE *fp; if((fp=fopen("chuhu.txt","w"))==NULL) { printf("Failure to open idcard.txt!\n"); exit(0); } else { while(p->next!=NULL) { fwrite(p,sizeof(struct chuhu),1,fp); p=p->next; } } fclose(fp); return head; } void Displynode(struct chuhu *head) { struct chuhu *p=head; while(p->next!=NULL) { printf("%10s%10s%20s%10s%15lf\n",p->idnum,p->name,p->idnumber,p->password,p->cunkuan); p=p->next; } } int main()//输出主菜单1 { FILE *fkey = fopen("key.txt","r"); char c; int t=0; system("cls"); printf("\n\n"); printf(" 欢迎登陆银行管理系统\n"); printf(" 请确保您周边的取款环境安全\n"); printf(" 请勿相信周边粘贴的任何信息\n"); printf(" 如有任何疑问请你致电本行24小时服务热线\n"); printf(" 是否继续,继续请按Y,否按N\n"); fflush(stdin);//清除输入缓冲区 { c=getchar(); getchar(); if(c=='N') exit(0); else if(c=='y'||c=='Y') system("cls"); menu(); enter(); return 0; } } void menu()//输出主菜单2 { int a; printf("\n"); printf(" ----------------------------------------\n"); printf(" ***! 请选择操作类型 !***\n"); printf(" ***$ 开户请按1 $***\n"); printf(" ***& 登录请按2 &***\n"); printf(" ***# 返回请按3 #***\n"); printf(" ----------------------------------------\n"); printf(" &&&&&^^^^ "); fflush(stdin); scanf("%d",&a); switch(a) { case 1: insert(); break; case 2: enter(); break; case 3: exit(0); default: printf("invalid operator !\n"); exit(0); } } void enter() { int b; struct chuhu *head=NULL; do{ printf("\n\n"); printf(" **** 欢迎登录个人账户系统 ****\n"); printf(" !*!* 您可以选择以下操作 *!*\n"); printf(" **** 1.取款 2.存款 ****\n"); printf(" **** 3.转账 4. 销户 ****\n"); printf(" **** 5.挂失 6.查询余额 ****\n"); printf(" **** 7.修改密码 8.查询交易记录 ****\n"); printf(" **** 请选择您需要的服务 ****\n"); printf(" &&&&^^^^^"); fflush(stdin); scanf("%d",&b); switch(b) { case 1: withdraw(); break; case 2: saving(); break; case 3: exit(0); case 4: system("cls"); head=Readfile(head); head=deleta(head); head=saveTorfile(head); Displynode(head); break; case 5: flag=guashi(); break; case 6: display(); break; case 7: rrekey(); break; default: printf("invalid operator !\n"); } }while(1); } int rrekey() //修改密码 { FILE *rekey=fopen("key.txt", "r" ); FILE *rkey=fopen("keynew.txt", "w" ); int mima,mima1,mima2,t; system("cls"); printf("请输入原密码\n:"); scanf("%d",&mima); fscanf(rekey,"%d",&key); if(mima==key) t=1; system("cls"); for(;t!=1;) { printf("密码错误,请重新输入\n密码:"); scanf("%d",&mima); if(mima==key) t=1; system("cls"); } printf("请输入新密码:\n"); scanf("%d",&mima1); system("cls"); printf("请再次输入新密码:\n"); scanf("%d",&mima2); system("cls"); if(mima1==mima2) { fprintf(rkey,"%d",mima1); printf("修改成功\n"); system("pause"); } else { printf("输入错误密码,终止修改密码操作"); system("pause"); } system("cls"); fclose(rekey); fclose(rkey); system("del key.txt"); rename("keynew.txt","key.txt"); return 0; } struct chuhu *deleta(struct chuhu *head) { FILE *fp; struct chuhu*p=head,*pr=head; int w3=0,c=0; int i,j; char idnum[9]; char fnumb[9],keyword[7]; printf("请输入你的账号:"); scanf("%s",&fnumb); for(i=0;i<=99;i++) { if(strcmp(fnumb,hu[i].idnum)==0 ) { do { printf("\n\n\t\t*******请输入密码:< >\b\b\b\b\b\b\b"); scanf("%s",keyword); if(strcmp(hu[i].password,keyword)!=0) { printf("\n\n\t\t********密码不正确,请重新输入!**********\n"); continue; } else { printf("\n\n\t\t**********密 码 正 确 !***********\n"); w3=1; } } while(w3==0&&c<3); while(p->idnum!=p->idnum||strcmp(p->password,password)!=0&&p->next!=NULL) { pr=p; p=p->next; } if(p->idnum==idnum&&strcmp(p->password,password)==0) { if(p==head) { head=p->next; } else { pr->next=p->next; } free(p); printf("删除成功!\n"); } else { printf("没有您要删除的信息!,请返回上一级\n"); } return head; if((fp=fopen("chuhu.txt","w"))==NULL) { printf("打开文件失败!\n"); exit(0); } fwrite(hu,sizeof(hu),j,fp); fclose(fp); if((fp=fopen("idcard.txt","r"))==NULL) { printf("打开文件失败!\n"); exit(0); } j=2; for(i=0;!feof(fp);i++) { fread(&hu[i],sizeof(hu),j,fp); } fclose(fp); printf("%10d%10s%20s%10s%15lf%10d\n", hu[i].idnum,hu[i].name,hu[i].idnumber,hu[i].password,hu[i].cunkuan); } else { } } }
[此贴子已经被作者于2017-3-20 21:03编辑过]