C语言实现模拟银行系统

C语言实现模拟银行系统攻略

概述

本文将介绍如何采用C语言实现简单的模拟银行系统。该系统主要包含账户管理、存款、取款、转账、查询余额等功能。

系统设计

账户结构体

一个账户包含三个属性:账户号、账户余额和持有者姓名。定义一个结构体表示账户:

typedef struct account_t {
    int account_no; //账户号
    float balance; //账户余额
    char holder_name[20]; //账户持有者姓名
} Account;

系统函数

根据系统需要,实现一些相关的函数,例如:

初始化账户系统

定义一个函数来初始化账户系统,主要完成以下两个任务:
- 设置系统当前账户个数为0;
- 动态创建一定数量的账户结构体数组的内存空间。

#define MAX_ACCOUNTS 10
Account *accounts[MAX_ACCOUNTS]; //定义一个指针数组,存储所有账户结构体的地址
int account_count; //账户总数,即accounts数组中已有元素个数

void init_system()
{
    account_count = 0;
    for (int i=0; i<MAX_ACCOUNTS; i++) {
        accounts[i] = NULL;
    }
}

创建账户

定义一个函数来创建账户并添加到账户系统中,主要完成以下四个任务:
- 检查是否已经达到最大账户数量;
- 根据用户输入的信息创建一个账户结构体;
- 将新创建的账户结构体指针添加到accounts数组中;
- 增加账户总数。

void create_account()
{
    if (account_count >= MAX_ACCOUNTS) {
        printf("系统最多只能支持%d个账户!", MAX_ACCOUNTS);
        return;
    }

    Account *account = (Account*)malloc(sizeof(Account));
    printf("请输入新账户号:");
    scanf("%d", &account->account_no);
    printf("请输入账户余额:");
    scanf("%f", &account->balance);
    printf("请输入账户持有者姓名:");
    scanf("%s", account->holder_name);

    accounts[account_count++] = account;
    printf("账户创建成功!\n");
    print_account(account);
}

存款

定义一个函数来存款,主要完成以下三个任务:
- 搜索指定账户在accounts数组中的索引;
- 判断账户是否存在;
- 增加账户余额。

void deposit(int account_no, float amount)
{
    int account_index = find_account_index(account_no);
    if (account_index == -1) {
        printf("账户 %d 不存在!", account_no);
        return;
    }
    accounts[account_index]->balance += amount;
    printf("存款成功!\n");
    print_account(accounts[account_index]);
}

取款

定义一个函数来取款,主要完成以下四个任务:
- 搜索指定账户在accounts数组中的索引;
- 判断账户是否存在;
- 判断账户余额是否充足;
- 减少账户余额。

void withdraw(int account_no, float amount)
{
    int account_index = find_account_index(account_no);
    if (account_index == -1) {
        printf("账户 %d 不存在!", account_no);
        return;
    }
    if (accounts[account_index]->balance < amount) {
        printf("账户余额不足!");
        return;
    }
    accounts[account_index]->balance -= amount;
    printf("取款成功!\n");
    print_account(accounts[account_index]);
}

转账

定义一个函数来转账,主要完成以下五个任务:
- 搜索发起转账的账户和收到转账的账户在accounts数组中的索引;
- 判断发起转账的账户是否存在;
- 判断接收转账的账户是否存在;
- 判断发起转账的账户余额是否充足;
- 减少发起转账的账户余额,增加接收转账的账户余额。

void transfer(int from_account_no, int to_account_no, float amount)
{
    int from_account_index = find_account_index(from_account_no);
    if (from_account_index == -1) {
        printf("发起转账的账户 %d 不存在!", from_account_no);
        return;
    }
    int to_account_index = find_account_index(to_account_no);
    if (to_account_index == -1) {
        printf("接收转账的账户 %d 不存在!", to_account_no);
        return;
    }
    if (accounts[from_account_index]->balance < amount) {
        printf("发起转账的账户余额不足!");
        return;
    }
    accounts[from_account_index]->balance -= amount;
    accounts[to_account_index]->balance += amount;
    printf("转账成功!\n");
    print_account(accounts[from_account_index]);
    print_account(accounts[to_account_index]);
}

查询余额

定义一个函数来查询余额,主要完成以下两个任务:
- 搜索指定账户在accounts数组中的索引;
- 判断账户是否存在,若存在则输出账户余额。

void check_balance(int account_no)
{
    int account_index = find_account_index(account_no);
    if (account_index == -1) {
        printf("账户 %d 不存在!", account_no);
        return;
    }
    printf("%s的账户余额为:%.2f元\n", accounts[account_index]->holder_name, accounts[account_index]->balance);
}

搜索函数

定义一个函数来搜索指定账户在accounts数组中的索引,若目标账户不存在则返回-1。

int find_account_index(int account_no)
{
    for (int i=0; i<account_count; i++) {
        if (accounts[i]->account_no == account_no) {
            return i;
        }
    }
    return -1;
}

示例演示

以下是示例演示的两个场景:

情景一:创建账户、存款、取款、查询余额

//启动系统
init_system();

//创建账户1
create_account();

//存款
deposit(1, 1000);

//取款
withdraw(1, 500);

//查询余额
check_balance(1);

输出结果:

请输入新账户号:1
请输入账户余额:999.99
请输入账户持有者姓名:Tom
账户创建成功!
账户号:1, 账户余额:999.99元, 账户持有者:Tom
存款成功!
账户号:1, 账户余额:1000.00元, 账户持有者:Tom
取款成功!
账户号:1, 账户余额:500.00元, 账户持有者:Tom
Tom的账户余额为:500.00元

情景二:创建账户、转账、查询余额

//启动系统
init_system();

//创建账户1
create_account();

//创建账户2
create_account();

//转账
transfer(1, 2, 500);

//查询余额
check_balance(1);
check_balance(2);

输出结果:

请输入新账户号:1
请输入账户余额:1000
请输入账户持有者姓名:Tom
账户创建成功!
账户号:1, 账户余额:1000.00元, 账户持有者:Tom
请输入新账户号:2
请输入账户余额:0
请输入账户持有者姓名:Jerry
账户创建成功!
账户号:2, 账户余额:0.00元, 账户持有者:Jerry
转账成功!
账户号:1, 账户余额:500.00元, 账户持有者:Tom
账户号:2, 账户余额:500.00元, 账户持有者:Jerry
Tom的账户余额为:500.00元
Jerry的账户余额为:500.00元

总结

本文简单介绍了如何采用C语言实现模拟银行系统,涵盖了账户管理、存款、取款、转账、查询余额等功能。系统设计合理,代码简洁易懂,并提供了示例代码供读者参考。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现模拟银行系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C语言字符串替换:字符,字符串,字符数组详解

    C语言字符串替换:字符、字符串、字符数组详解 在C语言中,字符串替换是一个很基础的操作,常用的字符串替换包括用指定字符替换一个字符串中的某个字符,用指定字符串替换一个字符串中的某个子串,以及用另一个字符串替换一个字符数组中的某个子数组等。本文将详细讲解这三种情况的操作方法。 用指定字符替换一个字符串中的某个字符 首先让我们看一个简单的例子。下面的代码将见一个…

    C 2023年5月23日
    00
  • 基于C语言实现五子棋游戏完整实例代码

    基于C语言实现五子棋游戏完整实例代码攻略 1. 程序概述 五子棋,一种传统的策略性棋类游戏。本文主要介绍使用C语言编写五子棋游戏的实例代码过程。该代码使用了控制台界面实现,基于Windows操作系统。 2. 程序实现 (1)游戏逻辑实现 游戏逻辑设计了游戏的核心模块,包括棋盘的绘制、游戏过程的实时响应、胜负判断等等。游戏逻辑由主函数以及多个子函数组成。 (2…

    C 2023年5月23日
    00
  • 帮VS2019 找回丢失的 SDK问题

    下面是详细讲解“帮VS2019 找回丢失的 SDK问题”的完整攻略: 问题背景 我们在使用VS2019进行开发的过程中,有时候会遇到一些编译错误,提示找不到指定的SDK。这个时候,我们就需要找回这些丢失的SDK,才能正常地进行开发和编译。 解决方法 我们可以通过以下两种方法来找回丢失的SDK: 方法1:通过Visual Studio Installer重新安…

    C 2023年5月23日
    00
  • 详解C/C++如何获取路径下所有文件及其子目录的文件名

    获取一个文件夹下的所有文件及其子目录的文件名可以通过递归遍历文件夹来完成。以下是几个示例代码,演示如何实现这个功能。 方法一:使用C++17中的std::filesystem 基于C++17标准,可以使用std::filesystem库来遍历目录。下面是示例代码: #include <iostream> #include <filesyst…

    C 2023年5月23日
    00
  • C程序 Hello World

    下面就为大家详细讲解一下C程序 HelloWorld的完整使用攻略。 1. 创建C程序 首先,我们需要在本地电脑上安装C语言编译器。常用的编译器有GCC、Clang等,其中GCC是最为常见的一个编译器。 在Windows上安装GCC编译器 下载MinGW安装包(http://www.mingw.org/),并按照提示安装。 将MinGW的bin目录加入到系统…

    C 2023年5月9日
    00
  • C语言折半查找法介绍及使用示例

    C语言折半查找法介绍及使用示例 什么是折半查找法 折半查找法(也称二分查找法)是一种常用的查找算法。它是根据定位元素与查找范围中间元素的比较结果,将查找范围逐渐缩小,最终定位到所查找的元素的过程。 其基本思路可以用以下伪代码表示: // array是一个已经按照从小到大排序好的数组,n是数组长度,x是要查找的元素 binary_search(array, n…

    C 2023年5月22日
    00
  • Oracle实现行转换成列的方法

    实现行转换成列是很实用的功能,在Oracle中可以使用PIVOT关键字实现。下面是具体步骤: 步骤一:创建表和插入数据 首先,我们需要创建一个表并插入一些数据。这些数据的格式应该是需要被转换的,也就是需要转换成列。 我们创建一个表名为sales,包括以下列:product,year和amount。并向其中插入一些数据。 CREATE TABLE sales …

    C 2023年5月22日
    00
  • 基于C++实现五子棋AI算法思想

    基于C++实现五子棋AI算法思想 介绍 五子棋是一种简单而经典的棋类游戏,但是对于机器来说,要想通过计算机程序成为一名优秀的五子棋选手并非易事。因此,我们需要掌握一些基本的五子棋AI算法思想,通过编写C++程序实现这些算法,并应用于五子棋游戏中。 五子棋AI算法思想 五子棋AI算法思想主要包括常规算法和启发式算法两种类型。常规算法即为基于对局分析的算法,它在…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部