大神来帮我自己编的银行管理系统
#include <stdio.h>#include "stdlib.h"
#include "string.h"
#define rate 0.0035 //银行活期利率
#define STARS "****************************************"
struct yonghu
{
char number[9]; //用户的身份证号码
char name[20]; //用户名字
char secrets[6]; //用户密码
double money; //用户余额
double lixi; //用户利息
char kahao[8]; //用户卡号
};
struct yonghu po[100];
int count;
void Register();//用户注册
void service(int b); //用户业务
void enter(); //用户登录
void Change(int c);//用户信息修改
/*void refer();//信息查询声明*/
void Delete();//用户退卡声明
int reads(struct yonghu po[100]) //提老用户资料
{
FILE *fp;
int i=0;
if((fp=fopen("yonghu.dat","r"))==NULL)
{
printf("文件打开失败!\n");
return 0;
}
else
{
for(i=0;!feof(fp);i++)
fscanf(fp,"\n%s %s %s %s %lf %lf \n",po[i].name,po[i].kahao,po[i].number,po[i].secrets,&po[i].money,&po[i].lixi);
}
fclose(fp);
return i;
}
void save(struct yonghu po[100],int n) //保存数据到文件的函数
{
int i=0;
FILE *fp;
if((fp=fopen("yonghu.dat","w"))==NULL) //如果需要打开的文件不存在则自动创建
{
printf("文件打开失败\n");
return;
}
else
{
for (i=0;i<n;i++)
fprintf(fp,"\n%s %s %s %s %lf %lf \n",po[i].name,po[i].kahao,po[i].number,po[i].secrets,&po[i].money,&po[i].lixi);
fclose(fp);
}
}
void auther()
{
printf("\n%s%s\n",STARS,STARS);
printf(" 欢迎使用银行账户管理系统\n");
printf(" 作者: 施胜飞\n");
printf("\n%s%s\n",STARS,STARS);
printf("按回车键,开始\n");
}
void Register()
{
FILE *fp;
struct yonghu po;
if((fp=fopen("yonghu.dat","a"))==NULL) //文件存在,追加信息
{
if((fp=fopen("yonghu.dat","w"))==NULL) //文件不存在时,创建新文件,输入信息
{
printf("用户不存在!\n");
return;
}
}
printf("请输入你的用户名(20个字符内):\n");
scanf("%s",po.name);
while(strlen(po.name)>20)
{
printf("你输入的用户名不合标准,请重新输入\n");
scanf("%s",po.name);
}
printf("请输入你的身份证(9位)\n");
scanf("%s",po.number);
while(strlen(po.number)>9)
{
printf("你输入的身份证不合标准,请重新输入:");
scanf("%s",po.number);
}
printf("请输入存款金额:\n");
scanf("%d",&po.money);
printf("请输入你的密码(6位)\n");
scanf("%s",po.secrets);
while(strlen(po.secrets)>7)
{
printf("你输入的密码不合标准,请重新输入:");
scanf("%s",po.secrets);
}
printf("请输入你想要的卡号(8位)\n");
scanf("%s",po.kahao);
fclose(fp);
count=count+1;
}
void enter()
{
int i;
char m[8],h[6];
count=reads(po);
printf("\n %s\n",STARS);//显示菜单桌面
printf("请输入你的卡号(8位): \n");
scanf("%s",m);
printf("请输入你的密码(6位): \n");
scanf("%s",h);
for(i=0;i<count;i++)
if(strcmp(m,po[i].kahao)==0 && strcmp(h,po[i].secrets)==0)
break;
if(i>=count || strcmp(h,po[i].secrets)!=0)
{
printf("对不起,你的卡号或者密码错误\n");
getchar();
printf("按回车键返回上级界面 \n");
getchar();
system("cls");
return;
}
else
{
printf(" 正确登录 \n");
system("cls");
service(i);
}
}
void service(int b)
{
int code,choice;
double cmoney;
double qmoney;
do
{
printf("\n %s\n",STARS);//显示菜单桌面
printf(" *请选择你要的业务: *\n");
printf(" **[1]查询余额 *\n");
printf(" **[2]存钱 *\n");
printf(" **[3]取钱 *\n");
printf(" **[4]查询利息 *\n");
printf(" **[5]密码修改 *\n");
printf(" **[6]返回 *\n");
printf("\n %s\n",STARS);
while((choice=scanf("%d",&code))!=1||(code<1||code>6))
{
if(choice!=1)
scanf("%*s");
printf("请输入一个整数从1到6\n");
}
system("cls");
switch(code)
{
case 1:
printf("您的账户余额:%lf 按Enter键返回上一层\n",po[b].money);
getchar();
getchar();
break;
case 2:
printf("请输入你要存的钱\n");
scanf("%lf",&cmoney);
printf("恭喜你存钱成功\n");
po[b].money=(po[b].money+cmoney);
printf("现在你的账户上还有: %lf元\n",po[b].money);
break;
case 3:
printf("请输入你要取的钱\n");
scanf("%lf",&qmoney);
while (qmoney<=0)
{
printf ("请输入正确的数字:");
scanf("%lf",&qmoney);
}
if (qmoney >po[b].money)
printf("余额不足");
else
{
po[b].money=po[b].money-qmoney;
printf ("操作成功,请收好钱!");
}
printf("按Enter返回上一层\n");
break;
case 4:
printf("您目前账户利息:%lf \n",(po[b].money*rate));
break;
case 5:
Change(b);
break;
}
}
while(code!=6);
return;
}
/*void refer()
{
printf("\n****************************************\n");
printf("用户名 余额 利息 \n);
printf("%-9s%-20d%-10.2lf\n",po[i].name,pot[i].money,po[i].lixi);
printf("\n****************************************\n");
getchar();
system("cls");
}*/
void Delete()
{
struct yonghu po[100];
char s[20],t[20];
int i,j;
printf("\n 请输入要删除储户卡号,密码,用空格隔开:");
scanf("%s %s",s,t);
for (i=0;i<count;i++)
if (strcmp(s,po[i].kahao)==0 && strcmp(t,po[i].secrets)==0)break;
if (i>=count || strcmp(t,po[i].secrets)!=0)
{
printf("没有找到该储户信息!\n");
return;
}
else
{
for(j=i+1;j<count;j++)
po[j-1]=po[i];
}
save (po,count-1);
printf("销户成功!\n");
}
void Change(int c)
{
printf("\n 请输入更改后密码,按Enter确认:\n");
scanf("%s",po[c].secrets);
save(po,c);
printf("\n 修改成功");
}
int main()
{
count=0;
system("cls");
int code,choice;
auther();
getchar();
system("cls");
do
{
printf("\n %s\n",STARS);//显示菜单桌面
printf(" *请选择你的种类: *\n");
printf(" **[1]新用户注册 *\n");
printf(" **[2]老用户 *\n");
printf(" **[3]取消本卡 *\n");
printf(" **[4]退出 *\n");
printf("\n %s\n",STARS);
while((choice=scanf("%d",&code))!=1 || (code<1 || code>4))
{
if(choice!=1)
scanf("%*s");
printf("请输入一个整数从从1到4");
}
system("cls");
switch(code)
{
case 1:
Register();
break;
case 2:
enter();
break;
case 3:
Delete();
break;
case 4:
printf("感谢您再次使用,再见!\n");
break;
}
}
while(code!=4);
return 0;
}
为什么每次新用户注册好的,再次登录都是卡号和密码是错的。