數(shù)據(jù)結(jié)構(gòu)圖書管理系統(tǒng)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)圖書管理系統(tǒng)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)圖書管理系統(tǒng)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)圖書管理系統(tǒng)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)圖書管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù) 據(jù) 結(jié) 構(gòu)課 程 設(shè) 計(jì) 說(shuō) 明 書   學(xué)生姓名:學(xué) 號(hào):學(xué)院:專業(yè):題目:成績(jī)指導(dǎo)教師    年 月 日1 設(shè)計(jì)目的(小標(biāo)題黑體五號(hào)字)設(shè)計(jì)一個(gè)計(jì)算機(jī)管理系統(tǒng)完成圖書管理基本業(yè)務(wù)(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定).2. 設(shè)計(jì)內(nèi)容和要求具體功能有:1)每種書的登記內(nèi)容包括書號(hào)、書名、著作者、出版單位、現(xiàn)存量和庫(kù)存量;2)對(duì)書號(hào)建立索引表(線性表)以提高查找效率;3)采編入庫(kù):新購(gòu)一種書,確定書號(hào)后,登記到圖書帳目表中,如果表中已有,則只將庫(kù)存量增加;4)借閱:如果一種書的現(xiàn)存量大于0,則借出一本,

2、登記借閱者的書證號(hào)和歸還期限,改變現(xiàn)存量;5)歸還:注銷對(duì)借閱者的登記,改變?cè)摃默F(xiàn)存量。3本設(shè)計(jì)所采用的數(shù)據(jù)結(jié)構(gòu)所用數(shù)據(jù)結(jié)構(gòu):線性表、查找、排序鏈表:用一組地址任意的存儲(chǔ)單元存放線性表中的數(shù)據(jù)元素。以元素(數(shù)據(jù)元素的映象) + 指針(指示后繼元素存儲(chǔ)位置)= 結(jié)點(diǎn)(表示數(shù)據(jù)元素 或 數(shù)據(jù)元素的映象)以“結(jié)點(diǎn)的序列”表示線性表稱作線性鏈表(單鏈表)單鏈表是一種鏈?zhǔn)酱嫒〉慕Y(jié)構(gòu),為找第 i 個(gè)數(shù)據(jù)元素必須先找到第 i-1 個(gè)數(shù)據(jù)元素.因此,查找第 i 個(gè)數(shù)據(jù)元素的基本操作為:移動(dòng)指針,比較 j 和 i。(1)malloc(size)在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)申請(qǐng)一個(gè)長(zhǎng)度為size字節(jié)的連續(xù)空間。(2)ca

3、lloc(n,size)在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)申請(qǐng)n個(gè)長(zhǎng)度為size字節(jié)的連續(xù)空間,函數(shù)返回值為分配空間的首地址.若此函數(shù)未被成功執(zhí)行,函數(shù)返回值為0。(3)free(p)釋放由指針p所指向的存儲(chǔ)單元,而存儲(chǔ)單元的大小是最近一次調(diào)用malloc()或calloc()函數(shù)時(shí)所申請(qǐng)的存儲(chǔ)空間。運(yùn)用了單鏈表的插入、刪除、排序、修改等一些操作!4 功能模塊詳細(xì)設(shè)計(jì)4。1 詳細(xì)設(shè)計(jì)思想(1) 基本思想:(2) 圖書信息錄入、圖書信息的查詢、圖書信息的排序、圖書信息的修改、圖書信息的刪除、圖書的借閱、圖書的歸還、退出圖書管理系統(tǒng)。(3) 程序中的主要函數(shù)有:void main() /主函數(shù)int Create

4、ListR(LinkList L) /尾插法建表void LocateElem(LinkList L) /查詢 int Sort(LinkList *L) /遞增有序排序(直接插入排序法)void Display(LinkList L) /輸出排序結(jié)果ModifyList(LinkList L) /修改int ListDelete(LinkList L) /刪除 void Borrow(LinkList L) /借閱void Return(LinkList *L) /歸還圖書信息的錄入添加圖書信息的查詢模塊圖書信息的排序模塊圖書信息的修改模塊圖書信息的刪除模塊圖書的借閱模塊圖書的歸還模塊退出圖

5、書管理系統(tǒng)圖 書 管 理 系 統(tǒng)主 程 序 模 塊4。2 核心代碼include stdio。h>#include string。h>includestdlib.hincludemalloc。h>typedef struct int num;char name20;char author20;char press20;int count;char price10; ElemType;typedef struct LNode/定義單鏈表結(jié)點(diǎn)類型ElemType data;struct LNode next; LinkList;void InitList(LinkList *L)

6、 /初始化線性表L = (LinkList ) malloc(sizeof(LinkList); /創(chuàng)建頭結(jié)點(diǎn)Lnext = NULL;int CreateListR(LinkList L) /尾插法建表int i, n;LinkList s, q, p;p = L;while (p-next != NULL )p = p-next;printf(”請(qǐng)輸入需要錄入的圖書信息的個(gè)數(shù):n=”);scanf("%d", n);for (i = 1; i n + 1; i+) s = (LinkList ) malloc(sizeof(LinkList);printf(”書號(hào) 書名

7、 作者 出版社名稱 存館數(shù)量 定價(jià)n”);scanf(”dss%sds”, sdata。num, , sdata.author,s-data。press, sdata。count, sdata.price);q = L>next;if (q = NULL ) p>next = s;p = s;p-next = NULL;printf(”錄入成功!n");continue;while (q != NULL ) if (strcmp(s>, ) = 0) printf(”此圖書已存在!”);printf(”請(qǐng)重

8、新輸入:n");scanf(”%ds%ss%d%s”, &pdata。num, ,p->data。author, p->data.press, &p-data.count,p-data.price);q = qnext;p-next = s;p = s;pnext = NULL;printf(”錄入成功!n”);return 0;void LocateElem(LinkList *L) /查詢LinkList p = Lnext; /p指向第一個(gè)數(shù)據(jù)結(jié)點(diǎn)int c;int x = 0;char name110, author110,

9、press110;printf(" 1 按書名查詢:n");printf(" 2 按作者名查詢:n”);printf(" 3 按出版社名稱:n");printf(" 4 返回n”);printf(" 請(qǐng)選擇14進(jìn)行操作:n”);scanf(”d”, &c);if (c 4 c < 1) printf(”您的輸入有誤!n");scanf(”d”, &c);switch (c) case 1:printf(”請(qǐng)輸入圖書書名: n”);scanf(”%s”, name1);while (p != N

10、ULL ) if (strcmp(name1, p>) != 0) /查找圖書書名p = pnext;else printf("書號(hào) 書名 作者 出版社名稱 存館數(shù)量 定價(jià)n");printf(”dtstst%st%dt%s", p-data.num, ,pdata。author, p>data。press, p->data。count,p>data。price);printf("n");p = p->next;x+;if (p = NULL x = 0)printf(&quo

11、t;對(duì)不起,不存在此圖書!n”);break;case 2:printf(”請(qǐng)輸入圖書作者:n");scanf(”s”, author1);while (p != NULL ) if (strcmp(author1, pdata.author) != 0) /查找圖書作者p = pnext;else printf(”書號(hào) 書名 作者 出版社名稱 存館數(shù)量 定價(jià)n”);printf(”%dtstst%st%dts”, p-data.num, ,pdata。author, pdata。press, pdata。count,pdata。price);printf(&qu

12、ot;n");p = p-next;x+;if (p = NULL && x = 0)printf(”對(duì)不起,不存在此圖書!n");break;case 3:printf("請(qǐng)輸入圖書的出版社名稱: n");scanf(”s”, press1);while (p != NULL ) if (strcmp(press1, pdata。press) != 0) /查找圖書出版社名稱p = pnext;else printf(”書號(hào) 書名 作者 出版社名稱 存館數(shù)量 定價(jià)n”);printf(”d %s s %s d s”,p-data。num

13、, p->, pdata。author,pdata.press, p>data.count, pdata.price);printf(”n”);p = p>next;x+;if (p = NULL & x = 0)printf(”對(duì)不起!不存在此圖書n");break;case 4:break;int Sort(LinkList L) /遞增有序排序(直接插入排序法)LinkList *p = Lnext, q, r; /p指向第一個(gè)數(shù)據(jù)結(jié)點(diǎn)if (p != NULL ) /若原單鏈表中有一個(gè)或以上的數(shù)據(jù)結(jié)點(diǎn)r = pnext; /r保存p

14、結(jié)點(diǎn)直接后繼結(jié)點(diǎn)的指針p-next = NULL; /構(gòu)造只含一個(gè)數(shù)據(jù)結(jié)點(diǎn)的有序表p = r;while (p != NULL ) r = p>next; /r保存p結(jié)點(diǎn)的直接后繼結(jié)點(diǎn)的指針q = L;while (q>next != NULL & qnextdata。num < p>data。num)q = q>next; /在有序表中找插入p的直接前驅(qū)結(jié)點(diǎn)q的位置p>next = q-next; /將*p插入到q之后qnext = p;p = r; /掃描原單鏈表余下的結(jié)點(diǎn)return 0;void Display(LinkList L) /輸出

15、排序結(jié)果LinkList p = Lnext;while (p != NULL ) printf(”書號(hào) 書名 作者 出版社名稱 存館數(shù)量 定價(jià)n”);printf("d t %s t st st%dt s”, pdata。num,, p>data.author, pdata.press, pdata。count,p-data。price);printf(”n”);p = pnext;int ModifyList(LinkList L) /修改LinkList p = L;char name110;printf(”請(qǐng)輸入要修改的圖書的書名:n");

16、scanf("s", name1);while (p != NULL ) if (strcmp(name1, p->) = 0) /查找所要修改的書名printf(”請(qǐng)輸入修改后的信息!n");printf("書號(hào) 書名 作者 出版社名稱 存館數(shù)量 定價(jià)n");scanf("dsss%d%s”, pdata。num, p>, p->data。author,p-data.press, &p>data.count, p->data.price);printf(”修改

17、成功!n”);return 0;p = p>next;printf(”不存在此圖書n");return 0;int ListDelete(LinkList *L) /刪除LinkList p = L>next, *q = L;char name110;if (p != NULL ) printf(”請(qǐng)輸入要?jiǎng)h除的書名:”);scanf("s”, name1);while (p>next != NULL strcmp(p>, name1) != 0) p = pnext;q = q->next;if (p>next !=

18、NULL ) /如果p此時(shí)不是最后一個(gè)節(jié)點(diǎn),說(shuō)明此時(shí)已經(jīng)找到書qnext = pnext;printf("刪除成功!n");return 0;if (pnext = NULL & strcmp(name1, ) != 0) /如果p此時(shí)為最后一個(gè)結(jié)點(diǎn)并且沒(méi)有找到與之相符的書名printf(”你輸入的書名不存在,請(qǐng)核實(shí)后重新輸入!n"); else qnext = NULL;printf(”刪除成功!n”);return 0;void Borrow(LinkList L) /借閱LinkList p = L-next;char name1

19、10;printf("請(qǐng)輸入要借閱的圖書的書名:n”);scanf(”s”, name1);while (p-next != NULL & strcmp(name1, ) != 0)p = p-next;if (p>next = NULL strcmp(name1, ) != 0)printf(”此圖書不存在!n”);else if (p>data.count 1)printf("此書已借完!n");else if (strcmp(name1, ) = 0) printf(”借書成功!

20、n”);p-data.count-;void Return(LinkList L) /歸還LinkList p = Lnext;char name110;printf(”輸入歸還書的書名: n”);scanf(”s”, name1);while (p>next != NULL strcmp(name1, ) != 0)p = pnext;if (pnext = NULL & strcmp(name1, ) != 0)printf("錯(cuò)誤!此圖書不存在!n");else if (strcmp(name1, ) = 0) printf(”該書歸還成功!n”);pdata.count+;void menu() /菜單函數(shù)printf(”- n");printf(” 歡迎光臨圖書管理系統(tǒng)! n”);printf("- n”);printf("1。圖書信息錄入添加功能:n”);printf(”2。圖書信息查詢功能:n”);printf("

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論

0/150

提交評(píng)論