用C语言编写简化版银行系统:ATM取款机(函数版)

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系统(点击打开)。

简化版银行系统完整版(点击打开)

 

 

  • 6
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是一个简单的C语言ATM取款机的示例代码,包含了一些基本的功能: ```c #include <stdio.h> // 假定账户余额为1000元 double balance = 1000.0; // 取款函数 void withdraw(double amount) { if (balance >= amount) { balance -= amount; printf("取款%.2f元成功,余额%.2f元\n", amount, balance); } else { printf("余额不足,无法取款\n"); } } // 存款函数 void deposit(double amount) { balance += amount; printf("存款%.2f元成功,余额%.2f元\n", amount, balance); } // 查询余额函数 void inquire() { printf("当前余额为:%.2f元\n", balance); } int main() { int choice; double amount; while (1) { // 显示菜单 printf("\n请选择需要的操作:\n"); printf("1. 取款\n"); printf("2. 存款\n"); printf("3. 查询余额\n"); printf("4. 退出\n"); printf("请输入选择的序号:"); // 获取用户输入 scanf("%d", &choice); // 根据用户选择执行相应的操作 switch (choice) { case 1: printf("请输入取款金额:"); scanf("%lf", &amount); withdraw(amount); break; case 2: printf("请输入存款金额:"); scanf("%lf", &amount); deposit(amount); break; case 3: inquire(); break; case 4: printf("再见!\n"); return 0; default: printf("无效的选择,请重新输入\n"); break; } } } ``` 这个示例代码实现了一个简单的ATM取款机,包括取款、存款和查询余额三个功能。用户可以根据菜单进行选择,并进行相应的操作。在这个示例中,账户余额被保存在全局变量`balance`中,取款、存款和查询余额的函数分别实现了相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值