第63节 银行储蓄系统再开发

一.设计目标

在这里插入图片描述
二.软件结构
在这里插入图片描述
三.接口设计

1.设计各个功能函数

int    函数_验证密码();

void   函数_业务驱动();

void   函数_显示菜单();

double 函数_获得余额();

double 函数_取款业务(double);

double 函数_存款业务(double);

void   函数_改密业务();

void   函数_保存数据(double);

2.公共数据(账户余额)的处理方案:

1.用全局变量存储;(一般不建议,增加耦合,不易阅读)

2.用局部变量存储,在各模块间通过参数传递;(建议)

三.整体框架

/声明头文件及自定义函数;/
#include <stdio.h>
#include <Windows.h>
int    函数_验证密码();
void   函数_业务驱动();
void   函数_显示菜单();
double 函数_获得余额();
double 函数_取款业务(double);
double 函数_存款业务(double);
void   函数_改密业务();
void   函数_保存数据(double);

/主函数内,写好基本框架;/
int main()
{
	if (函数_验证密码())
	{
		函数_业务驱动();
	}
	return 0;
}

/定义各个功能函数;/
int    函数_验证密码() {...}
void   函数_业务驱动() {...}
void   函数_显示菜单() {...}
double 函数_获得余额() {...}
double 函数_取款业务(double 变量_账户余额) {...}
double 函数_存款业务(double 变量_账户余额) {...}
void   函数_改密业务() {...}
void   函数_保存数据(double 变量_账户余额) {...}

四.具体代码

(变量/函数用中文命名…英文不好,想名字太费脑,以后努力…)

//声明头文件及自定义函数;
#include <stdio.h>
#include <Windows.h>
int    函数_验证密码();
void   函数_业务驱动();
void   函数_显示菜单();
double 函数_获得余额();
double 函数_取款业务(double);
double 函数_存款业务(double);
void   函数_改密业务();
void   函数_保存数据(double);

//主函数内,写好基本框架;
int main()
{
	printf("欢迎光临CSDN银行!\n");
	if (函数_验证密码())
	{
		函数_业务驱动();
	}
	return 0;
}

//定义各个功能函数;
int    函数_验证密码()
{
	int 变量_输入密码;
	int 变量_正确密码;
	int 变量_尝试次数 = 3;
	FILE* 指针_文件操作;

	fopen_s(&指针_文件操作, "密码文件.txt", "r");
	if (指针_文件操作 == NULL)
	{
		printf("密码文件打开失败!\n");
		exit(0);
	}
	fscanf_s(指针_文件操作, "%d", &变量_正确密码);
	fclose(指针_文件操作);
	printf("密码文件读取成功!\n");

	do
	{
		变量_尝试次数--;
		printf("请输入密码: ");
		scanf_s("%d", &变量_输入密码);
		if (变量_输入密码 == 变量_正确密码)
		{
			printf("密码验证通过!\n");
			break;
		}
		else if(变量_尝试次数>0)
		{
			printf("密码错误,您还有%d次机会.\n", 变量_尝试次数);
		}
		else
		{
			printf("三次密码输入错误,不能进入系统.\n");
		}
	} while (变量_尝试次数);
	return 变量_尝试次数;
}
void   函数_业务驱动()
{
	int 变量_菜单选择;
	double 变量_账户余额;
	变量_账户余额 = 函数_获得余额();
	do
	{
		函数_显示菜单();
		printf("请输入(0-4): ");
		scanf_s("%d", &变量_菜单选择);
		switch (变量_菜单选择)
		{
		case 1:
			printf("您的余额有%.2f元.\n", 变量_账户余额); break;
		case 2:
			变量_账户余额 = 函数_取款业务(变量_账户余额); break;
		case 3:
			变量_账户余额 = 函数_存款业务(变量_账户余额); break;
		case 4:
			函数_改密业务(); break;
		case 0:
			printf("欢迎您再来!\n");
		}
	} while (变量_菜单选择);
	函数_保存数据(变量_账户余额);
}
void   函数_显示菜单()
{
	printf("\n选择业务: \n");
	printf("  1.查询\n");
	printf("  2.取款\n");
	printf("  3.存款\n");
	printf("  4.改密\n");
	printf("  0.退出\n");
}
double 函数_获得余额()
{
	double 变量_账户余额;
	FILE* 指针_文件操作;
	fopen_s(&指针_文件操作, "余额文件.dat", "r");
	if (指针_文件操作 == NULL)
	{
		printf("打开余额文件失败!\n");
		exit(0);
	}
	printf("余额文件打开成功!\n");
	fscanf_s(指针_文件操作, "%lf", &变量_账户余额);
	fclose(指针_文件操作);
	return 变量_账户余额;
}
double 函数_取款业务(double 变量_账户余额)
{
	double 变量_取款金额;
	printf("请输入取款金额: ");
	scanf_s("%lf", &变量_取款金额);
	if (变量_取款金额 <= 变量_账户余额)
	{
		变量_账户余额 -= 变量_取款金额;
		printf("取款后,您有%.2f元.\n", 变量_账户余额);
	}
	else
	{
		printf("余额不足,取款失败!\n");
	}
	return 变量_账户余额;
}
double 函数_存款业务(double 变量_账户余额)
{
	double 变量_存款金额;
	printf("输入存款额度: ");
	scanf_s("%lf", &变量_存款金额);
	变量_账户余额 += 变量_存款金额;
	printf("存款后,您有%.2f元.\n", 变量_账户余额);
	return 变量_账户余额;
}
void   函数_改密业务()
{
	FILE* 指针_文件操作;
	int 变量_新密码一, 变量_新密码二;
	printf("请输入新密码: ");
	scanf_s("%d", &变量_新密码一);
	printf("再输入新密码: ");
	scanf_s("%d", &变量_新密码二);
	if (变量_新密码一 == 变量_新密码二)
	{
		printf("密码修改成功,请注意保密!\n");
		fopen_s(&指针_文件操作, "密码文件.txt", "w");
		if (指针_文件操作 == NULL)
		{
			printf("密码文件打开失败!\n");
			exit(0);
		}
		fprintf(指针_文件操作, "%d", 变量_新密码一);
		fclose(指针_文件操作);
	}
	else
	{
		printf("两次输入不一致,密码修改失败!\n");
	}

}
void   函数_保存数据(double 变量_账户余额)
{
	FILE* 指针_文件操作;
	fopen_s(&指针_文件操作, "余额文件.dat", "w");
	if (指针_文件操作 == NULL)
	{
		printf("打开文件失败!\n");
		exit(0);
	}
	fprintf(指针_文件操作, "%f", 变量_账户余额);
	fclose(指针_文件操作);
}

五.分析/分解

1.分析: 善于通过现象看本质,提炼出类似"通用公式"的规律性的东西;

2.分解: 善于将一个动作分解为细小的步骤,再逐步细化大而复杂的问题.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值