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头文件代码

#pragma once

#include <stdio.h>		// 包含相应的头文件
#include <stdlib.h>

ATM.c源文件代码

#define _CRT_SECURE_NO_WARNINGS

#include "ATM.h"

int main()
{
	system("color 3E");

	system("pause");
	return 0;
}

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

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

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

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

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

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

//账号输入
void EnterAccount()
{
	system("cls");

	printf("*********************************\n");
	printf("*   欢迎使用 ATM 自动服务系统   *\n");
	printf("*     1.登入       2.退出       *\n");
	printf("*********************************\n");
	
	printf("请选择功能:");
}

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

	while (1)
	{
		EnterAccount();
	}

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

调试结果如下所示。

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

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

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

	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登入用户账号功能

	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源文件中定义这个函数的功能。如下所示

//密码输入
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源文件中定义这个函数的功能。如下所示

//基本操作界面
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源文件中定义这个函数的功能。如下所示

//修改密码
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源文件中定义这个函数的功能。如下所示

//余额查询
void balanceQuery()
{
	system("cls");

	printf("          您的余额为          \n");
	printf("          %d元          \n", balance);
	printf("    按任意键返回主页面\n");

	system("pause");
	Menu();
}

其调试结果如下所示

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

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

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

// 取款
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源文件中定义这两个函数的功能。如下所示

// 存款
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源文件中定义这两个函数的功能。如下所示

//返回登入页面
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自动取款机系统的资料请关注脚本之家其它相关文章!

相关文章

  • 详解C++11中的线程锁和条件变量

    详解C++11中的线程锁和条件变量

    C++ 11允许开发者们以标准的、不依赖于平台的方式编写多线程程序。这篇文章概述了标准库对于线程和同步操作机制的支持。这些都是非常重要的知识,希望读者们可以认真看一下
    2021-06-06
  • C++中cin的用法详细

    C++中cin的用法详细

    这篇文章主要介绍了C++中cin的用法详细,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • C++初级线程管理

    C++初级线程管理

    这篇文章主要介绍了C++初级线程管理,C++11中提供了std::thread库,本文将从线程的启动、线程等待、线程分离、线程传参、线程识别等几个方面介绍初级线程管理的知识,需要的朋友可以参考一下
    2021-12-12
  • C++20 新特性 协程 Coroutines(2)

    C++20 新特性 协程 Coroutines(2)

    上篇文章简单给大介绍了 C++20 特性 协程 Coroutines co_yield 和 co_return 那么这篇文章继续给大家介绍C++20 的新特性协程 Coroutines co_await,需要的朋友可以参考一下
    2021-10-10
  • C语言中getchar()函数的用法小结

    C语言中getchar()函数的用法小结

    这篇文章主要介绍了C语言中getchar()函数的用法,getchar是输入函数,输入的过程是什么呢,本文给大家详细讲解,对C语言getchar()函数相关知识感兴趣的朋友一起看看吧
    2022-10-10
  • C++入门之基础语法学习教程

    C++入门之基础语法学习教程

    这篇文章主要介绍了C++入门之基本语法学习教程,列出了C++的关键字,同时讲解了注释的写法,需要的朋友可以参考下
    2016-05-05
  • VSCode插件开发全攻略之打包、发布、升级的详细教程

    VSCode插件开发全攻略之打包、发布、升级的详细教程

    这篇文章主要介绍了VSCode插件开发全攻略之打包、发布、升级的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • C语言实现消消乐游戏的代码分享

    C语言实现消消乐游戏的代码分享

    本章我们将编写十字消除游戏,用户点击空白方块,沿其上下左右方向寻找第一个彩色方块,如果有两个或两个以上颜色一致,就将其消除,感兴趣的可以了解一下
    2023-02-02
  • C语言实现的猴子偷桃之类算法

    C语言实现的猴子偷桃之类算法

    本文给大家分享的是前些日子去面试的时候的试题,哎,真是没想到会出这么个题,好多年没碰过C了。。。。分享给大家,小伙伴们过来参观下吧。
    2015-03-03
  • 详解C++中二进制求补运算符与下标运算符的用法

    详解C++中二进制求补运算符与下标运算符的用法

    这篇文章主要介绍了C++中二进制求补运算符与下标运算符的用法,是C++入门学习中的基础知识,需要的朋友可以参考下
    2016-01-01

最新评论