數據結構圖書管理系統_第1頁
數據結構圖書管理系統_第2頁
數據結構圖書管理系統_第3頁
數據結構圖書管理系統_第4頁
數據結構圖書管理系統_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

5、書管理系統圖 書 管 理 系 統主 程 序 模 塊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/定義單鏈表結點類型ElemType data;struct LNode next; LinkList;void InitList(LinkList *L)

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

7、 作者 出版社名稱 存館數量 定價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(”請重

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指向第一個數據結點int c;int x = 0;char name110, author110,

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

10、ULL ) if (strcmp(name1, p>) != 0) /查找圖書書名p = pnext;else printf("書號 書名 作者 出版社名稱 存館數量 定價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;對不起,不存在此圖書!n”);break;case 2:printf(”請輸入圖書作者:n");scanf(”s”, author1);while (p != NULL ) if (strcmp(author1, pdata.author) != 0) /查找圖書作者p = pnext;else printf(”書號 書名 作者 出版社名稱 存館數量 定價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(”對不起,不存在此圖書!n");break;case 3:printf("請輸入圖書的出版社名稱: n");scanf(”s”, press1);while (p != NULL ) if (strcmp(press1, pdata。press) != 0) /查找圖書出版社名稱p = pnext;else printf(”書號 書名 作者 出版社名稱 存館數量 定價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(”對不起!不存在此圖書n");break;case 4:break;int Sort(LinkList L) /遞增有序排序(直接插入排序法)LinkList *p = Lnext, q, r; /p指向第一個數據結點if (p != NULL ) /若原單鏈表中有一個或以上的數據結點r = pnext; /r保存p

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

15、排序結果LinkList p = Lnext;while (p != NULL ) printf(”書號 書名 作者 出版社名稱 存館數量 定價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(”請輸入要修改的圖書的書名:n");

16、scanf("s", name1);while (p != NULL ) if (strcmp(name1, p->) = 0) /查找所要修改的書名printf(”請輸入修改后的信息!n");printf("書號 書名 作者 出版社名稱 存館數量 定價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(”請輸入要刪除的書名:”);scanf("s”, name1);while (p>next != NULL strcmp(p>, name1) != 0) p = pnext;q = q->next;if (p>next !=

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

19、10;printf("請輸入要借閱的圖書的書名: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("錯誤!此圖書不存在!n");else if (strcmp(name1, ) = 0) printf(”該書歸還成功!n”);pdata.count+;void menu() /菜單函數printf(”- n");printf(” 歡迎光臨圖書管理系統! n”);printf("- n”);printf("1。圖書信息錄入添加功能:n”);printf(”2。圖書信息查詢功能:n”);printf("

溫馨提示

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

評論

0/150

提交評論