贺老师教学 链接 C语言及程序设计初步本课讲解 简单银行系统的初步框架 #include stdio.h #include stdlib.h int main () { int iPass ; int iChoice ; printf ( "欢迎您光临
贺老师教学链接 C语言及程序设计初步 本课讲解
简单银行系统的初步框架
int main()
{
int iPass;
int iChoice;
printf("欢迎您光临CSDN银行\n");
printf("请输入密码:");
scanf("%d", &iPass);
if(iPass!=123456)
{
printf("不要着急,想好了再输入……\n");
exit(0);
}
do
{
printf("\n您可以办理下面的业务:\n");
printf(" 1.查询\n");
printf(" 2.取款\n");
printf(" 3.存款\n");
printf(" 4.改密码\n");
printf(" 0.退出\n");
printf("请输入(0-4):");
scanf("%d", &iChoice);
switch(iChoice)
{
case 1:
printf("您的余额有100W. \n");
break;
case 2:
printf("理智消费. \n");
break;
case 3:
printf("勤俭持家. \n");
break;
case 4:
printf("请牢记你的密码. \n");
break;
case 0:
printf("欢迎您再来. \n");
}
}
while(iChoice);
return 0;
}
完整程序
说明:
本程序在学习者仅掌握了基本数据类型和控制结构的前提下设计,模拟银行储蓄系统的基本功能。
在运行前,请建立文件password.txt,其中存储一个整数,表示密码。
建立文件balance.dat,其中存储一个数,表示余额。
运行结束后,对数据所做的所有修改均可以利用文件保存下来。
本程序进一步的改进:
1、银行应该是多用户,而绝不可以是单个的用户
2、应该要记录详细的业务过程
3、增加转帐、挂失等功能
4、密码的加密存储以及密码输入隐藏
5、在程序的结构方面,100多行程序放在main函数中,已经显得复杂了。
随着课程进展,我们将继续完善这个程序。
*/
int main()
{
int iPass; //用户验证时输入的密码
int iPassInFile; //记录正确的密码
int iTry=0; //进入系统时尝试的次数
int iNewPass1, iNewPass2; //用于修改密码
int iChoice; //用于选择系统功能
double dBalance; //账户余额
double dMoney; //存取款金额
FILE *fp; //用于文件操作
printf("欢迎您光临CSDN银行\n");
//密码保存在文件中,先取出
if ((fp=fopen("password.txt", "r"))==NULL)
{
printf("password file cannot open!");
exit(0);
}
fscanf(fp, "%d", &iPassInFile);
fclose(fp);
//进入系统,密码三次不对将退出
do
{
iTry++;
printf("请输入密码:");
scanf("%d", &iPass);
if(iPass==iPassInFile)
break;
else
{
if(iTry<3)
printf("超过3次将退出,你已经尝试%d次!\n", iTry);
else
{
printf("对不起,你不能进入系统\n");
exit(0);
}
}
}
while(1);
//从文件中取出余额
if ((fp=fopen("balance.dat", "r"))==NULL)
{
printf("data file cannot open!");
exit(0);
}
fscanf(fp, "%lf", &dBalance);
fclose(fp);
//办理业务
do
{
printf("\n您可以办理下面的业务:\n");
printf(" 1.查询\n");
printf(" 2.取款\n");
printf(" 3.存款\n");
printf(" 4.改密码\n");
printf(" 0.退出\n");
printf("请输入(0-4):");
scanf("%d", &iChoice);
switch(iChoice)
{
case 1:
printf("您的余额有%.2lf元. \n",dBalance);
break;
case 2:
printf("输入取款额: ");
scanf("%lf", &dMoney);
if(dBalance>dMoney)
{
dBalance-=dMoney;
printf("取款后,您还有%.2lf元. \n",dBalance);
}
else
printf("余额不足,取款失败. \n");
break;
case 3:
printf("输入存款额: ");
scanf("%lf", &dMoney);
dBalance+=dMoney;
printf("存款后,您有%.2f元. \n",dBalance);
break;
case 4:
printf("请输入新密码:");
scanf("%d", &iNewPass1);
printf("再输入新密码:");
scanf("%d", &iNewPass2);
if(iNewPass1==iNewPass2)
{
iPassInFile = iNewPass1;
printf("密码修改成功,请注意保密.\n");
}
else
printf("两次输入不一致,密码修改失败.\n");
break;
case 0:
printf("欢迎您再来. \n");
}
}
while(iChoice);
//保存余额
if ((fp=fopen("balance.dat", "w"))==NULL)
{
printf("data file cannot open!");
exit(0);
}
fprintf(fp, "%f", dBalance);
fclose(fp);
//保存密码(可能修改过)
if ((fp=fopen("password.txt", "w"))==NULL)
{
printf("password file cannot open!");
exit(0);
}
fprintf(fp, "%d", iPassInFile);
fclose(fp);
return 0;
}