活期儲蓄帳目管理數(shù)據(jù)結(jié)構(gòu)_第1頁
活期儲蓄帳目管理數(shù)據(jù)結(jié)構(gòu)_第2頁
活期儲蓄帳目管理數(shù)據(jù)結(jié)構(gòu)_第3頁
活期儲蓄帳目管理數(shù)據(jù)結(jié)構(gòu)_第4頁
活期儲蓄帳目管理數(shù)據(jù)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

--本頁僅作為文檔封面,使用時請直接刪除即可--

--內(nèi)頁可以根據(jù)需求調(diào)整合適字體及大小本頁僅作為文檔封面,使用時請直接刪除即可--

--內(nèi)頁可以根據(jù)需求調(diào)整合適字體及大小--活期儲蓄帳目管理數(shù)據(jù)結(jié)構(gòu)(總17頁)PAGE洛陽理工學(xué)院課程設(shè)計(jì)報告課程名稱數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)設(shè)計(jì)題目活期儲蓄帳目管理專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)

課程設(shè)計(jì)任務(wù)書設(shè)計(jì)題目:活期儲蓄帳目管理設(shè)計(jì)內(nèi)容與要求:【問題描述】活期儲蓄處理中,儲戶開戶、銷戶、存入、支出活動頻繁。設(shè)計(jì)一個活期儲蓄賬目管理系統(tǒng)。【基本要求】1)能比較迅速地找到儲戶的帳戶,以實(shí)現(xiàn)存款、取款記賬;2)能比較簡單,迅速地實(shí)現(xiàn)插入和刪除,以實(shí)現(xiàn)開戶和銷戶的需要。課程設(shè)計(jì)評語成績:指導(dǎo)教師:_______________年月日目錄TOC\o"1-2"\h\z\u一、問題描述與基本要求 11.1問題描述 11.2基本要求 1二、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì) 22.1數(shù)據(jù)結(jié)構(gòu)的選擇 22.2單鏈表的定義 22.3模塊劃分 2三、模塊結(jié)構(gòu)圖 4四、程序流程圖 4五、調(diào)試分析 75.1程序錯誤修改及完善的過程 75.2最終程序所有功能運(yùn)行結(jié)果 8六、心得體會 9七、源程序清單 10一、問題描述與基本要求1.1問題描述活期儲蓄處理中,儲戶開戶、銷戶、存入、支出活動頻繁。設(shè)計(jì)一個活期儲蓄賬目管理系統(tǒng)。1.2基本要求系統(tǒng)設(shè)計(jì)要求:1、能比較迅速地實(shí)現(xiàn)插入,以實(shí)現(xiàn)儲戶開戶的功能,儲戶開戶時需輸入的信息包括儲戶姓名,密碼。2、能比較迅速地通過儲戶的賬戶序號和密碼找到儲戶的賬戶,并刪除該賬戶,以實(shí)現(xiàn)銷戶的功能。3、能比較迅速地通過儲戶的賬戶序號和密碼找到儲戶的賬戶(密碼不對時,可選擇是否重新輸入密碼)實(shí)現(xiàn)賬戶登錄的功能。登錄成功后,再通過修改鏈表結(jié)點(diǎn)數(shù)據(jù)域中的對應(yīng)元素,以實(shí)現(xiàn)存款、取款、顯示余額等功能,若取款時賬戶余額不足,輸出提示信息“取款失敗!你賬戶上的金額不足!”,并顯示賬戶當(dāng)前余額,并且提示重新輸入合適的取款金額。4、查找活期儲蓄帳目管理系統(tǒng)當(dāng)前存在的儲戶,當(dāng)輸出活期儲蓄帳目管理系統(tǒng)沒有賬戶時,輸出提示信息“活期儲蓄帳目管理系統(tǒng)沒有賬戶”,當(dāng)有賬戶時,輸出所有賬戶的相關(guān)信息,包括儲戶姓名,帳號,密碼,賬戶余額。二、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)2.1數(shù)據(jù)結(jié)構(gòu)的選擇課程設(shè)計(jì)題目的要求是,要較簡單迅速地實(shí)現(xiàn)開戶、銷戶、存款、取款、輸出用戶信息的功能,于是我很自然地想到了可以用單鏈表的結(jié)構(gòu),通過編寫相應(yīng)功能函數(shù)來實(shí)現(xiàn)建立新結(jié)點(diǎn)、刪除結(jié)點(diǎn)、修改結(jié)點(diǎn)中數(shù)據(jù)域的內(nèi)容、輸出結(jié)點(diǎn)數(shù)據(jù)域中的內(nèi)容等功能,即可滿足課程設(shè)計(jì)題目的要求。2.2單鏈表的定義先定義單鏈表結(jié)點(diǎn)的數(shù)據(jù)域,數(shù)據(jù)域包括儲戶姓名、賬戶序號、賬戶密碼、賬戶金額等儲戶信息,然后再定義鏈表結(jié)點(diǎn),鏈表結(jié)點(diǎn)包括結(jié)點(diǎn)數(shù)據(jù)域和結(jié)點(diǎn)鏈域,最后再定義指向鏈表結(jié)點(diǎn)的指針。數(shù)據(jù)結(jié)構(gòu)類型定義:typedefstructListData//定義結(jié)點(diǎn)數(shù)據(jù)域{charname[3];//儲戶姓名intaccount;//賬戶賬號charpassword[5];//賬戶密碼intmoney;//賬戶金額}ListData;typedefstructnode//定義鏈表結(jié)點(diǎn){ListDatadata;//結(jié)點(diǎn)數(shù)據(jù)域structnode*next;//結(jié)點(diǎn)鏈域}ListNode;2.3模塊劃分(1)建立空鏈表函數(shù):voidInitList(LinkList*L)(2)插入鏈表結(jié)點(diǎn),實(shí)現(xiàn)開戶功能函數(shù):voidInsertList(LinkList*L)(3)刪除鏈表結(jié)點(diǎn),實(shí)現(xiàn)銷戶功能函數(shù):voidDeleteList(LinkList*L)(4)儲戶存款、取款、顯示余額函數(shù):voidDeposit(LinkList*L,LinkList*p)(5)鏈表查找,實(shí)現(xiàn)用戶登錄功能函數(shù):voidSearch(LinkList*L)(6)輸出鏈表函數(shù):voidPrintList(LinkList*L)(7)主菜單函數(shù):voidmenu()(8)選擇函數(shù):voidchoice()(9)主函數(shù):voidmain()三、模塊結(jié)構(gòu)圖四、程序流程圖1.InitList()函數(shù)2.InsertList()函數(shù)3.DeleteList()函數(shù)4.PrintList()函數(shù)5.Deposit()函數(shù)6.Search()函數(shù)7.menu()函數(shù)8.choice()函數(shù)9.main()函數(shù)五、調(diào)試分析5.1程序錯誤修改及完善的過程1、當(dāng)看到這個課程設(shè)計(jì)題目時,我覺得還算比較簡單,因?yàn)槲抑皵?shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)就做過單鏈表的插入、刪除、查找、輸出,而這次活期儲蓄帳目管理系統(tǒng)要求的開戶、銷戶、存款、取款、輸出儲戶信息等功能,即可用單鏈表的相關(guān)功能函數(shù)來實(shí)現(xiàn),于是我修改了之前寫過的單鏈表的一些函數(shù),以滿足這次題目的要求,但在實(shí)驗(yàn)過程中仍出現(xiàn)了一些錯誤。最終經(jīng)過我的仔細(xì)檢查和修改,最終編寫出了符合要求的程序,還增加了一些功能。2、我編寫完程序后,覺得程序太過簡單,又想到題目是活期儲蓄帳目管理系統(tǒng),那賬戶應(yīng)該是有密碼保證安全性的,于是我又在單鏈表結(jié)點(diǎn)的數(shù)據(jù)域中加入了一個新的元素password[5],并且還修改了后面相關(guān)函數(shù)的定義,確保在銷戶時,必須賬戶序號和密碼相對應(yīng)時才能銷戶成功,在存款、取款時也只有當(dāng)賬戶序號和密碼相對應(yīng)時才能登錄成功,選擇存款、取款或顯示余額等功能。因此,函數(shù)定義中除了密碼正確時的相關(guān)操作,還應(yīng)有密碼錯誤時的提示信息和相關(guān)操作。于是,我在DeleteList函數(shù)和Search函數(shù)中加入了判斷p->data.password與mima是否相等的語句。3、修改了相關(guān)函數(shù)定義后,調(diào)試程序,又出現(xiàn)了如下錯誤:errorC2065:'strcmp':undeclaredidentifier,我才意識到我在DeleteList函數(shù)和Search函數(shù)的定義中調(diào)用了strcmp函數(shù),頭文件中應(yīng)包括#include<string.h>,加上后運(yùn)行結(jié)果就對了。修改后,相關(guān)調(diào)試結(jié)果如下:4、再次修改完程序后,我希望程序還能更加完善,于是我開始思考出了密碼與賬戶不對應(yīng),導(dǎo)致銷戶失敗和登錄失敗外,還可能出現(xiàn)哪些其他的特殊情況。于是我又想到了兩個特殊情況,一是取款時,賬戶余額可能不夠,則應(yīng)該輸出提示信息,告知用戶當(dāng)前賬戶余額,并要求用戶輸入合適的取款金額。二是,可能系統(tǒng)沒有建立賬戶,或者是建立了賬戶但是已經(jīng)銷戶,就會導(dǎo)致當(dāng)前系統(tǒng)沒有賬戶,輸出賬戶信息為空,這時就需要輸出提示信息“活期儲蓄帳目管理系統(tǒng)沒有賬戶”,于是我根據(jù)自己的想法又對程序做了一些修改,最終程序完成所有功能運(yùn)行。5.2最終程序所有功能運(yùn)行結(jié)果(1)主菜單(2)開戶(3)銷戶(4)賬號登錄,存、取款及查詢余額(5)顯示出戶信息六、心得體會這次課程設(shè)計(jì),我選的題目是活期儲蓄賬目管理,對于這個實(shí)驗(yàn)開始感覺不知從哪兒開始,后來經(jīng)過認(rèn)真分析后,結(jié)合所學(xué)知識并查閱了許多相關(guān)的課外知識,我們開始了一步步解題編程。在編程過程中,遇到問題的時候就與同學(xué)一起討論解決,從其他人身上學(xué)到了很多,慢慢把不會不理解的地方給弄明白了。在經(jīng)過很多次調(diào)試以后,最終沒有出現(xiàn)錯誤了,實(shí)驗(yàn)?zāi)軌驁?zhí)行,將功能實(shí)現(xiàn),最后完成程序編寫。雖然不是很完美,但發(fā)現(xiàn)不足之處并在以后的設(shè)計(jì)中注意這些細(xì)節(jié),對于將來的實(shí)踐還是很有幫助,我們可以不斷發(fā)現(xiàn)我們的不完美,并想辦法去改進(jìn)這些不完美。這次的綜合性實(shí)驗(yàn)使我了解到,平時對知識的積累相當(dāng)重要,同時也要注重課上老師的講解,老師在課上的延伸是課本上所沒有的,這些知識對于我們對程序的編寫有很大的作用。同時,編程也要求我們有足夠的耐心,細(xì)細(xì)推敲,越著急可能就越無法得到我們想要的結(jié)果,遇到不會的問題要多多請教,知識是在實(shí)踐與向別人請教的過程中積累的,所以問是至關(guān)重要的,只要肯下功夫很多東西都是可以完成的??傊幊淌刮覍W(xué)到更多,更全面的知識。通過這次課程設(shè)計(jì)學(xué)到了很多東西包括以前在課本上沒有學(xué)到的知識,還使我懂得了理論和時間結(jié)合是很重要的。讓我進(jìn)一步了解了程序設(shè)計(jì)方法,并且對這門課產(chǎn)生了濃厚的興趣。更重要的是培養(yǎng)了自己耐心、細(xì)心、用心的良好品質(zhì)。同時也非常感謝同學(xué)的幫助及老師的建議與指導(dǎo)。七、源程序清單#include<stdio.h>#include<string.h>#include<stdlib.h>inttotal=1;//定義的全局變量,用于開戶所需typedefstructListData//定義結(jié)點(diǎn)數(shù)據(jù)域{ charname[8];//儲戶姓名 intaccount;//賬戶賬號 charpassword[6];//賬戶密碼 floatmoney;//賬戶金額}ListData;typedefstructnode//定義鏈表結(jié)點(diǎn){ ListDatadata;//結(jié)點(diǎn)數(shù)據(jù)域 structnode*next;//結(jié)點(diǎn)鏈域}Link;voidInitList(Link*L)//建立空鏈表{ L=(Link*)malloc(sizeof(Link));//建立頭結(jié)點(diǎn) L->next=NULL;//建立空的單鏈表L}voidInsertList(Link*L)//鏈表插入結(jié)點(diǎn),實(shí)現(xiàn)開戶功能,需輸入儲戶姓名和密碼{ Link*s; s=(Link*)malloc(sizeof(Link));//建立新結(jié)點(diǎn)s printf("請輸入你要開戶的姓名:");scanf("%s",s->); s->data.account=1000+total++; printf("你開戶的賬號為:%d\n",s->data.account); printf("請輸入你賬號的密碼:"); scanf("%s",s->data.password); s->data.money=0.00; s->next=NULL; if(L->next==NULL)//頭插法 L->next=s; else { s->next=L->next;//將s結(jié)點(diǎn)插入表頭 L->next=s; } printf("開戶成功!\n");}voidDeleteList(Link*L)//刪除鏈表結(jié)點(diǎn),實(shí)現(xiàn)銷戶功能(需要輸入賬號和密碼){ Link*p=L,*q; charpass[6]; ints; printf("請輸入你要銷戶的賬號:"); scanf("%d",&s); printf("請輸入該賬號的密碼:"); scanf("%s",pass); while(p->next!=NULL) { if(p->next->data.account==s) break; p=p->next; } if(p->next!=NULL) { while(strcmp(p->next->data.password,pass)!=0) { printf("密碼錯誤!請重新輸入:"); scanf("%s",pass); } q=p->next; p->next=q->next;//修改指針,刪除結(jié)點(diǎn)q free(q); printf("賬號銷戶成功!\n"); } elseprintf("你所要銷戶的的賬號不存在(或已經(jīng)銷戶)。\n");}voidPrintList(Link*L)//輸出鏈表,實(shí)現(xiàn)儲戶信息輸出{ Link*p=L->next; while(p!=NULL) { printf("%s\t",p->); printf("%d\t%s\t%.2f\n",p->data.account,p->data.password,p->data.money); p=p->next; }}voidDeposit(Link*L,Link*p)//儲戶存款、取款、查詢余額{ intcq; floatmn; while(1) if(p!=NULL) { printf("\n1、存款2、取款3、查詢余額4、退出賬號\n請輸入數(shù)字(1-4)選擇功能:\n"); scanf("%d",&cq); if(cq==1) { printf("請輸入你的存款金額:"); scanf("%f",&mn); p->data.money=p->data.money+mn; printf("存款成功!\n"); } elseif(cq==3) { printf("你賬戶的余額為:%.2f\n",p->data.money); } elseif(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"); } else { printf("取款失敗!\n"); printf("你賬戶上的金額不足!你的賬戶余額為:%.2fRMB\n",p->data.money); printf("請輸入合適的取款金額:"); } } }}voidSearch(Link*L)//鏈表查找,實(shí)現(xiàn)用戶登錄功能(需要輸入賬號和密碼){ Link*p=L->next;//從表中第一個結(jié)點(diǎn)開始 intacc; charpass[6]; printf("請輸入你要登錄的賬號:"); scanf("%d",&acc); printf("請輸入你的密碼:"); scanf("%s",pass); while(p!=NULL)//當(dāng)前表未查完 { if(p->data.account==acc) break; p=p->next; } if(p==NULL) printf("不存在該賬戶!\n"); else { if(strcmp(p->data.password,pass)==0) printf("賬號登錄成功!\n"); else { while(strcmp(p->data.password,pass)!=0) { charpa; printf("密碼錯誤!\n"); printf("是否重新輸入(是,就輸入任意鍵)、(否,從鍵盤上輸入Norn):"); scanf("\n%c",&pa); if(pa=='n'||pa=='N') { system("cls"); return; } printf("\n請重新輸入你的密碼:"); scanf("%s",pass); } } Deposit(L,p); }}voidmenu()//主菜單{ printf("*********歡迎進(jìn)入活期儲蓄賬目管理系統(tǒng)*********\n"); printf("※1.儲戶開戶※\n"); printf("※2.儲戶銷戶

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論