1.问题描述
用c语言编写一个简化的银行自动存款系统(函数版);适合刚接触C语言,尝试编写100多行代码的初学者作为参考。该代码编写围绕着银行ATM机器的4个业务;分别是查询、取款、存款、修改密码;其中需要两个文件;一个为DrawMoney.txt文档文件存放银行存有的金额,一个为PassWord.txt用来保存密码,放在c代码保存文件名下面,如图:
DrawMoney.txt文件里面设定任意大小的整数金额;
PassWord.txt文件里面存放任意一个初始密码:
2.程序代码
#include <stdio.h>
#include <stdlib.h>
/*
*csdn学院--2016级
*目的:让代码见证成长(作为一个初学的菜鸟,如
*大家有发现错误,欢迎指正!)
*文件名称:BankSystemProject1.c
*问题描述:c语言开发简化版银行系统:ATM取款机
*作者:小臣小仁
*完成日期:2020年2月18日
*/
int Pass(); //验证密码
void work(); //业务驱动
void showMenu();// 显示菜单
double openSaveMoney();//查询余额
void drawMoney( );//取款
void saveMoney(); //存款
void changePass(); //修改密码
double openSaveMoney();//打开银行余额文件
void saveBalance(double Balance);//打开保存余额
int openPassWord(); //打开有密码的文件
void SavePassWord(int iPass);//保存修改密码
int main()
{
printf("-------欢迎来到CSDN银行---------\n");
if(Pass())
{
work();
}
return 0;
}
/*---------验证密码----------*/
int Pass()
{
int try = 3;
int iPass;
do
{
printf("请输入密码:");
scanf("%d",&iPass);
if(try > 0)
{
if(iPass != openPassWord())//打开银行余额文件
{
printf("密码输入错误%d次,您还有%d次机会:\n",4-try,try-1);
printf("请重新输入密码:\n");
try--;
}
else
break;
}
else
{
printf("密码有误,退出系统\n");
exit(0);
}
}while(try);
return (try);
}
/*------------业务驱动---------*/
void work()
{
int iChoice; //业务选项
do
{
showMenu();//显示菜单
printf("请输入选项0~4\n");
scanf("%d",&iChoice);
switch(iChoice)
{
case 1://查询
printf("您的余额还有:%.2lf\n",openSaveMoney());
break;
case 2: //存款
saveMoney();
break;
case 3://取款
drawMoney();
break;
case 4://修改密码
changePass();
break;
case 0://退出
break;
}
}while(iChoice);
}
/*---------显示菜单----------*/
void showMenu()
{
printf("------------------\n");
printf("1.查询\n");
printf("2.存款\n");
printf("3.取款\n");
printf("4.改密码\n");
printf("0.退出\n");
printf("-----------------\n");
}
/*----------取款------------*/
void drawMoney()
{
double Balance; //银行账户余额
double getMoney; //取款金额
printf("请输入取款金额:\n");
scanf("%lf",&getMoney);
Balance = openSaveMoney();//取出余额数目
if(Balance<getMoney) //取款数目大于余额
{
printf("存款余额不足\n");
exit(0);
}
else
{
Balance -=getMoney; //银行账户余额
printf("已取款%.2lf\n账户余额为:%.2lf\n",getMoney,Balance);
}
saveBalance(Balance); //保存存款后的金额
}
/*----------------存款---------------*/
void saveMoney()
{
double iMoney; //存款金额
double saveMoney;//账户金额
printf("请输入存款金额\n");
scanf("%lf",&iMoney); //存款数目
saveMoney = openSaveMoney();
saveMoney +=iMoney;
printf("您已经成功存入金额:%lf,\n账户余额为:%lf\n",iMoney,saveMoney);
saveBalance(saveMoney); //保存存款后的金额
}
/*---------------修改密码--------------*/
void changePass()
{
int NewPass1; //校验密码1
int NewPass2; //校验密码2
printf("请输入新设定密码:\n");
scanf("%d",&NewPass1);
printf("请重新输入新设定密码\n");
scanf("%d",&NewPass2);
if(NewPass1 == NewPass2)
{
printf("密码设置成功\n");
SavePassWord(NewPass1);
}
else
{
printf("密码前后不一致\n");
}
}
/*-----------打开银行余额文件-----------*/
double openSaveMoney()
{
FILE *fp;
double Balance;
if((fp = fopen("DrawMoney.txt","r")) == NULL)
{
printf("Cannot file open\n");
exit(0);
}
fscanf(fp,"%lf",&Balance);
fclose(fp);
return(Balance);
}
/*------------保存余额----------*/
void saveBalance(double Balance)
{
FILE *fp;
if((fp = fopen("DrawMoney.txt","w")) == NULL)
{
printf("Cannot file open\n");
exit(0);
}
fprintf(fp,"%lf",Balance);
fclose(fp);
}
/*-----------打开文件密码----------*/
int openPassWord()
{
FILE *fp;
int iPass;
if((fp = fopen("PassWord.txt","r"))==NULL)
{
printf("Cannot file open!\n");
exit(0);
}
fscanf(fp,"%d",&iPass);
fclose(fp);
return iPass;
}
/*-----------保存修改密码----------*/
void SavePassWord(int iPass)
{
FILE *fp;
if((fp = fopen("PassWord.txt","w"))==NULL)
{
printf("Cannot file open!\n");
exit(0);
}
fprintf(fp,"%d",iPass);
fclose(fp);
}
3.运行结果
4.心得体会
该程序还有诸多需要完善的地方,考虑到代码编译量小的初学者,也供参考。同时作为一个程序小白,有错误的地方也希望给与指正,谢谢啦!考虑到很多朋友跟我一样对c比较生疏,同时准备了一个不是函数版本的银行存取款ATM系统;供大家参考:
银行存取款ATM系统(点击打开)。
简化版银行系统完整版(点击打开)