/*
说明:
本程序在学习者仅掌握了基本数据类型和控制结构的前提下设计,模拟银行储蓄系统的基本功能。
在运行前,请建立文件password.txt,其中存储一个整数,表示密码。
建立文件balance.dat,其中存储一个数,表示余额。
运行结束后,对数据所做的所有修改均可以利用文件保存下来。
本程序进一步的改进:
1、银行应该是多用户,而绝不可以是单个的用户
2、应该要记录详细的业务过程
3、增加转帐、挂失等功能
4、密码的加密存储以及密码输入隐藏
5、在程序的结构方面,100多行程序放在main函数中,已经显得复杂了。
随着课程进展,我们将继续完善这个程序。
版权声明:本文为CSDN博主「迂者 - 贺利坚」的原创文章
原文链接:https ://blog.csdn.net/sxhelijian/article/details/43231059
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int iPass; //用于验证用户输入的密码;
int iPassInFile; //记录正确的密码;
int iTry = 0; //进入系统时尝试的次数;
int iNewPass1, iNewPass2; //用于修改密码;
int iChoice; //用于选择系统功能;
double dBalance; //账户余额;
double dMoney; //存取款金额;
FILE* fp;//用于文件操作;
printf("欢迎光临CSDN银行\n");
//1.从文件中取出密码;
fopen_s(&fp, "password.txt", "r");//只读方式打开dingjin1.txt文件;
if (fp == NULL)//判断是否打开成功;
{
printf("打开密码文件失败!");//打开文件失败提示;
exit(0);//退出程序运行;
}
fscanf_s(fp, "%d", &iPassInFile);
fclose(fp);
do
{
iTry++;
printf("请输入密码: ");
scanf_s("%d", &iPass);
if (iPass == iPassInFile)
{
break;
}
else
{
if (iTry < 3)
{
printf("超过3次将推出,你已经尝试%d次!\n", iTry);
}
else
{
printf("对不起,你不能进入系统\n");
exit(0);
}
}
} while (1);
//从文件中取出余额;
fopen_s(&fp, "balance.dat", "r");
if (fp == NULL)
{
printf("打开余额文件失败!\n");
exit(0);
}
fscanf_s(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_s("%d", &iChoice);
switch (iChoice)
{
case 1:
printf("您的余额有%.2f元.\n", dBalance);
break;
case 2:
printf("输入取款额: ");
scanf_s("%lf", &dMoney);
if (dBalance > dMoney)
{
dBalance -= dMoney;
printf("取款后,您还有%.2f元 .\n", dBalance);
}
else
{
printf("余额不足,取款失败.\n");
}
break;
case 3:
printf("输入存款额: ");
scanf_s("%lf", &dMoney);
dBalance += dMoney;
printf("存款后,您有%.2f元.\n", dBalance);
break;
case 4:
printf("请输入新密码: ");
scanf_s("%d", &iNewPass1);
printf("再输入新密码: ");
scanf_s("%d", &iNewPass2);
if (iNewPass1 == iNewPass2)
{
iPassInFile = iNewPass1;
printf("密码修改成功,请注意保密.\n");
}
else
{
printf("两次输入不一致,密码修改失败.\n");
}
break;
case 0:
printf("欢迎您再来.\n");
}
} while (iChoice);
//保存余额
fopen_s(&fp, "password.txt", "w");
if (fp == NULL)
{
printf("写入password.txt文件失败!\n");
exit(0);
}
fprintf(fp, "%d", iPassInFile);
fclose(fp);
return 0;
}
总结:
1.只读打开文件—读入数据—关闭文件
fopen_s(&fp, "password.txt", "r");//只读方式打开dingjin1.txt文件;
if (fp == NULL)//判断是否打开成功;
{
printf("打开密码文件失败!");//打开文件失败提示;
exit(0);//退出程序运行;
}
fscanf_s(fp, "%d", &iPassInFile);
fclose(fp);
2.只写打开文件—写入数据—关闭文件
fopen_s(&fp, "password.txt", "w");
if (fp == NULL)
{
printf("写入password.txt文件失败!\n");
exit(0);
}
fprintf(fp, "%d", iPassInFile);
fclose(fp);