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

目录
  • 基于C语言的ATM自动取款机系统项目设计与开发
    • 一、ATM自动取款机系统功能分析与介绍
    • 二、开发ATM自动取款机系统的工具以及创建项目的过程
  • 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自动取款机系统的资料请关注我们其它相关文章!

(0)

相关推荐

  • C语言实现ATM机存取款系统

    本文实例为大家分享了C语言实现ATM机存取款系统的具体代码,供大家参考,具体内容如下 利用结构体和构造函数并且采用输入输出文件实现ATM机系统. 主要功能有: 利用三种方法查询.开户.登陆.菜单.取款.修改密码.存款.转账.创建个人信息.输出.删除.增加.退出. 是一个功能齐全,完备的ATM机系统. #include<stdio.h> #include<string.h> #include<stdlib.h> struct per //定义结构体 { char name

  • C语言编程银行ATM存取款系统实现源码

    目录 一.课程设计的目的 二.课程设计的题目 三.设计内容 银行ATM存取款系统 实现的效果 源码 业务流程 1.用户开户 2.登录流程 3.密码修改 这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借鉴. 一.课程设计的目的 掌握C语言程序设计的基础知识.基本理论.原理和实现技术. 二.课程设计的题目 银行ATM存取款系统 三.设计内容 (主要技

  • C语言简单实现银行ATM存取款功能

    这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 一.课程设计的目的 掌握C语言程序设计的基础知识.基本理论.原理和实现技术. 二.课程设计的题目 银行ATM存取款系统 三.设计内容(主要技术关键的分析.解决思路和方案比较等) 银行ATM存取款系统 银行ATM存取款系统业务描述如下: 银行ATM存取款系统能为用户提供存款.取款.查询.转账和修改密码的功能.为了模拟真实的ATM业务环境,本系统必须实现存款.取款.查询.转账.修改密码以及开户的功能.用户通过开户业务在本系统

  • C语言实现ATM系统程序的完整代码

    实现效果如图: 代码如下: #include<stdio.h> #include<string.h> #include<conio.h> #include<stdlib.h> //开户信息 typedef struct _Person { char name[20]; char account[20]; char password[7]; float money; }Person; //结点 typedef struct _Node { Person P;

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

    目录 基于C语言的ATM自动取款机系统项目设计与开发 一.ATM自动取款机系统功能分析与介绍 二.开发ATM自动取款机系统的工具以及创建项目的过程 ATM自动取款机系统的设计与开发的步骤 一.设计登入页面的显示功能 二.设计登入页面退出功能 三.设计登入页面登入和系统主页面显示的功能 四.设计主页面修改用户密码的功能 五.设计主页面查询用户余额的功能 六.设计主页面用户取款的功能 七.设计主页面用户存款的功能 八.返回登入页面的功能 总结 基于C语言的ATM自动取款机系统项目设计与开发 一.AT

  • C#实现模拟ATM自动取款机功能

    目录 (1)关于用户帐号的类:Account (2)关于银行数据库的类:BankDatabase (3)关于ATM屏幕显示的类:Screen (4)关于ATM键盘的类:Keypad (5)关于进钞.出钞口的类:DepositSlot (6)关于ATM出钱的类:CashDispendser (7)关于事务的基类:Transaction (8)关于查询的事务类:BalanceInquiry (9)关于取款的事务类:Withdrawl (10)关于存款的事务类:Deposit (11)关于ATM本身的

  • Django框架实现在线考试系统的示例代码

    1.Django的简介 Django是一个基于MVC构造的框架.但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model).模板(Template)和视图(Views),称为 MTV模式.它们各自的职责如下: 层次 职责 模型(Model),即数据存取层 模型(Model),即数据存取层 模板(Template),即表现层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示. 视图(View),即业务逻辑层 存取模型及调取恰当模板的相

  • Go语言操作数据库及其常规操作的示例代码

    Go操作MySQL 安装: go get -u github.com/go-sql-driver/mysql GO语言的操作数据库的驱动原生支持连接池, 并且是并发安全的 标准库没有具体的实现 只是列出了一些需要的第三方库实现的具体内容 //第一次连接MySQL成功 package main import ( "database/sql" _ "github.com/go-sql-driver/mysql" // _想当于init()初始化 "log&qu

  • 基于Java实现中文分词系统的示例代码

    目录 1.问题描述 2.相关工作 3.系统框架和算法设计 3.1系统整体框架 1.问题描述 中文分词 (Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词.分词就是将连续的字序列按照一定的规范重新组合成词序列的过程.我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字.句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂的多.困难的多. 而对于中文

  • python实现图书馆抢座(自动预约)功能的示例代码

    脚本功能 系统开放座位时快速预约指定位置 可以设置预约的时间段 运行以后会一直帮你抢,需要手动停止 即使遇到更强的脚本自动帮抢下一个座位 实现 首先解决登录问题,通过F12找出登录请求包,分析对比一下包可以发现一般只有用户名和密码这个参数是变化的,然后用requests.session()的实例化去请求登录接口,登录成功. 然后预约座位抓一下包,分析包找到变化的关键的参数,一般情况下关键参数只有座位id.开始时间.结束时间,其他的参数一股脑照搬就行了,接下来用刚刚登录成功的那个requests.

  • Python实现钉钉/企业微信自动打卡的示例代码

    每天急匆匆赶地铁上班的时候总会一不小心就会忘记打卡,尤其是软件打卡,那有没有什么办法可以解决忘打卡的问题呢?今天给大家推荐一下一款神器,利用Python实现定时自动打卡. 1 前期工具准备 不用说的Python 一部24小时可以放公司的安卓手机或电脑安装模拟器 ADB工具 2 ADB的安装配置 去下载ADB安装包,安装后在环境变量Path中添加目录 2.1 UIautomator2的安装 # 安装 uiautomator2(PC端) pip3 install -U uiautomator2 3

  • Go语言实现切片增删改查的示例代码

    目录 引言 一.切片的基础语法 1. 语法 2. 示例 3. 切片的长度和容量 二.切片的初始化 1. 直接初始化 2. 使用数组初始化 3. 使用数组的部分元素初始化(切片表达式) 4. 空(nil)切片 三.切片的遍历 1. for 循环遍历 2. for range遍历 四.切片元素的添加和删除copy 1. 添加元素 2. 删除元素 3. 修改切片元素 4. 查找切片元素 5. 拷贝切片 引言 Golang 的数组是固定长度,可以容纳相同数据类型的元素的集合. 但是当长度固定了,在使用的

  • C语言实现猜数字小游戏的示例代码

    目录 一.猜数字小游戏的要求 二.猜数字小游戏实现的过程 2.1项目创建 2.2头文件内容 2.3源文件内容 三.猜数字小游戏调试结果如下 四.基于猜数字小游戏的总结 五.完整代码 一.猜数字小游戏的要求 猜数字小游戏是我们小时候喜欢我们一个经典小游戏,在本文中,猜数字小游戏主要的功能如下所示 1.登入猜数字小游戏系统,显示小时欢迎界面. 2.用户猜的数字有系统随机在1-20之间生成. 3.用户可以有5次机会猜这个随机生成的数字. 4.若用户猜大了,则系统会显示猜大了,并提示还有多少猜数字的机会

  • C语言实现飞机游戏(豪华版)的示例代码

    目录 前言 一.飞机显示与控制 二.发射子弹 三.击中敌机 四.多台敌机 五.发射散弹 前言 这是飞机游戏的第三版,我们已经实现了基础版和进阶版的飞机游戏  ,但是存在的问题很明显:已经发射出去的子弹会随着飞机位置的实时改变而改变,并且不能实现连发.如果第一次看此文章,可能有部分代码(例如基本游戏框架,清屏功能,键盘控制,数据处理)不了解其功能,建议看看之前写的博客用c实现最简单的飞机游戏和用c实现进阶版飞机游戏 应用数组,可以更方便地记录复杂的数据,实现更复杂的显示.逻辑判断与控制.本篇文章利

随机推荐