C語言實(shí)現(xiàn)模擬銀行系統(tǒng)
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)銀行系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
1.實(shí)現(xiàn)要求
生成一個(gè)1000-1000000之間的隨機(jī)數(shù)來代表賬戶余額(要求每次生成的數(shù)不一樣);
實(shí)現(xiàn)登錄功能:用戶有三次輸入密碼的機(jī)會,輸入正確的密碼才能登錄,如果輸入錯(cuò)誤超過了三次 之后密碼還是錯(cuò),則提示賬戶被凍結(jié),退出程序。
實(shí)現(xiàn)查詢賬戶余額功能:查詢賬戶余額并輸出。
實(shí)現(xiàn)取款功能:提示用戶輸入相應(yīng)的金額,并取款。
實(shí)現(xiàn)存款功能:提示用戶輸入存款金額,并存款。
實(shí)現(xiàn)修改密碼功能:提示用戶輸入新的密碼,密碼修改成功后,退出系統(tǒng),提示重新登錄。
實(shí)現(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;//密碼?
//隨機(jī)生成一個(gè)1000-1000000之間的整數(shù)來代表存款
void getDeposit() {
?? ?do {
?? ??? ?deposit=rand()%1000000+1;
?? ?} while(deposit<1000);
}
//打印菜單選擇項(xiàng)
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ù)加一
?? ?//如果密碼密碼輸入錯(cuò)誤,就提示重新輸入,直到輸入正確的密碼或者次數(shù)用完
?? ?while(input!=password) {
?? ??? ?if(count==3) {//當(dāng)count=3時(shí),表示輸入了3次錯(cuò)誤的密碼,退出程序
?? ??? ??? ?printf("你的次數(shù)已用完,賬戶已被凍結(jié)!\n");
?? ??? ??? ?printf("正在退出系統(tǒng)......\n");
?? ??? ??? ?exit(0);
?? ??? ?}
?? ??? ?printf("密碼輸入錯(cuò)誤,請重新輸入:(您還有%d次機(jī)會)\n請輸入您的密碼:",3-count);
?? ??? ?scanf("%d",&input);
?? ??? ?count++;
?? ?}
?? ?printf("密碼輸入正確,登錄成功!\n");
?? ?printf("\n \n");
}
//打印賬戶余額
void Print() {
?? ?printf("您的賬戶余額為:%ld\n",deposit);
}
//取款
int drawDeposit() {
?? ?long draw;//取款金額
?? ?do {
?? ??? ?printf("請輸入您的取款金額(本機(jī)只能提取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;//計(jì)算余額(原來的余額-取款金額)
?? ?return draw;
}
//存款
long ?saveDeposit() {
?? ?long save;//存款金額
?? ?printf("存款時(shí)只接受面值為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));//使每次生成的隨機(jī)金額不同
?? ?getDeposit();//調(diào)用函數(shù)生成賬戶余額
?? ?menu();//調(diào)用函數(shù),打印菜單
//?? ?int password=123456;//設(shè)置初始密碼
?? ?judgePwd();//判斷輸入的密碼是否正確
?? ?int ch,statu=0;
?? ?//程序主體:登錄之后,只有等到用戶自己選擇退出時(shí)才退出系統(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)文章
C++如何將二叉搜索樹轉(zhuǎn)換成雙向循環(huán)鏈表(雙指針或數(shù)組)
這篇文章主要介紹了C++如何將二叉搜索樹轉(zhuǎn)換成雙向循環(huán)鏈表(雙指針或數(shù)組),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
c++基礎(chǔ)學(xué)習(xí)之如何區(qū)分引用和指針
C語言中只有指針,C++加入了引用,能夠起到跟指針類似的作用,下面這篇文章主要給大家介紹了關(guān)于c++基礎(chǔ)學(xué)習(xí)之區(qū)分引用和指針的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08
C++11中模板隱式實(shí)例化與顯式實(shí)例化的定義詳解分析
實(shí)例化是為在程序中的函數(shù)模板本身并不會生成函數(shù)定義,它只是一個(gè)用于生成函數(shù)定義的方案。編譯器使用模板為特定類型生成函數(shù)定義時(shí),得到的是模板實(shí)例。這即是函數(shù)模板的實(shí)例化。而函數(shù)模板實(shí)例化又分為兩種類型:隱式實(shí)例化和顯式實(shí)例化2022-04-04
C++實(shí)現(xiàn)RSA加密解密算法是示例代碼
非對稱加密方式可以使通信雙方無需事先交換密鑰就可以建立安全通信,因此被廣泛應(yīng)用于身份認(rèn)證、數(shù)字簽名、等信息交換領(lǐng)域。其中最具有代表性的非對稱加密方式就是RSA公鑰密碼體制。本文將用C++實(shí)現(xiàn)RSA加密解密算法,需要的可以參考一下2022-09-09

