C語言程序設(shè)計報告模擬ATM取款機_第1頁
C語言程序設(shè)計報告模擬ATM取款機_第2頁
C語言程序設(shè)計報告模擬ATM取款機_第3頁
C語言程序設(shè)計報告模擬ATM取款機_第4頁
C語言程序設(shè)計報告模擬ATM取款機_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、仲愷農(nóng)業(yè)工程學院工程實訓報告ATM取款機課程名稱C語言程序設(shè)計工程實訓姓名林少烈院(系)計算機科學與工程學院專業(yè)班級計算機113班學號201110214317指導教師王成仲愷農(nóng)業(yè)工程學院教務(wù)處制1需求分析12系統(tǒng)總框圖和功能模塊說明12.1 系統(tǒng)總框圖12.2功能模塊說明13系統(tǒng)設(shè)計23.1主要結(jié)構(gòu)體23.2主要功能函數(shù)23.3關(guān)鍵函數(shù)的流程圖34系統(tǒng)調(diào)試125總結(jié)256源程序清單286.1頭文件286.2主程序296.3解除被凍結(jié)用戶646.4用戶注冊661需求分析所設(shè)計的A TM取款機應(yīng)具備以下功能:插入銀行卡(用賬號輸入的方式代替);密碼的輸入;用戶信息查詢;用戶余額查詢;取款;轉(zhuǎn)賬;修

2、改密碼;退卡。2系統(tǒng)總框圖和功能模塊說明2丄系統(tǒng)總框圖ATM取款機圖1系統(tǒng)總框圖2.2功能模塊說明> 輸入用戶賬號模塊:在運行時,完成用戶賬號的輸入(代替插卡);>輸入賬號密碼模塊:在輸入賬號之后,完成用戶密碼的輸入;在修改密碼的過程中,完成 用戶輸入舊密碼的功能;> 信息讀取功能模塊:完成用戶信息的讀?。?gt; 凍結(jié)賬號功能模塊:當輸入密碼3次錯誤時,凍結(jié)用戶賬號:> 查詢用戶信息模塊:完成用戶的信息查詢(不包括余額查詢);> 查詢余額功能模塊:完成用戶余額的查詢;> 取款功能模塊:完成取款功能模塊:> 轉(zhuǎn)賬功能模塊:完成轉(zhuǎn)職功能;> 修改密

3、碼功能模塊:完成用戶修改密碼功能;> 退卡功能模塊:完成退卡功能(即:退出程序功能)。3系統(tǒng)設(shè)計31主要結(jié)構(gòu)體用戶賬號、密碼、余額StnJCt USer用戶數(shù)據(jù)Char nUm2O;用戶賬號Char name10;/Char PaSSWOrd7;密碼float balance;余額;3.2主要功能函數(shù)用戶信息讀取輸入賬號VOid readnfoO;VOid inputUm(Char * nUm);VOid now_exist(char * num);判斷是否被凍結(jié)或不存在VOld exsted(char * nUm);VOid inputjDassword(char * p_WOrd,c

4、har * W); 輸入密碼VOid faceO;VOid balance_refer();VOid ChOOSe(int c);VOid draw-mOneyO;VOid Set_PaSSWOrd();VOid input_new_PaSSWOrd(CharVOid tran_accout();VOid StamP();VOid info_referO;VOid out();VOid IockO;VOid SaVenfoO;3.3關(guān)鍵函數(shù)的流程圖界面顯示余額查詢菜單選擇取款修改密碼OId.password);設(shè)置新密碼轉(zhuǎn)賬打印單條信息查詢退岀程序凍結(jié)賬號存儲信息Texited函數(shù)流程圖IIO

5、W,exited函數(shù)流程圖input_password 流程圖ChOOSe函數(shù)流程圖inttakec;draw_money函數(shù)流程圖JLini.cl:i II:< H!Cn-PetCnO:r V riB*cnrM |d.'&y&2truy rPHCHnp5iLl,c ,.clivh);門忖W p;1 biMMT JOt-.Byatcmf-VLSw >d-nCtiriliriaie:f <rc <r*'_pn.nsytcm<CUS,>:PrinWl IISJiStM rh 13VPIirl l *,*')!*'

6、fx«ss UrJI I Jrl 1 .I * C 1 p<M C> _PMU-.-t>y«Cvtrt(MCLS,);(>r,cfeP< nc >« p a.NJ>LrCP yC Ub er .pwt> S W .工IlrirII lX ,%r -r, .c3.vh)4b-yl-trL(,CL S, >YZinput_IIeW_PaSSWOrCl 函數(shù)流程圖Int i=0;PrIntf(nlt CannOt OPen !n);讀取文件關(guān)閉文件讀取文件數(shù)據(jù)函數(shù)流程IOCk函數(shù)流程圖SaVeJnfO函數(shù)流程圖4系統(tǒng)

7、調(diào)試首先運行程序,系統(tǒng)提示輸入賬號。(1)當輸入錯誤賬號,系統(tǒng)提示:用戶不存在,請從新輸入。,(2)當輸入錯誤的密碼時.系統(tǒng)提示:密碼有誤請重新輸入。(3)當輸入正確賬號與密碼時,進入主頁面。(4)主界面(5)在主界面選擇數(shù)字1,進入查詢余額界面,界面顯示余額。按任意鍵返回。(6)在主頁面選擇數(shù)字2,進入取款界面,系統(tǒng)提示輸入取款的金額,當輸入不是整百數(shù)是,系統(tǒng)提示請輸入正確的金額,請重新輸入。(8)當輸入負數(shù)時,系統(tǒng)提示:請輸入正確的金額請重新輸入。(9)當輸入超過卡里余額的數(shù).系統(tǒng)會提示余額不足請重新輸入。(10)當輸入超過3000的數(shù)時,系統(tǒng)會提示:對不起,一次最多能取3000元,請重新

8、輸入。(11)當輸入正確的金額時,系統(tǒng)提示:交易成功,按O返回主菜單,按9繼續(xù)取款。(12)在主菜單界面選擇數(shù)字3,進入修改密碼界面,首先系統(tǒng)會提示:請輸入舊密碼。(13)當輸入就密碼正確時,系統(tǒng)提示:請輸入新密碼(6位數(shù))。(14) 當輸入的新密碼含有非數(shù)字時,系統(tǒng)提示:請輸入正確的數(shù)字。(15) 當輸入的新密碼不足六位時,系統(tǒng)提示:請輸入六位的密碼。(16) 當兩次輸入的新密碼不相同時.系統(tǒng)會提示:兩次輸入的密碼不同,請重新輸入。'ArMftIK5'.Debjg>回0.遨回菜單Ir諾箱入新茁碼&位數(shù)宇八杠+筆S½I認您的岳礎(chǔ)“"半:(17)

9、 當輸入兩次密碼都正確時,系統(tǒng)提示:密碼修改成功,請牢記新密碼。(18) 在主菜單界面選擇數(shù)字4時,進入轉(zhuǎn)賬界面。系統(tǒng)提示:請輸入對方的賬(19) 當輸入的賬號錯i吳時,系統(tǒng)會提示:用戶不存在,請重新輸入。(20) 當輸入自己的賬號時,系統(tǒng)會提示:不能給自己轉(zhuǎn)賬,請重新輸入賬號。(21) 當輸入正確的賬號時,界面會顯示對方的信息。按0返回菜單,按9確定轉(zhuǎn)賬。(22)當確定轉(zhuǎn)賬時,系統(tǒng)會提示:請輸入轉(zhuǎn)賬金額0返同菜單(23)當輸入轉(zhuǎn)賬的金額超過3000元時,系統(tǒng)會提示:對不起,一次轉(zhuǎn)賬不能超過3000元,請重新輸入。(24)當輸入正確的金額時,系統(tǒng)提示:交易成功。按O返回主菜單按9繼續(xù)轉(zhuǎn)賬。(2

10、5)在主菜單界面選擇數(shù)字5,進入信息查詢界面,界面將顯示賬號的信息。(26)在主界面選擇數(shù)字0,進去取款界面,系統(tǒng)提示:感您的使用,請拿回卡。5總結(jié)我們經(jīng)常接觸的一個機器,所以相對來說話流程圖比較容易。在確認了程序設(shè)計主題之后,首先第一步是畫了大概的流程圖,因為ATM取款機是在畫完流程圖之后,就是進行代碼的編寫了,我采用自頂向下的方式來規(guī)劃我的整 個代碼流程,首先是確定了大概需要哪些函數(shù)來實現(xiàn)所需的功能,在函數(shù)命名的時候, 我并不是隨便命名的,而是采用書上介紹的方法,用英文來命名。在命名過程中由于 英語功底不好的我遇到了小小的麻煩(有些單詞不會拼),于是就用電子詞典來解決這問 題。剛開始我是把

11、所有的自定義函數(shù)定義為VOIei型函數(shù)。所有的函數(shù)申明寫好之后就可以開始細化了,首先確定所需結(jié)構(gòu)體,然后就是頭文 件的定義,最后確定了所有函數(shù)的編寫順序。由于這次程序設(shè)計是ATM取款機,所有 要用到文件的知識,但又沒學過,所以只能先停止代碼的編寫來學習文件的知識。通過 了兩天的學習,雖然只是略學了皮毛,但是勉強看著書可以來自己新建文件并不數(shù)據(jù)存 入文件中。所有的準備工作完成后,真正的可以進行代碼編寫了,首先把所有的函數(shù)都編寫出 來(容為空),然后根據(jù)從易到難的順序逐個功能的編寫。其順序依次是:InPUt-num函 數(shù)(用戶賬號輸入),inputJDassword函數(shù)(密碼輸入)l IOCk函數(shù)

12、(凍結(jié)用戶賬號)I readjfo 函數(shù)(讀取文件數(shù)據(jù)),now-exit函數(shù)(檢查是賬號是否存在且未被凍結(jié)),existed函數(shù) (檢查賬號是否被凍結(jié)),face函數(shù)(主菜單),ChOOSe函數(shù)(功能選擇),balace.refer 函數(shù)(余額查詢),draw_money函數(shù)(取款),Set_PaSSWOrd函數(shù)(修改密碼), iput_newJDassword 函數(shù)(輸入新密碼),tran-accot 函數(shù)(轉(zhuǎn)賬)1 ifo-refer 函數(shù)(查 詢信息),OUt函數(shù)(退卡)。在寫InputjDassword函數(shù)時,沒辦法實現(xiàn)密文的輸出,所以研究了很久,最后通過 找資料和詢問師兄才解決了這

13、一難題,并從中學到了這一技巧。在寫IOCk函數(shù)時,剛開始只是用空字符來覆蓋原有的賬號,但是在測試時發(fā)現(xiàn)這樣 凍結(jié)的方法行不通,因為這樣子凍結(jié)的話雖然原賬號沒了,但是在輸入賬號時只要直接 按Enter鍵就可以進入輸入密碼的程序,所以這又是一個難題。在晚上睡覺時突然想到了 曾經(jīng)在課外書上看到的產(chǎn)生隨機數(shù)的函數(shù)(rand函數(shù)),于是,第二天這個所謂的難題也 解決了。所有的函數(shù)編寫完畢,想到了既然凍結(jié)了賬號,肯定需要一個程序來解除凍結(jié)了的 賬號,所以,自己又摸索了如何解決這一問題.最后想到了一個方法:再新建一個文件 (文件名為all Uer information)作為后臺來存儲用戶的信息,但這個文件

14、存儲的是所有 未被凍結(jié)前和未被凍結(jié)的賬號信息(即所有原始賬號信息)。而解除的方法是:先讀取汕 USerinfOrmatiOn這個文件里的信息,然后把里面的信息覆蓋到在前臺操作的文件即可。 當用戶被凍結(jié)后想解除的話只需運行這個程序即可解除凍結(jié)。寫了解除凍結(jié)賬號的函數(shù)后,又想到需要寫一個注冊賬號的程序,于是也順利的完 成了,最后,通過多次的調(diào)試,把整個程序代碼給完成了。6源程序清單6.1頭文件/*頭文件 user.h*/#inClUde <stdio.h>#inClUde <stdlib.h>#inClUde <conio.h>#include <stri

15、ng.h>#inClUde <time.h>用戶數(shù)據(jù)StrUCt USerChar num20;Char name10;Char PaSSWOrd7; float balance;VOid readnfo();VOid input_num(char * num);VOid now_exist(Char * num);VOid existed(char * num);用戶信息讀取輸入賬號判斷是否被凍結(jié)或不存在VOid inputjassword(char * p_word,char * W); 輸入密碼VOid balance-refer;余額查詢VOid ChOOSe(int

16、 c);菜單選擇VOid drawmoney();/徵款VOid seLpasswordQ;設(shè)置密碼VOid input_new_PaSSWOrd(Char * Old_PaSSWOrd);VOid tran_accoUnt();轉(zhuǎn)賬VOid stampO;打印單條VOid info_referO;信息查詢VOid out();退出程序VOid lockO;凍結(jié)賬號VOid SaVenfo();存儲信息6.2主程序/主程序:main*/妨莫擬ATM取款機燈自定義頭文件#include "user.h,1#define U 8StrUCt USer userU;intf;全局變量f是用

17、來記錄用戶下標(即哪個用戶)int maiO定義賬號數(shù)組變量調(diào)用inpuCnum函數(shù),輸入用戶賬號Char number20;in put_ num(number);return O;/*函數(shù)功能:輸入用戶賬號RVOid input_num(char num12)readjnfo();輸入賬號前先調(diào)用函數(shù)readJnfo讀取所以用戶信息,以便后面判斷賬戶是否存在以及密碼是否正確SyStem(,cls");PrintfC,nnnnnnnntt 請輸入您的賬號:“);gets( num);no w-exist(num);調(diào)用exist函數(shù)檢查該賬號是否存在"函數(shù)功能:讀取用戶信

18、息*/VOid readnfo()int i=0;FILE*fp;通過文件指針來讀取用戶if (fp=fopen(,user information.dat,j"r,) = = NULL) 數(shù)據(jù)信息(不包括被凍結(jié)用戶信息)Printf("lt CannOt OPen !");e×it(O);while(!feof(fp)fread(&useri,sizeof(struct USer)JI Jp);i+;fclose(fp);/*函數(shù)功能:判斷用戶是否存在且未被凍結(jié)燈VOid now_exist(char * nUm)int s=O,i;s是用來判

19、斷用戶是否存在的條件,如果存在s=l,不存在s=0;Char *w=,input"While(I)for(i=0;i<12;i +)if ( O = StrCmp( num, useri.num ) 匹配用戶s=l;f=i;如果用戶存在則跳出循環(huán),并用變量f記錄用戶下標,以便后面使用。break;else s=0;if (S=I)input.PaSSWOrd( useri.password, w); / 如果用戶存在,則調(diào)用 inputjoassword函數(shù)并把用戶密碼傳遞給它,實現(xiàn)用戶輸入密碼功能。elseexisted(num); 如果用戶不存在,則調(diào)用existed函數(shù),

20、判斷是否賬號被凍結(jié)/*函數(shù)功能:判斷賬號是否被凍結(jié)MVOid existed(char * num)int I = O1 i = 0; /s是用來判斷用戶賬號是否被凍結(jié)的條件,I二1被凍結(jié),I二0說明用戶不存在;FILE*fp;if (fp=fopen(,all USer information.dat,jl,r") = NULL )Printf("It CannOt OPen !l,); 被凍結(jié)用戶)e×it(O);用文件指針讀取所有用戶數(shù)據(jù)(包括while(!feof(fp)fread(&useri,sizeof(struct USer)Jl,fp);

21、i+;While(I)for(i=0;i<12;i+)判斷輸入的if ( StrCmp(num,useri.num)=0 )賬號是否存在1=1break;else 1=0;if (I = 1)PrintfC,anntt對不起,您的賬號已被凍結(jié),請與客服聯(lián)系I nnnnn); exit(0);elsePrintfC,anntt用戶賬號不存在,請重新輸入I n");PrintfC,nnn按任意鍵返回I ”);getch();SyStem(,CLS,);in put_n Um(num);函數(shù)功能:輸入密碼*/VOid input_PaSSWOrd(Char * p_WOrdJChar

22、 * W )Char PaSSWOrd20;Char ch;int i, ts = 1;/ts用來統(tǒng)計輸入密碼錯誤的次數(shù)doif (ts<=3)i = O;PrintfC,nntt 請輸入密碼:f,);Ch = getch();While ( Ch !=13)輸入字符Ch不為回車鍵if ( Ch = 8)輸入字符Ch為退格鍵if (i != O)elsePrintfC*,);PaSSWOrdi = ch; i÷+;繼續(xù)輸入字符Ch輸入O則返回主Ch = getchO;PaSSWOrdi=,0,;if (O = strcmp(W,llsetl1)if (StrCmP (PaSSW

23、Ord,0") )=0 )菜單SyStem(,CLS,');face。;if ( O = StrCmP(P_word,password)密碼相同if (0 二二 StrCmP(Winput")SyStemC,CLSn);faceO;調(diào)用face函數(shù)進入主界面elseif(0 =strcmp(W1,set,)inPUt_new_password( PaSSWOrd );elseif ( O != StrCmP(P_word,password)密碼不相同PrintfC,ann您輸入的密碼有誤,請重新輸入!”);ts÷+;Printfc,nnn按任意鍵繼續(xù)I “

24、);getch();SyStemC,CLS");elsePrintfC,nnnt 對不起,您已輸入密碼錯誤3次,您的賬號已被凍結(jié), 請與客服聯(lián)系,);ock();輸入3次錯誤,則提示用戶賬號被凍結(jié),并調(diào)用IOCk函數(shù)。while ;/*函數(shù)功能:主菜單界面*/VOid face()int ch;SyStem(,CLS,);PrintfC,nn);Printf(,tnu);Prin tf ("t* n JPrintfC,t*tttttt*nt*tt 您好I歡迎使用XX銀行tt*nt*ttttttf);Prin tf ("t*Prin tf(tAtttttttnttt

25、ttttt*n,1);PrintfC,t*tl.查詢余額 ttt2.取款 tt*nt*ttttttt*nu);Prin If(tAtxtxtxtxtxtxtAnxtAtxtxtxtxtxtxtAnn);PrintfC,t*t3.修改密碼 ttt4.轉(zhuǎn)賬 tt*nt*ttttttt*ni,);Printfc,t*ttttttt* nt*ttttttt*nli);PrintfC,t*t5.信息查詢 ttt.退卡 tt*nt*ttttttt*n,');Printfe,t*ttttttt*n,;Prin tf ("t* n JPrintf(,tPrintfC,ttt 請選擇:ll);

26、SCanfC,%d,l1 &ch);getchar();ChOOSe(ch);VOid ChOOSe(int C)While(I)SWitCh (C)CaSe O: out();break;退卡CaSe 1: balance_referQ;break;余額查詢CaSe 2: draw_mOney();break;/儆款CaSe 3: SeLPaSSWOrd()jbreak;設(shè)置密碼CaSe 4: tran.accoUnt()jbreak;轉(zhuǎn)賬CaSe 5: infoeferQ; break;信息查詢defaultSystem(nCLSn);Printf(“輸入有誤,請重新輸入I n按任

27、意鍵返回“);getch();System(nCLSn);face();break;/*函數(shù)功能:查詢余額VOid balance_referOSyStem(,CLS,);Printf("nnnnnnnnttt 您的余額是:%.2f ¥ n,1userf.balance);PrintfC,nn按任意鍵返回I n");9tch();SyStemC,CLS,');face。;"函數(shù)功能:取款*/VOid draw_mOney()int take,q,c;doSystemC1CLSn);判斷是否為整百數(shù)并且大判斷取款數(shù)是否不超判斷是否超過3000調(diào)用S

28、aVeJnfO函數(shù),存PrintfC,ntttttttt.返回菜單“);Printf("nnnnnntt請輸入取款金額(整百數(shù))SCanf("%cT,&q);getcharO;if (q)take=q;if (take>=100 && take%100=0 )于100的數(shù)if (take <= userf.balance)過余額if (take <= 3000)SyStemC,CLSn);userf.balance =take;SaVe儲信息Printf("nnnnnnttt 交易成功,請?zhí)崛‖F(xiàn)金 I n");P

29、rintfC,nnnnntt.返回菜單 ttt9.繼續(xù)取款“);c=getch();if (c=,9,)輸入9繼續(xù)取款System(nCLSn);elseif (c=,0,)輸入0返回菜單SyStemC,CLS");face();elsePrintf(“輸入錯誤,請重新輸入ln“);elseSyStemC,CLSn);Printf("nnnnnntt對不起,一次最多能取3000元,請重新輸入I *);getch();SystemC1CLSn);elseSyStemC,CLSn);Printfc,nnnnnnttt您的余額不足,請重新輸入I ,);PrintfC,nnnnn

30、按任意鍵返回 I n,;getch();SyStem(,CLS,);elseSystem(nCLSn);Printf(,nnnnnnttt請輸入正確的金額I請重新輸入I ”);PrintfC,nnnnn 按任意鍵返回 I nu);getch();SyStemC,CLS,1);elseSyStem(,CLS,);taceO;while(l);*函數(shù)功能:修改密碼VOid SeCPaSSWOrdOChar *w="sef,;/w是為了在調(diào)用input_PaSSWOrd函數(shù)時區(qū)分是哪個主調(diào)函數(shù)SyStem(,CLS,);Printfc,ntttttttt.jg 回菜單“);調(diào)用輸入密碼函i

31、nput,password( userf.password , W);Printf(,nnnnnnn");/*函數(shù)功能:輸入新密碼燈VOid input_new_PaSSWOrd(Char * old,password)int i,d;/ d用來判斷用戶新密碼是否為6位數(shù)Char new_PaSSVVOld27,ch;doi = O;SyStemC,CLSn);PrintfC,ntttttttt.返回菜單”);Printf("nnnnnntt 請輸入新密碼(6 位數(shù)字):");Ch = getchO;While ( Ch !=13)輸入字符Ch不為回車鍵汁(Ch

32、= 8)輸入字符Ch為退格鍵PrintfC,%c %c,ch.ch);if (i!=0)elsePrintfC*-);new_PaSSWOrd0 = ch;i+;繼續(xù)輸入字符Ch輸入O則返回主Ch = getch();new_PaSSWOrd0i=,0l;if (StrCmP (new-password0fll011) )=0 ) if (newj3assword0d>,9,) (new_PaSSWOrd0d<,0,)/ 判斷密碼是菜單SyStemC,CLSm);face。;for(d=0;newj3assword0d!=0;d+)否是數(shù)字System(nCLSn);Printf(

33、"nnnnnnttt 請輸入數(shù)字,I n");Printf("nnnnn 按任意鍵返回 I nn);getch();in PUt_new_password(Old_PaSSWOrd);if (d!=6)判斷密碼是否為6位SyStem(,CLS,);PrintfC,nnnnnnttt 請輸入 6 位的密碼,I n,t);PrintfC,nnnnn 按任意鍵返回 I nn);getch();COn tinue;輸入O則返回主if (StrCmP (new_PaSSWOrd0,0") )=0)菜單SyStem(,CLS");faceO;elsePri

34、ntf(,nnnnnntt 請再次確認您的密碼:t ");i = 0;Ch = getch();While ( Ch !=13)輸入字符Ch不為回車鍵if ( Ch = 8)輸入字符Ch為退格鍵Printfe,%c %c",ch,ch);if (i != 0) elsei-;PrintfC,*);new_PaSSWOrdli = ch;i+;Ch = getchO;繼續(xù)輸入字符Chnew_PaSSWOrdli=,O,;if (StrCmP (new_PaSSWOrdlj,'O") )=0 )輸入 O 則返回主菜單SyStem(,CLS,);face。;el

35、seif (StrCmP (newjDassword0,new_PaSSWOrd1) )=0 ) 判斷輸入兩次密碼是否一致StrCPy(USerf.password,newjoasswordl);SaVeJnf o();調(diào)用SaVeJnfO函數(shù),存儲信息PrintfcInnntt密碼修改成功,請牢記I ,);PrintfC,nn按任意鍵返回菜單I “);getch();system(,CLSn);face();elseSyStemC,CLS,');PrintfC,您輸入的兩次密碼不同,請重新輸入I “);PrintfC,nnnnn 按任意鍵返回 I nn);getch();while(

36、l);/*函數(shù)功能:轉(zhuǎn)賬*/VOid tran_accoUntoChar Other_num20;int i,c1q,tran; IIZ用來判斷轉(zhuǎn)賬是否繼續(xù),q用來判斷用戶行為,tran用來存 儲轉(zhuǎn)賬金額SyStem(,CLS,);Printfc,ntttttttt. 回菜單”);PrintfC,nnnnnnttt 請輸要對方的賬號:,f);gets(other_num);輸入對方賬號if ( StrCmP(Other-.num,0,)=0 )輸入O返回菜單face();elseif ( StrCmP(Other_num,userf.num)=O )判斷是否為自身賬號SyStemC,CLS&q

37、uot;);Printf(,nnnnnnnntt對不起,不能給自己轉(zhuǎn)賬,請重新輸入賬號In");PrintfC,nnn按任意鍵返回I °);getch();SyStem(,CLSn);tran_account();遞歸調(diào)用elseWhile(I)for(i=0;i<U;i + +)if ( StrCmP(Other_num,useri.num)=O )匹配用戶While(I)SyStemC,CLS");Printf(,nnnnnnnntt 對方信息:nn");/顯示對方 信息PrintfC,ttt:%snttt賬號:%s",useri.n

38、ame,user.num);PrintfC,nnnnntt.返回菜單 ttt9.確認“); c=getch();if (c=,9,)輸入9確認System(nCLSn);doPrintfc,ntttttttt.返回菜單”);Printf("nnnnnntt請輸入轉(zhuǎn)賬金額(整百數(shù)):scanf("%d"1 &q);getcharO;if (q)/q為非0時進入層條件語句tran=q;if (tran>=100 && tran%100=0 ) 判斷是否為整百于IoO的數(shù)超過余額數(shù)并且大if (tran <= userf.balanc

39、e)L款數(shù)是否不 if (tran <= 3000 ) 判斷是否超過 3000SyStemC,CLS,;userf.balance -=tran;useri.bala nce +=tran;信息成功 I n');ttt9 繼續(xù)轉(zhuǎn)賬SaVeJnfO0;/用 save_info,存儲Printf("nnnnnnttt 交易Printf("nnnnntt.返回菜單 c=getch();if (c=,9) 輸入9就行轉(zhuǎn)賬System(nCLSn);elseif (c=,01) c為O返回菜單SyStemC,CLSn);faceO;elsePrintf (“輸入錯誤,請

40、重新輸 入 I n,);System(nCLSn);elseSyStemc,CLSn);Printf("nnnnnntt 對不起,一 次最多能轉(zhuǎn)賬3000元,請重新輸入I “);Printf(,nnnnn 按任意鍵返回 In,);gtch();System(nCLSn);else足,請重新輸入I “);額I請重新輸入I “);SystemC1CLS");Printf("nnnnnnttt 您的余額不PrintfC,nnnnn 按任意鍵返回 ln); getch();system(,CLSn);elseSystem(nCLSn);Printf(,nnnnnnttt

41、請輸入正確的金PrintfC,nnnnn 按任意鍵返回 I n");getch();SyStem("CLS,);elseSyStemC,CLS,');face();while(l);elseif (c=,0,)faceO;SyStemc,CLSn);Printf(,nnnnnnttt 用戶不存在 I 請重新輸入 I ");Printf(,nnnnn 按任意鍵返回 I n");getch();SyStemC,CLSn);tran_accountQ; 遞歸調(diào)用"函數(shù)功能:查詢用戶信息*/VOid info_refer()SyStemC,CL

42、S,);顯示用戶信息Printf(,nnnnnnnnttt : %snttt 賬號:%s",,userf.num);PrintfC,nn按任意鍵返回I nn);getch();SyStem(,CLS,);face。;VOid OUtOSyStem(,CLS,);Printf(,nnnnnnnntttt 感您的使用 I n");PrintfC,tttt 請取回卡 I n,);getch();exit(O);函數(shù)功能:凍結(jié)用戶賬號*/VOid IOCkOint i;FILE*fp;Char random20;Srand( (UnSigned) time(NU

43、LL);隨機器for(i=0;i<12;i+)randomi=rand0%100;產(chǎn)生 12 個隨機數(shù)randomi=,0,;StrCPy(USerf.num,random);將產(chǎn)生的隨即數(shù)替換用戶的賬號實現(xiàn)將用戶賬戶凍結(jié)重寫數(shù)據(jù)if (fp=fopen(,user information.datll,llwbll)=NULL)Printf("It Cannot OPen !");exit(O);for(i=0;i<U;i + +)fwrite(&useriysizeof(struct USer)JIJp);fclose(fp);getch();SySt

44、em(,CLS,);PrintfC,nnnnnnnnntttt請取回卡 I nnnnnnnu);exit(0);VOid SaVe_info()int i;FILE*fp;if (fp=fopen("user information.dat","wb")=NULL) 將信息保存到用戶文件Printf("lt CannOt OPen !,);e×it(O);for(i=0;i<U;i + +)fwrite(&useri,sizeof(struct USer)JlJp); fclose(fp);將信息保存到所以用if (fp

45、=fopen("all USer information.dat"j"wb,)=NULL)戶文件Printf("It Cannot OPen !l,);exit(O);for(i=0;i<U;i + +)fwrite(&useri,sizeof(struct USer)JlJp);fclose(fp);6.3解除被凍結(jié)用戶/解除被凍結(jié)用戶R#in clude<stdio.h> #in clude<stdlib.h> #define N 6StrUCt USerChar num20;Char name10;Char PaSSWOrd7; float balance;userN;int i;FILE*fp;if(fp=fopen(,all USer information.dat1',llr,l)=NULL)Printf("lt CannOt OPen !");exit(0);i=0;while(!feof(fp)fread(&useri,sizeof(struct USer)JI,fp);i+;i=i-l;fclose(fp);if(fp=fopen(,user informati

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論