C语言实现模拟银行系统

yizhihongxing

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日

相关文章

  • win10应用程序中出现异常未知软件异常(0xe06d7363)的错误代码怎么办

    解决”win10应用程序中出现异常未知软件异常(0xe06d7363)的错误代码”这一问题的完整攻略如下: 1. 确认问题 第一步是确认问题。如果你的Windows 10系统中的应用程序出现了这个错误代码,那么这通常是由于某个应用程序组件出现了问题而导致的。这很可能是由于文件系统上的某种故障或应用程序使用的一些组件出现了问题而导致的。因此,首先要做的是确定哪…

    C 2023年5月23日
    00
  • C++如何调用已经写好的C接口

    C++语言中,调用C接口的过程分为两个步骤:首先是在C++文件中声明C接口函数,然后通过使用函数指针的方式调用C接口。 步骤一:在C++中声明C接口函数 在C++文件中,我们需要使用extern “C”语句来声明使用C接口函数。在这个语句的内部,我们声明C接口的函数名和参数,并且使用extern关键字来将该函数声明为外部函数。这样,在C++文件中的其他函数或…

    C 2023年5月23日
    00
  • C语言的优缺点是什么?

    C语言是一种高效性和可移植性强的程序设计语言,被广泛应用在操作系统、数据库、编译器等系统级软件的开发中。同时,C语言也是学习其他高级编程语言的必经之路。下面分别从优点和缺点两个方面详细讲解C语言。 C语言的优点 高效性:C语言是一种基于编译器的语言,编译器可以将C语言编写的代码编译成机器语言,因此C语言的执行效率非常高,在大规模和复杂计算场景下表现优异。 可…

    C 2023年4月27日
    00
  • C语言开发实现通讯录管理系统

    C语言开发实现通讯录管理系统 简介 本文将详细讲解如何使用C语言开发实现一套通讯录管理系统。通讯录管理系统可以帮助用户记录联系人信息,并可以通过一些代码进行添加、删除、修改、查询等操作。 技术方案 使用C语言实现通讯录管理系统,需要掌握以下技术: 结构体:用于定义联系人结构体,包含联系人姓名、电话等信息。 指针:用于对结构体地址进行操作。 动态内存分配:用于…

    C 2023年5月23日
    00
  • visio中怎么插入公式? visio编辑公式的详细教程

    在 Visio 中插入公式,需要使用到 Visio 自带的公式编辑器 Equation Editor。接下来,我将为您详细介绍在 Visio 中如何插入和编辑公式的步骤。 步骤1:打开 Equation Editor 在 Visio 中将光标放在所要插入公式的位置,然后打开 Equation Editor 的方法有两种: 使用快捷键“Alt”+“=”,或者 …

    C 2023年5月22日
    00
  • C指针原理教程之C快速入门

    “C指针原理教程之C快速入门”是一篇讲解C语言指针的指南,它详细地介绍了C指针的概念、基础与进阶知识,适用于所有初学者或需要加深自己基础知识的人。下面将为你详细讲解这篇攻略。 C指针原理教程之C快速入门:介绍指针 本节主要介绍指针的概念和基础知识,包括定义指针、指针的运算等。同时,本节也将介绍指针的应用,例如数组、函数调用等。 C指针原理教程之C快速入门:指…

    C 2023年5月22日
    00
  • C语言实现扫雷游戏简易版

    C语言实现扫雷游戏简易版攻略 扫雷游戏是一种经典的单人游戏,C语言是一种较为常用的编程语言,本文将详细讲解如何使用C语言实现扫雷游戏简易版。 准备工作 首先,我们需要在本地环境中安装C语言开发环境,推荐使用Visual Studio Code等集成开发环境,具体安装过程可以参照相关教程。 游戏设定 扫雷游戏中,玩家需要在一个矩阵中找到所有的地雷,在不触发地雷…

    C 2023年5月23日
    00
  • C语言的fork函数在Linux中的进程操作及相关面试题讲解

    C语言的fork函数是Unix和Linux操作系统中常用的进程操作函数之一。该函数的作用是在当前进程的基础上创建一个新进程,这个新进程叫做子进程。该函数返回两次,一次是在父进程中返回子进程的进程ID,另一次是在子进程中返回0。因此,程序中需判断返回值,便可以确定是在父进程还是子进程中。 下面我来详细讲解”C语言的fork函数在Linux中的进程操作及相关面试…

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