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

 更新时间:2022年08月22日 09:25:56   作者:编程爱好者-阿新  
ATM自动取款机系统是银行业务流程中十分重要且必备的环节之一,在银行业务流程中起着承上启下的作用。本文将用C语言实现一个简单的ATM自动取款机系统,需要的可以参考一下

脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用

基于C语言的ATM自动取款机系统项目设计与开发

一、ATM自动取款机系统功能分析与介绍

ATM自动取款机系统是银行业务流程中十分重要且必备的环节之一,在银行业务流程中起着承上启下的作用,其重要性不言而喻。但是,目前许多银行在具体的一此业务流程处理过程中仍然使用手工操作的方式来实施,不仅费时、费力,效率低下,而且无法达到理想的效果。

本应用主要模拟ATM设备的常用功能,如登录系统、身份验证、余额查询、取款、存款和修改密码等功能。

在设计的过程中也以此为依据,每一 种具体功能使用一 个或几个函数来实现。

该系统的主要功能如下几个要点所示:

1、显示登入页面功能:系统运行可以显示ATM自动取款机系统的登入页面,功能包括了登入和退出的两个功能。

2、登入页面的用户登入功能:用户可以用账号,根据相关的提示登入ATM自动取款机系统。

3、修改密码功能:用户可以更改自己登入ATM自动取款机系统账号的密码功能。

4、查询余额功能:用户可以查询自己账号的余额。

5、取款功能:用户可以将自己账号里面存放的钱取出来。

6、存款功能 :用户可以将自己的现金存入到自己的账号中

7、返回登入页面功能:用户可以返回登入页面,进而可以选择登入自己或其他的账号,或者选择退出ATM自动取款机系统。

二、开发ATM自动取款机系统的工具以及创建项目的过程

2.1、本项目使用Visual Studio 2019作为开发工具。

2.2、项目创建的过程

打开VS2019,选择语言为C++,所属平台为Windows,项目类型为控制台项目,并选择空项目,如下图所示

然后输入项目的名称和选择项目的路径如下图所示

创建好项目后,向项目中添加ATM.h头文件和ATM.c源文件如下所示

然后编写相关的代码如下

ATM.h头文件代码

1
2
3
4
#pragma once
 
#include <stdio.h>        // 包含相应的头文件
#include <stdlib.h>

ATM.c源文件代码

1
2
3
4
5
6
7
8
9
10
11
#define _CRT_SECURE_NO_WARNINGS
 
#include "ATM.h"
 
int main()
{
    system("color 3E");
 
    system("pause");
    return 0;
}

现在ATM自动取款机系统项目就创建好了。

ATM自动取款机系统的设计与开发的步骤

一、设计登入页面的显示功能

在ATM.h头文件中定义一个账号的登入密码和账号登入之后的初始余额大小,如下所示

1
2
long int CODE = 123456;         // 登入密码
long int balance = 10000;       // 存款的数目

然后在ATM.h头文件中声明一个EnterAccount函数,用于用户登入账号的功能,并在ATM.c源文件中定义这个函数的功能。如下所示

1
2
3
4
5
6
7
8
9
10
11
12
//账号输入
void EnterAccount()
{
    system("cls");
 
    printf("*********************************\n");
    printf("*   欢迎使用 ATM 自动服务系统   *\n");
    printf("*     1.登入       2.退出       *\n");
    printf("*********************************\n");
     
    printf("请选择功能:");
}

然后在main函数中添加如下的代码

1
2
3
4
while (1)
{
    EnterAccount();
}

在主函数中,使用一个while死循环,防止程序退出。

调试结果如下所示。

到这一步,本文已经实现了登入页面的显示的功能

二、设计登入页面退出功能

当用户在登入页面选择输入2时,则会退出ATM自动取款机系统。在ATM.c源文件的EnterAccount函数中添加如下的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
long int user;
int select;
 
scanf("%d", &select);
 
if (select == 1)
{
 
}
else
{
    system("cls");
 
    printf("********************************\n");
    printf("*        欢迎您的再次使用      *\n");
    printf("*   按任意键将退出ATM系统!!!*\n");
    printf("********************************\n");
 
    system("pause");
    exit(0);
}

当输入不是1时,就会退出ATM自动取款机系统,其调试结果如下

到这一步,本文已经实现了登入页面的退出功能

三、设计登入页面登入和系统主页面显示的功能

当用户在登入页面选择输入1时,则会登入ATM自动取款机系统。在ATM.c源文件的EnterAccount函数中添加如下的代码

3.1登入用户账号功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (select == 1)
{
    printf("请输入卡号:");
 
    scanf("%d", &user);
 
    if (user != 123456)
    {
        printf("    账户不存在,请从新输入!!!\n");
 
        system("pause");
        EnterAccount();
    }
    else
    {
        EnterPassword();
    }
}

根据输入给user 值是否等于123456来进行是否进入输入密码的操作,若输入的用户账号不对,则要求重新输入。若输入的账号符合要求,则进入输入密码的页面

3.2登入用户密码功能

在在ATM.h头文件中声明一个EnterPassword函数,用于用户输入密码的功能,并在ATM.c源文件中定义这个函数的功能。如下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//密码输入
void EnterPassword()
{
    long int code;
    int temp = 3;
 
    printf("********************************\n");
    printf("*          请输入密码          *\n");
    printf("********************************\n");
 
    printf("请输入密码:");
 
    scanf("%d", &code);
 
    while (code != CODE)
    {
        temp--;
        if (temp == 0)
        {
            printf("********************************\n");
            printf("*      您已经 3 次输入密码     *\n");
            printf("*  按任意键将返回登入系统!!!*\n");
            printf("********************************\n");
 
            system("pause");
            EnterAccount();
        }
 
        printf("********************************\n");
        printf("*     密码错误,请重新输入     *\n");
        printf("*        您还有 ");
        printf("%d", temp);
        printf(" 次机会       *\n");
        printf("********************************\n");
 
        printf("请输入密码:");
        scanf("%d", &code);
    }
 
    Menu();
}

其中有三次机会给用户输入密码,若三次输入密码都不对,则进入ATM自动取款机系统的登入页面,否则进入系统机的主页面。

3.3主页面显示功能

在在ATM.h头文件中声明一个Menu函数,用于ATM自动取款机系统主页面的功能,并在ATM.c源文件中定义这个函数的功能。如下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//基本操作界面
void Menu()
{
    int select = 0;
 
    system("cls");
 
    printf("********************************\n");
    printf("*    欢迎来到ATM自动取款系统   *\n");
    printf("*         请选择一下业务       *\n");
    printf("*          1.修改密码          *\n");
    printf("*          2.查询余额          *\n");
    printf("*          3.取款              *\n");
    printf("*          4.存款              *\n");
    printf("*          5.返回              *\n");
    printf("********************************\n");
 
    printf("请选择功能:");
    scanf("%d", &select);
 
    switch (select)
    {
    case 1:
        pwModify();             // 修改密码 
        break;
    case 2:
        balanceQuery();         // 查询余额
        break;
    case 3:
        moneyTakeOut();         // 取款  
        break;
    case 4:
        moneySave();            // 存款
        break;
    case 5:
        returnEnter();          // 返回
        break;
    default:
        printf("error\n");
    }
}

根据用户输入的数字赋值给变量select,然后使用Switch语句进行判据程序应该进入哪一个函数,并执行相应的函数功能。

登入调试结果如下

用户账号不对时

用户账号符合,但是密码输入错误时

用户账号和密码都符合时

到这一步,本文已经实现了登入页面的登入和系统主页面显示的功能

四、设计主页面修改用户密码的功能

在ATM.h头文件中声明一个pwModify函数,用于用户修改用户登入密码的功能,并在ATM.c源文件中定义这个函数的功能。如下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//修改密码
void pwModify()
{
    long int mm1, mm2, mm3;
    char temp;
 
    system("cls");
    printf("        密码修改            \n");
    printf("输入旧密码:\n");
    scanf("%d", &mm1);
 
    while (mm1 != CODE)                 // 判决旧密码是否输入有误
    {
        printf("旧密码错误\n");
        printf("请重新输入!!!\n");
 
        system("pause");
 
        printf("旧密码:");
        scanf("%d", &mm1);
    }
 
    printf("\n输入新密码: ");
    scanf("%d", &mm2);
 
    if (mm1 == mm2)                         // 判断旧密码与输入的新密码是否相同
    {
        printf("\n输入的新密码与旧密码一样!!!\n");
        printf("重新输入新密码\n");
 
        printf("\n输入新密码: ");
        scanf("%d", &mm2);
    }
 
    printf("\n确认新密码:");
    scanf("%d", &mm3);
 
    if (mm2 != mm3)             // 验证输入的新密码
    {
        printf("确认密码不一致\n");
        printf("请重新输入!!!\n");
 
        system("pause");
        pwModify();
    }
 
    if (mm2 < 100000)            // 防止输入的密码过于短
    {
        printf("密码必须大于或等于6位数\n");
        printf("请重新输入!!!\n");
 
        system("pause");
        pwModify();
    }
 
    temp = (char)mm2 % 111111;
    if (temp == 0)              // 防止输入的密码过于简单
    {
        printf("密码过于简单\n");
        printf("请重新输入!!!\n");
 
        system("pause");
        pwModify();
    }
 
    CODE = mm2;             // 更新变量的值,即修改密码成功
    system("cls");
    printf("        修改密码操作成功          \n");
    printf("    按任意键返回主页面\n");
 
    system("pause");
    Menu();             // 返回系统的主页面
}

其调试结果如下

输入旧密码不对时

确认密码不对时

修改密码成功时

到这一步,本文已经实现了主页面修改用户密码的功能

五、设计主页面查询用户余额的功能

在ATM.h头文件中声明一个balanceQuery函数,用于用户查询自己账户的余额功能,并在ATM.c源文件中定义这个函数的功能。如下所示

1
2
3
4
5
6
7
8
9
10
11
12
//余额查询
void balanceQuery()
{
    system("cls");
 
    printf("          您的余额为          \n");
    printf("          %d元          \n", balance);
    printf("    按任意键返回主页面\n");
 
    system("pause");
    Menu();
}

其调试结果如下所示

到这一步,本文已经实现了主页面查询用户余额的功能

六、设计主页面用户取款的功能

在ATM.h头文件中声明一个moneyTakeOut函数和takeOutJudge函数,用于用户取出自己账户中的钱的功能,并在ATM.c源文件中定义这两个函数的功能。如下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// 取款
void moneyTakeOut()
{
    long int temp;
    int select = 0;
 
    system("cls");
 
    printf("********************************\n");
    printf("*     请选择您要取款的金额     *\n");
    printf("*        1.100    2.200        *\n");
    printf("*        3.500    4.800        *\n");
    printf("*        5.1000   6.其它       *\n");
    printf("*                              *\n");
    printf("*        7.返回   8.返回       *\n");
    printf("********************************\n");
 
    printf("     请输入选择序号:");
    scanf("%d", &select);
 
    switch (select)
    {
    case 1:
        takeOutJudge(100);
        break;
    case 2:
        takeOutJudge(200);
        break;
    case 3:
        takeOutJudge(500);
        break;
    case 4:
        takeOutJudge(800);
        break;
    case 5:
        takeOutJudge(1000);
        break;
    case 6:
        printf("     请输入您要取款的金额:");
        scanf("%d", &temp);
        takeOutJudge(temp);
        break;
    case 7:
        Menu();
        break;
    }
}
 
void takeOutJudge(int takeOutMoney)
{
    if (takeOutMoney > balance)
    {
        printf("           余额不足!         \n");
        printf("          请重新操作          \n");
        printf("       按任意键返回主页面\n");
 
        system("pause");
        Menu();
    }
 
    if (takeOutMoney > 500000)
    {
        printf("    每次取款不能超过 50000 元  \n");
        printf("           请重新操作         \n");
        printf("    按任意键返回主页面\n");
 
        system("pause");
        Menu();
    }
 
    balance = balance - takeOutMoney;
 
    printf("           取款操作成功         \n");
    printf("         按任意键返回主页面\n");
 
    system("pause");
    Menu();
}

在moneyTakeOut函数中可以显示取出钱的数目,并进行选择,然后调用takeOutJudge函数对账户余额进行判断是否充足等功能。

其调试结果如下所示

取了两次款,其调试结果正确。

到这一步,本文已经实现了主页面查询用户余额的功能

七、设计主页面用户存款的功能

在ATM.h头文件中声明一个moneySave函数,用于用户将自己的现金存入系统的账户中的功能,并在ATM.c源文件中定义这两个函数的功能。如下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 存款
void moneySave()
{
    long int tempMoney;
 
    system("cls");
 
    printf("请输入存放的人民币:");
    scanf("%d", &tempMoney);
 
    while (tempMoney < 0)
    {
        printf("输入的存款数据不能为负数!!!\n");
        printf("请重新输入存放的人民币:");
        scanf("%d", &tempMoney);
    }
 
    balance = balance + tempMoney;
 
    printf("           存款操作成功         \n");
    printf("         按任意键返回主页面\n");
 
    system("pause");
    Menu();
}

可以对输入的数据是否合法进行有效的判断。

其调试结果如下所示

到这一步,本文已经实现了主页面用户存款的功能。

八、返回登入页面的功能

在ATM.h头文件中声明一个returnEnter函数,用于用户返回系统登入页面的功能,并在ATM.c源文件中定义这两个函数的功能。如下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
//返回登入页面
void returnEnter()
{
    system("cls");
    printf("********************************\n");
    printf("*        欢迎您的再次使用      *\n");
    printf("*  按任意键将返回登入页面!!!*\n");
    printf("********************************\n");
 
    system("pause");
 
    EnterAccount();
}

调试结果如下

总结

到这里我们完成了ATM自动取款机系统的设计与开发。在设计的工程中,我们主要使用了C语言的函数,while循环、system库函数等知识。本文的项目可以让刚刚入门的小白C语言选手可以很快掌握C语言编程的基本编程能力。

以上就是C语言实现ATM自动取款机系统的示例代码的详细内容,更多关于C语言ATM自动取款机系统的资料请关注脚本之家其它相关文章!

蓄力AI

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:https://blog.csdn.net/m0_47419053/article/details/126016332

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!

相关文章

  • c/c++那些你一定会出错的数组笔试题汇总

    c/c++那些你一定会出错的数组笔试题汇总

    这篇文章主要给大家汇总介绍了关于c/c++那些你一定会出错的数组笔试题,除了基本数据类型之外,其余的都作为类对象,包括数组,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • C语言新手练习之多维数组、结构体及函数

    C语言新手练习之多维数组、结构体及函数

    这篇文章主要给大家介绍了关于C语言新手练习之多维数组、结构体及函数的相关资料,这些内容在我们日常开发中经常会遇到的,需要的朋友可以参考下
    2021-06-06
  • C语言用递归函数实现汉诺塔

    C语言用递归函数实现汉诺塔

    大家好,本篇文章主要讲的是C语言用递归函数实现汉诺塔,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • C++写Linux框架示例解析

    C++写Linux框架示例解析

    这篇文章主要为大家介绍了C++实现Linux框架示例代码详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • C语言实现通讯管理系统设计

    C语言实现通讯管理系统设计

    这篇文章主要为大家详细介绍了C语言实现通讯管理系统设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C语言实现倒置字符串的两种方法分享

    C语言实现倒置字符串的两种方法分享

    这篇文章主要和大家详细介绍了利用C语言实现倒置字符串的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手尝试一下
    2022-08-08
  • C语言SetConsoleCursorInfo函数使用方法

    C语言SetConsoleCursorInfo函数使用方法

    这篇文章介绍了C语言SetConsoleCursorInfo函数的使用方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • c语言的cps实现求fibonacci数列示例

    c语言的cps实现求fibonacci数列示例

    这篇文章主要介绍了c语言的cps实现求fibonacci数列示例,需要的朋友可以参考下
    2014-03-03
  • C++双向循环列表用法实例

    C++双向循环列表用法实例

    这篇文章主要介绍了C++双向循环列表,实例分析了C++双向循环列表的创建、输出、添加、删除、移动的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • OpenGL实现不规则区域填充算法

    OpenGL实现不规则区域填充算法

    这篇文章主要为大家详细介绍了OpenGL实现不规则区域填充算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02

最新评论