返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言实现ATM系统程序的完整代码
  • 830
分享到

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

2024-04-02 19:04:59 830人浏览 泡泡鱼
摘要

实现效果如图: 代码如下: #include<stdio.h> #include<string.h> #include<coNIO.h> #

实现效果如图:

在这里插入图片描述

代码如下:


#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;	//客户
	struct _Node* next;
}Node;
Node* HeadNode = NULL;//链表头


void Login();
void Menu();
void ReGISter();
void LoginMenu(Node* pNode);
void FindAccount(Node* pNode);
void DrawMoney(Node* pNode);
void Deposit(Node* pNode);
void Transfer(Node* pNode);
void LoginMenu(Node* pNode);

//主菜单
void Menu()
{
	printf("\n\t\t\t欢迎进入ATM银行管理系统\n");
	printf("\t\t 1. 注册\n");
	printf("\t\t 2. 登录\n");
	printf("\t\t 3. 系统帮助\n");
	printf("\t\t 4. 查询账号\n");
	printf("\t\t 5. 退出\n");
}
//注册
void Register()
{
	Node* NewNode = (Node*)malloc(sizeof(Node));
	NewNode->next = NULL;
	NewNode->P.money = 0;

	printf("请输入您的名字:");
	scanf("%s", NewNode->P.name);
	printf("请输入您的密码:");
	scanf("%s", NewNode->P.password);

	char Password[7];
	printf("请再次输入您的密码:");
	scanf("%s", Password);

	for (int i = 1; i < 4; i++)
	{
		if (strcmp(NewNode->P.password, Password) != 0)
		{
			printf("您输入的密码有误,还有%d次机会.\n", 3 - i);
			printf("请再次输入您的密码:");
			scanf("%s", Password);
		}
		else
		{
			srand((unsigned int)time(NULL));
			sprintf(NewNode->P.account, "%d%d%d%d%d", rand() % 9000 + 1000, rand() % 9000 + 1000,
				rand() % 9000 + 1000, rand() % 9000 + 1000, rand() % 900 + 100);
			//头插法
			if (HeadNode == NULL)
			{
				HeadNode = NewNode;
			}
			else
			{
				NewNode->next = HeadNode;
				HeadNode = NewNode;
			}
			printf("\n\n\n\n\t\t\t\t恭喜你已经成功注册账户,以下是您的账户信息.\n");
			printf("\t\t\t\t姓名:%s\n", NewNode->P.name);
			printf("\t\t\t\t账户:%s\n", NewNode->P.account);
			printf("\t\t\t\t余额:%.2f\n", NewNode->P.money);
			getch();
			return 1;
		}

	}
	printf("您的账号已被定,请稍后再试.");
	return 1;
}
//取款
void DrawMoney(Node* pNode)
{
	Node* mNode = pNode;
	float Money = 0;
	printf("欢迎进入ATM银行管理系统\n");
	printf("请选择你取款金额\n");
	printf("100\t\t2000\n");
	printf("500\t\t5000\n");
	printf("10000\t\t其他金额\n");
	scanf("%f", &Money);
	mNode->P.money = mNode->P.money - Money;
	return mNode;	
}
//存款
void Deposit(Node* pNode)
{
	Node* mNode = pNode;
	float Money = 0;
	printf("请存取您的金额:");
	scanf("%f", &Money);
	mNode->P.money = mNode->P.money + Money;
	return mNode;
}
//转账
void Transfer(Node* pNode)
{
	Node* TNode = HeadNode;
	char Account[20];
	printf("请输入转账的号码:");
	scanf("%s", Account);
	while (TNode != NULL)
	{
		if (strcmp(TNode->P.account, Account) != 0)
		{
			TNode = TNode->next;
			continue;
		}
		else
		{
			float Money = 0;
			printf("请输入您要转账的金额:");
			printf("100\t\t2000\n");
			printf("500\t\t5000\n");
			printf("10000\t\t其他金额\n");
			scanf("%f", &Money);
			TNode->P.money = TNode->P.money + Money;
			pNode->P.money = pNode->P.money - Money;
			return 1;
		}
	}
	return 1;
}
//登录菜单
void LoginMenu(Node * pNode)
{

	while (1)
	{
		printf("欢迎进入ATM银行管理系统\n");
		printf("请选择以下服务:\n");
		printf("1.取款\t\t2.查询\n");
		printf("3.存款\t\t4.转账\n");
		printf("5.修改密码\t6.退出\n");

		char ch = getch();
		switch (ch)
		{
		case '1':
			DrawMoney(pNode);
			break;
		case '2':
			printf("您的账户余额为:%.2f", pNode->P.money);
			getch();
			break;
		case '3':
			Deposit(pNode);
			break;
		case '4':
			Transfer(pNode);
			break;
		case '5':
			break;
		case '6':
			return 0;
			break;
		default:
			break;
		}
		system("cls");
	}
	

}
//登录
void Login()
{
	system("cls");
	Node* pNode = HeadNode;

	char P_account[20];
	char P_password[7];
	printf("请输入您的卡号:");
	scanf("%s", P_account);

	while (pNode != NULL)
	{
		if (strcmp(P_account,pNode->P.account) != 0)
		{
			pNode = pNode->next;
			continue;
		}
		else
		{
			for (int i = 1; i < 4; i++)
			{
				printf("请输入您的密码:");
				scanf("%s", P_password);
				if (strcmp(P_password, pNode->P.password) != 0)
				{
					printf("您输入的密码有误,还有%d次机会.\n", 3 - i);
				}
				else
				{
					system("cls");
					LoginMenu(pNode);
					return 1;
				}
			}
			printf("\n对不起,您输入的密码有误,请重新登录.\n");
			system("pause");
			return 1;

		}
		
	}
	return 1;
}
//系统帮助信息
void Help()
{
	system("cls");
	printf( "\n\n\n\n\t——————————-----—---——ATM系统帮助----------------------------------------\n"
			"\t1、初始界面:客户插卡前或者退卡后ATM显示的界面,提示客户插卡操作及银行广告.\n"

			"\t2、身份认证:需要客户插入银行卡后输入密码来验证所有权.\n"

			"\t3、吞卡:客服若连续输入密码3次错误后,则将卡吞入ATM内.\n"

			"\t4、账户:账户由银行卡的卡号、密码、银行系统用户信息组成.\n"

			"\t5、业务操作:由查询余额、取款、存款、转账、取卡等事项组成.\n"

			"\t6、查询余额:显示该账户中剩余金额.\n"

			"\t7、取款:根据客户输入的金额从账户中扣除相应的金额,客户可以提取相应数额的现金.\n"

			"\t8、存款:客户存入现金,账户根据现金数额增加剩余金额.\n"

			"\t9、转账:客户输入另外一个账户号码和金额,从本账户的余额中减去该金额,增加到那个账号中.\n"

			"\t10、打印凭条:凭条由日期,银行卡的卡号,交易流水号组成.\n"

			"\t11、取卡:客户取回银行卡.\n"
			"\t————————————————-------------------------------------------------------\n"
	);
	getch();
	return 1;
}
//查询账号
void FindAccount(Node* pNode)
{
	Node* FNode = pNode;
	char AccountName[7];
	printf("请输入账号姓名:");
	scanf("%s", AccountName);

	while (FNode != NULL)
	{
		if (strcmp(AccountName, FNode->P.name) != 0)
		{
			FNode = FNode->next;
			continue;
		}
		else
		{
			printf("该姓名的账户为:%s", FNode->P.account);
			return 1;
		}
	}
	printf("抱歉!该姓名未注册账号.");
	return 1;
}
int main()
{
	system("color b0");
		
	while (1)
	{
		system("cls");
		Menu();
		char ch = _getch();
		switch (ch)
		{
		case '1':
			Register();
			break;
		case '2':
			Login();
			break;
		case '3':
			Help();
			break;
		case '4':
			FindAccount(HeadNode);
			getch();
			break;
		case '5':
			exit(0);
		default:
			break;
		}
	}
	return 0;
}

到此这篇关于C语言实现ATM系统程序的完整代码的文章就介绍到这了,更多相关c语言ATM系统程序内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言实现ATM系统程序的完整代码

本文链接: https://lsjlt.com/news/125082.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言实现ATM系统程序的完整代码
    实现效果如图: 代码如下: #include<stdio.h> #include<string.h> #include<conio.h> #...
    99+
    2024-04-02
  • C语言实现飞机订票系统的完整代码
    目录题目总体设计和需求分析设计目的总体设计和功能结构体设计机票信息结构体主函数的设计各功能代码的实现前置添加机票查找机票信息修改机票信息显示机票信息推荐机票信息订票退票保存信息显示时...
    99+
    2024-04-02
  • C语言实现扫雷OvO(完整代码)
    目录C语言实现扫雷OvO0.打印菜单1.初始化棋盘2.打印棋盘3.随机埋雷4.计算周围八个位置中雷的个数5.递归拓展非雷6.胜利条件7.输入坐标排雷8.完整代码8.1 game.h8...
    99+
    2024-04-02
  • C语言实现扫雷附完整代码
    目录一、理清逻辑二、创建文件三、具体步骤1.打印菜单2.创建二维数组3.初始化二维数组并打印棋盘4.布置雷5.排查雷(内含判断胜负)四、完整代码五、待改进一、理清逻辑 我们先来看一下...
    99+
    2024-04-02
  • C语言通讯录管理系统完整代码
    本文实例为大家分享了C语言实现通讯录管理系统的具体代码,供大家参考,具体内容如下 设计内容: 设计一个通讯录管理系统,以实现以下功能:信息添加、查询、修改、删除、排序等功能。 设计要...
    99+
    2022-11-13
    C语言通讯录管理系统 C语言通讯录系统 C语言通讯录
  • C语言编程银行ATM存取款系统实现源码
    目录一、课程设计的目的二、课程设计的题目三、设计内容银行ATM存取款系统实现的效果源码业务流程1、用户开户2、登录流程3、密码修改这里使用的运行工具是DEV C++。老铁们一定要看仔...
    99+
    2024-04-02
  • C语言实现ATM机存取款系统
    本文实例为大家分享了C语言实现ATM机存取款系统的具体代码,供大家参考,具体内容如下 利用结构体和构造函数并且采用输入输出文件实现ATM机系统。 主要功能有: 利用三种方法查询、开户...
    99+
    2024-04-02
  • 用c语言实现和平精英的完整代码
    目录前言:《有趣的和平精英—啊不,三子棋小游戏》第一部分!游戏大致框架概览test.c部分game.h部分激动人心的 game.c部分全部代码展示test.cgame.cgame.h...
    99+
    2024-04-02
  • C语言不用链表完成学生管理系统(完整代码)
    目录1.课程设计目的2.基本要求3.任务完成情况4.设计报告4.1需求分析4.3详细设计4.4详细代码4.5使用说明4.6测试结果与分析4.7参考文献1.课程设计目的 1.更好的理...
    99+
    2024-04-02
  • C语言实现三子棋游戏含完整代码
    目录一、text.c源文件部分1、main函数部分2、game函数部分二、game.h头文件部分三、game.c源文件部分运行 三子棋是大家小时候和同桌在纸上都玩过的简单小游戏,这个...
    99+
    2024-04-02
  • C语言实现扫雷小游戏完整算法详解(附完整代码)
    目录前言1.算法基本思路2.算法详解1.初始化数组与打印数组2.设置雷3.排查与标记4.CountMine函数计算周围雷的个数 5.ExpandMine函数递归展开周围所有...
    99+
    2024-04-02
  • c语言实现简易版三子棋(附完整代码)
    目录一、菜单栏 二、初始化棋盘 三、打印棋盘 四、玩家下棋 五、电脑下棋六、判断输赢 七、调用玩家、电脑下棋函数和判断输赢函数&nb...
    99+
    2024-04-02
  • 用c语言实现一个电话薄(附完整代码)
    先看一下这个小程序的效果 这里我为了演示方便,把人数固定为3个; 人数都是可以自定义的; 下面是这个简单的代码: #include<stdio.h> typedef s...
    99+
    2024-04-02
  • C语言实现飞机大战小游戏完整代码
     大一课设做的飞机大战,可以进行登入和注册,这个是利用单链表做的,源代码已经给出,这个是最基本的飞机大战模式,我设置了几个功能,比如排行榜之类的。排行榜是用结构体数组做的,...
    99+
    2024-04-02
  • C语言如何实现银行ATM存取款系统
    这篇文章给大家分享的是有关C语言如何实现银行ATM存取款系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、课程设计的目的掌握C语言程序设计的基础知识、基本理论、原理和实现技术。二、课程设计的题目银行ATM存取...
    99+
    2023-06-25
  • C++实现AVL树的完整代码
    AVL树的介绍 AVL树是一种自平衡的二叉搜索树,它通过单旋转(single rotate)和双旋转(double rotate)的方式实现了根节点的左子树与右子树的高度差不超过1...
    99+
    2024-04-02
  • 利用C++实现通讯录管理系统的完整代码
    目录学习目标:案例描述:实现代码:总结通讯录管理系统 学习目标: 对C++的基础进行复习,为后续深入学习打好基础 案例描述: 通讯录是一个可以记录亲人、好友信息的工具。 本教程主要利...
    99+
    2024-04-02
  • C++实现KDTree 附完整代码
    目录简介举例分割的作用一维二维n维关于kdtree的重要问题一.树的建立关键代码简介   k-d树(k-dimensional),是一种分割k维数据空间的数据...
    99+
    2024-04-02
  • C语言实现通讯录系统程序
    本文实例为大家分享了C语言实现通讯录系统程序的具体代码,供大家参考,具体内容如下 前言 利用链表增、删、改、查功能以及文件来完成通讯录系统。通讯录中包含联系人的基本信息:姓名、联系电...
    99+
    2024-04-02
  • C语言实现数独程序的示例代码
    目录程序截图简单说明代码实现程序截图 简单说明 随机生成数独的算法见力扣上对应题目的题解,我用的是递归回溯法 力扣原题 先随机放入 11 个数就能生成一个数独然后求数独的解最后...
    99+
    2023-03-03
    C语言实现数独游戏 C语言数独程序 C语言数独
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作