#include <stdio.h>
#include <stdlib.h>
//C语言及程序设计初步,综合练习,CSDN银行2.0,功能说明
/* 1.输入密码进行登录(错误三次后退出程序),输入0-4选择不同功能,1-查询、2-取款,3-存款,4-改密码,0-退出.
2.只支持单个用户,密码和存款余额分别保存在本地两个文件中
3.取款功能支持超出额度提示.
4.修改密码需要输入两次新密码,先要输入原密码
5.取款和存款操作需要加入确认提示,点击确认后才会继续操作,取消的话回退会上一级
*/
//第二版,代码优化,模块化思路
int passwd();//函数功能:判断密码是否正确
void work();//函数功能:主业务模块,被main函数调用
void Out();//取款模块,被主业务模块调用
void In();//存款模块,被主业务模块带哦用
void change_passwd();//修改密码模块,被主业务模块调用
long getsalary();//获得余额模块,被多个其他模块调用
void show_menu();//展示业务菜单模块,被主业务模块调用
void change_money(long);//修改余额模块,被存取款模块调用
int main()
{
printf("欢迎使用CSDN银行\n");
if(passwd()==0)
{
printf("密码错误三次,账号锁定!\n");
exit(0);
}
work();
printf("谢谢您的使用,欢迎下次光临!\n");
return 0;
}
int passwd()
{
long iPass_file,iPass;
int iErr_count=1,r;
FILE *fp;
fp=fopen("passwd.dat","r");
fscanf(fp,"%ld",&iPass_file);
fclose(fp);
while(iErr_count<=3)
{
if(iErr_count==1)
printf("请输入密码:");
else
printf("密码错误,请再次输入密码: ");
scanf("%ld",&iPass);
if(iPass==iPass_file)
break;
else
iErr_count++;
}
if(iErr_count>3)
r=0;
else
r=1;
return r;
}
void work()
{
int iErr_count;
int flag=0,choice;
while(flag==0)
{
show_menu();
scanf("%d",&choice);
switch(choice)
{
case 1:
{
printf("当前的存款余额为:%ld\n",getsalary());
break;
}
case 2:
{
Out();
break;
}
case 3:
{
In();
break;
}
case 4:
{
iErr_count=1;
printf("修改密码需要校验原密码\n");
if(passwd()==1)
{
change_passwd();
}
else
{
printf("错误三次,请重新选择\n");
}
break;
}
case 0:
{
flag=1;
break;
}
default:
{
printf("输入错误,请重新输入!\n");
}
}
}
}
void show_menu()
{
printf("本行提供以下业务:\n");
printf("1. 查询.\n");
printf("2. 取款.\n");
printf("3. 存款.\n");
printf("4. 改密码.\n");
printf("0. 退出.\n");
printf("请选择需要办理的业务(1-4),按0退出:");
}
long getsalary()
{
long money;
FILE *fp;
fp=fopen("money.dat","r");
fscanf(fp,"%ld",&money);
fclose(fp);
return money;
}
void change_money(long iMoney)
{
FILE *fp;
fp=fopen("money.dat","w");
fprintf(fp,"%ld",iMoney);
fclose(fp);
}
void Out()
{
long iOut,iMoney;
char choice_temp;
iMoney=getsalary();
printf("请输入需要取出的金额:");
scanf("%ld",&iOut);
printf("确认取出%ld元(输入n取消,任意键确认)\n",iOut);
choice_temp=getchar();//接收前一个字符串的\n
choice_temp=getchar();
if(choice_temp!='n'&&choice_temp!='N')
{
if(iOut<=iMoney)
{
iMoney-=iOut;
change_money(iMoney);
printf("成功取出%ld元!\n",iOut);
}
else
{
printf("余额不足!\n");
}
}
}
void In()
{
long iPut,iMoney;
char choice_temp;
iMoney=getsalary();
printf("请输入需要存入的金额:");
scanf("%ld",&iPut);
printf("确认存入%ld元(输入n取消,任意键确认)\n",iPut);
choice_temp=getchar();//接收前一个字符串的\n
choice_temp=getchar();
if(choice_temp!='n'&&choice_temp!='N')
{
iMoney+=iPut;
change_money(iMoney);
printf("成功存入%ld元!\n",iPut);
}
}
void change_passwd()
{
long iPass_change_new1,iPass_change_new2;
long iPass;
FILE *fp;
fp=fopen("passwd.dat","w");
printf("校验通过,请输入新密码:");
scanf("%ld",&iPass_change_new1);
printf("请再次输入新密码:");
scanf("%ld",&iPass_change_new2);
while(iPass_change_new1!=iPass_change_new2)
{
printf("两次结果不一致,请重新输入!\n");
printf("校验通过,请输入新密码:");
scanf("%ld",&iPass_change_new1);
printf("请再次输入新密码:");
scanf("%ld",&iPass_change_new2);
}
iPass=iPass_change_new1;
fprintf(fp,"%ld",iPass);
fclose(fp);
printf("修改密码成功!\n");
}
C语言程序设计提高篇应用程序设计-CSDN银行2.0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.