




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、仲愷農(nóng)業(yè)工程學(xué)院工程實(shí)訓(xùn)報(bào)告ATM取款機(jī)課程名稱C語言程序設(shè)計(jì)工程實(shí)訓(xùn)姓名林少烈院(系)計(jì)算機(jī)科學(xué)與工程學(xué)院專業(yè)班級計(jì)算機(jī)113班學(xué)號(hào)201110214317指導(dǎo)教師王成仲愷農(nóng)業(yè)工程學(xué)院教務(wù)處制1需求分析12系統(tǒng)總框圖和功能模塊說明12.1 系統(tǒng)總框圖12.2功能模塊說明13系統(tǒng)設(shè)計(jì)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è)計(jì)的A TM取款機(jī)應(yīng)具備以下功能:插入銀行卡(用賬號(hào)輸入的方式代替);密碼的輸入;用戶信息查詢;用戶余額查詢;取款;轉(zhuǎn)賬;修
2、改密碼;退卡。2系統(tǒng)總框圖和功能模塊說明2丄系統(tǒng)總框圖ATM取款機(jī)圖1系統(tǒng)總框圖2.2功能模塊說明> 輸入用戶賬號(hào)模塊:在運(yùn)行時(shí),完成用戶賬號(hào)的輸入(代替插卡);>輸入賬號(hào)密碼模塊:在輸入賬號(hào)之后,完成用戶密碼的輸入;在修改密碼的過程中,完成 用戶輸入舊密碼的功能;> 信息讀取功能模塊:完成用戶信息的讀??;> 凍結(jié)賬號(hào)功能模塊:當(dāng)輸入密碼3次錯(cuò)誤時(shí),凍結(jié)用戶賬號(hào):> 查詢用戶信息模塊:完成用戶的信息查詢(不包括余額查詢);> 查詢余額功能模塊:完成用戶余額的查詢;> 取款功能模塊:完成取款功能模塊:> 轉(zhuǎn)賬功能模塊:完成轉(zhuǎn)職功能;> 修改密
3、碼功能模塊:完成用戶修改密碼功能;> 退卡功能模塊:完成退卡功能(即:退出程序功能)。3系統(tǒng)設(shè)計(jì)31主要結(jié)構(gòu)體用戶賬號(hào)、密碼、余額StnJCt USer用戶數(shù)據(jù)Char nUm2O;用戶賬號(hào)Char name10;/Char PaSSWOrd7;密碼float balance;余額;3.2主要功能函數(shù)用戶信息讀取輸入賬號(hào)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é)賬號(hào)存儲(chǔ)信息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)試首先運(yùn)行程序,系統(tǒng)提示輸入賬號(hào)。(1)當(dāng)輸入錯(cuò)誤賬號(hào),系統(tǒng)提示:用戶不存在,請從新輸入。,(2)當(dāng)輸入錯(cuò)誤的密碼時(shí).系統(tǒng)提示:密碼有誤請重新輸入。(3)當(dāng)輸入正確賬號(hào)與密碼時(shí),進(jìn)入主頁面。(4)主界面(5)在主界面選擇數(shù)字1,進(jìn)入查詢余額界面,界面顯示余額。按任意鍵返回。(6)在主頁面選擇數(shù)字2,進(jìn)入取款界面,系統(tǒng)提示輸入取款的金額,當(dāng)輸入不是整百數(shù)是,系統(tǒng)提示請輸入正確的金額,請重新輸入。(8)當(dāng)輸入負(fù)數(shù)時(shí),系統(tǒng)提示:請輸入正確的金額請重新輸入。(9)當(dāng)輸入超過卡里余額的數(shù).系統(tǒng)會(huì)提示余額不足請重新輸入。(10)當(dāng)輸入超過3000的數(shù)時(shí),系統(tǒng)會(huì)提示:對不起,一次最多能取3000元,請重新
8、輸入。(11)當(dāng)輸入正確的金額時(shí),系統(tǒng)提示:交易成功,按O返回主菜單,按9繼續(xù)取款。(12)在主菜單界面選擇數(shù)字3,進(jìn)入修改密碼界面,首先系統(tǒng)會(huì)提示:請輸入舊密碼。(13)當(dāng)輸入就密碼正確時(shí),系統(tǒng)提示:請輸入新密碼(6位數(shù))。(14) 當(dāng)輸入的新密碼含有非數(shù)字時(shí),系統(tǒng)提示:請輸入正確的數(shù)字。(15) 當(dāng)輸入的新密碼不足六位時(shí),系統(tǒng)提示:請輸入六位的密碼。(16) 當(dāng)兩次輸入的新密碼不相同時(shí).系統(tǒng)會(huì)提示:兩次輸入的密碼不同,請重新輸入。'ArMftIK5'.Debjg>回0.遨回菜單Ir諾箱入新茁碼&位數(shù)宇八杠+筆S½I認(rèn)您的岳礎(chǔ)“"半:(17)
9、 當(dāng)輸入兩次密碼都正確時(shí),系統(tǒng)提示:密碼修改成功,請牢記新密碼。(18) 在主菜單界面選擇數(shù)字4時(shí),進(jìn)入轉(zhuǎn)賬界面。系統(tǒng)提示:請輸入對方的賬(19) 當(dāng)輸入的賬號(hào)錯(cuò)i吳時(shí),系統(tǒng)會(huì)提示:用戶不存在,請重新輸入。(20) 當(dāng)輸入自己的賬號(hào)時(shí),系統(tǒng)會(huì)提示:不能給自己轉(zhuǎn)賬,請重新輸入賬號(hào)。(21) 當(dāng)輸入正確的賬號(hào)時(shí),界面會(huì)顯示對方的信息。按0返回菜單,按9確定轉(zhuǎn)賬。(22)當(dāng)確定轉(zhuǎn)賬時(shí),系統(tǒng)會(huì)提示:請輸入轉(zhuǎn)賬金額0返同菜單(23)當(dāng)輸入轉(zhuǎn)賬的金額超過3000元時(shí),系統(tǒng)會(huì)提示:對不起,一次轉(zhuǎn)賬不能超過3000元,請重新輸入。(24)當(dāng)輸入正確的金額時(shí),系統(tǒng)提示:交易成功。按O返回主菜單按9繼續(xù)轉(zhuǎn)賬。(2
10、5)在主菜單界面選擇數(shù)字5,進(jìn)入信息查詢界面,界面將顯示賬號(hào)的信息。(26)在主界面選擇數(shù)字0,進(jìn)去取款界面,系統(tǒng)提示:感您的使用,請拿回卡。5總結(jié)我們經(jīng)常接觸的一個(gè)機(jī)器,所以相對來說話流程圖比較容易。在確認(rèn)了程序設(shè)計(jì)主題之后,首先第一步是畫了大概的流程圖,因?yàn)锳TM取款機(jī)是在畫完流程圖之后,就是進(jìn)行代碼的編寫了,我采用自頂向下的方式來規(guī)劃我的整 個(gè)代碼流程,首先是確定了大概需要哪些函數(shù)來實(shí)現(xiàn)所需的功能,在函數(shù)命名的時(shí)候, 我并不是隨便命名的,而是采用書上介紹的方法,用英文來命名。在命名過程中由于 英語功底不好的我遇到了小小的麻煩(有些單詞不會(huì)拼),于是就用電子詞典來解決這問 題。剛開始我是把
11、所有的自定義函數(shù)定義為VOIei型函數(shù)。所有的函數(shù)申明寫好之后就可以開始細(xì)化了,首先確定所需結(jié)構(gòu)體,然后就是頭文 件的定義,最后確定了所有函數(shù)的編寫順序。由于這次程序設(shè)計(jì)是ATM取款機(jī),所有 要用到文件的知識(shí),但又沒學(xué)過,所以只能先停止代碼的編寫來學(xué)習(xí)文件的知識(shí)。通過 了兩天的學(xué)習(xí),雖然只是略學(xué)了皮毛,但是勉強(qiáng)看著書可以來自己新建文件并不數(shù)據(jù)存 入文件中。所有的準(zhǔn)備工作完成后,真正的可以進(jìn)行代碼編寫了,首先把所有的函數(shù)都編寫出 來(容為空),然后根據(jù)從易到難的順序逐個(gè)功能的編寫。其順序依次是:InPUt-num函 數(shù)(用戶賬號(hào)輸入),inputJDassword函數(shù)(密碼輸入)l IOCk函數(shù)
12、(凍結(jié)用戶賬號(hào))I readjfo 函數(shù)(讀取文件數(shù)據(jù)),now-exit函數(shù)(檢查是賬號(hào)是否存在且未被凍結(jié)),existed函數(shù) (檢查賬號(hào)是否被凍結(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ù)時(shí),沒辦法實(shí)現(xiàn)密文的輸出,所以研究了很久,最后通過 找資料和詢問師兄才解決了這
13、一難題,并從中學(xué)到了這一技巧。在寫IOCk函數(shù)時(shí),剛開始只是用空字符來覆蓋原有的賬號(hào),但是在測試時(shí)發(fā)現(xiàn)這樣 凍結(jié)的方法行不通,因?yàn)檫@樣子凍結(jié)的話雖然原賬號(hào)沒了,但是在輸入賬號(hào)時(shí)只要直接 按Enter鍵就可以進(jìn)入輸入密碼的程序,所以這又是一個(gè)難題。在晚上睡覺時(shí)突然想到了 曾經(jīng)在課外書上看到的產(chǎn)生隨機(jī)數(shù)的函數(shù)(rand函數(shù)),于是,第二天這個(gè)所謂的難題也 解決了。所有的函數(shù)編寫完畢,想到了既然凍結(jié)了賬號(hào),肯定需要一個(gè)程序來解除凍結(jié)了的 賬號(hào),所以,自己又摸索了如何解決這一問題.最后想到了一個(gè)方法:再新建一個(gè)文件 (文件名為all Uer information)作為后臺(tái)來存儲(chǔ)用戶的信息,但這個(gè)文件
14、存儲(chǔ)的是所有 未被凍結(jié)前和未被凍結(jié)的賬號(hào)信息(即所有原始賬號(hào)信息)。而解除的方法是:先讀取汕 USerinfOrmatiOn這個(gè)文件里的信息,然后把里面的信息覆蓋到在前臺(tái)操作的文件即可。 當(dāng)用戶被凍結(jié)后想解除的話只需運(yùn)行這個(gè)程序即可解除凍結(jié)。寫了解除凍結(jié)賬號(hào)的函數(shù)后,又想到需要寫一個(gè)注冊賬號(hào)的程序,于是也順利的完 成了,最后,通過多次的調(diào)試,把整個(gè)程序代碼給完成了。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);用戶信息讀取輸入賬號(hào)判斷是否被凍結(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é)賬號(hào)VOid SaVenfo();存儲(chǔ)信息6.2主程序/主程序:main*/妨莫擬ATM取款機(jī)燈自定義頭文件#include "user.h,1#define U 8StrUCt USer userU;intf;全局變量f是用
17、來記錄用戶下標(biāo)(即哪個(gè)用戶)int maiO定義賬號(hào)數(shù)組變量調(diào)用inpuCnum函數(shù),輸入用戶賬號(hào)Char number20;in put_ num(number);return O;/*函數(shù)功能:輸入用戶賬號(hào)RVOid input_num(char num12)readjnfo();輸入賬號(hào)前先調(diào)用函數(shù)readJnfo讀取所以用戶信息,以便后面判斷賬戶是否存在以及密碼是否正確SyStem(,cls");PrintfC,nnnnnnnntt 請輸入您的賬號(hào):“);gets( num);no w-exist(num);調(diào)用exist函數(shù)檢查該賬號(hào)是否存在"函數(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記錄用戶下標(biāo),以便后面使用。break;else s=0;if (S=I)input.PaSSWOrd( useri.password, w); / 如果用戶存在,則調(diào)用 inputjoassword函數(shù)并把用戶密碼傳遞給它,實(shí)現(xiàn)用戶輸入密碼功能。elseexisted(num); 如果用戶不存在,則調(diào)用existed函數(shù),
20、判斷是否賬號(hào)被凍結(jié)/*函數(shù)功能:判斷賬號(hào)是否被凍結(jié)MVOid existed(char * num)int I = O1 i = 0; /s是用來判斷用戶賬號(hào)是否被凍結(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 )賬號(hào)是否存在1=1break;else 1=0;if (I = 1)PrintfC,anntt對不起,您的賬號(hào)已被凍結(jié),請與客服聯(lián)系I nnnnn); exit(0);elsePrintfC,anntt用戶賬號(hào)不存在,請重新輸入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)計(jì)輸入密碼錯(cuò)誤的次數(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ù)進(jìn)入主界面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 對不起,您已輸入密碼錯(cuò)誤3次,您的賬號(hào)已被凍結(jié), 請與客服聯(lián)系,);ock();輸入3次錯(cuò)誤,則提示用戶賬號(hào)被凍結(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儲(chǔ)信息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(“輸入錯(cuò)誤,請重新輸入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ù)時(shí)區(qū)分是哪個(gè)主調(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 請?jiān)俅未_認(rèn)您的密碼: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ù),存儲(chǔ)信息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用來存 儲(chǔ)轉(zhuǎn)賬金額SyStem(,CLS,);Printfc,ntttttttt. 回菜單”);PrintfC,nnnnnnttt 請輸要對方的賬號(hào):,f);gets(other_num);輸入對方賬號(hào)if ( StrCmP(Other-.num,0,)=0 )輸入O返回菜單face();elseif ( StrCmP(Other_num,userf.num)=O )判斷是否為自身賬號(hào)SyStemC,CLS&q
37、uot;);Printf(,nnnnnnnntt對不起,不能給自己轉(zhuǎn)賬,請重新輸入賬號(hào)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賬號(hào):%s",useri.n
38、ame,user.num);PrintfC,nnnnntt.返回菜單 ttt9.確認(rèn)“); c=getch();if (c=,9,)輸入9確認(rèn)System(nCLSn);doPrintfc,ntttttttt.返回菜單”);Printf("nnnnnntt請輸入轉(zhuǎn)賬金額(整百數(shù)):scanf("%d"1 &q);getcharO;if (q)/q為非0時(shí)進(jìn)入層條件語句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,存儲(chǔ)Printf("nnnnnnttt 交易Printf("nnnnntt.返回菜單 c=getch();if (c=,9) 輸入9就行轉(zhuǎn)賬System(nCLSn);elseif (c=,01) c為O返回菜單SyStemC,CLSn);faceO;elsePrintf (“輸入錯(cuò)誤,請
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 賬號(hào):%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é)用戶賬號(hào)*/VOid IOCkOint i;FILE*fp;Char random20;Srand( (UnSigned) time(NU
43、LL);隨機(jī)器for(i=0;i<12;i+)randomi=rand0%100;產(chǎn)生 12 個(gè)隨機(jī)數(shù)randomi=,0,;StrCPy(USerf.num,random);將產(chǎn)生的隨即數(shù)替換用戶的賬號(hào)實(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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 監(jiān)理師考試考變應(yīng)變戰(zhàn)略試題及答案2025
- 學(xué)習(xí)如何開展數(shù)據(jù)庫開發(fā)的敏捷實(shí)踐試題及答案
- 學(xué)校課程體系管理制度
- 學(xué)校食堂品質(zhì)管理制度
- 公司消防治安管理制度
- 工廠整形物料管理制度
- 公路試驗(yàn)檢測管理制度
- 分租倉庫安全管理制度
- 農(nóng)藥倉庫使用管理制度
- 了解公路工程多種施工方法試題及答案
- 醫(yī)美整形醫(yī)院渠道合作協(xié)議樣本
- 《術(shù)前腸道準(zhǔn)備》課件
- RTO蓄熱焚燒系統(tǒng)操作規(guī)程
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 籃球比賽分組循環(huán)積分表
- 高中英語詞匯3500詞(必背)-excel版
- 人音版 音樂六年級上冊 《七色光之歌》課件
- 五年級下冊美術(shù)教學(xué)設(shè)計(jì)及教學(xué)反思-第14課 橋|蘇少版
- 海外政策手冊(2):國別研究沙特經(jīng)濟(jì)轉(zhuǎn)型與中沙合作機(jī)遇
- 辦公用品采購管理制度及流程
- 《洪水影響評價(jià)技術(shù)導(dǎo)則》
評論
0/150
提交評論