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系統程序內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!