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

下載本文檔

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

文檔簡介

1、WORD格式數(shù)據(jù)構(gòu)造課程設(shè)計說明書學生*:學 號:學院 :專業(yè) :題目 :成績指導教師專業(yè)資料整理WORD格式年月日專業(yè)資料整理WORD格式1 設(shè)計目的 (小標題黑體五號字)設(shè)計一個計算機管理系統(tǒng)完成圖書管理根本業(yè)務數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)構(gòu)造、具體數(shù)據(jù)自定。2. 設(shè)計內(nèi)容和要求具體功能有: 1) 每種書的登記內(nèi)容包括書號、書名、著作者、出版單位、現(xiàn)存量和庫存量; 2) 對書號建立索引表線性表以提高查找效率;3) 采編入庫:新購一種書,確定書號后,登記到圖書帳目表中,如果表中已有,那么只將庫存量增加;4借閱:如果一種書的現(xiàn)存量大于0,那么借出一本,登記借閱者的書證號和歸還期限,改變現(xiàn)

2、存量;5歸還:注銷對借閱者的登記,改變該書的現(xiàn)存量。3本設(shè)計所采用的數(shù)據(jù)構(gòu)造所用數(shù)據(jù)構(gòu)造: 線性表、查找、排序鏈表:用一組地址任意的存儲單元存放線性表中的數(shù)據(jù)元素。以元素 ( 數(shù)據(jù)元素的映象) +指針 ( 指示后繼元素存儲位置)= 結(jié)點 ( 表示數(shù)據(jù)元素 或 數(shù)據(jù)元素的映象 )以“結(jié)點的序列表示線性表稱作線性鏈表單鏈表單鏈表是一種鏈式存取的構(gòu)造,為找第i個數(shù)據(jù)元素必須先找到第i-1個數(shù)據(jù)元素。因此,查找第i個數(shù)據(jù)元素的根本操作為:移動指針,比較j和 i 。(1)malloc(size)在內(nèi)存的動態(tài)存儲區(qū)申請一個長度為size 字節(jié)的連續(xù)空間。(2)calloc(n, size)在內(nèi)存的動態(tài)存儲

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

4、R(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)/歸還專業(yè)資料整理WORD格式2專業(yè)資料整理WORD格式圖書管理系統(tǒng)主程序模塊圖圖圖圖圖圖圖退書書書書書書書出信信信信信的的圖息息息息息

5、借歸書的的的的的閱還管錄查排修刪模模理入詢序改除塊塊系添模模模模統(tǒng)加塊塊塊塊4.2核心代碼#include <stdio.h>#include <string.h>#include<stdlib.h>#include<malloc.h>typedef struct int num;char name20;char author20;char press20;int count;char price10; ElemType;typedef struct LNode/ 定義單鏈表結(jié)點類型專業(yè)資料整理WORD格式3專業(yè)資料整理WORD格式ElemTyp

6、e data;struct LNode *next; LinkList;void InitList(LinkList *L)/初始化線性表L = (LinkList *) malloc(sizeof(LinkList);/ 創(chuàng)立頭結(jié)點L->next = NULL;int CreateListR(LinkList *L)/尾插法建表int i, n;LinkList *s, *q, *p;p = L;while (p->next != NULL )p = p->next;printf("請輸入需要錄入的圖書信息的個數(shù):n=");scanf("%d&

7、quot;, &n);for (i = 1; i < n + 1; i+) s = (LinkList *) malloc(sizeof(LinkList);printf("書號書名作者名稱存館數(shù)量定價 n");scanf("%d%s%s%s%d%s", &s->data.num, s->, s->data.author, s->data.press, &s->data.count, s->data.price);q = L->next;if (q = NULL )

8、 p->next = s;p = s;p->next = NULL;printf("錄入成功 !n");continue;專業(yè)資料整理WORD格式4專業(yè)資料整理WORD格式while (q != NULL ) if (strcmp(s->, q->) = 0) printf("此圖書已存在 !");printf("請重新輸入: n");scanf("%d%s%s%s%d%s", &p->data.num, p->,p-

9、>data.author, p->data.press, &p->data.count,p->data.price);q = q->next;p->next = s;p = s;p->next = NULL;printf("錄入成功 !n");return 0;void LocateElem(LinkList *L)/查詢LinkList *p = L->next;/p指向第一個數(shù)據(jù)結(jié)點int c;int x = 0;char name110, author110, press110;printf("1按書名

10、查詢: n");printf("2按作者名查詢: n");printf("3按名稱: n");printf("4返回 n");printf("請選擇 1-4 進展操作 :n");專業(yè)資料整理WORD格式5專業(yè)資料整理WORD格式scanf("%d", &c);if (c > 4 | c < 1) printf("您的輸入有誤 !n");scanf("%d", &c);switch (c) case 1:printf(&

11、quot;請輸入圖書書名: n");scanf("%s", name1);while (p != NULL ) if (strcmp(name1, p->) != 0) /查找圖書書名p = p->next;else printf("書號書名作者名稱存館數(shù)量定價 n");printf("%dt%st%st%st%dt%s", p->data.num, p->, p->data.author, p->data.press, p->data.count

12、,p->data.price);printf("n");p = p->next;x+;if (p = NULL && x = 0)printf("對不起 , 不存在此圖書!n");break;case 2:printf("請輸入圖書n");scanf("%s", author1);while (p != NULL ) if (strcmp(author1, p->data.author) != 0) /查找圖書作者專業(yè)資料整理WORD格式6專業(yè)資料整理WORD格式p = p->

13、;next;else printf("書號書名作者名稱存館數(shù)量定價 n");printf("%dt%st%st%st%dt%s", p->data.num, p->,p->data.author, p->data.press, p->data.count,p->data.price);printf("n");p = p->next;x+;if (p = NULL && x = 0)printf("對不起 , 不存在此圖書!n");break

14、;case 3:printf("請輸入圖書的名稱: n");scanf("%s", press1);while (p != NULL ) if (strcmp(press1, p->data.press) != 0) /查找圖書名稱p = p->next;else printf("書號書名作者名稱存館數(shù)量定價 n");printf("%d%s%s%s%d%s",p->data.num, p->, p->data.author,p->data.press, p-&

15、gt;data.count, p->data.price);printf("n");p = p->next;x+;專業(yè)資料整理WORD格式7專業(yè)資料整理WORD格式if (p = NULL && x = 0)printf("對不起!不存在此圖書n");break;case 4:break;int Sort(LinkList *L)/遞增有序排序( 直接插入排序法)LinkList *p = L->next, *q, *r; /p指向第一個數(shù)據(jù)結(jié)點if (p != NULL )/假設(shè)原單鏈表中有一個或以上的數(shù)據(jù)結(jié)點r =

16、p->next;/r保存 *p 結(jié)點直接后繼結(jié)點的指針p->next = NULL;/構(gòu)造只含一個數(shù)據(jù)結(jié)點的有序表p = r;while (p != NULL ) r = p->next;/r保存 *p 結(jié)點的直接后繼結(jié)點的指針q = L;while (q->next != NULL && q->next->data.num < p->data.num)q = q->next;/在有序表中找插入*p 的直接前驅(qū)結(jié)點*q 的位置p->next = q->next; /將 *p 插入到 *q 之后q->next

17、 = p;p = r;/掃描原單鏈表余下的結(jié)點return 0;void Display(LinkList *L) /輸出排序結(jié)果專業(yè)資料整理WORD格式8專業(yè)資料整理WORD格式LinkList *p = L->next;while (p != NULL ) printf("書號 書名作者名稱存館數(shù)量定價 n");printf("%d t %s t %st %st%dt %s", p->data.num,p->, p->data.author, p->data.press, p->data.coun

18、t,p->data.price);printf("n");p = p->next;int ModifyList(LinkList *L)/修改LinkList *p = L;char name110;printf("請輸入要修改的圖書的書名:n");scanf("%s", name1);while (p != NULL ) if (strcmp(name1, p->) = 0) /查找所要修改的書名printf("請輸入修改后的信息!n");printf("書號書名作者

19、名稱存館數(shù)量定價 n");scanf("%d%s%s%s%d%s", &p->data.num, p->, p->data.author,p->data.press, &p->data.count, p->data.price);printf("修改成功 !n");return 0;p = p->next;printf("不存在此圖書n");專業(yè)資料整理WORD格式9專業(yè)資料整理WORD格式return 0;int ListDelete(LinkLi

20、st *L)/刪除LinkList *p = L->next, *q = L;char name110;if (p != NULL ) printf("請輸入要刪除的書名:");scanf("%s", name1);while (p->next != NULL && strcmp(p->, name1) != 0) p = p->next;q = q->next;if (p->next != NULL )/如果 p 此時不是最后一個節(jié)點,說明此時已經(jīng)找到書q->next = p-

21、>next;printf("刪除成功! n");return 0;if (p->next = NULL && strcmp(name1, p->) != 0) /如果 p 此時為最后一個結(jié)點并且沒有找到與之相符的書名printf(" 你輸入的書名不存在,請核實后重新輸入 !n"); else q->next = NULL;printf("刪除成功! n");return 0;專業(yè)資料整理WORD格式10專業(yè)資料整理WORD格式void Borrow(LinkList *L)/借

22、閱LinkList *p = L->next;char name110;printf("請輸入要借閱的圖書的書名:n");scanf("%s", name1);while (p->next != NULL && strcmp(name1, p->) != 0)p = p->next;if (p->next = NULL && strcmp(name1, p->) != 0)printf("此圖書不存在 !n");else if (p

23、->data.count < 1)printf("此書已借完 !n");else if (strcmp(name1, p->) = 0) printf("借書成功 !n");p->data.count-;void Return(LinkList *L)/歸還LinkList *p = L->next;char name110;printf("輸入歸還書的書名: n");scanf("%s", name1);while (p->next != NULL &

24、& strcmp(name1, p->) != 0)p = p->next;if (p->next = NULL && strcmp(name1, p->) != 0)printf("錯誤 ! 此圖書不存在 !n");else if (strcmp(name1, p->) = 0) printf("該書歸還成功 !n");專業(yè)資料整理WORD格式11專業(yè)資料整理WORD格式p->data.count+;void menu() /菜單函數(shù)printf("- n");printf("歡迎光臨圖書管理系統(tǒng)!n");printf("- n");printf("1.圖書信息錄入添加功能: n");printf("2.圖書信息查詢功能:n");printf("3.圖書信息排序功能:n");pr

溫馨提示

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

評論

0/150

提交評論