第47节 银行储蓄系统开发

/*
说明:
	本程序在学习者仅掌握了基本数据类型和控制结构的前提下设计,模拟银行储蓄系统的基本功能。
	在运行前,请建立文件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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值