亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語(yǔ)言實(shí)現(xiàn)ATM自動(dòng)取款機(jī)系統(tǒng)的示例代碼

 更新時(shí)間:2022年08月22日 09:25:56   作者:編程愛(ài)好者-阿新  
ATM自動(dòng)取款機(jī)系統(tǒng)是銀行業(yè)務(wù)流程中十分重要且必備的環(huán)節(jié)之一,在銀行業(yè)務(wù)流程中起著承上啟下的作用。本文將用C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的ATM自動(dòng)取款機(jī)系統(tǒng),需要的可以參考一下

基于C語(yǔ)言的ATM自動(dòng)取款機(jī)系統(tǒng)項(xiàng)目設(shè)計(jì)與開(kāi)發(fā)

一、ATM自動(dòng)取款機(jī)系統(tǒng)功能分析與介紹

ATM自動(dòng)取款機(jī)系統(tǒng)是銀行業(yè)務(wù)流程中十分重要且必備的環(huán)節(jié)之一,在銀行業(yè)務(wù)流程中起著承上啟下的作用,其重要性不言而喻。但是,目前許多銀行在具體的一此業(yè)務(wù)流程處理過(guò)程中仍然使用手工操作的方式來(lái)實(shí)施,不僅費(fèi)時(shí)、費(fèi)力,效率低下,而且無(wú)法達(dá)到理想的效果。

本應(yīng)用主要模擬ATM設(shè)備的常用功能,如登錄系統(tǒng)、身份驗(yàn)證、余額查詢、取款、存款和修改密碼等功能。

在設(shè)計(jì)的過(guò)程中也以此為依據(jù),每一 種具體功能使用一 個(gè)或幾個(gè)函數(shù)來(lái)實(shí)現(xiàn)。

該系統(tǒng)的主要功能如下幾個(gè)要點(diǎn)所示:

1、顯示登入頁(yè)面功能:系統(tǒng)運(yùn)行可以顯示ATM自動(dòng)取款機(jī)系統(tǒng)的登入頁(yè)面,功能包括了登入和退出的兩個(gè)功能。

2、登入頁(yè)面的用戶登入功能:用戶可以用賬號(hào),根據(jù)相關(guān)的提示登入ATM自動(dòng)取款機(jī)系統(tǒng)。

3、修改密碼功能:用戶可以更改自己登入ATM自動(dòng)取款機(jī)系統(tǒng)賬號(hào)的密碼功能。

4、查詢余額功能:用戶可以查詢自己賬號(hào)的余額。

5、取款功能:用戶可以將自己賬號(hào)里面存放的錢(qián)取出來(lái)。

6、存款功能 :用戶可以將自己的現(xiàn)金存入到自己的賬號(hào)中

7、返回登入頁(yè)面功能:用戶可以返回登入頁(yè)面,進(jìn)而可以選擇登入自己或其他的賬號(hào),或者選擇退出ATM自動(dòng)取款機(jī)系統(tǒng)。

二、開(kāi)發(fā)ATM自動(dòng)取款機(jī)系統(tǒng)的工具以及創(chuàng)建項(xiàng)目的過(guò)程

2.1、本項(xiàng)目使用Visual Studio 2019作為開(kāi)發(fā)工具。

2.2、項(xiàng)目創(chuàng)建的過(guò)程

打開(kāi)VS2019,選擇語(yǔ)言為C++,所屬平臺(tái)為Windows,項(xiàng)目類型為控制臺(tái)項(xiàng)目,并選擇空項(xiàng)目,如下圖所示

然后輸入項(xiàng)目的名稱和選擇項(xiàng)目的路徑如下圖所示

創(chuàng)建好項(xiàng)目后,向項(xiàng)目中添加ATM.h頭文件和ATM.c源文件如下所示

然后編寫(xiě)相關(guān)的代碼如下

ATM.h頭文件代碼

#pragma once

#include <stdio.h>		// 包含相應(yīng)的頭文件
#include <stdlib.h>

ATM.c源文件代碼

#define _CRT_SECURE_NO_WARNINGS

#include "ATM.h"

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

	system("pause");
	return 0;
}

現(xiàn)在ATM自動(dòng)取款機(jī)系統(tǒng)項(xiàng)目就創(chuàng)建好了。

ATM自動(dòng)取款機(jī)系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)的步驟

一、設(shè)計(jì)登入頁(yè)面的顯示功能

在ATM.h頭文件中定義一個(gè)賬號(hào)的登入密碼和賬號(hào)登入之后的初始余額大小,如下所示

long int CODE = 123456;			// 登入密碼
long int balance = 10000;		// 存款的數(shù)目

然后在ATM.h頭文件中聲明一個(gè)EnterAccount函數(shù),用于用戶登入賬號(hào)的功能,并在ATM.c源文件中定義這個(gè)函數(shù)的功能。如下所示

//賬號(hào)輸入
void EnterAccount()
{
	system("cls");

	printf("*********************************\n");
	printf("*   歡迎使用 ATM 自動(dòng)服務(wù)系統(tǒng)   *\n");
	printf("*     1.登入       2.退出       *\n");
	printf("*********************************\n");
	
	printf("請(qǐng)選擇功能:");
}

然后在main函數(shù)中添加如下的代碼

	while (1)
	{
		EnterAccount();
	}

在主函數(shù)中,使用一個(gè)while死循環(huán),防止程序退出。

調(diào)試結(jié)果如下所示。

到這一步,本文已經(jīng)實(shí)現(xiàn)了登入頁(yè)面的顯示的功能

二、設(shè)計(jì)登入頁(yè)面退出功能

當(dāng)用戶在登入頁(yè)面選擇輸入2時(shí),則會(huì)退出ATM自動(dòng)取款機(jī)系統(tǒng)。在ATM.c源文件的EnterAccount函數(shù)中添加如下的代碼

	long int user;
	int select;
	
	scanf("%d", &select);

	if (select == 1)
	{
	
	}
	else
	{
		system("cls");

		printf("********************************\n");
		printf("*        歡迎您的再次使用      *\n");
		printf("*   按任意鍵將退出ATM系統(tǒng)?。?!*\n");
		printf("********************************\n");

		system("pause");
		exit(0);
	}

當(dāng)輸入不是1時(shí),就會(huì)退出ATM自動(dòng)取款機(jī)系統(tǒng),其調(diào)試結(jié)果如下

到這一步,本文已經(jīng)實(shí)現(xiàn)了登入頁(yè)面的退出功能

三、設(shè)計(jì)登入頁(yè)面登入和系統(tǒng)主頁(yè)面顯示的功能

當(dāng)用戶在登入頁(yè)面選擇輸入1時(shí),則會(huì)登入ATM自動(dòng)取款機(jī)系統(tǒng)。在ATM.c源文件的EnterAccount函數(shù)中添加如下的代碼

3.1登入用戶賬號(hào)功能

	if (select == 1)
	{
		printf("請(qǐng)輸入卡號(hào):");

		scanf("%d", &user);

		if (user != 123456)
		{
			printf("    賬戶不存在,請(qǐng)從新輸入?。?!\n");

			system("pause");
			EnterAccount();
		}
		else
		{
			EnterPassword();
		}
	}

根據(jù)輸入給user 值是否等于123456來(lái)進(jìn)行是否進(jìn)入輸入密碼的操作,若輸入的用戶賬號(hào)不對(duì),則要求重新輸入。若輸入的賬號(hào)符合要求,則進(jìn)入輸入密碼的頁(yè)面

3.2登入用戶密碼功能

在在ATM.h頭文件中聲明一個(gè)EnterPassword函數(shù),用于用戶輸入密碼的功能,并在ATM.c源文件中定義這個(gè)函數(shù)的功能。如下所示

//密碼輸入
void EnterPassword()
{
	long int code;
	int temp = 3;

	printf("********************************\n");
	printf("*          請(qǐng)輸入密碼          *\n");
	printf("********************************\n");

	printf("請(qǐng)輸入密碼:");

	scanf("%d", &code);

	while (code != CODE)
	{
		temp--;
		if (temp == 0)
		{
			printf("********************************\n");
			printf("*      您已經(jīng) 3 次輸入密碼     *\n");
			printf("*  按任意鍵將返回登入系統(tǒng)?。?!*\n");
			printf("********************************\n");

			system("pause");
			EnterAccount();
		}

		printf("********************************\n");
		printf("*     密碼錯(cuò)誤,請(qǐng)重新輸入     *\n");
		printf("*        您還有 ");
		printf("%d", temp);
		printf(" 次機(jī)會(huì)       *\n");
		printf("********************************\n");

		printf("請(qǐng)輸入密碼:");
		scanf("%d", &code);
	}

	Menu();
}

其中有三次機(jī)會(huì)給用戶輸入密碼,若三次輸入密碼都不對(duì),則進(jìn)入ATM自動(dòng)取款機(jī)系統(tǒng)的登入頁(yè)面,否則進(jìn)入系統(tǒng)機(jī)的主頁(yè)面。

3.3主頁(yè)面顯示功能

在在ATM.h頭文件中聲明一個(gè)Menu函數(shù),用于ATM自動(dòng)取款機(jī)系統(tǒng)主頁(yè)面的功能,并在ATM.c源文件中定義這個(gè)函數(shù)的功能。如下所示

//基本操作界面
void Menu()
{
	int select = 0;

	system("cls");

	printf("********************************\n");
	printf("*    歡迎來(lái)到ATM自動(dòng)取款系統(tǒng)   *\n");
	printf("*         請(qǐng)選擇一下業(yè)務(wù)       *\n");
	printf("*          1.修改密碼          *\n");
	printf("*          2.查詢余額          *\n");
	printf("*          3.取款              *\n");
	printf("*          4.存款              *\n");
	printf("*          5.返回              *\n");
	printf("********************************\n");

	printf("請(qǐng)選擇功能:");
	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");
	}
}

根據(jù)用戶輸入的數(shù)字賦值給變量select,然后使用Switch語(yǔ)句進(jìn)行判據(jù)程序應(yīng)該進(jìn)入哪一個(gè)函數(shù),并執(zhí)行相應(yīng)的函數(shù)功能。

登入調(diào)試結(jié)果如下

用戶賬號(hào)不對(duì)時(shí)

用戶賬號(hào)符合,但是密碼輸入錯(cuò)誤時(shí)

用戶賬號(hào)和密碼都符合時(shí)

到這一步,本文已經(jīng)實(shí)現(xiàn)了登入頁(yè)面的登入和系統(tǒng)主頁(yè)面顯示的功能

四、設(shè)計(jì)主頁(yè)面修改用戶密碼的功能

在ATM.h頭文件中聲明一個(gè)pwModify函數(shù),用于用戶修改用戶登入密碼的功能,并在ATM.c源文件中定義這個(gè)函數(shù)的功能。如下所示

//修改密碼
void pwModify()
{
	long int mm1, mm2, mm3;
	char temp;

	system("cls");
	printf("        密碼修改            \n");
	printf("輸入舊密碼:\n");
	scanf("%d", &mm1);

	while (mm1 != CODE)					// 判決舊密碼是否輸入有誤
	{
		printf("舊密碼錯(cuò)誤\n");
		printf("請(qǐng)重新輸入?。。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確認(rèn)新密碼:");
	scanf("%d", &mm3);

	if (mm2 != mm3)				// 驗(yàn)證輸入的新密碼
	{
		printf("確認(rèn)密碼不一致\n");
		printf("請(qǐng)重新輸入?。。n");

		system("pause");
		pwModify();
	}

	if (mm2 < 100000)			// 防止輸入的密碼過(guò)于短
	{
		printf("密碼必須大于或等于6位數(shù)\n");
		printf("請(qǐng)重新輸入?。。n");

		system("pause");
		pwModify();
	}

	temp = (char)mm2 % 111111;
	if (temp == 0)				// 防止輸入的密碼過(guò)于簡(jiǎn)單
	{
		printf("密碼過(guò)于簡(jiǎn)單\n");
		printf("請(qǐng)重新輸入?。?!\n");

		system("pause");
		pwModify();
	}

	CODE = mm2;				// 更新變量的值,即修改密碼成功
	system("cls");
	printf("        修改密碼操作成功          \n");
	printf("    按任意鍵返回主頁(yè)面\n");

	system("pause");
	Menu();				// 返回系統(tǒng)的主頁(yè)面
}

其調(diào)試結(jié)果如下

輸入舊密碼不對(duì)時(shí)

確認(rèn)密碼不對(duì)時(shí)

修改密碼成功時(shí)

到這一步,本文已經(jīng)實(shí)現(xiàn)了主頁(yè)面修改用戶密碼的功能

五、設(shè)計(jì)主頁(yè)面查詢用戶余額的功能

在ATM.h頭文件中聲明一個(gè)balanceQuery函數(shù),用于用戶查詢自己賬戶的余額功能,并在ATM.c源文件中定義這個(gè)函數(shù)的功能。如下所示

//余額查詢
void balanceQuery()
{
	system("cls");

	printf("          您的余額為          \n");
	printf("          %d元          \n", balance);
	printf("    按任意鍵返回主頁(yè)面\n");

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

其調(diào)試結(jié)果如下所示

到這一步,本文已經(jīng)實(shí)現(xiàn)了主頁(yè)面查詢用戶余額的功能

六、設(shè)計(jì)主頁(yè)面用戶取款的功能

在ATM.h頭文件中聲明一個(gè)moneyTakeOut函數(shù)和takeOutJudge函數(shù),用于用戶取出自己賬戶中的錢(qián)的功能,并在ATM.c源文件中定義這兩個(gè)函數(shù)的功能。如下所示

// 取款
void moneyTakeOut()
{
	long int temp;
	int select = 0;

	system("cls");

	printf("********************************\n");
	printf("*     請(qǐng)選擇您要取款的金額     *\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("     請(qǐng)輸入選擇序號(hào):");
	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("     請(qǐng)輸入您要取款的金額:");
		scanf("%d", &temp);
		takeOutJudge(temp);
		break;
	case 7:
		Menu();
		break;
	}
}

void takeOutJudge(int takeOutMoney)
{
	if (takeOutMoney > balance)
	{
		printf("           余額不足!         \n");
		printf("          請(qǐng)重新操作          \n");
		printf("       按任意鍵返回主頁(yè)面\n");

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

	if (takeOutMoney > 500000)
	{
		printf("    每次取款不能超過(guò) 50000 元  \n");
		printf("           請(qǐng)重新操作         \n");
		printf("    按任意鍵返回主頁(yè)面\n");

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

	balance = balance - takeOutMoney;

	printf("           取款操作成功         \n");
	printf("         按任意鍵返回主頁(yè)面\n");

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

在moneyTakeOut函數(shù)中可以顯示取出錢(qián)的數(shù)目,并進(jìn)行選擇,然后調(diào)用takeOutJudge函數(shù)對(duì)賬戶余額進(jìn)行判斷是否充足等功能。

其調(diào)試結(jié)果如下所示

取了兩次款,其調(diào)試結(jié)果正確。

到這一步,本文已經(jīng)實(shí)現(xiàn)了主頁(yè)面查詢用戶余額的功能

七、設(shè)計(jì)主頁(yè)面用戶存款的功能

在ATM.h頭文件中聲明一個(gè)moneySave函數(shù),用于用戶將自己的現(xiàn)金存入系統(tǒng)的賬戶中的功能,并在ATM.c源文件中定義這兩個(gè)函數(shù)的功能。如下所示

// 存款
void moneySave()
{
	long int tempMoney;

	system("cls");

	printf("請(qǐng)輸入存放的人民幣:");
	scanf("%d", &tempMoney);

	while (tempMoney < 0)
	{
		printf("輸入的存款數(shù)據(jù)不能為負(fù)數(shù)!?。n");
		printf("請(qǐng)重新輸入存放的人民幣:");
		scanf("%d", &tempMoney);
	}

	balance = balance + tempMoney;

	printf("           存款操作成功         \n");
	printf("         按任意鍵返回主頁(yè)面\n");

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

可以對(duì)輸入的數(shù)據(jù)是否合法進(jìn)行有效的判斷。

其調(diào)試結(jié)果如下所示

到這一步,本文已經(jīng)實(shí)現(xiàn)了主頁(yè)面用戶存款的功能。

八、返回登入頁(yè)面的功能

在ATM.h頭文件中聲明一個(gè)returnEnter函數(shù),用于用戶返回系統(tǒng)登入頁(yè)面的功能,并在ATM.c源文件中定義這兩個(gè)函數(shù)的功能。如下所示

//返回登入頁(yè)面
void returnEnter()
{
	system("cls");
	printf("********************************\n");
	printf("*        歡迎您的再次使用      *\n");
	printf("*  按任意鍵將返回登入頁(yè)面?。?!*\n");
	printf("********************************\n");

	system("pause");

	EnterAccount();
}

調(diào)試結(jié)果如下

總結(jié)

到這里我們完成了ATM自動(dòng)取款機(jī)系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)。在設(shè)計(jì)的工程中,我們主要使用了C語(yǔ)言的函數(shù),while循環(huán)、system庫(kù)函數(shù)等知識(shí)。本文的項(xiàng)目可以讓剛剛?cè)腴T(mén)的小白C語(yǔ)言選手可以很快掌握C語(yǔ)言編程的基本編程能力。

以上就是C語(yǔ)言實(shí)現(xiàn)ATM自動(dòng)取款機(jī)系統(tǒng)的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于C語(yǔ)言ATM自動(dòng)取款機(jī)系統(tǒng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語(yǔ)言復(fù)數(shù)的加減及輸出結(jié)構(gòu)體

    C語(yǔ)言復(fù)數(shù)的加減及輸出結(jié)構(gòu)體

    大家好,本篇文章主要講的是C語(yǔ)言復(fù)數(shù)的加減及輸出結(jié)構(gòu)體,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • 舉例講解C語(yǔ)言對(duì)歸并排序算法的基礎(chǔ)使用

    舉例講解C語(yǔ)言對(duì)歸并排序算法的基礎(chǔ)使用

    這篇文章主要介紹了C語(yǔ)言對(duì)歸并排序算法的使用,歸并排序算法的平均事件復(fù)雜度為(n\log n),需要的朋友可以參考下
    2016-05-05
  • C語(yǔ)言中數(shù)據(jù)如何存儲(chǔ)進(jìn)內(nèi)存揭秘

    C語(yǔ)言中數(shù)據(jù)如何存儲(chǔ)進(jìn)內(nèi)存揭秘

    使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來(lái)存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來(lái)分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么
    2022-08-08
  • C++ 中virtual 虛函數(shù)用法深入了解

    C++ 中virtual 虛函數(shù)用法深入了解

    這篇文章主要介紹了C++ 中virtual 虛函數(shù)用法深入了解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • C++線程優(yōu)先級(jí)SetThreadPriority的使用實(shí)例

    C++線程優(yōu)先級(jí)SetThreadPriority的使用實(shí)例

    這篇文章主要介紹了C++線程優(yōu)先級(jí)SetThreadPriority的使用實(shí)例,較為詳細(xì)的講述了C++線程及其優(yōu)先級(jí)的用法,需要的朋友可以參考下
    2014-10-10
  • c++11之std::async 和std::thread的區(qū)別小結(jié)

    c++11之std::async 和std::thread的區(qū)別小結(jié)

    std::async和std::thread都是C++11中提供的線程庫(kù),它們都可以用于創(chuàng)建新線程,本文主要介紹了c++11之std::async 和std::thread的區(qū)別小結(jié),感興趣的可以了解一下
    2024-02-02
  • c語(yǔ)言排序之歸并排序(遞歸和非遞歸)

    c語(yǔ)言排序之歸并排序(遞歸和非遞歸)

    這篇文章主要介紹了?c語(yǔ)言排序之歸并排序(遞歸和非遞歸),歸并就是把兩個(gè)或多個(gè)序列合并,本文主要介紹二路歸并,下文相關(guān)資料需要的小伙伴可以參考一下
    2022-04-04
  • C++菱形繼承及解決方法詳解

    C++菱形繼承及解決方法詳解

    這篇文章主要介紹了C++菱形繼承及解決方法詳解,在多繼承結(jié)構(gòu)中,存在著很多問(wèn)題,比如從不同基類中繼承了同名成員,派生類中也定義了同名成員,這種二義性問(wèn)題很好解決,加上要訪問(wèn)的基類的類名限制就可以了,需要的朋友可以參考下
    2023-08-08
  • C++實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲

    C++實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語(yǔ)言 map函數(shù)的基礎(chǔ)用法詳解

    C語(yǔ)言 map函數(shù)的基礎(chǔ)用法詳解

    這篇文章主要為大家介紹了C語(yǔ)言 map函數(shù)的基礎(chǔ)用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01

最新評(píng)論