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)里面存放的錢取出來(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源文件如下所示
然后編寫相關(guān)的代碼如下
ATM.h頭文件代碼
#pragma once
#include// 包含相應(yīng)的頭文件
#include
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è)面的顯示的功能
當(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è)面的退出功能
當(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è)面顯示的功能
在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è)面修改用戶密碼的功能
在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è)面查詢用戶余額的功能
在ATM.h頭文件中聲明一個(gè)moneyTakeOut函數(shù)和takeOutJudge函數(shù),用于用戶取出自己賬戶中的錢的功能,并在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ù)中可以顯示取出錢的數(shù)目,并進(jìn)行選擇,然后調(diào)用takeOutJudge函數(shù)對(duì)賬戶余額進(jìn)行判斷是否充足等功能。
其調(diào)試結(jié)果如下所示
取了兩次款,其調(diào)試結(jié)果正確。
到這一步,本文已經(jīng)實(shí)現(xiàn)了主頁(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è)面用戶存款的功能。
在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é)果如下
到這里我們完成了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的小白C語(yǔ)言選手可以很快掌握C語(yǔ)言編程的基本編程能力。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁(yè)名稱:C語(yǔ)言ATM自動(dòng)取款機(jī)系統(tǒng)項(xiàng)目的設(shè)計(jì)與開(kāi)發(fā)-創(chuàng)新互聯(lián)
文章URL:http://aaarwkj.com/article30/dgocso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、企業(yè)網(wǎng)站制作、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)公司、做網(wǎng)站、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容