活期儲蓄賬目管理系統(tǒng).doc_第1頁
活期儲蓄賬目管理系統(tǒng).doc_第2頁
活期儲蓄賬目管理系統(tǒng).doc_第3頁
活期儲蓄賬目管理系統(tǒng).doc_第4頁
活期儲蓄賬目管理系統(tǒng).doc_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數(shù)據(jù)結構課程設計 課程設計題目:活期存儲賬目管理系統(tǒng)姓 名:院系: 計算機學院專 業(yè):計算機科學與技術 年 級: 11級 學 號:指導教師:2013 年 10月 12 日目 錄 1 課程設計的目的1 2 需求分析1 3 課程設計報告內容1 3.1概要設計1-2 3.2詳細設計 2-10 3.3調試分析10-12 3.4用戶手冊13 3.5測試結果13 3.6程序清單13-24 4 小結 24 5 參考文獻 24-25 1 課程設計的目的設計活期儲蓄帳目管理系統(tǒng)的要求:活期儲蓄處理中,儲戶開戶、銷戶、存入、支出活動頻繁,系統(tǒng)設計要求:能比較迅速地找到儲戶的帳戶,以實現(xiàn)存款、取款記賬;能比較簡單,

2、迅速地實現(xiàn)插入和刪除,以實現(xiàn)開戶和銷戶的需要。設計這個活期賬目管理系統(tǒng)可以方便銀行人員進行管理和調試,從而也能提 高我們的編程技能熟練使用 C 語言編寫程序,解決實際問題;了解并掌握數(shù)據(jù)結構與算法的設計方法,具備初步的獨立分析和設計能力;初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能; 提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;2 需求分析(1)創(chuàng)建文件,用數(shù)組形式存儲用戶數(shù)據(jù),開戶時自定義用戶賬戶、 姓名、密碼、開戶金額。(2) 用戶登錄時,輸入正確的用戶姓名、用戶密碼,完成登錄后即可進行存款、取款、 查詢、修改密碼。(也可以輸入用戶賬號、用戶密碼)

3、(3)實現(xiàn)輸入用戶的賬戶名和密碼,將其全部信息刪除,進行銷戶。3 課程設計報告內容3.1概要設計在本課程設計的方案設計中,已經(jīng)確定了用鏈表來作為數(shù)據(jù)的存儲結構(也可以不用單鏈表),所以這里我沒有采用單鏈表作為其存儲結構,首先用結構體來定義其數(shù)據(jù)類型,然后將數(shù)據(jù)按照該數(shù)據(jù)結構存儲,之后運用文件的相關知識將更改的數(shù)據(jù)寫入文件中,這樣就完成了本課程設計的方案設計。為了實現(xiàn)需求分析中的功能,可以從以下幾個方面著手設計。(1)數(shù)據(jù)結構設計 該課程設計的數(shù)據(jù)結構是線性的數(shù)據(jù)存儲結構,采用的是數(shù)組類型的存儲結構。(2)存儲結構設計 該存儲結構是鏈式存儲結構,本系統(tǒng)主要用線性表表結構類型來存儲在“活期儲蓄賬目

4、管理系統(tǒng)”中的信息。其中,結構體由4個分量構成:用戶賬號名、用戶姓名、用戶密碼、開戶金額。(3)模塊設計 用戶開戶用戶銷戶用戶登錄用戶存入及其支 出進入賬目管理系統(tǒng)(4)模塊功能分析及其外部設計 開戶模塊主要是輸入需要開戶的姓名,然后建立開戶賬號,提醒輸入賬號密碼。銷戶模塊則是輸入需要銷戶的賬號及其密碼,然后從系統(tǒng)中銷去些賬號的相關記錄。同樣存款是根據(jù)提醒輸入需要登錄的賬號,然后再輸入其密碼,之后就可以查看其賬號上的相關資料。 取款則是要求登錄需要存入及其支出的賬號,然后對該賬號進行相關的存入及支出。程序的外部設計主要是通過編寫一個菜單功能來實現(xiàn)各個模塊功能的調用,從而更好的協(xié)調各個模塊功能之

5、間的關系,同時還要編寫一段代碼來實現(xiàn)所有數(shù)據(jù)更改后將其寫入文件中,實現(xiàn)數(shù)據(jù)的及時更新,維護數(shù)據(jù)的正確性.3.2詳細設計(1)數(shù)據(jù)類型定義 本系統(tǒng)采用鏈式結構存儲儲蓄賬目管理系統(tǒng)結構。結點定義如下: struct user char name20; int id; char password8; double money; (2)系統(tǒng)主要子程序詳細設計 用戶輸入要想開戶的儲戶輸入其姓名賬戶密碼,然后顯示開戶 成功,會有一個賬戶號生成,則開戶就成功了。 可以設計賬戶開戶函數(shù):add(); 用戶登錄需要輸入賬戶名和密碼,判斷密碼是否正確,如果錯誤則返回, 然后點擊登錄,就可以進入管理系統(tǒng)。 則需要設

6、計用戶信息輸入函數(shù):getuser(); 用戶的存取款和查詢余額,首先在登錄賬戶的基礎上,選擇存或者取款,然后輸入 相應的金額, 若是取款應判斷其金額是否小于賬戶上的金額,如果不小于,則提示 儲戶重新輸入相應的金額,或者退出。 可以設計存款函數(shù):save_money();取款函數(shù):get_money(); 查詢余額函數(shù)(用名字進行查詢):select_name();查找用戶賬號函數(shù):select_name(); 儲戶輸入需要銷戶的賬號,然后程序自動判斷該賬號是否存在,然后輸入賬號密碼, 若賬號與密碼相對應,則刪除該賬號。 可以設計函數(shù)銷戶函數(shù):del();系統(tǒng)顯示函數(shù)dispaly(); 1用

7、戶開戶函數(shù)void add() printf(%30sn,*用戶開戶*);printf(-nn);struct user getuser();int count(); FILE *fp;int number;struct user temp;if(fp=fopen(file,ab)=NULL)printf(cannot open file!n);exit(1);temp=getuser(); number=count(); temp.id=number+1; fwrite(&temp,sizeof(struct user),1,fp);printf(用戶開戶成功!n);fclose(fp);2

8、.按姓名查詢帳戶余額void select_name()void getname(char *name); void getpassword(char *password);printf(%30sn,*按照姓名查詢賬戶余額*);printf(%8s %15s %15s %10sn,賬號,用戶姓名,存款余額);printf(-nnn);FILE * fp;struct user temp;char name20;char password8;if(fp=fopen(file,rb)=NULL)printf(cannot open file!n);exit(1);printf(輸入要查詢的姓名:)

9、; getname(name);printf(請輸入密碼:); getpassword(password);while(fread(&temp,sizeof(struct user),1,fp) if(strcmp(,name)=0&strcmp(temp.password,password)=0)printf(NO.%d %20s %.2fn,temp.id,,temp.money);fclose(fp);按賬號查詢賬戶余額void select_id() int count();void getpassword(char *password);print

10、f(%30sn,*按照編號查詢賬戶余額*);printf(%8s %15s %10sn,編號,用戶姓名,存款余額);printf(-nn);FILE * fp;struct user temp;int i,maxnum;char password8;if(fp=fopen(file,rb)=NULL)printf(cannot open file!n);exit(1);maxnum=count();printf(輸入要查詢賬號:); scanf(%d,&i); printf(輸入賬號密碼:);scanf(%s,&password);if(imaxnum)printf(你要查詢的賬號不存在!);

11、return;while(fread(&temp,sizeof(struct user),1,fp)if(temp.id=i&strcmp(temp.password,password)=0)printf(NO.%d %20s %.2fn,temp.id,,temp.money);fclose(fp);顯示用戶資料void display() printf(%30sn,*用戶資料顯示*); printf(%8s %15s %10sn,賬號,用戶姓名,存款余額);printf(-nn);FILE * fp;struct user temp;if(fp=fopen(file,rb

12、)=NULL)printf(cannot open file!n);exit(1);while(fread(&temp,sizeof(struct user),1,fp)printf(NO.%d %20s %.2fn,temp.id,,temp.money);fclose(fp);儲戶存款void save_money() printf(%30sn,*用戶存款業(yè)務*);printf(-nn);int count();void getpassword(char *password);FILE *fp;int i,num,mark;struct user *temp; char

13、password8;num=count(); temp=(struct user *)malloc(num*sizeof(struct user);if(fp=fopen(file,rb)=NULL)printf(cannot open file!n);exit(1);for(i=0;inum;i+)fread(&tempi,sizeof(struct user),1,fp);fclose(fp);printf(輸入要存款賬號:); scanf(%d,&mark);if(marknum)printf(你要存款賬號不存在!);return; printf(輸入賬號密碼:); scanf(%s,&

14、password);if(fp=fopen(file,wb)=NULL) printf(cannot open file!n);exit(1);for(i=0;inum;i+)if(tempi.id=mark)double money=0;printf(輸入要存入的金額:);scanf(%lf,&money);if(money=0)printf(只能為正數(shù)!n);money=0;tempi.money +=money; fwrite(&tempi,sizeof(struct user),1,fp);fclose(fp);free(temp);printf(你存款業(yè)務已辦妥!n);儲戶取款voi

15、d get_money() printf(%30sn,*用戶取款業(yè)務*);printf(-nn);int count();void getpassword(char *password);FILE *fp;int i,num,mark;struct user *temp; char password8;num=count();temp=(struct user *)malloc(num*sizeof(struct user);if(fp=fopen(file,rb)=NULL)printf(cannot open file!n);exit(1);for(i=0;inum;i+)fread(&t

16、empi,sizeof(struct user),1,fp);fclose(fp);printf(輸入要取款賬號:);scanf(%d,&mark);if(marknum)printf(你要取款賬號不存在!);return; printf(輸入賬號密碼:);scanf(%s,&password);if(fp=fopen(file,wb)=NULL)printf(cannot open file!n);exit(1);for(i=0;inum;i+) if(tempi.id=mark) double money=0;printf(輸入要取出的金額:);scanf(%lf,&money);if(m

17、oneytempi.money)printf(你的余額不足!n);money=0;tempi.money -=money;fwrite(&tempi,sizeof(struct user),1,fp);fclose(fp);free(temp);printf(你取款業(yè)務已辦妥!n);銷戶void del() int count();printf(%30sn,*注銷賬戶*);printf(%8s %15s %10sn,賬號,用戶姓名,存款余額);printf(-nn);FILE * fp;struct user temp;int i,maxnum;if(fp=fopen(file,rb)=NUL

18、L)printf(cannot open file!n);exit(1);maxnum=count();printf(輸入要銷戶賬號:); scanf(%d,&i);if(imaxnum)printf(你要查詢的賬號不存在!);return;while(fread(&temp,sizeof(struct user),1,fp)/循環(huán)讀取每一條記錄 判斷是否為要查看的記錄if(temp.id=i&temp.money=0.00)/余額為0temp.id=-1;/算無效帳戶printf(NO.%d %20s %.2fn,temp.id,,temp.money); fwrite(&

19、temp,sizeof(struct user),1,fp);/保存修改 printf(賬戶銷戶成功n); fclose(fp);3.3調試分析 系統(tǒng)運行主界面如圖所示,各子功能測試運行結果如下。每個方面實現(xiàn)一個功能。定義一個包含有四個變量的結構體數(shù)組,并存入文件中。定義一個計數(shù)函數(shù),貫穿整個程序。然后每個函數(shù)實現(xiàn)一個功能,共有七個功能。添加用戶時會使用到錄入姓名和錄入身份證號碼兩個函數(shù)。按姓名和賬號查詢只需要比較字符串,然后輸出即可實現(xiàn)。顯示用戶資料只需將結構體數(shù)組依次輸出即可實現(xiàn)。儲戶的存款和取款按找賬號依次從文件中查找到匹配的賬號,然后加上或減去存取的金額即可實現(xiàn)。銷戶時將金額為零的賬戶

20、賬號標為-1即可。1.主界面截圖2.用戶開戶3.按照姓名查找賬戶4按照賬號查找賬戶 5.用戶存款 6.用戶取款7.用戶銷戶前顯示用戶信息進行銷戶3.4用戶手冊(1)本程序執(zhí)行文件為”活期儲蓄.exe”.(2) 進入本系統(tǒng)后,隨即顯示系統(tǒng)主菜單頁面,用戶可在該界面下輸入各子菜單前對應的數(shù)字并按回車鍵,執(zhí)行相應子菜單命令。3.5測試結果最后以文件輸出的數(shù)據(jù)(有點亂碼)3.6 程序清單 #include#include#include#include#define file temp.txtstruct user int id; char name20; char password6; double

21、 money;void add() printf(%30sn,*用戶開戶*); printf(-nn); struct user getuser(); int count(); FILE *fp; int number; struct user temp; if(fp=fopen(file,ab)=NULL) printf(cannot open file!n); exit(1); temp=getuser(); number=count(); temp.id=number+1; fwrite(&temp,sizeof(struct user),1,fp); printf(用戶開戶成功!n);

22、 fclose(fp);int count() FILE *fp; int num; struct user temp; num=0; if(fp=fopen(file,rb)=NULL) printf(cannot open file!n); exit(1); while(fread(&temp,sizeof(struct user),1,fp) num+; fclose(fp); return num;void getname(char *name) do scanf(%s,name); fflush(stdin); if(strlen(name)=0) printf(姓名不能為空!n);

23、 else if(strlen(name)=20) printf(姓名不能超過20個字符!n); else break; printf(重新輸入姓名: ); while(1);void getpassword(char *password) do int i,j; char ch; for(i=0,j=0; i+) if(ch=getchar()!=n) if(ch=0) passwordi=ch; else printf(密碼只能是數(shù)字!n); j=1; break; else break; passwordi=0; if(j=1) continue; if(strlen(password)

24、!=6) printf(密碼只能是6位!n); else break; printf(重新輸入密碼: ); while(1);struct user getuser() void getname(char *name); void getpassword(char *password); struct user temp; printf(請輸入用戶姓名: ); getname(); printf(請輸入用戶密碼: ); getpassword(temp.password); printf(輸入開戶金額:); do scanf(%lf,&temp.money); fflush(

25、stdin); if(temp.money)10) printf(開戶金額不能小于10n); else break; printf(重新輸入開戶金額:); while(1); return temp;void select_name() void getname(char *name); void getpassword(char *password); printf(%30sn,*按照姓名查詢賬戶余額*); printf(%8s %15s %15s %10sn,賬號,用戶姓名,存款余額); printf(-nnn); FILE * fp; struct user temp; char nam

26、e20; char password8; if(fp=fopen(file,rb)=NULL) printf(cannot open file!n); exit(1); printf(輸入要查詢的姓名:); getname(name); printf(請輸入密碼:); getpassword(password); while(fread(&temp,sizeof(struct user),1,fp) if(strcmp(,name)=0&strcmp(temp.password,password)=0) printf(NO.%d %20s %.2fn,temp.id,temp

27、.name,temp.money); fclose(fp);void select_id() int count(); void getpassword(char *password); printf(%30sn,*按照編號查詢賬戶余額*); printf(%8s %15s %10sn,編號,用戶姓名,存款余額); printf(-nn); FILE * fp; struct user temp; int i,maxnum; char password8; if(fp=fopen(file,rb)=NULL) printf(cannot open file!n); exit(1); maxnu

28、m=count(); printf(輸入要查詢賬號:); scanf(%d,&i); printf(輸入賬號密碼:); scanf(%s,&password); if(imaxnum) printf(你要查詢的賬號不存在!); return; while(fread(&temp,sizeof(struct user),1,fp) if(temp.id=i&strcmp(temp.password,password)=0) printf(NO.%d %20s %.2fn,temp.id,,temp.money); fclose(fp);void display() printf

29、(%30sn,*用戶資料顯示*); printf(%8s %15s %10sn,賬號,用戶姓名,存款余額); printf(-nn); FILE * fp; struct user temp; if(fp=fopen(file,rb)=NULL) printf(cannot open file!n); exit(1); while(fread(&temp,sizeof(struct user),1,fp) printf(NO.%d %20s %.2fn,temp.id,,temp.money); fclose(fp);void save_money() printf(%30s

30、n,*用戶存款業(yè)務*); printf(-nn); int count(); void getpassword(char *password); FILE *fp; int i,num,mark; struct user *temp; char password8; num=count(); temp=(struct user *)malloc(num*sizeof(struct user); if(fp=fopen(file,rb)=NULL) printf(cannot open file!n); exit(1); for(i=0; inum; i+) fread(&tempi,sizeo

31、f(struct user),1,fp); fclose(fp); printf(輸入要存款賬號:); scanf(%d,&mark); if(marknum) printf(你要存款賬號不存在!); return; printf(輸入賬號密碼:); scanf(%s,&password); if(fp=fopen(file,wb)=NULL) printf(cannot open file!n); exit(1); for(i=0; inum; i+) if(tempi.id=mark) double money=0; printf(輸入要存入的金額:); scanf(%lf,&money)

32、; if(money=0) printf(只能為正數(shù)!n); money=0; tempi.money +=money; fwrite(&tempi,sizeof(struct user),1,fp); fclose(fp); free(temp); printf(你存款業(yè)務已辦妥!n);void get_money() printf(%30sn,*用戶取款業(yè)務*); printf(-nn); int count(); void getpassword(char *password); FILE *fp; int i,num,mark; struct user *temp; char pass

33、word8; num=count(); temp=(struct user *)malloc(num*sizeof(struct user); if(fp=fopen(file,rb)=NULL) printf(cannot open file!n); exit(1); for(i=0; inum; i+) fread(&tempi,sizeof(struct user),1,fp); fclose(fp); printf(輸入要取款賬號:); scanf(%d,&mark); if(marknum) printf(你要取款賬號不存在!); return; printf(輸入賬號密碼:); s

34、canf(%s,&password); if(fp=fopen(file,wb)=NULL) printf(cannot open file!n); exit(1); for(i=0; inum; i+) if(tempi.id=mark) double money=0; printf(輸入要取出的金額:); scanf(%lf,&money); if(moneytempi.money) printf(你的余額不足!n); money=0; tempi.money -=money; fwrite(&tempi,sizeof(struct user),1,fp); fclose(fp); free(temp); printf(你取款業(yè)務已辦妥!n);void del() int count(); printf(%30sn,*注銷賬戶*); printf(%8s %15s %10sn,賬號,用戶姓名,存款余額); printf(-nn); FILE * fp; struct user temp; int i,maxnum; if(fp=fopen(file,rb)=NULL) printf(cannot open

溫馨提示

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

評論

0/150

提交評論