數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告模板_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告模板_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告模板_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告模板_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告模板_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Dataorganizationcurriculmproject數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)題目:圖書管理系統(tǒng)專業(yè)班級(jí):09信管5班學(xué)生學(xué)號(hào):學(xué)生姓名:指導(dǎo)老師:葉妙老師完成時(shí)間:2011/5/20目錄問題描述……………….1頁(yè)基本要求………………..1頁(yè)程序設(shè)計(jì)思想………1---2頁(yè)軟件模塊結(jié)構(gòu)圖………..2頁(yè)程序流程圖……………..3頁(yè)源程序………………4---7頁(yè)調(diào)試分析……………8---9頁(yè)測(cè)試數(shù)據(jù)…………..9---10頁(yè)心得體會(huì)…………11---12頁(yè)一.問題描述設(shè)計(jì)一個(gè)計(jì)算機(jī)管理系統(tǒng)完成圖書管理基本業(yè)務(wù)。

二.基本要求1)每種書的登記內(nèi)容包括書號(hào)、書名、著作者、現(xiàn)存量和庫(kù)存量;2)對(duì)書號(hào)建立索引表(線性表)以提高查找效率;3)系統(tǒng)主要功能如下:*采編入庫(kù):新購(gòu)一種書,確定書號(hào)后,登記到圖書帳目表中,如果表中已有,則只將庫(kù)存量增加;

*借閱:如果一種書的現(xiàn)存量大于0,則借出一本,登記借閱者的書證號(hào)和歸還期限,改變現(xiàn)存量;

*歸還:注銷對(duì)借閱者的登記,改變?cè)摃默F(xiàn)存量。三.程序設(shè)計(jì)思想1.分析題目。每天吃當(dāng)前桃子數(shù)目的一半再加一個(gè),所以桃子數(shù)目肯定為偶數(shù)。用我們所熟悉的函數(shù)來表示,即:f(x+1)=f(x)/2-1;其中x代表第多少天。:猴子摘桃子的那天也就是第一天就吃了所摘桃子的一半加一個(gè),所以桃子總數(shù)應(yīng)該為第一天加1再乘以2,等效為f(0)。2.實(shí)現(xiàn)方法。最容易想到的也是最簡(jiǎn)單的就是運(yùn)用函數(shù)的遞歸。給出了邊界條件與遞歸函數(shù),直接調(diào)用就可以了。用數(shù)組實(shí)現(xiàn),先定義一個(gè)一維數(shù)組,然后結(jié)合循環(huán),也可以求解。如果用鏈表的話,相對(duì)來說要復(fù)雜點(diǎn)。先要構(gòu)建一個(gè)動(dòng)態(tài)鏈表,將頭指針賦值給p,p賦值給q,使p,q同時(shí)指向鏈表頭,將第十天的桃子數(shù)放在鏈表第一個(gè)數(shù)據(jù)域中,然后移動(dòng)p,q使后一個(gè)數(shù)據(jù)域中存放的是前一個(gè)加1的2倍,即倒過來存放數(shù)據(jù)。四.軟件模塊結(jié)構(gòu)圖書庫(kù)管理系統(tǒng)書庫(kù)管理系統(tǒng)采編入庫(kù)借閱歸還五.程序流程圖六.源程序#include"stdio.h"#include<stdlib.h>#include<conio.h>typedefstructbook{ intnum;/*書號(hào)*/ charbookname[20];/*書名*/ charwriter[20];/*作者*/ intxchun;/*現(xiàn)存量*/ intkchun;/*庫(kù)存量*/ structbook*next;}Book;typedefstructborrow{ intnumber;/*證件號(hào)*/ inttime;/*期限*/ intnum;/*借的書號(hào)*/ structborrow*next;}Borrow;/*======本程序所輸入的書名與借書人證件號(hào)都為整形========*/Borrow*head1;Book*head2;Book*input()/*圖書信息輸入函數(shù),使用尾插法建立圖書鏈表*/{ Book*s,*h,*r; intt,tag; printf("輸入結(jié)束標(biāo)志:"); scanf("%d",&tag); h=(Book*)malloc(sizeof(Book)); r=h; printf("繼續(xù)輸入請(qǐng)按任意鍵,若想結(jié)束請(qǐng)輸入結(jié)束標(biāo)志:"); scanf("%d",&t); while(t!=tag) { s=(Book*)malloc(sizeof(Book)); printf("\n請(qǐng)輸入書號(hào):"); scanf("%d",&s->num); printf("\n請(qǐng)輸入書名:"); scanf("%s",s->bookname); printf("\n請(qǐng)輸入作者:"); scanf("%s",s->writer); printf("\n請(qǐng)輸入圖書現(xiàn)存量:"); scanf("%d",&s->xchun); printf("\n請(qǐng)輸入圖書庫(kù)存量:"); scanf("%d",&s->kchun); r->next=s; r=s; printf("繼續(xù)輸入請(qǐng)按任意鍵,若想結(jié)束請(qǐng)輸入結(jié)束標(biāo)志:"); scanf("%d",&t); } r->next=NULL; returnh;}chaibian(Book*h)/*采編入庫(kù)函數(shù)*/{ inta; Book*s,*p,*r; s=(Book*)malloc(sizeof(Book)); printf("\n輸入新書的書號(hào):"); scanf("%d",&a); p=h; while(p->num!=a&&(p!=NULL)) { r=p; p=p->next; } if(p==NULL) { printf("\n這種書是一種新書,請(qǐng)輸入這種書的其他信息:"); s->num=a; printf("\n請(qǐng)輸入書名:"); scanf("%s",s->bookname); printf("\n請(qǐng)輸入作者:"); scanf("%s",s->writer); printf("\n請(qǐng)輸入圖書現(xiàn)存量:"); scanf("%d",&s->xchun); printf("\n請(qǐng)輸入圖書庫(kù)存量:"); scanf("%d",&s->kchun); r->next=s; s->next=NULL; } else { printf("\n這種書已存在,現(xiàn)更新這種書的現(xiàn)有量與庫(kù)存量......\n更新信息完成!"); p->xchun++; p->kchun++; } getch();}borrow(Borrow*h,Book*p)/*借書函數(shù)*/{ intx; Book*t; Borrow*m,*g; a:printf("\n請(qǐng)輸入要借的書的書號(hào):");/*設(shè)置返回標(biāo)志a*/ scanf("%d",&x); t=p; g=h; while(t->num!=x&&(t!=NULL)) { t=t->next; } if(t==NULL) { printf("\n沒有這種書,請(qǐng)重新確認(rèn)書號(hào)."); gotoa; } else { while(g->next!=NULL) {g=g->next;} if(t->xchun>=1) { m=(Borrow*)malloc(sizeof(Borrow)); printf("\n請(qǐng)輸入借書人的證件號(hào):"); scanf("%d",&m->number); printf("\n請(qǐng)輸入歸還期限(天數(shù)):"); scanf("%d",&m->time); m->num=t->num; g->next=m; m->next=NULL; t->xchun--; printf("已完成借書事項(xiàng)!"); } elseprintf("此書已被借完,請(qǐng)按任務(wù)鍵繼續(xù)。"); } getch();}returned(Borrow*h,Book*p)/*還書函數(shù)*/{ intx,y; Book*t; Borrow*m,*n;/*設(shè)置兩個(gè)Borrow指針變量m、n,用以刪除結(jié)構(gòu)體Borrow中,已還完書人的結(jié)點(diǎn)*/ m=h; t=p; n=m->next; printf("\n請(qǐng)輸入還書人的證件號(hào):"); scanf("%d",&x); printf("請(qǐng)輸入要還的書的書號(hào):"); scanf("%d",&y); while(n->number!=x&&n->num!=y&&n!=NULL) { m=m->next; n=n->next; } if(n!=NULL) { x=n->num; while(t->num!=y&&t!=NULL) {t=t->next;} if(t!=NULL) { t->xchun++; } m->next=n->next; printf("\n歸還成功!"); } elseprintf("沒有此人借書記錄!請(qǐng)按任意鍵繼續(xù)。"); getch();}scan(Book*h)/*瀏覽圖書總體信息函數(shù)*/{ Book*t; t=h; printf("書號(hào)\t書名\t作者\(yùn)t現(xiàn)存量\t庫(kù)存量"); while(t!=NULL) { printf("\n%d\t%s\t%s\t%d\t%d",t->num,t->bookname,t->writer,t->xchun,t->kchun); t=t->next; } getch();}voidwelcome(){ intx,y;gotoxy(x,y++);printf("☆★☆★☆★☆****************(^o^)***************☆★☆★☆★☆\n");gotoxy(x,y++);printf("【書*庫(kù)*管*理*系*統(tǒng)】\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("@@@@@@@@@\n");gotoxy(x,y++);printf("@@@@@@\n");gotoxy(x,y++);printf("@@@@@\n");gotoxy(x,y++);printf("@歡@迎使用@\n");gotoxy(x,y++);printf("@@@\n");gotoxy(x,y++);printf("@@@@\n");gotoxy(x,y++);printf("@@@@\n");gotoxy(x,y++);printf("@@\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("第12組\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("【學(xué)院】:管理學(xué)院\n");gotoxy(x,y++);printf("【專業(yè)班級(jí)】:09信息管理與信息系統(tǒng)5班\n");gotoxy(x,y++);printf("【組員】:林森旭、李宏波、林營(yíng)、陳潔華\n");gotoxy(x,y++);printf("王廣浩、劉振琪\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("\n");gotoxy(x,y++);printf("〓〓〓〓〓〓〓〓O(∩_∩)O〓〓O(∩_∩)O〓〓〓〓〓〓〓〓〓\n");}voidmenu(){ inti; intx=20,y=5; gotoxy(10,3); for(i=0;i<13;i++) { printf("⊙o⊙"); } gotoxy(x,y++);printf("1.輸入基本的圖書信息"); gotoxy(x,y++);printf("2.新采購(gòu)一種書"); gotoxy(x,y++);printf("3.借書"); gotoxy(x,y++);printf("4.還書"); gotoxy(x,y++);printf("5.瀏覽圖書總體情況"); gotoxy(x,y++);printf("0.退出"); gotoxy(10,23); for(i=0;i<13;i++) { printf("⊙o⊙"); } gotoxy(x,17);printf("pleaseselectthemenu:");}voidmain(){ inta; head1=NULL; head2=NULL;clrscr(); welcome(); getch(); while(1) { do { clrscr(); menu(); scanf("%d",&a); system("cls"); }while(a<0||a>5); switch(a) { case1:head2=input();break; case2:chaibian(head2);break; case3:borrow(head1,head2);break; case4:returned(head1,head2);break; case5:scan(head2);break; case0:exit(0); } getchar(); }}七.調(diào)試分析分塊測(cè)試1.采編入庫(kù):沒有出錯(cuò),可以得到正確結(jié)果。2.借閱運(yùn)行出錯(cuò):原因在于輸入變量時(shí)忘了加&;if判斷語句中用的應(yīng)該是==卻用成了賦值語句。改正后得到正確結(jié)果。3.用鏈表實(shí)現(xiàn)運(yùn)行出錯(cuò),出錯(cuò)原因在于:第一個(gè)大括號(hào)后面忘了加“;”;沒有在main()主函數(shù)中聲明taoshu()函數(shù)的話,其定義就必須放在main()主函數(shù)前面,修改后,程序能正確運(yùn)行。八.測(cè)試數(shù)據(jù)程序運(yùn)行界面程序運(yùn)行的歡迎界面和初始界面2、選擇1運(yùn)行界面:3.選擇2運(yùn)行界面4.選擇3運(yùn)行界面選擇4運(yùn)行界面6.選擇5運(yùn)行界面:九.心得體會(huì)終于挨到了寫心得和體會(huì)的時(shí)候了,也就意味著這個(gè)課程設(shè)計(jì)接近了尾聲,的確令人興奮,看著自己的勞動(dòng)成果,內(nèi)心真的很激

溫馨提示

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

最新文檔

評(píng)論

提交評(píng)論