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;	//客户
	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系统程序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言员工信息管理系统源代码

    今天分享: C语言员工信息管理系统源代码,供大家参考,具体内容如下 /******************************************************************************* * 文件名:UI.Cpp * * * * 文件功能: 该文件主要是定义(实现)和用户操作有关的一些函数,之所以把和用户 * * 操作有关的函数单独放到ui.c中,是为了使程序结构更加清晰,源代码更 * * 容易管理,这也是遵循结构化程序设计的要求(模块化.层次化) *

  • C语言实现学生信息管理系统(文件版)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 下面是我自己用写的学生信息管理系统,为了增加数据的利用率,分为学生端和教师端,同时实现账号密码登录,以文件的形式将其存入. 代码如下 #include <stdio.h> #include <string.h> #include <string> #include<Windows.h> #define USER "TOM" // 事先定义用户名,用于登录页

  • C语言学生信息管理系统

    本文实例为大家分享了C语言学生信息管理系统的具体代码,供大家参考,具体内容如下 列表内容 系统以菜单方式工作 学生信息录入功能(学生信息用文件保存)-输入 学生信息浏览功能--输出 查询.排序功能--算法 1.按学号查询 2.按姓名查询 学生信息的删除与修改 界面简单明了: 有一定的容错能力,比如输入的成绩不在0-100之间,就提示不合法,要求重新 输入: 用链表的方式实现. #include <stdio.h> #include <string.h> #include <s

  • C语言实现超市管理系统

    本文实例为大家分享了C语言实现超市管理系统的具体代码,供大家参考,具体内容如下 超市管理系统 1.包括管理员和顾客 2.管理员有登入,录入商品信息,显示所有商品信息功能 3.顾客有购物车和结算功能 4.购物车具有显示商品列表,显示购物车商品,往购物车添加商品的功能 函数 void UpdateKu();//更新购物车信息函数 void calculate();//计算所购商品价格并修改保存int menu1();//打印主菜单函数 int menu2();//打印管理员菜单函数 int menu

  • C语言实现班级成绩管理系统

    C语言课程设计--班级成绩管理系统,供大家参考,具体内容如下 题目: 对一个有N个学生的班级,每个学生有M门课程.该系统实现对班级成绩的录入.显示.修改.排序.保存等操作的管理.功能 要求: (1)本系统采用一个结构体数组,每个数据的结构应当包括:学号.姓名.M门课程名称. (2)本系统显示这样的菜单: 请选择系统功能项: a.成绩录入 b.成绩显示 c.成绩保存 d.成绩排序 e.成绩修改(要求先输入密码) f.成绩统计 1)显示每门课程成绩最高的学生的基本信息 2)显示每门课程的平均成绩 3

  • C语言实现注册登录系统

    本文实例为大家分享了C语言实现注册登录系统的具体代码,供大家参考,具体内容如下 /* Note:Your choice is C IDE */ #include "stdio.h" #include "string.h" #include "windows.h" //定义变量 char reg_name[30]="",reg_pwd[10]=""; char on_name[30],on_pwd[10];

  • 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语言实现通讯录系统程序

    本文实例为大家分享了C语言实现通讯录系统程序的具体代码,供大家参考,具体内容如下 前言 利用链表增.删.改.查功能以及文件来完成通讯录系统.通讯录中包含联系人的基本信息:姓名.联系电话.家庭住址以及电子邮件. 以下是设计该系统的步骤: 1.导出通讯录系统的功能: (构建一个通讯录结构体) #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h>  /*定义通讯录结构体*

  • C语言不用链表完成学生管理系统(完整代码)

    目录 1.课程设计目的 2.基本要求 3.任务完成情况 4.设计报告 4.1需求分析 4.3详细设计 4.4详细代码 4.5使用说明 4.6测试结果与分析 4.7参考文献 1.课程设计目的 1.更好的理解c语言的相关实现内容,对于c语言的理解得到更好的帮助. 2.实现更方便快捷的应用. 2.基本要求 (1).1.每组完成1个题目的设计:每人独立完成该题目的一个功能模块的实现,并将课程设计报告打印.装订提交. (2).使用标准C语言编制程序,源代码必须采用锯齿型书写格式,必须上机调试通过.运行界面

  • C语言实现飞机大战小游戏完整代码

    大一课设做的飞机大战,可以进行登入和注册,这个是利用单链表做的,源代码已经给出,这个是最基本的飞机大战模式,我设置了几个功能,比如排行榜之类的.排行榜是用结构体数组做的,已及冒泡排序,并且在文件里保存信息.比较简单. 这个是注册页面规范: 这个是登入页面: 游戏菜单:  飞机大战页面:  话不多说,直接上代码 以下是源代码  #include"stdio.h" #include"windows.h" //用于获取窗口的句柄与屏幕控制 #include"co

  • java通过JFrame做一个登录系统的界面完整代码示例

    在java的JFrame内通过创建匿名对象的方式做登录界面 package com.sxt; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.J

  • C语言实现经典扫雷小游戏完整代码(递归展开 + 选择标记)

    目录 游戏介绍 游戏整体框架 游戏具体功能及实现 1.雷盘的定义 2.雷盘的初始化 3.布置雷 4.排查雷 5.递归式展开一片 6.获取周围雷的个数 7.标记特定位置 8.打印雷盘 游戏完整代码 1.test.c 2.game.h 3.game.c 游戏效果展示 大家好,今天我们将一起用C语言实现一个经典小游戏 – 扫雷,Let is go ! 游戏介绍 扫雷游戏相信大家都玩过,上图就是一个网页版的扫雷,它的规则是玩家选择一个方格,若此方格没有地雷,那么该方格会显示与它相邻的八个方格中雷的个数,

  • 用c语言实现一个电话薄(附完整代码)

    先看一下这个小程序的效果 这里我为了演示方便,把人数固定为3个: 人数都是可以自定义的: 下面是这个简单的代码: #include<stdio.h> typedef struct con { int num; char name[11]; char tel[10]; }contact; int main() { contact con[3]; int i; for(i=0;i<3;i++) { printf("请输入编号:"); scanf("%d"

  • C语言实现三子棋游戏含完整代码

    目录 一.text.c源文件部分 1.main函数部分 2.game函数部分 二.game.h头文件部分 三.game.c源文件部分 运行  三子棋是大家小时候和同桌在纸上都玩过的简单小游戏,这个游戏我们在c语言中就可以实现. 在这篇文章我推荐大家使用vs2013,vs2019,vs2022等的编译器.部分学校使用的vc6.0以及Devc++.前者是1998年推出的c语言编译器,在现在的win10或者win11的系统中并不兼容,可能会出现一些问题,后者也在2015年停更,这两款祖传c语言编译器并

  • Java实现ATM取款机程序

    本文实例为大家分享了Java实现ATM取款机程序的具体代码,供大家参考,具体内容如下 对象说明: 功能:该程序的功能为实现模拟银行ATM自动取款机取款,存款,查询余额,转账等功能,只是完成了基本的功能. 思路:第一.登录判断,密码限制三次,使用for循环.第二.成功登录,选择相应的功能,使用switch语句.第四.实现功能的反复循环操作,因为次数不确定,使用while结构.第五.对每个功能模块进行填充完善. 代码展示: import java.util.Scanner; public class

  • C语言实现电子时钟程序

    本文实例为大家分享了C语言实现电子时钟程序的具体代码,供大家参考,具体内容如下 Qt 里面运行 #include<windows.h> #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <time.h> typedef struct { int x; int y; }Point; time_t now; struct tm *pt, t1, t2; int pri

随机推荐