版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、銀行ATM機存取款系統(tǒng)程序設計任課教師:蔣 安 珩小組成員:何慧冬 14212114國際經濟與貿易貢怡敏 14Y12114 國際經濟與貿易(全英)徐唯一 14512125 金融學 2013-09-08銀行ATM機存取款系統(tǒng)程序設計一 案例描述1. 總體描述 銀行ATM機存取款系統(tǒng)業(yè)務描述如下:銀行ATM存取款系統(tǒng)能為用戶提供存款、取款、查詢、轉賬和修改密碼的功能。用戶通過開戶業(yè)務在本系統(tǒng)開立銀行賬戶,之后可以通過該銀行賬戶登錄ATM系統(tǒng),在系統(tǒng)中實現(xiàn)存款、取款、查詢賬戶信息、修改密碼的操作。本系統(tǒng)各個業(yè)務有如下注意點:(1) 登錄系統(tǒng)用戶登錄之前,必須在登錄界面輸入其銀行賬戶,通過其正確輸入的
2、銀行賬戶登錄系統(tǒng)。(2) 開戶業(yè)務要使用本系統(tǒng)必須首先執(zhí)行開戶業(yè)務開立新的銀行賬戶,并且將此新開的銀行存儲于文件當中。同時,系統(tǒng)以身份證號碼作為開戶的充分條件,即一個身份證號碼只能開立一次銀行賬戶。(3) 存款業(yè)務客戶登陸系統(tǒng)后,選擇存款業(yè)務,即可以將輸入的存款金額存入相應的賬戶。(4) 取款業(yè)務客戶登陸系統(tǒng)后,選擇取款業(yè)務,即可以將輸入的取款金額從相應的銀行賬戶取出,但其取款金額必須大于目前的賬戶余額。(5) 查詢業(yè)務客戶登陸系統(tǒng)后,可以選擇查詢業(yè)務,查詢賬戶余額。(6) 轉賬業(yè)務客戶登陸系統(tǒng)后,可以選擇轉賬業(yè)務進行轉賬。注意的是轉賬的目的賬戶必須是本系統(tǒng)已經存在的銀行賬戶。(7) 修改密碼
3、客戶登陸系統(tǒng)后,可以選擇修改密碼,進行密碼修改。二 界面設計用戶根據(jù)需要進行登錄和開戶的選擇。三 模塊化設計方案1系統(tǒng)主要函數(shù)及功能1)chaxun函數(shù):用以查詢客戶個人余額2)kaihu函數(shù):用以開戶3)denglu函數(shù):客戶登錄4)caidan函數(shù):向客戶展示銀行業(yè)務菜單,辦理存取款、查詢等5)qukuan函數(shù):客戶取款6)xgmm函數(shù):進行密碼修改7)cunkuan函數(shù):客戶存款8)zhuanzhang函數(shù):客戶轉賬9)tuichu函數(shù):退出系統(tǒng)2主函數(shù)調用各功能函數(shù)流程F退出E存款C轉賬 B查詢A取款輸入密碼輸入卡號1、登錄設置銀行卡密碼設置卡號輸入姓名2、開戶D修改密碼用戶菜單界面打
4、開文件,載入信息開始四 數(shù)據(jù)結構描述struct per /*定義結構體*/ char name20; /*姓名*/ char ID20;/*卡號*/ int money;/*金額*/ char code6;/*密碼*/ struct per *next; /*定義指針*/;typedef struct person struct per kehu ; struct person *next; L; 該數(shù)據(jù)結構為鏈表,是一種動態(tài)進行存儲分配的結構。鏈表的每一個一個節(jié)點中包含了一個指針變量,用它存放下一個結點的地址,環(huán)環(huán)相扣。五 算法設計開始輸入姓名輸入卡號輸入銀行密碼鏈表中添加該記錄結束1、開
5、戶開始結束輸入密碼輸入卡號進入用戶菜單界面與原密碼是否相同錯誤次數(shù)是否小于三 否 是 是 否結束是否大于存款金額鏈表中添加該記錄成功取出輸入取款金額余額不足開始 是 否開始結束輸入存款金額鏈表中添加該記錄開始結束鏈表中添加該記錄輸入密碼輸入卡號輸入新密碼與原密碼是否相同 否 是輸入轉入卡號開始結束是否大于存款金額鏈表中添加該記錄成功轉入再次輸入轉入卡號輸入轉賬金額余額不足 是 否開始結束輸出余額六 程序運行結果5、查詢7、修改密碼8、存款9、退出退出系統(tǒng)。七 總結1. 分工情況何慧冬:程序框架的搭建和運行調試后的修改貢怡敏:界面處理和函數(shù)內容的補充徐唯一:算法設計和流程圖的制作2. 心得體會何
6、慧冬:這次對銀行ATM機的程序編寫過程中,遇到了不少困難。首先是經過一個暑假,小組成員對之前學的C程序設計內容掌握程度不像上學期那么高,加上短學期接觸到了C+的相關內容,對新知識點的理解和運用也不是很熟練,所以一開始比較難上手。其次是對結構體、指針等重點難點內容的運用不是很擅長。在弄清楚各個函數(shù)的使用后,把各個函數(shù)的功能鑲嵌起來比較花功夫。在設計上面,我們覺得“密碼最多允許輸錯三次”這個環(huán)節(jié)比較考驗人。尤其是不斷地調試,要把組員們各自編譯的函數(shù)搭建起來完美運行并不是件容易的事,需要三個人一起分析和探討,在調試的過程中不斷修改,直至完美運行。過程是艱辛的,結果是可喜的。程序的完美呈現(xiàn),離不開三個
7、人的共同努力。自己需要做好自己的那一部分,而團隊合作便是成功的核心。貢怡敏:通過這次小組合作程序設計,真是讓我受益匪淺。銀行ATM機的程序編寫,不僅很好地讓我們運用起所學的C語言的相關知識,也與我們的經濟學專業(yè)相銜接,這與平時的做題有很大的不同。雖然對于界面的設計看似較容易上手,但我們的程序構思卻是和這界面設計有著莫大的聯(lián)系,絲毫不能馬虎的。在調試運行我們的程序時,每一個步驟都不能省略,才能保證我們的程序是否真的完美運行沒有差錯。在操作過程中的輕松,背后是我們小組齊心協(xié)力的智慧的結晶。當然我們的程序在細節(jié)和人性化角度還存在著一些問題,比如說想要轉賬的,但是如果不小心摁到了取款,沒有直接退出的環(huán)
8、節(jié),只能先“將錯就錯”后再退出,然后轉到原本想操作的“轉賬”上面。徐唯一:這次銀行ATM機程序編寫對我來說真是一次巨大的考驗。整個程序的算法設計,邏輯思維能力是關鍵性因素。為了能夠使我們的程序精益求精,少不了反復構思,返工的情況也是很常見的。好不容易把整個思路構想出來,卻因為某些瑕疵而全部推翻,很是郁悶。不過功夫不負有心人,三人的智慧加在一起,沒有什么做不到的。共同思考,達成共識,沒有合理的設計,也就不能編寫出合適的程序。不過因為我們的能力有限,還是存在一些遺憾,就比如我最在意的點錯不能及時退出這一細節(jié)。當然我們相信,在今后的學習過程中,我們能更加掌握好C語言的相關知識,將我們的程序完善,使其
9、更具人性化。3. 自評得分何慧冬:97貢怡敏:96徐唯一:98附頁(源代碼附加注釋)#include<stdio.h> #include<string.h>#include<stdlib.h>struct per /*定義結構體*/ 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); /*調用開戶函數(shù)*/ break; case '2':system("cls"); denglu(head); /*調用登陸函數(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); /*開辟內存單元*/printf("請輸入您的姓名:n"); /*將數(shù)據(jù)輸入鏈表中*/ scanf("%s",p1->name ); printf("請設置您的卡號:n"); scanf("%s",p1->ID); printf("請設置您銀行卡密碼: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) /*為新增客戶開辟內存單元*/ head=(per *)malloc(sizeof(per); head->next =p1; else /*為新增客戶開辟內存單元*/ 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、/*如不能打開,則結束程序*/ p=(per*)malloc(sizeof(per); /*申請空間*/ head=p; while(!feof(fp) /*循環(huán)讀數(shù)據(jù)直到文件尾結束*/ if(1!=fread(p,sizeof(per),1,fp) break; /*如果沒讀到數(shù)據(jù),跳出循環(huán)*/ p->next=(per *)malloc(sizeof(per);/*為下一個結點申請空間*/ q=p; /*保存當前結點的指針,作為下一結點的前驅*/ p=p->next; /*指針后移,新讀入數(shù)據(jù)鏈到當前表尾*/ q->next=NULL; /*最后一個結點的后繼指針為空*/
18、 fclose(fp); printf(" *n"); printf(" * 歡迎來到建設銀行 *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); /*調用菜單函數(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è)務n"); /*銀行業(yè)務菜單*/ printf("*n"); printf("* 1取款 * 2查詢 *n"); printf("*n"); printf("* 3轉賬 * 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); /*調用銀行取款函數(shù)*/ system("pause"); system("cls"); break; case 2: system("cls"); chaxun(head); /*調用銀行查詢函數(shù)*/ break; case 3:system("cls"); zhuanzhang(head); /*調用銀行轉賬函數(shù)*/ break; case 4:system("cls"); xgmm(head); /*調用銀行修改密碼函數(shù)*/
23、 break; case 5:system("cls"); cunkuan(head); /*調用銀行存款函數(shù)*/ break; case 6:system("cls"); tuichu(); /*調用銀行退出函數(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); /*關閉文件*/*銀行轉賬函數(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("請輸入轉賬號碼n"); scanf("%d",&i);printf(&q
28、uot;請再次輸入轉賬號碼n"); scanf("%d",&j); if(i!=j) printf("兩次賬號不相同,請重新輸入n"); zhuanzhang(head); else system("cls"); printf("請輸入轉賬金額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("您已成功轉賬%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+"); /*開辟內存*/ 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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版E管材國際環(huán)保認證合同2篇
- 《科幻小說賞析與寫作》 課件 郭琦 第1-5章 導論科幻小說賞析與寫作的“關鍵詞”-“反烏托邦”的警示與預言-《一九八四》
- 電影票房未來發(fā)展趨勢報告
- 2024年浙江工貿職業(yè)技術學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2024年河南經貿職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 2024年河南地礦職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 二零二五年急救藥品生產許可證申請與審批合同3篇
- 2024年江陰職業(yè)技術學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2024年江蘇海事職業(yè)技術學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 二零二五年度校園自來水管道改造合同2篇
- 2024年新課標高考化學試卷(適用黑龍江、遼寧、吉林地區(qū) 真題+答案)
- 鈷酸鋰-安全技術說明書MSDS
- 江蘇省“大唐杯”全國大學生新一代信息通信技術大賽省賽題庫(含答案)
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- 如何做好談話筆錄
- 偏頭痛的治療及護理
- 世界十大物理學家圖文
- 醫(yī)學研究生文獻檢索實例
- 三年級數(shù)學(上)計算題及答案集錦
- 西師大版六年級上冊分數(shù)除法練習300題及答案
- 高一期末家長會課件
評論
0/150
提交評論