C語言實現(xiàn)模擬銀行系統(tǒng)
本文實例為大家分享了C語言實現(xiàn)銀行系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
1.實現(xiàn)要求
生成一個1000-1000000之間的隨機數(shù)來代表賬戶余額(要求每次生成的數(shù)不一樣);
實現(xiàn)登錄功能:用戶有三次輸入密碼的機會,輸入正確的密碼才能登錄,如果輸入錯誤超過了三次 之后密碼還是錯,則提示賬戶被凍結(jié),退出程序。
實現(xiàn)查詢賬戶余額功能:查詢賬戶余額并輸出。
實現(xiàn)取款功能:提示用戶輸入相應(yīng)的金額,并取款。
實現(xiàn)存款功能:提示用戶輸入存款金額,并存款。
實現(xiàn)修改密碼功能:提示用戶輸入新的密碼,密碼修改成功后,退出系統(tǒng),提示重新登錄。
實現(xiàn)退出系統(tǒng)功能。
2.示例代碼:
//示例代碼: #include<stdio.h> #include<stdlib.h> #include<time.h> void menu(); int changePwd(); int drawDeposit() ; void getDeposit() ; void judgePwd(); void Print(); long saveDeposit(); long deposit;//存款 int password=123456;//密碼? //隨機生成一個1000-1000000之間的整數(shù)來代表存款 void getDeposit() { ?? ?do { ?? ??? ?deposit=rand()%1000000+1; ?? ?} while(deposit<1000); } //打印菜單選擇項 void menu() { ?? ?printf("\t ?☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n"); ?? ?printf("\t☆※※※※※※※※歡迎使用銀行系統(tǒng)※※※※※※※※☆\n"); ?? ?printf("\t ?☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n"); ?? ?printf("銀行業(yè)務(wù)有以下幾種:\n"); ?? ?printf("按鍵1:查看賬戶余額\n"); ?? ?printf("按鍵2:取款\n"); ?? ?printf("按鍵3:存款\n"); ?? ?printf("按鍵4:修改密碼\n"); ?? ?printf("按鍵5:退出系統(tǒng)\n"); } //判斷密碼是否正確 void judgePwd() { ?? ?int input; ?? ?int count=0;//輸入密碼的次數(shù),初值為0 ?? ?printf("請輸入您的密碼:"); ?? ?scanf("%d",&input); ?? ?count++;//每輸入一次密碼,次數(shù)加一 ?? ?//如果密碼密碼輸入錯誤,就提示重新輸入,直到輸入正確的密碼或者次數(shù)用完 ?? ?while(input!=password) { ?? ??? ?if(count==3) {//當(dāng)count=3時,表示輸入了3次錯誤的密碼,退出程序 ?? ??? ??? ?printf("你的次數(shù)已用完,賬戶已被凍結(jié)!\n"); ?? ??? ??? ?printf("正在退出系統(tǒng)......\n"); ?? ??? ??? ?exit(0); ?? ??? ?} ?? ??? ?printf("密碼輸入錯誤,請重新輸入:(您還有%d次機會)\n請輸入您的密碼:",3-count); ?? ??? ?scanf("%d",&input); ?? ??? ?count++; ?? ?} ?? ?printf("密碼輸入正確,登錄成功!\n"); ?? ?printf("\n \n"); } //打印賬戶余額 void Print() { ?? ?printf("您的賬戶余額為:%ld\n",deposit); } //取款 int drawDeposit() { ?? ?long draw;//取款金額 ?? ?do { ?? ??? ?printf("請輸入您的取款金額(本機只能提取100元面值的鈔票):"); ?? ??? ?scanf("%ld",&draw); ?? ??? ?if(draw>deposit) {//如果輸入的金額大于余額,提示余額不足 ?? ??? ??? ?while(draw>deposit) { ?? ??? ??? ??? ?printf("您的余額不足,請重新輸入取款金額:"); ?? ??? ??? ??? ?scanf("%ld",&draw); ?? ??? ??? ?} ?? ??? ?} ?? ??? ?if(draw<100||draw%100!=0) {//輸入的金額不合法,提示重新輸入 ?? ??? ??? ?printf("輸入的取款金額有誤,請重新輸入取款金額:\n"); ?? ??? ?} ?? ?} while(draw<100||draw%100!=0); ?? ?deposit=deposit-draw;//計算余額(原來的余額-取款金額) ?? ?return draw; } //存款 long ?saveDeposit() { ?? ?long save;//存款金額 ?? ?printf("存款時只接受面值為100的鈔票。\n") ; ?? ?printf("請輸入您的存款金額:"); ?? ?scanf("%ld",&save); ?? ?//存款金額不能為負(fù),且只能存百元鈔 ?? ?while(save<=0||save%100!=0) { ?? ??? ?printf("存款金額不符合規(guī)定,請重新輸入存款金額:"); ?? ??? ?scanf("%ld",&save); ?? ?} ?? ?deposit=deposit+save;//賬戶余額=原來的余額+存款金額 ?? ?return save; } //修改密碼 int changePwd() { ?? ?int change_pwd,change; ?? ?char ch; ?? ?printf("您確定要修改密碼嗎?(Y/y)"); ?? ?scanf("%c",&ch); ?? ?ch=getchar(); ?? ?if(ch=='y'||ch=='Y') { ?? ??? ?judgePwd();? ?? ??? ?printf("請輸入新的密碼:"); ?? ??? ?scanf("%d",&change_pwd); ?? ??? ?printf("請確認(rèn)新的密碼:") ; ?? ??? ?scanf("%d",&change); ?? ??? ?if(change_pwd!=change) { ?? ??? ??? ?printf("兩次密碼輸入不一致,即將返回主頁面...\n"); //?? ??? ??? ?menu(); ?? ??? ??? ?return password; ?? ??? ?} else { ?? ??? ??? ?password=change_pwd;? ?? ??? ??? ?printf("密碼修改成功......\n"); ?? ??? ??? ?printf("請重新登錄:\n"); ?? ??? ??? ?judgePwd(); ?? ??? ??? ?return change_pwd; ?? ??? ?} ?? ?} else { ?? ??? ?return password; ?? ?} } int main() { ?? ?srand((unsigned)time(NULL));//使每次生成的隨機金額不同 ?? ?getDeposit();//調(diào)用函數(shù)生成賬戶余額 ?? ?menu();//調(diào)用函數(shù),打印菜單 //?? ?int password=123456;//設(shè)置初始密碼 ?? ?judgePwd();//判斷輸入的密碼是否正確 ?? ?int ch,statu=0; ?? ?//程序主體:登錄之后,只有等到用戶自己選擇退出時才退出系統(tǒng), 否則就一直執(zhí)行下去 ?? ?while(1) { ?? ??? ?printf("--------------------------------------------------------------------------------\n\n"); ?? ??? ?menu(); ?? ??? ?printf("請選擇你的業(yè)務(wù):\n"); ?? ??? ?scanf("%d",&ch); ?? ??? ?//根據(jù)用戶輸入選擇執(zhí)行相應(yīng)的操作 ?? ??? ?switch(ch) { ?? ??? ??? ?case 1: ?? ??? ??? ??? ?Print(); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 2: ?? ??? ??? ??? ?printf("取款成功,金額為:%ld\n",drawDeposit()); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 3: ?? ??? ??? ??? ?printf("存款成功,金額為:%ld\n",saveDeposit()); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 4: ?? ??? ??? ??? ?password=changePwd(); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 5: ?? ??? ??? ??? ?statu=-1; ?? ??? ??? ??? ?break; ?? ??? ??? ?default: ?? ??? ??? ??? ?printf("輸入有誤,請重新輸入......\n"); ?? ??? ?} ?? ??? ?if(statu==-1) { ?? ??? ??? ?break; ?? ??? ?} ?? ?} ?? ?printf("\n歡迎下次光臨,再見\3\3\3\3\3...\n"); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Linux系統(tǒng)下C語言gets函數(shù)出現(xiàn)警告問題的解決方法
這篇文章主要給大家介紹了關(guān)于在Linux系統(tǒng)下C語言gets函數(shù)出現(xiàn)警告問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12關(guān)于c語言中回調(diào)函數(shù)的理解
這篇文章主要給大家介紹了關(guān)于c語言中回調(diào)函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12一文帶你學(xué)習(xí)C++析構(gòu)函數(shù)
在C++中,析構(gòu)函數(shù)是一種特殊類型的成員函數(shù),用于在對象生命周期結(jié)束時被自動調(diào)用,本文我們將介紹C++析構(gòu)函數(shù)的一些重要知識點,并提供相應(yīng)代碼示例,需要的朋友可以參考下2023-05-05