新手求助C语言程序设计ATM
我做的程序在执行登录时三次密码验证的时候怎么改都是无限循环错误三次也不跳出是怎么回事?求大神,代码如下:#include<stdio.h>
#include<stdlib.h>//清屏,exit函数
#include<string.h>//strlen函数
struct bank
{
char name[20];//用户名
char password[7];//密码
int zh;//账号
double ye;//余额
}m[10000];
//声明
void main();
void zhuce();
void denglu();
void fuwu();
void cunkuan();
void qukuan();
void zhuanzhang();
void xgmm();
void chaxun();
void tuichu();
int l=0;
int t=1;
int f=0;
int ptr;
//定义全局变量
//主函数
void main()
{
char xz/*用于选择*/;
//进入主界面
printf("\n\n\n\t\t\t*******************************\n");
printf("\t\t\t****- ATM欢迎进入本系统!-****\n");
printf("\t\t\t*******************************\n\n\n");
printf("\t\t\t----- 服务【1】:用户注册 -----\n\n");
printf("\t\t\t----- 服务【2】:用户登陆 -----\n\n");
printf("\t\t\t----- 服务【3】:退出系统 -----\n\n");
printf("\t\t\t请选择服务:");
scanf("%c",&xz);
switch(xz)
{
case '1':system("cls");
zhuce();//调用注册函数
break;
case '2':system("cls");
denglu();//调用登陆函数
break;
case '3':system("cls");
tuichu();//退出
break;
}
printf("\n\t\t\t输入有误请重新选择!");
system("cls");//清屏
main();//返回主界面
}
//注册函数
void zhuce()
{
printf("\n\n\n\t\t\t********************************\n");
printf("\t\t\t-**-**-- 新用户注册界面 --**-**-\n");
printf("\t\t\t********************************\n\n\n\n");
printf("\t\t\t请输入您的姓名:");
scanf("%s",m[l].name);
system("cls");//清屏
printf("\n\n\n\t\t\t********************************\n");
printf("\t\t\t-**-**-- 新用户注册界面 --**-**-\n");
printf("\t\t\t********************************\n\n\n\n");
printf("\t\t\t请设置您的密码:");
scanf("%s",m[l].password);
system("cls");//清屏
printf("\n\n\n\t\t\t\t用户注册成功!\n");
m[l].zh=t++;
printf("\n\n\t\t\t\t 您的账号为%d\n\n\n\n",m[l].zh);
printf("\t\t\t 请输入您的开户金额:");
scanf("%d",&m[l].ye);
l++;
system("cls");//清屏
main();
}
//登陆函数
void denglu()//定义一个登陆函数,实现进入系统的功能
{
int t;
int w;
char mima1[7];//限制密码字节数
printf("\n\n\n\t\t\t********************************\n");
printf("\t\t\t*-**-**-- 用户登陆界面 --**-**-*\n");
printf("\t\t\t********************************\n\n\n\n");
printf("\t\t\t请输入您的账号:");
scanf("%d",&ptr);
system("cls");//清屏
printf("\n\n\n\t\t\t********************************\n");
printf("\t\t\t*-**-**-- 用户登陆界面 --**-**-*\n");
printf("\t\t\t********************************\n\n\n\n");
printf("\t\t\t 请输入密码:");
scanf("%s",mima1);
for(w=0; w<4; w++)//for循环中嵌套if--else选择语句,进行登陆函数和退出函数的调用
{
t=strcmp(mima1,m[w].password);//判断mima1==Password??
if(t==0)
fuwu();
else
{
system("cls");
printf("\n\n\n\n\t\t\t账户或密码错误,请重新登陆!\n");
system("pause");
denglu();
}
if(w==3)
{
printf("\n\n\n\n\n\n\t\t\t您的账户已被冻结!\n");//这个地方错的不对,找不到错误。
tuichu();
}
}
}
//服务函数
void fuwu()
{
system("cls");
printf("\n\n\n\t\t\t********************************\n");
printf("\t\t\t*-**-**-- 用户服务界面 --**-**-*\n");
printf("\t\t\t********************************\n\n\n\n");
printf("\t\t\t********************************\n");
printf("\t\t\t**** 1 存款 ******** 2 取款 ****\n");
printf("\t\t\t********************************\n");
printf("\t\t\t**** 3 转帐 ******** 4 改密 **\n");
printf("\t\t\t********************************\n");
printf("\t\t\t**** 5 查询 ******** 6 注销 ****\n");
printf("\t\t\t********************************\n");
printf("\t\t\t******** 0 返回主界面 **********\n");
printf("\t\t\t********************************\n\n\n");
printf("\t\t\t请选择您所需的服务\n");//定义此函数进行服务的选取,让选项在此函数里就可以实现传递。调用了登陆函数。
int i=0;
int * p;
p=&ptr;
int er=0;
int s;
int k;
er=* p;
s=er-1;
printf("\t\t\t请选择:");
scanf("%d",&k);
system("cls");
switch(k)
{
case 1:
cunkuan(&m[s].ye);
break;
case 2:
qukuan(&m[s].ye);
break;
case 3:
zhuanzhang(&m[s].ye);
break;
case 4:
xgmm(&m[s].ye);
break;
case 5:
chaxun(&m[s].ye);
break;
case 6:
printf("\n\n\n\n\t\t\t###您的账户已被注销###\n\t\t\t\n\n");
printf("\t\t\t### 系统将退出 ###\n\t\t\t\n\n");
printf("\t\t\t### 感谢您的使用 ###\n\t\t\t\n\n");
system("pause");
tuichu();
break;
case 0:
main();
break;
}
if(i==0)
{
printf("\n\n\n\n\t\t\t\t继续请按1,返回请按0:");
scanf("%d",&i);
if(i==1)
fuwu();
if(i==0)
main();
}
}
//存款函数
void cunkuan(int *ck)
{
int q;
printf("\n\n\n\n\t\t\t请输入您的存款金额:");
scanf("%d",&q);
* ck=* ck+q;
printf("\t\t\t\t存款成功!\n");
}
//取款函数
void qukuan(int *qk)
{
int q;
printf("\n\n\n\n\t\t\t请输入您的取款金额:");
scanf("%d",&q);
* qk=* qk-q;
if(* qk<0)
{
printf("\t\t\t您的余额不足!");
* qk=* qk+q;
}
}
//转账函数
void zhuanzhang(int *zz)
{
int q;
printf("\n\n\n\n\t\t\t请输入您的转账金额:");
scanf("%d",&q);
* zz=* zz+q;
if(* zz<0)
{
printf("\t\t\t您的余额不足");
* zz=* zz+q;
}
}
//修改密码
void xgmm()
{
int g;
int mm;
int * q;
q=&ptr;
g=* q;
mm=g-1;//为了找出账号与结构体的对应关系
printf("\n\n\n\n\t\t\t请输入您的新密码:");
scanf("%s",m[mm].password);
system("cls");//
printf("\n\n\n\n\n\n\t\t\t**密码修改成功**");
}
//查询函数
void chaxun(int *cx)
{
int * r;
int g,w;
r=&ptr;
g=* r;
w=g-1;
printf("\n\n\n\n\t\t\t您的用户名为:%s\n",m[w].name);
printf("\t\t\t您的余额为:");
printf("%d",m[w].ye);
}
//退出系统函数
void tuichu()
{
system("cls");
printf("\n\n\n\n\t\tATM为你服务结束!");
printf("\n\n\n\t\t正在退出,请稍候·······\n");
exit(0);
}