活期儲蓄帳目管理數據結構_第1頁
活期儲蓄帳目管理數據結構_第2頁
活期儲蓄帳目管理數據結構_第3頁
活期儲蓄帳目管理數據結構_第4頁
活期儲蓄帳目管理數據結構_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、洛 陽 理 工 學 院課 程 設 計 報 告 課程名稱 數據結構課程設計 設計題目 活期儲蓄帳目管理 專 業 計算機科學與技術 課 程 設 計 任 務 書設計題目: 活期儲蓄帳目管理 設計內容與要求:【問題描述】活期儲蓄處理中,儲戶開戶、銷戶、存入、支出活動頻繁。設計一個活期儲蓄賬目管理系統。【基本要求】1) 能比較迅速地找到儲戶的帳戶,以實現存款、取款記賬;2) 能比較簡單,迅速地實現插入和刪除,以實現開戶和銷戶的需要。課 程 設 計 評 語 成績: 指導教師:_ 年 月 日洛 陽 理 工 學 院 課 程 設 計 報 告目 錄一、問題描述與基本要求11.1問題描述11.2基本要求1二、數據結

2、構的設計22.1數據結構的選擇22.2單鏈表的定義22.3模塊劃分2三、模塊結構圖4四、程序流程圖4五、調試分析75.1程序錯誤修改及完善的過程75.2最終程序所有功能運行結果8六、心得體會9七、源程序清單10一、問題描述與基本要求1.1問題描述活期儲蓄處理中,儲戶開戶、銷戶、存入、支出活動頻繁。設計一個活期儲蓄賬目管理系統。1.2基本要求系統設計要求:1、能比較迅速地實現插入,以實現儲戶開戶的功能,儲戶開戶時需輸入的信息包括儲戶姓名,密碼。2、能比較迅速地通過儲戶的賬戶序號和密碼找到儲戶的賬戶,并刪除該賬戶,以實現銷戶的功能。3、能比較迅速地通過儲戶的賬戶序號和密碼找到儲戶的賬戶(密碼不對時

3、,可選擇是否重新輸入密碼)實現賬戶登錄的功能。登錄成功后,再通過修改鏈表結點數據域中的對應元素,以實現存款、取款、顯示余額等功能,若取款時賬戶余額不足,輸出提示信息“取款失敗!你賬戶上的金額不足!”,并顯示賬戶當前余額,并且提示重新輸入合適的取款金額。4、查找活期儲蓄帳目管理系統當前存在的儲戶,當輸出活期儲蓄帳目管理系統沒有賬戶時,輸出提示信息“活期儲蓄帳目管理系統沒有賬戶”,當有賬戶時,輸出所有賬戶的相關信息,包括儲戶姓名,帳號,密碼,賬戶余額。二、數據結構的設計2.1數據結構的選擇課程設計題目的要求是,要較簡單迅速地實現開戶、銷戶、存款、取款、輸出用戶信息的功能,于是我很自然地想到了可以用

4、單鏈表的結構,通過編寫相應功能函數來實現建立新結點、刪除結點、修改結點中數據域的內容、輸出結點數據域中的內容等功能,即可滿足課程設計題目的要求。2.2單鏈表的定義先定義單鏈表結點的數據域,數據域包括儲戶姓名、賬戶序號、賬戶密碼、賬戶金額等儲戶信息,然后再定義鏈表結點,鏈表結點包括結點數據域和結點鏈域,最后再定義指向鏈表結點的指針。 數據結構類型定義:typedef struct ListData /定義結點數據域 char name3; /儲戶姓名int account; /賬戶賬號char password5; /賬戶密碼int money; /賬戶金額ListData;typedef st

5、ruct node /定義鏈表結點ListData data; /結點數據域struct node *next; /結點鏈域ListNode;2.3模塊劃分(1)建立空鏈表函數:void InitList (LinkList *L)(2)插入鏈表結點,實現開戶功能函數:void InsertList (LinkList *L)(3)刪除鏈表結點,實現銷戶功能函數:void DeleteList (LinkList *L)(4)儲戶存款、取款、顯示余額函數:void Deposit (LinkList *L,LinkList *p)(5)鏈表查找,實現用戶登錄功能函數:void Search (

6、LinkList *L)(6)輸出鏈表函數:void PrintList (LinkList *L)(7)主菜單函數:void menu()(8)選擇函數:void choice()(9)主函數:void main()三、模塊結構圖四、程序流程圖1 InitList ()函數 2. InsertList ()函數 3. DeleteList()函數 4. PrintList()函數5. Deposit()函數 6. Search()函數7. menu()函數 8. choice()函數9.main()函數五、調試分析5.1程序錯誤修改及完善的過程1、當看到這個課程設計題目時,我覺得還算比較簡單

7、,因為我之前數據結構實驗就做過單鏈表的插入、刪除、查找、輸出,而這次活期儲蓄帳目管理系統要求的開戶、銷戶、存款、取款、輸出儲戶信息等功能,即可用單鏈表的相關功能函數來實現,于是我修改了之前寫過的單鏈表的一些函數,以滿足這次題目的要求,但在實驗過程中仍出現了一些錯誤。最終經過我的仔細檢查和修改,最終編寫出了符合要求的程序,還增加了一些功能。2、我編寫完程序后,覺得程序太過簡單,又想到題目是活期儲蓄帳目管理系統,那賬戶應該是有密碼保證安全性的,于是我又在單鏈表結點的數據域中加入了一個新的元素password5,并且還修改了后面相關函數的定義,確保在銷戶時,必須賬戶序號和密碼相對應時才能銷戶成功,在

8、存款、取款時也只有當賬戶序號和密碼相對應時才能登錄成功,選擇存款、取款或顯示余額等功能。因此,函數定義中除了密碼正確時的相關操作,還應有密碼錯誤時的提示信息和相關操作。于是,我在DeleteList函數和Search函數中加入了判斷p-data.password與mima是否相等的語句。3、修改了相關函數定義后,調試程序,又出現了如下錯誤:error C2065: strcmp : undeclared identifier,我才意識到我在DeleteList函數和Search函數的定義中調用了strcmp函數,頭文件中應包括#include,加上后運行結果就對了。修改后,相關調試結果如下:4

9、、再次修改完程序后,我希望程序還能更加完善,于是我開始思考出了密碼與賬戶不對應,導致銷戶失敗和登錄失敗外,還可能出現哪些其他的特殊情況。于是我又想到了兩個特殊情況,一是取款時,賬戶余額可能不夠,則應該輸出提示信息,告知用戶當前賬戶余額,并要求用戶輸入合適的取款金額。二是,可能系統沒有建立賬戶,或者是建立了賬戶但是已經銷戶,就會導致當前系統沒有賬戶,輸出賬戶信息為空,這時就需要輸出提示信息“活期儲蓄帳目管理系統沒有賬戶”,于是我根據自己的想法又對程序做了一些修改,最終程序完成所有功能運行。5.2最終程序所有功能運行結果(1)主菜單(2)開戶 (3)銷戶 (4)賬號登錄,存、取款及查詢余額 (5)

10、顯示出戶信息六、心得體會這次課程設計,我選的題目是活期儲蓄賬目管理,對于這個實驗開始感覺不知從哪兒開始,后來經過認真分析后,結合所學知識并查閱了許多相關的課外知識,我們開始了一步步解題編程。在編程過程中,遇到問題的時候就與同學一起討論解決,從其他人身上學到了很多,慢慢把不會不理解的地方給弄明白了。在經過很多次調試以后,最終沒有出現錯誤了,實驗能夠執行,將功能實現,最后完成程序編寫。雖然不是很完美,但發現不足之處并在以后的設計中注意這些細節,對于將來的實踐還是很有幫助,我們可以不斷發現我們的不完美,并想辦法去改進這些不完美。這次的綜合性實驗使我了解到,平時對知識的積累相當重要,同時也要注重課上老

11、師的講解,老師在課上的延伸是課本上所沒有的,這些知識對于我們對程序的編寫有很大的作用。同時,編程也要求我們有足夠的耐心,細細推敲,越著急可能就越無法得到我們想要的結果,遇到不會的問題要多多請教,知識是在實踐與向別人請教的過程中積累的,所以問是至關重要的,只要肯下功夫很多東西都是可以完成的。總之,編程使我學到更多,更全面的知識。通過這次課程設計學到了很多東西包括以前在課本上沒有學到的知識,還使我懂得了理論和時間結合是很重要的。讓我進一步了解了程序設計方法,并且對這門課產生了濃厚的興趣。更重要的是培養了自己耐心、細心、用心的良好品質。同時也非常感謝同學的幫助及老師的建議與指導。七、源程序清單#in

12、clude#include#includeint total=1;/定義的全局變量,用于開戶所需typedef struct ListData /定義結點數據域char name8; /儲戶姓名int account; /賬戶賬號char password6; /賬戶密碼float money; /賬戶金額ListData;typedef struct node /定義鏈表結點 ListData data; /結點數據域struct node *next; /結點鏈域Link;void InitList(Link *L) /建立空鏈表 L=(Link *)malloc(sizeof(Link)

13、; /建立頭結點L-next=NULL; /建立空的單鏈表Lvoid InsertList(Link *L) /鏈表插入結點,實現開戶功能,需輸入儲戶姓名和密碼Link *s;s=(Link*)malloc(sizeof(Link); /建立新結點sprintf(請輸入你要開戶的姓名:); scanf(%s,);s-data.account=1000+total+;printf(你開戶的賬號為:%dn,s-data.account);printf(請輸入你賬號的密碼:);scanf(%s,s-data.password);s-data.money=0.00;s-next=

14、NULL;if(L-next=NULL) /頭插法L-next=s; elses-next=L-next; /將s結點插入表頭L-next=s;printf(開戶成功!n);void DeleteList(Link *L) /刪除鏈表結點,實現銷戶功能(需要輸入賬號和密碼)Link *p=L,*q;char pass6;int s;printf(請輸入你要銷戶的賬號:);scanf(%d,&s);printf(請輸入該賬號的密碼:);scanf(%s,pass);while(p-next!=NULL)if(p-next-data.account=s)break;p=p-next;if(p-ne

15、xt!=NULL)while(strcmp(p-next-data.password,pass)!=0)printf(密碼錯誤!請重新輸入:);scanf(%s,pass);q=p-next;p-next=q-next; /修改指針,刪除結點qfree(q);printf(賬號銷戶成功!n);else printf(你所要銷戶的的賬號不存在(或已經銷戶)。n);void PrintList(Link *L) /輸出鏈表,實現儲戶信息輸出Link *p=L-next;while (p!=NULL)printf(%st,);printf(%dt%st%.2fn,p-data.

16、account,p-data.password,p-data.money);p=p-next;void Deposit(Link *L,Link *p) /儲戶存款、取款、查詢余額int cq;float mn;while(1)if(p!=NULL)printf(n1、存款 2、取款 3、查詢余額 4、退出賬號n請輸入數字(1-4)選擇功能:n);scanf(%d,&cq);if(cq=1)printf(請輸入你的存款金額:);scanf(%f,&mn);p-data.money=p-data.money+mn;printf(存款成功!n);else if(cq=3)printf(你賬戶的余額

17、為:%.2fn,p-data.money);else if(cq=4)printf(賬號退出成功!n);return;else printf(請輸入你的取款金額:);scanf(%f,&mn);if(p-data.money-mn)=0)p-data.money=p-data.money-mn;printf(取款成功!n);elseprintf(取款失敗!n);printf(你賬戶上的金額不足!你的賬戶余額為:%.2fRMBn,p-data.money);printf(請輸入合適的取款金額:);void Search(Link *L) /鏈表查找,實現用戶登錄功能(需要輸入賬號和密碼)Link

18、 *p=L-next; /從表中第一個結點開始int acc;char pass6;printf(請輸入你要登錄的賬號:);scanf(%d,&acc);printf(請輸入你的密碼:);scanf(%s,pass);while(p!=NULL) /當前表未查完if(p-data.account=acc)break;p=p-next;if(p=NULL)printf(不存在該賬戶!n);elseif(strcmp(p-data.password,pass)=0)printf(賬號登錄成功!n);else while(strcmp(p-data.password,pass)!=0)char pa;printf(密碼錯誤!n);printf(是否重新輸入(是,就輸入任意鍵)、(否,從鍵盤上輸入N or n):);scanf(n%c,&pa);if(pa=n|pa=N)system (cls);

溫馨提示

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

評論

0/150

提交評論