【C語言及程序設計】項目2-15:模塊化的簡單銀行系統設計

問題描述:

https://edu.csdn.net/course/play/456/4808

?

// 銀行系統.cpp: 定義控制臺應用程序的入口點。
//#include "stdafx.h"
#include <stdlib.h>
#pragma warning (disable: 4996)int  PassTest();
void ibalance();
void withdraw();
void deposit();
void PassChange();int main()
{int ichoice,testresult;printf("歡迎光臨草泥馬銀行\n\n");testresult = PassTest();while (testresult){printf("\n您可辦理下面的業務:\n");printf("   1.查詢余額\n");printf("   2.取款\n");printf("   3.存款\n");printf("   4.改密碼\n");printf("   0.退出\n");printf("請輸入(0-4):");scanf("%d", &ichoice);switch (ichoice){case 1:ibalance(); break; case 2:withdraw(); break;case 3:deposit(); break;case 4:PassChange(); break;default:break;}if (ichoice == 0){break;}}return 0;
}int PassTest()
{printf("請輸入6位密碼:");while (1){int pass, passstored, itry(1), righttime(0);FILE *fp;fp = fopen("D:\\code\\pass.dat", "r");if (fp == NULL){printf("File cannot open! ");exit(0);}for (int i = 0; i < 6; i++){scanf_s("%1d", &pass);fscanf(fp, "%1d", &passstored);if (pass == passstored){righttime++;}}if (righttime == 6){fclose(fp);return 1;break;}else if (itry<3){itry++;printf("密碼錯誤累計%d次,請重新輸入:", itry - 1);continue;}else{printf("密碼錯誤累計%d次,系統終止\n", itry);fclose(fp);return 0;break;}}}void ibalance() 
{double balance;FILE *fp;fp = fopen("D:\\code\\balance.dat", "r");if (fp == NULL){printf("File cannot open! ");exit(0);}fscanf(fp, "%lf", &balance);printf("余額:%.2lf\n\n", balance);fclose(fp);}void withdraw() 
{double cash, balance, diff;printf("請輸入取款額:");scanf("%lf", &cash);FILE *fp;fp = fopen("D:\\code\\balance.dat", "r");if (fp == NULL){printf("File cannot open! ");exit(0);}fscanf(fp, "%lf", &balance);if (balance>cash){diff = balance - cash;fclose(fp);fp = fopen("D:\\code\\balance.dat", "w");fprintf(fp, "%lf", diff);fclose(fp);fp = fopen("D:\\code\\balance.dat", "r");fscanf(fp, "%lf", &balance);printf("現余額:%.2lf\n\n", balance);fclose(fp);}else{printf("取款額大于余額,取款失敗\n\n");fclose(fp);}}void deposit() 
{double cash, balance, diff;printf("請輸入存款額:");scanf("%lf", &cash);FILE *fp;fp = fopen("D:\\code\\balance.dat", "r");if (fp == NULL){printf("File cannot open! ");exit(0);}fscanf(fp, "%lf", &balance);diff = balance + cash;fclose(fp);fp = fopen("D:\\code\\balance.dat", "w");if (fp == NULL){printf("File cannot open! ");exit(0);}fprintf(fp, "%lf", diff);fclose(fp);fp = fopen("D:\\code\\balance.dat", "r");if (fp == NULL){printf("File cannot open! ");exit(0);}fscanf(fp, "%lf", &balance);printf("現余額:%.2lf\n", balance);fclose(fp);}void PassChange()
{while (1){int pass, pass2;printf("請輸入新密碼:");scanf("%d", &pass);if (pass>=100000 && pass <=999999){printf("請再輸入新密碼:");scanf("%d", &pass2);if (pass == pass2){FILE *fp;fp = fopen("D:\\code\\pass.dat", "w");fprintf(fp, "%d", pass);fclose(fp);printf("密碼修改成功\n");}break;}else{printf("密碼位數不足,請輸滿6位\n");continue;}}}

  

感想:

數據寫入硬盤(如寫入文本文檔)似乎是在fclose之后才生效

比如取款后顯示“現余額”,必須這么寫

		fp = fopen("D:\\code\\balance.dat", "w");fprintf(fp, "%lf", diff);fclose(fp);fp = fopen("D:\\code\\balance.dat", "r");fscanf(fp, "%lf", &balance);printf("現余額:%.2lf\n\n", balance);fclose(fp);

  

?

?

?

?

=

轉載于:https://www.cnblogs.com/miyazakehime/p/9302200.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251268.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251268.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251268.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jquery --- 使用when方法等待2個異步事件結束后執行某一個函數.

$.when(promise1, promise2) .done(function(args1, args2){console.log(args1 args2); }// 上述代碼,等待promise1和promise2執行完,打印出(promise1和promise2)使用的參數 // 注:1.promise1和promise2是異步調用的函數,如ajax請求 // 2.如果執行promise1時用到了一個參數…

Android基礎知識(一)

此篇文章開始逐步記錄一些Android開發的一些相關知識。本文主要講了一些adb的常用指令&#xff0c;Toast的常規使用&#xff0c;Intent的顯式啟動活動&#xff0c;按鈕點擊事件的四種處理方法&#xff0c;一些常見布局。 1. ADB常用指令 Android Debug Bridge adb android調試橋…

Android 6.0 動態權限申請

1. 概述 Android 6.0 (API 23) 之前應用的權限在安裝時全部授予&#xff0c;運行時應用不再需要詢問用戶。在 Android 6.0 或更高版本對權限進行了分類&#xff0c;對某些涉及到用戶隱私的權限可在運行時根據用戶的需要動態授予。這樣就不需要在安裝時被強迫同意某些權限。 2. …

el-input輸入金額,保留兩位小數

需求&#xff1a;“只允許輸入金額保留兩位小數”&#xff0c;有2種實現方法 方法一&#xff08;通過正則控制&#xff09;&#xff1a; html&#xff1a; <el-inputv-model"inputTable.amount"input"formatNum(form.amount, amount)" ></el-i…

jquery --- pip方法

我們先來看下面一個例子: var getPromise $.get(/query); getPromise.done(function(data) {var postPromise $.post(/search, data); }); // ...無法在此處給postPromise方法附加處理器// 上面先使用get方法讀取url為query的數據,在完成后,再使用post方法將數據發送給另一個…

斜率DP總結

chunlvxiong的博客 T1&#xff1a;防御準備 三個月后第一次寫博客&#xff0c;我們從這個題開始&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id3156。 這道題DP方程比較好寫&#xff1a;用dp[i]表示1到i全部被控制的最小代價&#xff0c;那么dp[i]min{dp[j](i-…

前端使用react-intl-universal進行國際化

一、國際化 / i18n 目前國際化&#xff0c;就是開發者寫對象&#xff0c;一個key關聯若干語種的翻譯。相比于瀏覽器自帶的翻譯功能&#xff0c;語義更加準確。 “國際化”的簡稱&#xff1a;i18n&#xff08;其來源是英文單詞 internationalization的首末字符i和n&#xff0c;…

守護線程Daemon的理解

1、守護線程伴隨著主線程的銷毀而銷毀&#xff1b; 2、jvm虛擬機中有很多守護線程&#xff0c;隨著main函數的結束而結束&#xff0c;自動回收棧中的內容。 Thread t1 new Thread(){Overridepublic void run() {for (int i 0; i < 10; i) {try {Thread.sleep(1000);} catc…

javascript --- 異步函數的順序進行

假設我們希望某一組異步函數能一次進行,在不使用的任何工具的情況下,可能會編寫出類似下面的代碼: funcs[0](function() {funcs[1](function() {funcs[2](onComplete);}) });// 注:以上代碼運行會出現的一些不方便: // 1.回調太深,不利于閱讀..(100層嵌套...); // 2.不能使用循…

2021前端面試題

基礎知識與素養 JS基本功訓練與思考 程序設計的滲透與應用 業務技巧的積累與訓練 生產力轉換 項目的組織架構 轉換專業人才的全面生產力 什么樣的技術水平決定了你應該學習什么樣的知識與技術&#xff0c;什么樣的知識與技術水平決定了你到什么樣的公司&#xff0c;到什么樣的公…

JS的自定義事件(觀察者模式)

1      var Event {2 on: function (eventName, callback) {3 console.log("eventName:"eventName)4 if (!this.handles) {5 Object.defineProperty(this, "handles", {6 …

glog日志庫使用筆記

日志能方便地診斷程序原因、統計程序運行數據&#xff0c;是大型軟件系統必不可少的組件之一。glog 是google的開源日志系統&#xff0c;相比較log4系列的日志系統&#xff0c;它更加輕巧靈活。 在Github上下載glog&#xff0c;解壓后用CMake生成VS2017工程&#xff08;默認生成…

javascript --- 異步工作流的動態排隊技術

很多情況下,使用async.series和async.paralle存在一個明顯的問題,即: 1.其任務隊列是靜態的,在其調用前,一定要明確任務隊列的數量,一旦明確了任務隊列的數量,就不能改變. 2.倘如要同時并發讀取上千個文件,使用async.paralle明顯不可能(各線程搶資源,根本不夠用),使用async.ser…

java中的內部類總結

內部類不是很好理解&#xff0c;但說白了其實也就是一個類中還包含著另外一個類 如同一個人是由大腦、肢體、器官等身體結果組成&#xff0c;而內部類相當于其中的某個器官之一&#xff0c;例如心臟&#xff1a;它也有自己的屬性和行為&#xff08;血液、跳動&#xff09; 顯然…

elementPlus關閉彈窗,頁面原先滾動條消失

一開始以為是彈窗內容超過一屏引起&#xff0c;改為一屏內也不能解決。 打開控制臺&#xff0c;發現彈窗后自動給body標簽加上了類el-popup-parent–hidden&#xff0c;關閉后也沒去除&#xff0c;因此手動刪除該類。 document.getElementsByTagName(body)[0].className ;

在Windows下如何創建虛擬環境(默認情況下)

很多小伙伴平時在使用Python的時候&#xff0c;有的項目需要使用Python2來進行開發&#xff0c;有的項目則是需要Python3來進行開發。當不清楚怎么分開環境的時候&#xff0c;此時兩個環境開始打架&#xff0c;彼此傻傻分不清楚。虛擬環境作為隔離的利器應運而生&#xff0c;其…

javascript --- 隱藏內部實現(最小暴露原則)

看下面的一個例子: function doSomething(a) {b a doSomethingElse( a * 2 );console.log( b * 3 ); }function doSomethingElse(a) {return a - 1; }var b;doSomething( 2 ) ; // 15上述代碼中的doSomethingElse實際上應該是doSomething的"私有"部分,根據最小暴露…

selenium python 入門-元素定位

環境搭建 安裝教程 http://www.testclass.net/selenium_python/install-selenium/ chrome瀏覽器 還需要下載chrome driver 把下載的chromedriver .exe放到chrome安裝目錄下的Application目錄下和 python所在的安裝目錄下&#xff0c;比如我的目錄是C:\Program Files (x86)\Goog…

ES5程序設計轉ES6 筆記

課程鏈接 1. 立即執行函數 特點&#xff1a;執行結束&#xff0c;立即銷毀&#xff1b;獨立作用域執行符號&#xff08;&#xff09;只能跟在表達式后面&#xff0c;不能放在函數聲明后分號可以寫在前面/后面document為傳入實參&#xff0c;doc為形參 ;(function(doc){...co…

DPDK helloworld 源碼閱讀

在 DPDK Programmers Guides 中的 EAL 一篇中有一個圖可以很清晰地看到一個DPDK的應用程序的大致執行思路&#xff1a; 初始化檢查CPU支持、微架構配置等完成后&#xff0c;執行main()函數。 第一步是 rte_eal_init()&#xff0c;核心初始化和啟動。其中線程使用的是pthread庫&…