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

