![銀行ATM機存取款系統(tǒng)程序設(shè)計_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/9a057672-eeb4-47d0-9386-737f035a672a/9a057672-eeb4-47d0-9386-737f035a672a1.gif)
![銀行ATM機存取款系統(tǒng)程序設(shè)計_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/9a057672-eeb4-47d0-9386-737f035a672a/9a057672-eeb4-47d0-9386-737f035a672a2.gif)
![銀行ATM機存取款系統(tǒng)程序設(shè)計_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/9a057672-eeb4-47d0-9386-737f035a672a/9a057672-eeb4-47d0-9386-737f035a672a3.gif)
![銀行ATM機存取款系統(tǒng)程序設(shè)計_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/9a057672-eeb4-47d0-9386-737f035a672a/9a057672-eeb4-47d0-9386-737f035a672a4.gif)
![銀行ATM機存取款系統(tǒng)程序設(shè)計_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/9a057672-eeb4-47d0-9386-737f035a672a/9a057672-eeb4-47d0-9386-737f035a672a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、銀行ATM機存取款系統(tǒng)程序設(shè)計任課教師:蔣 安 珩小組成員:何慧冬 14212114國際經(jīng)濟與貿(mào)易貢怡敏 14Y12114 國際經(jīng)濟與貿(mào)易(全英)徐唯一 14512125 金融學(xué) 2013-09-08銀行ATM機存取款系統(tǒng)程序設(shè)計一 案例描述1. 總體描述 銀行ATM機存取款系統(tǒng)業(yè)務(wù)描述如下:銀行ATM存取款系統(tǒng)能為用戶提供存款、取款、查詢、轉(zhuǎn)賬和修改密碼的功能。用戶通過開戶業(yè)務(wù)在本系統(tǒng)開立銀行賬戶,之后可以通過該銀行賬戶登錄ATM系統(tǒng),在系統(tǒng)中實現(xiàn)存款、取款、查詢賬戶信息、修改密碼的操作。本系統(tǒng)各個業(yè)務(wù)有如下注意點:(1) 登錄系統(tǒng)用戶登錄之前,必須在登錄界面輸入其銀行賬戶,通過其正確輸入的
2、銀行賬戶登錄系統(tǒng)。(2) 開戶業(yè)務(wù)要使用本系統(tǒng)必須首先執(zhí)行開戶業(yè)務(wù)開立新的銀行賬戶,并且將此新開的銀行存儲于文件當(dāng)中。同時,系統(tǒng)以身份證號碼作為開戶的充分條件,即一個身份證號碼只能開立一次銀行賬戶。(3) 存款業(yè)務(wù)客戶登陸系統(tǒng)后,選擇存款業(yè)務(wù),即可以將輸入的存款金額存入相應(yīng)的賬戶。(4) 取款業(yè)務(wù)客戶登陸系統(tǒng)后,選擇取款業(yè)務(wù),即可以將輸入的取款金額從相應(yīng)的銀行賬戶取出,但其取款金額必須大于目前的賬戶余額。(5) 查詢業(yè)務(wù)客戶登陸系統(tǒng)后,可以選擇查詢業(yè)務(wù),查詢賬戶余額。(6) 轉(zhuǎn)賬業(yè)務(wù)客戶登陸系統(tǒng)后,可以選擇轉(zhuǎn)賬業(yè)務(wù)進行轉(zhuǎn)賬。注意的是轉(zhuǎn)賬的目的賬戶必須是本系統(tǒng)已經(jīng)存在的銀行賬戶。(7) 修改密碼
3、客戶登陸系統(tǒng)后,可以選擇修改密碼,進行密碼修改。二 界面設(shè)計用戶根據(jù)需要進行登錄和開戶的選擇。三 模塊化設(shè)計方案1系統(tǒng)主要函數(shù)及功能1)chaxun函數(shù):用以查詢客戶個人余額2)kaihu函數(shù):用以開戶3)denglu函數(shù):客戶登錄4)caidan函數(shù):向客戶展示銀行業(yè)務(wù)菜單,辦理存取款、查詢等5)qukuan函數(shù):客戶取款6)xgmm函數(shù):進行密碼修改7)cunkuan函數(shù):客戶存款8)zhuanzhang函數(shù):客戶轉(zhuǎn)賬9)tuichu函數(shù):退出系統(tǒng)2主函數(shù)調(diào)用各功能函數(shù)流程F退出E存款C轉(zhuǎn)賬 B查詢A取款輸入密碼輸入卡號1、登錄設(shè)置銀行卡密碼設(shè)置卡號輸入姓名2、開戶D修改密碼用戶菜單界面打
4、開文件,載入信息開始四 數(shù)據(jù)結(jié)構(gòu)描述struct per /*定義結(jié)構(gòu)體*/ char name20; /*姓名*/ char ID20;/*卡號*/ int money;/*金額*/ char code6;/*密碼*/ struct per *next; /*定義指針*/;typedef struct person struct per kehu ; struct person *next; L; 該數(shù)據(jù)結(jié)構(gòu)為鏈表,是一種動態(tài)進行存儲分配的結(jié)構(gòu)。鏈表的每一個一個節(jié)點中包含了一個指針變量,用它存放下一個結(jié)點的地址,環(huán)環(huán)相扣。五 算法設(shè)計開始輸入姓名輸入卡號輸入銀行密碼鏈表中添加該記錄結(jié)束1、開
5、戶開始結(jié)束輸入密碼輸入卡號進入用戶菜單界面與原密碼是否相同錯誤次數(shù)是否小于三 否 是 是 否結(jié)束是否大于存款金額鏈表中添加該記錄成功取出輸入取款金額余額不足開始 是 否開始結(jié)束輸入存款金額鏈表中添加該記錄開始結(jié)束鏈表中添加該記錄輸入密碼輸入卡號輸入新密碼與原密碼是否相同 否 是輸入轉(zhuǎn)入卡號開始結(jié)束是否大于存款金額鏈表中添加該記錄成功轉(zhuǎn)入再次輸入轉(zhuǎn)入卡號輸入轉(zhuǎn)賬金額余額不足 是 否開始結(jié)束輸出余額六 程序運行結(jié)果5、查詢7、修改密碼8、存款9、退出退出系統(tǒng)。七 總結(jié)1. 分工情況何慧冬:程序框架的搭建和運行調(diào)試后的修改貢怡敏:界面處理和函數(shù)內(nèi)容的補充徐唯一:算法設(shè)計和流程圖的制作2. 心得體會何
6、慧冬:這次對銀行ATM機的程序編寫過程中,遇到了不少困難。首先是經(jīng)過一個暑假,小組成員對之前學(xué)的C程序設(shè)計內(nèi)容掌握程度不像上學(xué)期那么高,加上短學(xué)期接觸到了C+的相關(guān)內(nèi)容,對新知識點的理解和運用也不是很熟練,所以一開始比較難上手。其次是對結(jié)構(gòu)體、指針等重點難點內(nèi)容的運用不是很擅長。在弄清楚各個函數(shù)的使用后,把各個函數(shù)的功能鑲嵌起來比較花功夫。在設(shè)計上面,我們覺得“密碼最多允許輸錯三次”這個環(huán)節(jié)比較考驗人。尤其是不斷地調(diào)試,要把組員們各自編譯的函數(shù)搭建起來完美運行并不是件容易的事,需要三個人一起分析和探討,在調(diào)試的過程中不斷修改,直至完美運行。過程是艱辛的,結(jié)果是可喜的。程序的完美呈現(xiàn),離不開三個
7、人的共同努力。自己需要做好自己的那一部分,而團隊合作便是成功的核心。貢怡敏:通過這次小組合作程序設(shè)計,真是讓我受益匪淺。銀行ATM機的程序編寫,不僅很好地讓我們運用起所學(xué)的C語言的相關(guān)知識,也與我們的經(jīng)濟學(xué)專業(yè)相銜接,這與平時的做題有很大的不同。雖然對于界面的設(shè)計看似較容易上手,但我們的程序構(gòu)思卻是和這界面設(shè)計有著莫大的聯(lián)系,絲毫不能馬虎的。在調(diào)試運行我們的程序時,每一個步驟都不能省略,才能保證我們的程序是否真的完美運行沒有差錯。在操作過程中的輕松,背后是我們小組齊心協(xié)力的智慧的結(jié)晶。當(dāng)然我們的程序在細節(jié)和人性化角度還存在著一些問題,比如說想要轉(zhuǎn)賬的,但是如果不小心摁到了取款,沒有直接退出的環(huán)
8、節(jié),只能先“將錯就錯”后再退出,然后轉(zhuǎn)到原本想操作的“轉(zhuǎn)賬”上面。徐唯一:這次銀行ATM機程序編寫對我來說真是一次巨大的考驗。整個程序的算法設(shè)計,邏輯思維能力是關(guān)鍵性因素。為了能夠使我們的程序精益求精,少不了反復(fù)構(gòu)思,返工的情況也是很常見的。好不容易把整個思路構(gòu)想出來,卻因為某些瑕疵而全部推翻,很是郁悶。不過功夫不負有心人,三人的智慧加在一起,沒有什么做不到的。共同思考,達成共識,沒有合理的設(shè)計,也就不能編寫出合適的程序。不過因為我們的能力有限,還是存在一些遺憾,就比如我最在意的點錯不能及時退出這一細節(jié)。當(dāng)然我們相信,在今后的學(xué)習(xí)過程中,我們能更加掌握好C語言的相關(guān)知識,將我們的程序完善,使其
9、更具人性化。3. 自評得分何慧冬:97貢怡敏:96徐唯一:98附頁(源代碼附加注釋)#include<stdio.h> #include<string.h>#include<stdlib.h>struct per /*定義結(jié)構(gòu)體*/ char name20; char ID20; int money; char code6; struct per *next;typedef struct person struct per kehu ; struct person *next; L; void chaxun(struct per *head); /*各個函數(shù)
10、的聲明*/void kaihu(struct per *head);void denglu(struct per *head);void caidan(struct per *head);void qukuan(struct per *head);void xgmm(struct per *head);void cunkuan(struct per *head);void zhuanzhang(struct per *head);void tuichu();/*主函數(shù)*/void main() char x; char choose; /*choose為定義輸入選擇的變量*/ int flag
11、=1; struct person *Phead=NULL; /*r為定義二層頭指針*/ struct per *head=NULL; /*head為定義一層頭指針*/ printf(" *n"); printf(" * 歡迎使用ATM自動取款機系統(tǒng) *n"); printf(" *nnnn"); printf("-n");printf("| 請選擇您的需求 |n");printf("-n"); printf("| 1 開戶 |n"); printf(&q
12、uot;-n"); printf("| 2 登錄 |n"); printf("-n"); scanf("%s",&x); system("cls"); switch(x) case '1':system("cls"); kaihu(head); /*調(diào)用開戶函數(shù)*/ break; case '2':system("cls"); denglu(head); /*調(diào)用登陸函數(shù)*/ break; /*開戶函數(shù)*/void kaihu
13、(struct per *head) head=NULL; FILE *fp; /*定義文件指針*/ per *p1=NULL,*p2=NULL; /*p1,p1為定義鏈表指針*/ p1=(per*)malloc(sizeof(per); /*開辟內(nèi)存單元*/printf("請輸入您的姓名:n"); /*將數(shù)據(jù)輸入鏈表中*/ scanf("%s",p1->name ); printf("請設(shè)置您的卡號:n"); scanf("%s",p1->ID); printf("請設(shè)置您銀行卡密碼:n&q
14、uot;); scanf("%s",p1->code); p1->money=0; p1->next =NULL; printf("您的個人信息為n"); printf("姓名:%s n卡號:%s n余額:%4dn",p1->name ,p1->ID,p1->money ); if(NULL=head) /*為新增客戶開辟內(nèi)存單元*/ head=(per *)malloc(sizeof(per); head->next =p1; else /*為新增客戶開辟內(nèi)存單元*/ for(p2=head
15、;p2->next!=NULL;p2=p2->next); p2->next=p1; if(fp=fopen("save.txt","ab+")=NULL) /*打開文件*/ printf("cannot open filen"); return; if(fwrite(p1,sizeof(per),1,fp)!=1) /*將鏈表信息寫入文件中*/ printf("file write errorn"); fclose(fp); printf("n"); printf("
16、;恭喜您開戶成功,請登錄n"); system("pause"); system("cls"); denglu(head); /*登陸函數(shù)*/ void denglu(struct per *head) char d20; char code20; int i,j; FILE *fp; /*定義文件指針*/ per *p,*q=NULL; if(fp=fopen("save.txt","rb+")=NULL) /*打開一個二進制文件,為讀方式*/ printf("不能打開文件n");
17、/*如不能打開,則結(jié)束程序*/ p=(per*)malloc(sizeof(per); /*申請空間*/ head=p; while(!feof(fp) /*循環(huán)讀數(shù)據(jù)直到文件尾結(jié)束*/ if(1!=fread(p,sizeof(per),1,fp) break; /*如果沒讀到數(shù)據(jù),跳出循環(huán)*/ p->next=(per *)malloc(sizeof(per);/*為下一個結(jié)點申請空間*/ q=p; /*保存當(dāng)前結(jié)點的指針,作為下一結(jié)點的前驅(qū)*/ p=p->next; /*指針后移,新讀入數(shù)據(jù)鏈到當(dāng)前表尾*/ q->next=NULL; /*最后一個結(jié)點的后繼指針為空*/
18、 fclose(fp); printf(" *n"); printf(" * 歡迎來到建設(shè)銀行 *n"); printf(" *n"); for(j=1;j<4;j+) /*限制卡號輸入的次數(shù)的循環(huán)*/ printf("請您輸入卡號n"); scanf("%s",d);for(q=head;q!=NULL;q=q->next) /*便利鏈表*/ if(strcmp(q->ID,d)!=0) /*核對賬號*/ continue; else for(i=1;i<4;i+) /
19、*限制密碼輸入的次數(shù)的循環(huán)*/ printf("nn請輸入您的密碼n"); scanf("%s",code); if(strcmp(q->code,code)!=0) /*核對密碼*/ printf("密碼不正確,請重新輸入密碼n"); system("pause"); system("cls"); continue; /*若密碼不對,跳出循環(huán)*/ else system("cls"); caidan(head); /*調(diào)用菜單函數(shù)*/ printf("nnn
20、您輸入密碼三次錯誤,謝謝光臨n"); system("pause"); system("cls"); exit(0); printf("nnn您輸入的卡號有誤,請重試n"); system("pause"); system("cls"); printf("您的卡號三次輸入錯誤,謝謝使用"); exit(0); /*銀行菜單函數(shù)*/void caidan(struct per *head) head=NULL; int i; /*i為客戶選擇輸入的變量*/ while
21、(1) printf("請選擇您需要的業(yè)務(wù)n"); /*銀行業(yè)務(wù)菜單*/ printf("*n"); printf("* 1取款 * 2查詢 *n"); printf("*n"); printf("* 3轉(zhuǎn)賬 * 4修改密碼*n"); printf("*n"); printf("* 5存款 * 6退出 *n"); printf("*nnn"); scanf("%d",&i); if(i<6|i>0
22、) switch(i) case 1:qukuan(head); /*調(diào)用銀行取款函數(shù)*/ system("pause"); system("cls"); break; case 2: system("cls"); chaxun(head); /*調(diào)用銀行查詢函數(shù)*/ break; case 3:system("cls"); zhuanzhang(head); /*調(diào)用銀行轉(zhuǎn)賬函數(shù)*/ break; case 4:system("cls"); xgmm(head); /*調(diào)用銀行修改密碼函數(shù)*/
23、 break; case 5:system("cls"); cunkuan(head); /*調(diào)用銀行存款函數(shù)*/ break; case 6:system("cls"); tuichu(); /*調(diào)用銀行退出函數(shù)*/ break; else printf("您的輸入有誤n"); system("pause"); system("cls"); /*銀行取款函數(shù)函數(shù)*/void qukuan(struct per *head) head=NULL;per *p; /*鏈表頭指針*/int i;FI
24、LE *fp; /*文件頭指針*/fp=fopen("save.txt","rb+"); /*開辟空間*/p=(per*)malloc(sizeof(per);fread(p,sizeof(per),1,fp); fclose(fp);system("cls"); printf("請按要求選擇您要取款的金額n");printf("*n");printf("* 1: 100元 * 2: 200元 *n");printf("*n");printf("
25、* 3: 300元 * 4: 400元 *n");printf("*n");printf("* 5: 500元 * 6: 600元 *n");printf("*n"); scanf("%d",&i); if(i>6|i<=0) printf("對不起,您的輸入有誤nn"); return; else i=100*i; if(i>p->money ) printf("對不起,您的余額不足n"); system("pause&q
26、uot;); system("cls"); caidan(head); else p->money-=i; if(fp=fopen("save.txt","wb+")=NULL) /*打開文件*/ printf("cannot open filen"); return; if(fwrite(p,sizeof(per),1,fp)!=1) /*將修改的信息重新寫入文件*/ printf("file write errorn"); printf("您已成功走取%d元n",i
27、); p->next=NULL; fclose(fp); /*關(guān)閉文件*/*銀行轉(zhuǎn)賬函數(shù)*/void zhuanzhang(struct per *head) head=NULL;per *p;FILE *fp; fp=fopen("save.txt","rb+");p=(per*)malloc(sizeof(per);fread(p,sizeof(per),1,fp); fclose(fp);int i,j,k;printf("請輸入轉(zhuǎn)賬號碼n"); scanf("%d",&i);printf(&q
28、uot;請再次輸入轉(zhuǎn)賬號碼n"); scanf("%d",&j); if(i!=j) printf("兩次賬號不相同,請重新輸入n"); zhuanzhang(head); else system("cls"); printf("請輸入轉(zhuǎn)賬金額n");printf("*n");printf("* 1: 100元 * 2: 200元 *n");printf("*n");printf("* 3: 300元 * 4: 400元 *n&
29、quot;);printf("*n");printf("* 5: 500元 * 6: 600元 *n");printf("*n"); scanf("%d",&k); if(k>6|k<=0) printf("對不起,您的輸入有誤nn"); return; else k=k*100; if(k>p->money ) printf("對不起,您的余額不足n"); system("pause"); system("cls
30、"); caidan(head); else printf("您已成功轉(zhuǎn)賬%d元n",k); p->money-=k; if(fp=fopen("save.txt","wb+")=NULL) printf("cannot open filen"); return; if(fwrite(p,sizeof(per),1,fp)!=1) printf("file write errorn"); p->next=NULL; fclose(fp); p->next=NULL;
31、system("pause"); system("cls"); /*銀行查詢函數(shù)*/void chaxun(struct per *head) head=NULL; /*鏈表頭指針*/ per *p; /*文件頭指針*/ FILE *fp; fp=fopen("save.txt","rb+"); /*打開文件*/ p=(per*)malloc(sizeof(per); fread(p,sizeof(per),1,fp); /*將信息從文件中讀出來*/ fclose(fp); printf("您卡上原有余額
32、為%d元nn",p->money); system("pause"); system("cls");/*銀行修改密碼函數(shù)*/void xgmm(struct per *head) head=NULL; /*鏈表頭指針*/ per *p; char code20; FILE *fp; /*文件頭指針*/ fp=fopen("save.txt","rb+"); /*開辟內(nèi)存*/ p=(per*)malloc(sizeof(per); /*打開文件*/ fread(p,sizeof(per),1,fp);
33、 /*將信息從文件中讀出來*/ fclose(fp); printf("請輸入您的原密碼n"); scanf("%s",code); if(strcmp(p->code,code)=0) /*核對密碼*/ printf("密碼正確n"); printf("請輸入您的新密碼:n"); scanf("%s",p->code); if(fp=fopen("save.txt","wb+")=NULL) /*文件頭指針*/ printf("cannot open filen"); return; if(fwrite(p,sizeof(per),1,fp)!=1) /*將修改的密碼重新寫入文件*/ printf("file write errorn"); fclose(fp); printf("密碼修改成功nnnnn"); else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年堅果電商平臺行業(yè)跨境出海戰(zhàn)略研究報告
- 2025-2030年反向無線充電手表設(shè)計行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 2025-2030年手持式恒星光譜儀行業(yè)跨境出海戰(zhàn)略研究報告
- 電商平臺中消費者的綠色消費行為研究
- 商鋪裝修意向金合同范本
- 2025年度珠寶店寶石專家電子商務(wù)運營合同
- 2025年度保險產(chǎn)品培訓(xùn)居間服務(wù)協(xié)議
- 環(huán)保設(shè)備倉庫出租居間協(xié)議
- 房屋裝修服務(wù)合同協(xié)議書(7篇)
- 小學(xué)語文寫作指導(dǎo)故事征文
- 國庫集中支付培訓(xùn)班資料-國庫集中支付制度及業(yè)務(wù)操作教學(xué)課件
- 詩詞寫作入門課件
- 2023年上海青浦區(qū)區(qū)管企業(yè)統(tǒng)一招考聘用筆試題庫含答案解析
- 2023版押品考試題庫必考點含答案
- 植物之歌觀后感
- 空氣能熱泵安裝示意圖
- 建筑工程施工質(zhì)量驗收規(guī)范檢驗批填寫全套表格示范填寫與說明
- 2020年中秋國慶假日文化旅游市場安全生產(chǎn)檢查表
- 昆明天大礦業(yè)有限公司尋甸縣金源磷礦老廠箐-小凹子礦段(擬設(shè))采礦權(quán)出讓收益評估報告
- 心有榜樣行有力量 -從冬奧冠軍徐夢桃身上感受青春奮斗初中主題班會
- 七年級英語下冊閱讀理解10篇
評論
0/150
提交評論