C语言实现ATM自动取款机系统的示例代码

本文将详细讲解如何使用C语言实现一个ATM自动取款机系统,包括如何进行账户验证、显示余额、进行取款、修改密码等功能。我们将通过一个示例代码来展示实现的过程。下面是完整攻略:

第一步:创建用户结构体

我们需要用一个结构体来表示存储在数据库中的用户信息,包含账户名、密码、余额等属性。以下是一个用户结构体的示例代码:

struct user {
    char username[20];
    char password[20];
    double balance;
};

第二步:创建模拟数据库

我们使用一个数组来模拟用户数据存储在数据库中的情况。以下是一个示例的用户数组:

struct user user_database[] = {
    {"Alice", "123456", 10000},
    {"Bob", "654321", 2000},
    {"Cindy", "111111", 5000},
    {"David", "222222", 3000}
};

第三步:实现账户验证功能

实现账户验证功能要求用户输入账户名和密码,程序通过遍历数据库查询是否有对应的账户信息。以下是一个账户验证功能的示例代码:

struct user *verify_account(char *username, char *password) {
    for (int i = 0; i < sizeof(user_database) / sizeof(*user_database); i++) {
        if (strcmp(user_database[i].username, username) == 0
            && strcmp(user_database[i].password, password) == 0) {
            return &user_database[i];
        }
    }
    return NULL;
}

第四步:实现显示余额功能

当用户登录成功后,界面应该显示用户的余额信息。以下是一个显示余额信息的示例代码:

void show_balance(struct user *u) {
    printf("Your balance: %.2lf\n", u->balance);
}

第五步:实现取款功能

当用户选择取款操作时,程序应该验证取款金额是否合法、账户余额是否充足,并更新用户余额信息。以下是一个取款操作的示例代码:

void withdraw(struct user *u, double amount) {
    if (amount <= 0) {
        printf("Invalid amount.\n");
        return;
    }
    if (u->balance < amount) {
        printf("Insufficient balance.\n");
        return;
    }
    u->balance -= amount;
    printf("Withdraw %lf success.\n", amount);
}

第六步:实现修改密码功能

当用户选择修改密码操作时,程序应该验证原密码、新密码是否合法,更新用户密码信息。以下是一个修改密码操作的示例代码:

void change_password(struct user *u, char *old_password, char *new_password) {
    if (strlen(new_password) < 6) {
        printf("Password must be at least 6 characters.\n");
        return;
    }
    if (strcmp(u->password, old_password) != 0) {
        printf("Wrong password.\n");
        return;
    }
    strcpy(u->password, new_password);
    printf("Change password success.\n");
}

以上是一个完整的C语言实现ATM自动取款机系统的示例代码攻略。我们通过模拟数据库、验证账户、显示余额、取款、修改密码等功能,实现了一个简单的ATM自动取款机系统。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现ATM自动取款机系统的示例代码 - Python技术站

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

相关文章

  • Java实现学生成绩管理系统

    Java实现学生成绩管理系统完整攻略 搭建环境1. 安装Java开发工具包(JDK)2. 安装Java集成开发环境(IDE),如Eclipse、IntelliJ IDEA等 设计数据库1. 使用MySQL等数据库软件创建“学生成绩管理系统”所需的数据库和表结构2. 数据库表设计包括学生信息表、课程信息表和成绩信息表 实现模型层代码1. 根据设计好的表结构,创…

    C 2023年5月23日
    00
  • Java异常 Exception类及其子类(实例讲解)

    Java异常 Exception类及其子类(实例讲解) 在Java中,异常是指在程序运行过程中发生的不正常情况,需要由程序对其进行处理以保障程序正常运行。Java异常类型分为Error和Exception,其中Error是指不可恢复的错误,如内存不足等;Exception则是可被捕获和处理的异常。 在Exception类中,又存在多个子类,每个子类可以处理不…

    C 2023年5月23日
    00
  • 详解C++中的一维数组和二维数组

    详解C++中的一维数组和二维数组 一维数组 一维数组是一种常见的数据结构,它由相同类型的元素按相邻顺序组成。在C++中,一维数组的声明方式为: type arrayName[arraySize]; 其中,type是数组元素的类型,arrayName是数组的名称,arraySize是数组的长度。 例如,下面是一个由5个整数组成的一维数组的声明: int num…

    C 2023年5月23日
    00
  • vscode中launch.json和task.json配置教程(重要参数详解)

    接下来我会详细讲解“vscode中launch.json和task.json配置教程(重要参数详解)”的完整攻略,分为以下几部分: 一、 launch.json 1.1 什么是launch.json launch.json是Visual Studio Code配置文件之一,用于设置VS Code的调试器。 1.2 如何创建launch.json文件 在打开的…

    C 2023年5月23日
    00
  • google c++程序测试框架googletest使用教程详解

    Google C++程序测试框架Googletest使用教程详解 什么是Googletest? Googletest是Google开源的C++单元测试框架。它旨在帮助编写更好的C++单元测试,而且是免费的。 Googletest的安装 Linux/Unix系统 从源码安装 wget https://github.com/google/googletest/a…

    C 2023年5月23日
    00
  • c语言获取当前工作路径的实现代码(windows/linux)

    要获取当前工作路径,我们需要用到C语言中的系统调用。在Windows和Linux操作系统下,这个调用名字可能不同,但是其功能是相同的,都是获取当前工作路径。下面分别介绍在Windows和Linux操作系统下,如何使用C语言获取当前工作路径。 在Windows操作系统下获取当前工作路径 在Windows操作系统下获取当前工作路径需要使用Windows API中…

    C 2023年5月24日
    00
  • c++中new的三种用法详细解析

    C++中new的三种用法详细解析 new 是 C++ 中一个非常重要的关键字,主要用于动态分配内存。通常情况下,使用 new 就意味着需要手动管理这块内存的释放。new 的语法形式有三种,分别是: new operator 以 new 运算符来申请动态内存,并返回该内存的地址,也就是指针类型。 语法是 new 数据类型;。创建出来的对象默认初始化,如果需要初…

    C 2023年5月22日
    00
  • C语言指针用法总结

    C语言指针用法总结 1.指针的概念 指针是一个变量,其值为另一个变量的地址,即内存位置的直接地址。指针可以指向任何数据类型,如整型、字符型、实型等。 2.指针的声明 int *ptr; /* 一个整型变量的指针 */ char *ch; /* 一个字符型变量的指针 */ float *fptr; /* 一个单精度浮点型变量的指针 */ 3.指针的初始化 指针…

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