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

下載本文檔

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

文檔簡(jiǎn)介

1、洛 陽(yáng) 理 工 學(xué) 院課 程 設(shè) 計(jì) 報(bào) 告 課程名稱(chēng) 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 設(shè)計(jì)題目 活期儲(chǔ)蓄帳目管理 專(zhuān) 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 課 程 設(shè) 計(jì) 任 務(wù) 書(shū)設(shè)計(jì)題目: 活期儲(chǔ)蓄帳目管理 設(shè)計(jì)內(nèi)容與要求:【問(wèn)題描述】活期儲(chǔ)蓄處理中,儲(chǔ)戶(hù)開(kāi)戶(hù)、銷(xiāo)戶(hù)、存入、支出活動(dòng)頻繁。設(shè)計(jì)一個(gè)活期儲(chǔ)蓄賬目管理系統(tǒng)?!净疽蟆?) 能比較迅速地找到儲(chǔ)戶(hù)的帳戶(hù),以實(shí)現(xiàn)存款、取款記賬;2) 能比較簡(jiǎn)單,迅速地實(shí)現(xiàn)插入和刪除,以實(shí)現(xiàn)開(kāi)戶(hù)和銷(xiāo)戶(hù)的需要。課 程 設(shè) 計(jì) 評(píng) 語(yǔ) 成績(jī): 指導(dǎo)教師:_ 年 月 日目 錄一、問(wèn)題描述與基本要求11.1問(wèn)題描述11.2基本要求1二、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)22.1數(shù)據(jù)結(jié)構(gòu)的選擇22.2單鏈表的

2、定義22.3模塊劃分2三、模塊結(jié)構(gòu)圖4四、程序流程圖4五、調(diào)試分析75.1程序錯(cuò)誤修改及完善的過(guò)程75.2最終程序所有功能運(yùn)行結(jié)果8六、心得體會(huì)9七、源程序清單10一、問(wèn)題描述與基本要求1.1問(wèn)題描述活期儲(chǔ)蓄處理中,儲(chǔ)戶(hù)開(kāi)戶(hù)、銷(xiāo)戶(hù)、存入、支出活動(dòng)頻繁。設(shè)計(jì)一個(gè)活期儲(chǔ)蓄賬目管理系統(tǒng)。1.2基本要求系統(tǒng)設(shè)計(jì)要求:1、能比較迅速地實(shí)現(xiàn)插入,以實(shí)現(xiàn)儲(chǔ)戶(hù)開(kāi)戶(hù)的功能,儲(chǔ)戶(hù)開(kāi)戶(hù)時(shí)需輸入的信息包括儲(chǔ)戶(hù)姓名,密碼。2、能比較迅速地通過(guò)儲(chǔ)戶(hù)的賬戶(hù)序號(hào)和密碼找到儲(chǔ)戶(hù)的賬戶(hù),并刪除該賬戶(hù),以實(shí)現(xiàn)銷(xiāo)戶(hù)的功能。3、能比較迅速地通過(guò)儲(chǔ)戶(hù)的賬戶(hù)序號(hào)和密碼找到儲(chǔ)戶(hù)的賬戶(hù)(密碼不對(duì)時(shí),可選擇是否重新輸入密碼)實(shí)現(xiàn)賬戶(hù)登錄的功能。

3、登錄成功后,再通過(guò)修改鏈表結(jié)點(diǎn)數(shù)據(jù)域中的對(duì)應(yīng)元素,以實(shí)現(xiàn)存款、取款、顯示余額等功能,若取款時(shí)賬戶(hù)余額不足,輸出提示信息“取款失敗!你賬戶(hù)上的金額不足!”,并顯示賬戶(hù)當(dāng)前余額,并且提示重新輸入合適的取款金額。4、查找活期儲(chǔ)蓄帳目管理系統(tǒng)當(dāng)前存在的儲(chǔ)戶(hù),當(dāng)輸出活期儲(chǔ)蓄帳目管理系統(tǒng)沒(méi)有賬戶(hù)時(shí),輸出提示信息“活期儲(chǔ)蓄帳目管理系統(tǒng)沒(méi)有賬戶(hù)”,當(dāng)有賬戶(hù)時(shí),輸出所有賬戶(hù)的相關(guān)信息,包括儲(chǔ)戶(hù)姓名,帳號(hào),密碼,賬戶(hù)余額。二、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)2.1數(shù)據(jù)結(jié)構(gòu)的選擇課程設(shè)計(jì)題目的要求是,要較簡(jiǎn)單迅速地實(shí)現(xiàn)開(kāi)戶(hù)、銷(xiāo)戶(hù)、存款、取款、輸出用戶(hù)信息的功能,于是我很自然地想到了可以用單鏈表的結(jié)構(gòu),通過(guò)編寫(xiě)相應(yīng)功能函數(shù)來(lái)實(shí)現(xiàn)建立新

4、結(jié)點(diǎn)、刪除結(jié)點(diǎn)、修改結(jié)點(diǎn)中數(shù)據(jù)域的內(nèi)容、輸出結(jié)點(diǎn)數(shù)據(jù)域中的內(nèi)容等功能,即可滿(mǎn)足課程設(shè)計(jì)題目的要求。2.2單鏈表的定義先定義單鏈表結(jié)點(diǎn)的數(shù)據(jù)域,數(shù)據(jù)域包括儲(chǔ)戶(hù)姓名、賬戶(hù)序號(hào)、賬戶(hù)密碼、賬戶(hù)金額等儲(chǔ)戶(hù)信息,然后再定義鏈表結(jié)點(diǎn),鏈表結(jié)點(diǎn)包括結(jié)點(diǎn)數(shù)據(jù)域和結(jié)點(diǎn)鏈域,最后再定義指向鏈表結(jié)點(diǎn)的指針。 數(shù)據(jù)結(jié)構(gòu)類(lèi)型定義:typedef struct ListData /定義結(jié)點(diǎn)數(shù)據(jù)域 char name3; /儲(chǔ)戶(hù)姓名int account; /賬戶(hù)賬號(hào)char password5; /賬戶(hù)密碼int money; /賬戶(hù)金額ListData;typedef struct node /定義鏈表結(jié)點(diǎn)ListDa

5、ta data; /結(jié)點(diǎn)數(shù)據(jù)域struct node *next; /結(jié)點(diǎn)鏈域ListNode;2.3模塊劃分(1)建立空鏈表函數(shù):void InitList (LinkList *L)(2)插入鏈表結(jié)點(diǎn),實(shí)現(xiàn)開(kāi)戶(hù)功能函數(shù):void InsertList (LinkList *L)(3)刪除鏈表結(jié)點(diǎn),實(shí)現(xiàn)銷(xiāo)戶(hù)功能函數(shù):void DeleteList (LinkList *L)(4)儲(chǔ)戶(hù)存款、取款、顯示余額函數(shù):void Deposit (LinkList *L,LinkList *p)(5)鏈表查找,實(shí)現(xiàn)用戶(hù)登錄功能函數(shù):void Search (LinkList *L)(6)輸出鏈表函數(shù):v

6、oid PrintList (LinkList *L)(7)主菜單函數(shù):void menu()(8)選擇函數(shù):void choice()(9)主函數(shù):void main()三、模塊結(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程序錯(cuò)誤修改及完善的過(guò)程1、當(dāng)看到這個(gè)課程設(shè)計(jì)題目時(shí),我覺(jué)得還算比較簡(jiǎn)單,因?yàn)槲抑皵?shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)就做過(guò)單鏈表的插入、刪

7、除、查找、輸出,而這次活期儲(chǔ)蓄帳目管理系統(tǒng)要求的開(kāi)戶(hù)、銷(xiāo)戶(hù)、存款、取款、輸出儲(chǔ)戶(hù)信息等功能,即可用單鏈表的相關(guān)功能函數(shù)來(lái)實(shí)現(xiàn),于是我修改了之前寫(xiě)過(guò)的單鏈表的一些函數(shù),以滿(mǎn)足這次題目的要求,但在實(shí)驗(yàn)過(guò)程中仍出現(xiàn)了一些錯(cuò)誤。最終經(jīng)過(guò)我的仔細(xì)檢查和修改,最終編寫(xiě)出了符合要求的程序,還增加了一些功能。2、我編寫(xiě)完程序后,覺(jué)得程序太過(guò)簡(jiǎn)單,又想到題目是活期儲(chǔ)蓄帳目管理系統(tǒng),那賬戶(hù)應(yīng)該是有密碼保證安全性的,于是我又在單鏈表結(jié)點(diǎn)的數(shù)據(jù)域中加入了一個(gè)新的元素password5,并且還修改了后面相關(guān)函數(shù)的定義,確保在銷(xiāo)戶(hù)時(shí),必須賬戶(hù)序號(hào)和密碼相對(duì)應(yīng)時(shí)才能銷(xiāo)戶(hù)成功,在存款、取款時(shí)也只有當(dāng)賬戶(hù)序號(hào)和密碼相對(duì)應(yīng)時(shí)才能

8、登錄成功,選擇存款、取款或顯示余額等功能。因此,函數(shù)定義中除了密碼正確時(shí)的相關(guān)操作,還應(yīng)有密碼錯(cuò)誤時(shí)的提示信息和相關(guān)操作。于是,我在DeleteList函數(shù)和Search函數(shù)中加入了判斷p->data.password與mima是否相等的語(yǔ)句。3、修改了相關(guān)函數(shù)定義后,調(diào)試程序,又出現(xiàn)了如下錯(cuò)誤:error C2065: 'strcmp' : undeclared identifier,我才意識(shí)到我在DeleteList函數(shù)和Search函數(shù)的定義中調(diào)用了strcmp函數(shù),頭文件中應(yīng)包括#include<string.h>,加上后運(yùn)行結(jié)果就對(duì)了。修改后,相關(guān)調(diào)

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

10、詢(xún)余額 (5)顯示出戶(hù)信息六、心得體會(huì)這次課程設(shè)計(jì),我選的題目是活期儲(chǔ)蓄賬目管理,對(duì)于這個(gè)實(shí)驗(yàn)開(kāi)始感覺(jué)不知從哪兒開(kāi)始,后來(lái)經(jīng)過(guò)認(rèn)真分析后,結(jié)合所學(xué)知識(shí)并查閱了許多相關(guān)的課外知識(shí),我們開(kāi)始了一步步解題編程。在編程過(guò)程中,遇到問(wèn)題的時(shí)候就與同學(xué)一起討論解決,從其他人身上學(xué)到了很多,慢慢把不會(huì)不理解的地方給弄明白了。在經(jīng)過(guò)很多次調(diào)試以后,最終沒(méi)有出現(xiàn)錯(cuò)誤了,實(shí)驗(yàn)?zāi)軌驁?zhí)行,將功能實(shí)現(xiàn),最后完成程序編寫(xiě)。雖然不是很完美,但發(fā)現(xiàn)不足之處并在以后的設(shè)計(jì)中注意這些細(xì)節(jié),對(duì)于將來(lái)的實(shí)踐還是很有幫助,我們可以不斷發(fā)現(xiàn)我們的不完美,并想辦法去改進(jìn)這些不完美。這次的綜合性實(shí)驗(yàn)使我了解到,平時(shí)對(duì)知識(shí)的積累相當(dāng)重要,同時(shí)

11、也要注重課上老師的講解,老師在課上的延伸是課本上所沒(méi)有的,這些知識(shí)對(duì)于我們對(duì)程序的編寫(xiě)有很大的作用。同時(shí),編程也要求我們有足夠的耐心,細(xì)細(xì)推敲,越著急可能就越無(wú)法得到我們想要的結(jié)果,遇到不會(huì)的問(wèn)題要多多請(qǐng)教,知識(shí)是在實(shí)踐與向別人請(qǐng)教的過(guò)程中積累的,所以問(wèn)是至關(guān)重要的,只要肯下功夫很多東西都是可以完成的??傊?,編程使我學(xué)到更多,更全面的知識(shí)。通過(guò)這次課程設(shè)計(jì)學(xué)到了很多東西包括以前在課本上沒(méi)有學(xué)到的知識(shí),還使我懂得了理論和時(shí)間結(jié)合是很重要的。讓我進(jìn)一步了解了程序設(shè)計(jì)方法,并且對(duì)這門(mén)課產(chǎn)生了濃厚的興趣。更重要的是培養(yǎng)了自己耐心、細(xì)心、用心的良好品質(zhì)。同時(shí)也非常感謝同學(xué)的幫助及老師的建議與指導(dǎo)。七、源

12、程序清單#include<stdio.h>#include<string.h>#include<stdlib.h>int total=1;/定義的全局變量,用于開(kāi)戶(hù)所需typedef struct ListData /定義結(jié)點(diǎn)數(shù)據(jù)域char name8; /儲(chǔ)戶(hù)姓名int account; /賬戶(hù)賬號(hào)char password6; /賬戶(hù)密碼float money; /賬戶(hù)金額ListData;typedef struct node /定義鏈表結(jié)點(diǎn) ListData data; /結(jié)點(diǎn)數(shù)據(jù)域struct node *next; /結(jié)點(diǎn)鏈域Link;void

13、InitList(Link *L) /建立空鏈表 L=(Link *)malloc(sizeof(Link); /建立頭結(jié)點(diǎn)L->next=NULL; /建立空的單鏈表Lvoid InsertList(Link *L) /鏈表插入結(jié)點(diǎn),實(shí)現(xiàn)開(kāi)戶(hù)功能,需輸入儲(chǔ)戶(hù)姓名和密碼Link *s;s=(Link*)malloc(sizeof(Link); /建立新結(jié)點(diǎn)sprintf("請(qǐng)輸入你要開(kāi)戶(hù)的姓名:"); scanf("%s",s->);s->data.account=1000+total+;printf("你開(kāi)

14、戶(hù)的賬號(hào)為:%dn",s->data.account);printf("請(qǐng)輸入你賬號(hào)的密碼:");scanf("%s",s->data.password);s->data.money=0.00;s->next=NULL;if(L->next=NULL) /頭插法L->next=s; elses->next=L->next; /將s結(jié)點(diǎn)插入表頭L->next=s;printf("開(kāi)戶(hù)成功!n");void DeleteList(Link *L) /刪除鏈表結(jié)點(diǎn),實(shí)現(xiàn)銷(xiāo)戶(hù)功能

15、(需要輸入賬號(hào)和密碼)Link *p=L,*q;char pass6;int s;printf("請(qǐng)輸入你要銷(xiāo)戶(hù)的賬號(hào):");scanf("%d",&s);printf("請(qǐng)輸入該賬號(hào)的密碼:");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,pas

16、s)!=0)printf("密碼錯(cuò)誤!請(qǐng)重新輸入:");scanf("%s",pass);q=p->next;p->next=q->next; /修改指針,刪除結(jié)點(diǎn)qfree(q);printf("賬號(hào)銷(xiāo)戶(hù)成功!n");else printf("你所要銷(xiāo)戶(hù)的的賬號(hào)不存在(或已經(jīng)銷(xiāo)戶(hù))。n");void PrintList(Link *L) /輸出鏈表,實(shí)現(xiàn)儲(chǔ)戶(hù)信息輸出Link *p=L->next;while (p!=NULL)printf("%st",p->dat

17、);printf("%dt%st%.2fn",p->data.account,p->data.password,p->data.money);p=p->next;void Deposit(Link *L,Link *p) /儲(chǔ)戶(hù)存款、取款、查詢(xún)余額int cq;float mn;while(1)if(p!=NULL)printf("n1、存款 2、取款 3、查詢(xún)余額 4、退出賬號(hào)n請(qǐng)輸入數(shù)字(1-4)選擇功能:n");scanf("%d",&cq);if(cq=1)printf("

18、請(qǐng)輸入你的存款金額:");scanf("%f",&mn);p->data.money=p->data.money+mn;printf("存款成功!n");else if(cq=3)printf("你賬戶(hù)的余額為:%.2fn",p->data.money);else if(cq=4)printf("賬號(hào)退出成功!n");return;else printf("請(qǐng)輸入你的取款金額:");scanf("%f",&mn);if(p->

19、data.money-mn)>=0)p->data.money=p->data.money-mn;printf("取款成功!n");elseprintf("取款失敗!n");printf("你賬戶(hù)上的金額不足!你的賬戶(hù)余額為:%.2fRMBn",p->data.money);printf("請(qǐng)輸入合適的取款金額:");void Search(Link *L) /鏈表查找,實(shí)現(xiàn)用戶(hù)登錄功能(需要輸入賬號(hào)和密碼)Link *p=L->next; /從表中第一個(gè)結(jié)點(diǎn)開(kāi)始int acc;cha

20、r pass6;printf("請(qǐng)輸入你要登錄的賬號(hào):");scanf("%d",&acc);printf("請(qǐng)輸入你的密碼:");scanf("%s",pass);while(p!=NULL) /當(dāng)前表未查完if(p->data.account=acc)break;p=p->next;if(p=NULL)printf("不存在該賬戶(hù)!n");elseif(strcmp(p->data.password,pass)=0)printf("賬號(hào)登錄成功!n&quo

21、t;);else while(strcmp(p->data.password,pass)!=0)char pa;printf("密碼錯(cuò)誤!n");printf("是否重新輸入(是,就輸入任意鍵)、(否,從鍵盤(pán)上輸入N or n):");scanf("n%c",&pa);if(pa='n'|pa='N')system ("cls");return;printf("n請(qǐng)重新輸入你的密碼:");scanf("%s",pass);Deposit(L,p);v

溫馨提示

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

評(píng)論

0/150

提交評(píng)論