小型银行系统函数版
2016-06-28 22:44
501 查看
任务和代码:小型银行系统
/*
文件名:main.c
作者:小风景
完成日期:2016.6.28
问题描述:小型银行系统函数版
程序输出:
*/
#include <stdio.h>
#include <stdlib.h>
int pass();
void work();
void showMenu();
double save(double x);
double withDraw(double x);
double getBalances();
void saveBalance(double x);
int updatePassword();
/*主函数*/
int main()
{
printf("欢迎光临CSDN银行\n");
if(pass())
{
work();
}
return 0;
}
/*
功能:验证用户密码
返回值:密码正确,返回正数,验证失败,返回0
*/
int pass()
{
int iPass = 0; //用户验证时输入的密码
int iPassInFile = 0; //保存在文件中的密码
int iTry = 3; //验证密码的次数
FILE *fp; //用于文件操作
//读取保存在文件中的密码
fp = fopen("password.txt","r");
if(fp == NULL)
{
printf("password file can not open!\n");
exit(0);
}
fscanf(fp,"%d",&iPassInFile);
fclose(fp);
//进入系统,密码三次不对将会退出
do
{
iTry--;
printf("请输入密码:");
scanf("%d",&iPass);
if(iPass == iPassInFile) //判断输入正确,结束
{
iTry ++;
break;
}
//如果输入错误,提醒并从新输入
if(iTry > 0)
{
printf("您输入的密码不正确,您还有%d尝试的机会!\n",iTry);
continue;
}
else
{
printf("对不起,您不能进入系统!\n");
}
}
while(iTry);
return iTry;
}
void work()
{
int iChoice; //用于选择功能系统
double dBalance; //用于显示账户余额
dBalance = getBalances();
//办理业务
do
{
showMenu();
//选择功能并进行处理
printf("请输入(0-4):");
scanf("%d",&iChoice);
switch(iChoice)
{
case 1:
printf("您的余额为%.2f元!\n",dBalance);
break;
case 2:
dBalance = withDraw(dBalance);
break;
case 3:
dBalance = save(dBalance);
break;
case 4:
updatePassword();
break;
case 0:
printf("欢迎您再来!\n");
}
}
while(iChoice);
saveBalance(dBalance);
}
void showMenu()
{
printf("\n业务选择:\n");
printf(" 1、查询\n");
printf(" 2、取款\n");
printf(" 3、存款\n");
printf(" 4、改密码\n");
printf(" 0、退出\n");
}
double getBalances()
{
double balance;
FILE *fp;
fp = fopen("balance.txt","r");
if(fp == NULL)
{
printf("data file can't open!\n");
exit(0);
}
fscanf(fp,"%lf",&balance);
fclose(fp);
return balance;
}
double save(double x)
{
double dMoney;
printf("请输入存款金额:\n");
scanf("%lf",&dMoney);
x += dMoney;
printf("存款后,您有%.2f元\n",dMoney);
return dMoney;
}
double withDraw(double x)
{
double dMoney;
printf("请输入取款金额:\n");
scanf("%lf",&dMoney);
if(x >= dMoney)
{
x = x - dMoney;
printf("取款后,您的余额为%.2f元\n",x);
}
else
{
printf("您的余额不足,取款失败!\n");
}
return x;
}
int updatePassword()
{
int iNewPassword1;
int iNewPassword2;
int iPasswordInFile;
FILE *fp;
printf("请输入新密码:\n");
scanf("%d",&iNewPassword1);
printf("请再次输入密码:\n");
scanf("%d",&iNewPassword2);
if(iNewPassword1 == iNewPassword2)
{
iPasswordInFile =iNewPassword1;
fp = fopen("password.txt","w");
if(fp == NULL)
{
printf("password file can not open!\n");
exit(0);
}
fprintf(fp,"%d",iPasswordInFile);
fclose(fp);
printf("修改成功,您的密码已变更!\n");
}
else
{
printf("两次输入不一致,修改密码失败!\n");
}
return 0;
}
void saveBalance(double x)
{
FILE *fp;
if((fp = fopen("balance.txt","w")) == NULL)
{
printf("data file can't open!\n");
exit(0);
}
fprintf(fp,"%lf",x);
fclose(fp);
}
程序运行结果:
总结:从一个main函数,到通过main函数中调用函数来实现功能,到现在的小型银行系统函数版,我们通过对大项目的拆解,将其系统的划分为一个个独立的小项目,通过对外提供接口被外部调用完成功能,内部通过特定独立的算法完成功能。我们通过这些函数的组合来完成更大的项目。
/*
文件名:main.c
作者:小风景
完成日期:2016.6.28
问题描述:小型银行系统函数版
程序输出:
*/
#include <stdio.h>
#include <stdlib.h>
int pass();
void work();
void showMenu();
double save(double x);
double withDraw(double x);
double getBalances();
void saveBalance(double x);
int updatePassword();
/*主函数*/
int main()
{
printf("欢迎光临CSDN银行\n");
if(pass())
{
work();
}
return 0;
}
/*
功能:验证用户密码
返回值:密码正确,返回正数,验证失败,返回0
*/
int pass()
{
int iPass = 0; //用户验证时输入的密码
int iPassInFile = 0; //保存在文件中的密码
int iTry = 3; //验证密码的次数
FILE *fp; //用于文件操作
//读取保存在文件中的密码
fp = fopen("password.txt","r");
if(fp == NULL)
{
printf("password file can not open!\n");
exit(0);
}
fscanf(fp,"%d",&iPassInFile);
fclose(fp);
//进入系统,密码三次不对将会退出
do
{
iTry--;
printf("请输入密码:");
scanf("%d",&iPass);
if(iPass == iPassInFile) //判断输入正确,结束
{
iTry ++;
break;
}
//如果输入错误,提醒并从新输入
if(iTry > 0)
{
printf("您输入的密码不正确,您还有%d尝试的机会!\n",iTry);
continue;
}
else
{
printf("对不起,您不能进入系统!\n");
}
}
while(iTry);
return iTry;
}
void work()
{
int iChoice; //用于选择功能系统
double dBalance; //用于显示账户余额
dBalance = getBalances();
//办理业务
do
{
showMenu();
//选择功能并进行处理
printf("请输入(0-4):");
scanf("%d",&iChoice);
switch(iChoice)
{
case 1:
printf("您的余额为%.2f元!\n",dBalance);
break;
case 2:
dBalance = withDraw(dBalance);
break;
case 3:
dBalance = save(dBalance);
break;
case 4:
updatePassword();
break;
case 0:
printf("欢迎您再来!\n");
}
}
while(iChoice);
saveBalance(dBalance);
}
void showMenu()
{
printf("\n业务选择:\n");
printf(" 1、查询\n");
printf(" 2、取款\n");
printf(" 3、存款\n");
printf(" 4、改密码\n");
printf(" 0、退出\n");
}
double getBalances()
{
double balance;
FILE *fp;
fp = fopen("balance.txt","r");
if(fp == NULL)
{
printf("data file can't open!\n");
exit(0);
}
fscanf(fp,"%lf",&balance);
fclose(fp);
return balance;
}
double save(double x)
{
double dMoney;
printf("请输入存款金额:\n");
scanf("%lf",&dMoney);
x += dMoney;
printf("存款后,您有%.2f元\n",dMoney);
return dMoney;
}
double withDraw(double x)
{
double dMoney;
printf("请输入取款金额:\n");
scanf("%lf",&dMoney);
if(x >= dMoney)
{
x = x - dMoney;
printf("取款后,您的余额为%.2f元\n",x);
}
else
{
printf("您的余额不足,取款失败!\n");
}
return x;
}
int updatePassword()
{
int iNewPassword1;
int iNewPassword2;
int iPasswordInFile;
FILE *fp;
printf("请输入新密码:\n");
scanf("%d",&iNewPassword1);
printf("请再次输入密码:\n");
scanf("%d",&iNewPassword2);
if(iNewPassword1 == iNewPassword2)
{
iPasswordInFile =iNewPassword1;
fp = fopen("password.txt","w");
if(fp == NULL)
{
printf("password file can not open!\n");
exit(0);
}
fprintf(fp,"%d",iPasswordInFile);
fclose(fp);
printf("修改成功,您的密码已变更!\n");
}
else
{
printf("两次输入不一致,修改密码失败!\n");
}
return 0;
}
void saveBalance(double x)
{
FILE *fp;
if((fp = fopen("balance.txt","w")) == NULL)
{
printf("data file can't open!\n");
exit(0);
}
fprintf(fp,"%lf",x);
fclose(fp);
}
程序运行结果:
总结:从一个main函数,到通过main函数中调用函数来实现功能,到现在的小型银行系统函数版,我们通过对大项目的拆解,将其系统的划分为一个个独立的小项目,通过对外提供接口被外部调用完成功能,内部通过特定独立的算法完成功能。我们通过这些函数的组合来完成更大的项目。
相关文章推荐
- android 代码实现控件之间的间距
- 如何组织构建多文件 C 语言程序(二)
- [Android]在代码里运行另一个程序的方法
- 如何写好 C main 函数
- 肯特·贝克:改变人生的代码整理魔法
- 网页恶意代码的预防
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- 高手写的Tracer-Flash代码调试类代码下载
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- CSS代码缩写技巧
- 非主流Q-zOne代码代码搜集第1/2页
- ASP下经常用的字符串等函数参考资料
- CreateWeb.vbs 代码
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记