版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 課 程 設 計 報 告</p><p> 課程設計名稱:數(shù)據(jù)結構 </p><p> 系 : </p><p> 學生姓名: </p><p> 班 級: </p><p> 學 號:
2、 </p><p> 成 績: </p><p> 指導教師: </p><p> 開課時間: 2011-2012 學年 1 學期</p><p><b> 一.設計題目</b></p><p><b> 圖書管
3、理系統(tǒng)</b></p><p><b> 二.主要內容</b></p><p> 圖書管理系統(tǒng)的設計主要是實現(xiàn)對圖書的管理和相關操作?;竟δ苋缦拢?lt;/p><p> ?。?)圖書信息錄入、添加功能:包括書號、書名、作者、出版社名稱、存館數(shù)量、定價等。</p><p> ?。?)圖書信息查詢功能:可以按書
4、名, 按作者名, 按出版單位等進行查詢。</p><p> ?。?)排序:按書號、書名等按升序進行排序。</p><p> ?。?)圖書的修改、刪除功能:按書號或書名進行圖書的修改和刪除。</p><p> ?。?)圖書借閱、歸還功能:如果一種書的現(xiàn)存量大于0,可以借出,借出相應數(shù)量后改變現(xiàn)存量;歸還時改變該書的現(xiàn)存量。</p><p>
5、三.課題設計的基本思想,原理和算法描述</p><p><b> ?。ㄒ唬┗舅枷耄?lt;/b></p><p> 所用數(shù)據(jù)結構:線性表、查找、排序</p><p> 設計方案圖形表示如下面圖形所示:</p><p><b> ?。ǘ┰恚?lt;/b></p><p> 圖書
6、管理系統(tǒng)要求實現(xiàn)許多的功能。將軟件的設計任務分成許多小的功能模塊進行設計。本程序經過分析分成以下幾個子任務:圖書信息錄入、圖書信息的查詢、圖書信息的排序、圖書信息的修改、圖書信息的刪除、圖書的借閱、圖書的歸還、退出圖書管理系統(tǒng)。</p><p> ?。ㄈ┚唧w函數(shù)的算法描述:</p><p><b> 1.主函數(shù)</b></p><p>
7、void main() //主函數(shù)</p><p><b> {</b></p><p><b> int s;</b></p><p> LinkList *L;</p><p> L=(LinkList *)malloc(sizeof(LinkList)); </p&
8、gt;<p> InitList(*&L);</p><p> w:while(s!=0)</p><p><b> {</b></p><p> printf("------------------------------------------------------------------- \n
9、");</p><p> printf(" 歡迎光臨圖書管理系統(tǒng)! \n");</p><p> printf("------------------------------------------------------------------- \n
10、");</p><p> printf("1.圖書信息錄入添加功能:\n");</p><p> printf("2.圖書信息查詢功能:\n"); </p><p> printf("3.圖書信息排序功能:\n");</p><p> printf("4.
11、圖書的修改功能:\n");</p><p> printf("5.圖書的刪除功能:\n");</p><p> printf("6.圖書借閱功能:\n");</p><p> printf("7.圖書歸還功能:\n");</p><p> printf("
12、0.退出系統(tǒng):\n");</p><p> printf("請選擇你需要的操作:\n");</p><p> scanf("%d",&s);</p><p><b> switch(s)</b></p><p><b> {</b>&
13、lt;/p><p> case 1: CreateListR(L);break;</p><p> case 2: LocateElem(L);break;</p><p> case 3: Sort(L);Display(L);break;</p><p> case 4: ModifyList(L);break;</p>
14、<p> case 5:ListDelete(L); break;</p><p> case 6:Borrow(L); break;</p><p> case 7:Return(L); break;</p><p> case 0:printf("謝謝使用\n");return 0;break;goto w;}<
15、/p><p><b> }</b></p><p><b> }</b></p><p> 2.圖書信息錄入添加功能:</p><p> int CreateListR(LinkList *&L) //尾插法建表</p><p> { int
16、i,n; </p><p> LinkList *s,*q,*p;</p><p><b> p=L;</b></p><p> while(p->next!=NULL)</p><p> p=p->next;</p><p> printf("請輸入需要錄入的圖書
17、信息的個數(shù):n=");</p><p> scanf("%d",&n);</p><p> for(i=1;i<n+1;i++)</p><p><b> { </b></p><p> s=(LinkList *)malloc(sizeof(LinkList));&l
18、t;/p><p> printf("書號 書名 作者 出版社名稱 存館數(shù)量 定價\n");</p><p> scanf("%d%s%s%s%d%s",&s->data.num,s->data.name,s->data.author,s->data.press,&s->data.coun
19、t,s->data.price);</p><p> q=L->next;</p><p> if(q==NULL)</p><p><b> {</b></p><p> p->next=s; </p><p><b> p=s;</b><
20、/p><p> p->next=NULL;</p><p> printf("錄入成功!\n");</p><p><b> continue;</b></p><p><b> }</b></p><p> while(q!=NULL)<
21、;/p><p><b> {</b></p><p> if(strcmp(s->data.name,q->data.name)==0)</p><p> { printf("此圖書已存在!");</p><p> printf("請重新輸入:");</
22、p><p> scanf("%d%s%s%s%d%s",&p->data.num,p->data.name,p->data.author,p->data.press,&p->data.count,p->data.price);</p><p><b> }</b></p><p
23、> q=q->next;</p><p><b> }</b></p><p> p->next=s; </p><p><b> p=s;</b></p><p> p->next=NULL;</p>
24、<p> printf("錄入成功!\n");</p><p><b> } </b></p><p><b> return 0;</b></p><p><b> }</b></p><p> 3.圖書信息查詢功能:</p&
25、gt;<p> void LocateElem(LinkList *&L) //查詢 </p><p><b> {</b></p><p> LinkList *p=L->next; //p指向第一個數(shù)據(jù)結點</p><p><b>
26、int c;</b></p><p><b> int x=0;</b></p><p> char name1[10],author1[10],press1[10];</p><p> printf(" 1 按書名查詢:\n");</p><p> printf("
27、 2 按作者名查詢:\n");</p><p> printf(" 3 按出版社名稱:\n");</p><p> printf(" 4 返回\n");</p><p> printf(" 請選擇1--4進行操作:\n"); </p><p>
28、; scanf("%d",&c);</p><p> if(c>4||c<1)</p><p><b> {</b></p><p> printf("您的輸入有誤!\n");</p><p> scanf("%d",&c)
29、;</p><p><b> }</b></p><p><b> switch(c)</b></p><p><b> {</b></p><p> case 1:printf("請輸入圖書書名: \n");</p><p>
30、; scanf("%s",&name1);</p><p> while(p!=NULL)</p><p><b> {</b></p><p> if(strcmp( name1,p->data.name)!=0)//查找圖書書名</p><p> p=p->next;
31、 </p><p><b> else</b></p><p><b> {</b></p><p> printf("書號 書名 作者 出版社名稱 存館數(shù)量 定價\n");</p><p> printf("%d %s %s
32、 %s %d %s",p->data.num,p->data.name,p->data.author,p->data.press,p->data.count,&p->data.price);</p><p> printf("\n");</p><p> p=p->next;
33、</p><p><b> x++;</b></p><p><b> }</b></p><p><b> } </b></p><p> if (p==NULL&&x==0)</p><p> printf("對
34、不起,不存在此圖書!\n");</p><p><b> ;break;</b></p><p> case 2:printf("請輸入圖書作者:\n");</p><p> scanf("%s",author1);</p><p> while(p!=NULL)
35、</p><p><b> {</b></p><p> if(strcmp( author1,p->data.author)!=0)//查找圖書作者 </p><p> p=p->next; </p><p><b> else</b></p><p>
36、;<b> {</b></p><p> printf("書號 書名 作者 出版社名稱 存館數(shù)量 定價\n");</p><p> printf("%d %s %s %s %d %s",p->data.num,p->data.name,p->
37、;data.author,p->data.press,p->data.count,&p->data.price);</p><p> printf("\n");</p><p> p=p->next ;</p><p><b> x++;</b></p><p>
38、;<b> }</b></p><p><b> } </b></p><p> if (p==NULL&&x==0)</p><p> printf("對不起,不存在此圖書!\n");</p><p><b> ;break;</b
39、></p><p> case 3:printf("請輸入圖書的出版社名稱: \n"); </p><p> scanf("%s",press1);</p><p> while(p!=NULL)</p><p><b> {</b></p>&l
40、t;p> if(strcmp( press1,p->data.press)!=0)//查找圖書出版社名稱 </p><p> p=p->next; </p><p><b> else</b></p><p><b> {</b></p><p> printf(&q
41、uot;書號 書名 作者 出版社名稱 存館數(shù)量 定價\n");</p><p> printf("%d %s %s %s %d %s",p->data.num,p->data.name,p->data.author,p->data.press,p->data.count,&p-&
42、gt;data.price);</p><p> printf("\n");</p><p> p=p->next;</p><p><b> x++;</b></p><p><b> }</b></p><p><b> }
43、</b></p><p> if (p==NULL&&x==0)</p><p> printf("對不起!不存在此圖書\n");</p><p><b> ;break;</b></p><p><b> case 4:</b></p
44、><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> 4.圖書信息排序功能:</p><p> int Sort(LinkList *&L) //遞增
45、有序排序(直接插入排序法)</p><p><b> {</b></p><p> LinkList *p=L->next,*q,*r; //p指向第一個數(shù)據(jù)結點</p><p> if(p!=NULL) //若原單鏈表中有一個或以上的數(shù)據(jù)結點</p><p><b>
46、 {</b></p><p> r=p->next; //r保存*p結點直接后繼結點的指針</p><p> p->next=NULL; //構造只含一個數(shù)據(jù)結點的有序表</p><p><b> p=r;</b></p><p> while(p!
47、=NULL)</p><p><b> {</b></p><p> r=p->next; //r保存*p結點的直接后繼結點的指針</p><p><b> q=L;</b></p><p> while(q->next!=NULL&&q->n
48、ext->data.num<p->data.num)</p><p> q=q->next; //在有序表中找插入*p的直接前驅結點*q的位置</p><p> p->next=q->next; //將*p插入到*q之后</p><p> q->next=p;</p><p> p=r
49、; //掃描原單鏈表余下的結點</p><p><b> }</b></p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p>
50、<p> void Display(LinkList *&L) //輸出排序結果</p><p><b> {</b></p><p> LinkList *p=L->next;</p><p> while (p!=NULL)</p><p><b> {</b&g
51、t;</p><p> printf("書號 書名 作者 出版社名稱 存館數(shù)量 定價\n");</p><p> printf("%d %s %s %s %d %s",p->data.num,p->data.name,p->data.author,p->data.press
52、,p->data.count,p->data.price);</p><p> printf("\n");</p><p> p=p->next;</p><p><b> }</b></p><p><b> }</b></p><
53、p> 5. 圖書信息的修改功能:</p><p> ModifyList(LinkList *&L) //修改</p><p> { </p><p> LinkList *p=L;</p><p> char name1[10];</p><p&g
54、t; printf("請輸入要修改的圖書的書名:\n");</p><p> scanf("%s",name1);</p><p> while(p!=NULL)</p><p><b> {</b></p><p> if(strcmp(name1,p->data
55、.name)==0) //查找所要修改的書名</p><p><b> { </b></p><p> printf("請輸入修改后的信息!\n");</p><p> printf("書號 書名 作者 出版社名稱 存館數(shù)量 定價\n");</p><p>
56、; scanf("%d%s%s%s%d%s",&p->data.num,p->data.name,p->data.author,p->data.press,&p->data.count,p->data.price);</p><p> printf("修改成功!\n"); </p><p>&
57、lt;b> return 0;</b></p><p><b> }</b></p><p> p=p->next;</p><p><b> }</b></p><p> printf("不存在此圖書\n");</p><p
58、><b> return 0;</b></p><p><b> }</b></p><p> 6.圖書信息的刪除功能:</p><p> int ListDelete(LinkList *&L) //刪除 </p><p> { LinkList
59、 *p=L->next,*q=L;</p><p> char name1[10];</p><p> if(p!=NULL)</p><p><b> {</b></p><p> printf("請輸入要刪除的書名:");</p><p> scanf(&q
60、uot;%s",&name1);</p><p><b> }</b></p><p> while(p->next!=NULL&&strcmp(p->data.name,name1)!=0)</p><p><b> {</b></p><p>
61、 p=p->next;</p><p> q=q->next;</p><p><b> }</b></p><p> if(p->next!=NULL) //如果p此時不是最后一個節(jié)點,說明此時已經找到書</p><p><b> {</b></p>
62、<p> q->next=p->next;</p><p> printf("刪除成功!\n");</p><p><b> return 0;</b></p><p><b> }</b></p><p> if(p->next==NULL
63、&&strcmp(name1,p->data.name)!=0) //如果p此時為最后一個結點并且沒有找到與之相符的書名</p><p><b> {</b></p><p> printf("你輸入的書名不存在,請核實后重新輸入!\n");</p><p><b> } </b
64、></p><p><b> else</b></p><p><b> {</b></p><p> q->next=NULL;</p><p> printf("刪除成功!\n");</p><p><b> }<
65、/b></p><p><b> return 0;</b></p><p><b> }</b></p><p> 7.圖書的借閱功能:</p><p> void Borrow(LinkList *&L) //借閱</p><p><b&
66、gt; {</b></p><p> LinkList *p=L->next;</p><p> char name1[10];</p><p> printf("請輸入要借閱的圖書的書名:\n");</p><p> scanf("%s",&name1);</
67、p><p> while(p->next!=NULL&&strcmp(name1,p->data.name)!=0)</p><p> p=p->next;</p><p> if(p->next==NULL&&strcmp(name1,p->data.name)!=0)</p><
68、p> printf("此圖書不存在!");</p><p> else if(p->data.count<1) </p><p> printf("此書已借完!\n") ;</p><p> else if(strcmp(name1,p->data.name)==0)</p>
69、<p><b> {</b></p><p> printf("借書成功!\n");</p><p> p->data.count--;</p><p><b> } </b></p><p><b> }</b><
70、/p><p> 8.圖書的歸還功能:</p><p> void Return(LinkList *&L) //歸還</p><p><b> {</b></p><p> LinkList *p=L->next;</p><p> char name1[10];</
71、p><p> printf("輸入歸還書的書名: \n");</p><p> scanf("%s",&name1);</p><p> while(p->next!=NULL&&strcmp(name1,p->data.name)!=0)</p><p> p=
72、p->next;</p><p> if(p->next==NULL&&strcmp(name1,p->data.name)!=0)</p><p> printf("錯誤!此圖書不存在!\n");</p><p> else if(strcmp(name1,p->data.name)==0)<
73、/p><p><b> {</b></p><p> printf("該書歸還成功!\n");</p><p> p->data.count++;</p><p><b> }</b></p><p><b> }</b>
74、</p><p><b> 四.源程序及注釋</b></p><p> #include <stdio.h></p><p> #include <string.h></p><p> #include<stdlib.h> </p><p> #inc
75、lude<malloc.h></p><p> typedef struct </p><p><b> {</b></p><p><b> int num;</b></p><p> char name[20];</p><p> char auth
76、or[20];</p><p> char press[20];</p><p> int count;</p><p> char price[10];</p><p> }ElemType;</p><p> typedef struct LNode//定義單鏈表結點類型</p><
77、p><b> {</b></p><p> ElemType data;</p><p> struct LNode *next;</p><p> } LinkList;</p><p> void InitList(LinkList *&L) //初始化線性表</p>&l
78、t;p><b> {</b></p><p> L=(LinkList *)malloc(sizeof(LinkList)); //創(chuàng)建頭結點</p><p> L->next=NULL;</p><p><b> }</b></p><p> int CreateList
79、R(LinkList *&L) //尾插法建表</p><p> { int i,n; </p><p> LinkList *s,*q,*p;</p><p><b> p=L;</b></p><p> while(p->next!=NULL)</p><p
80、> p=p->next;</p><p> printf("請輸入需要錄入的圖書信息的個數(shù):n=");</p><p> scanf("%d",&n);</p><p> for(i=1;i<n+1;i++)</p><p><b> { </b>
81、;</p><p> s=(LinkList *)malloc(sizeof(LinkList));</p><p> printf("書號 書名 作者 出版社名稱 存館數(shù)量 定價\n");</p><p> scanf("%d%s%s%s%d%s",&s->data.num,s->
82、data.name,s->data.author,s->data.press,&s->data.count,s->data.price);</p><p> q=L->next;</p><p> if(q==NULL)</p><p><b> {</b></p><p>
83、 p->next=s; </p><p><b> p=s;</b></p><p> p->next=NULL;</p><p> printf("錄入成功!\n");</p><p><b> continue;</b></p><p&
84、gt;<b> }</b></p><p> while(q!=NULL)</p><p><b> {</b></p><p> if(strcmp(s->data.name,q->data.name)==0)</p><p> { printf("此圖書已存
85、在!");</p><p> printf("請重新輸入:\n");</p><p> scanf("%d%s%s%s%d%s",&p->data.num,p->data.name,p->data.author,p->data.press,&p->data.count,p->data.
86、price);</p><p><b> }</b></p><p> q=q->next;</p><p><b> }</b></p><p> p->next=s; </p><p><b&g
87、t; p=s;</b></p><p> p->next=NULL;</p><p> printf("錄入成功!\n");</p><p><b> } </b></p><p> return 0;</p><p><b> }&l
88、t;/b></p><p> void LocateElem(LinkList *&L) //查詢 </p><p><b> {</b></p><p> LinkList *p=L->next; //p指向第一個數(shù)據(jù)結點</p><p
89、><b> int c;</b></p><p><b> int x=0;</b></p><p> char name1[10],author1[10],press1[10];</p><p> printf(" 1 按書名查詢:\n");</p><p>
90、 printf(" 2 按作者名查詢:\n");</p><p> printf(" 3 按出版社名稱:\n");</p><p> printf(" 4 返回\n");</p><p> printf(" 請選擇1--4進行操作:\n"); </
91、p><p> scanf("%d",&c);</p><p> if(c>4||c<1)</p><p><b> {</b></p><p> printf("您的輸入有誤!\n");</p><p> scanf("%
92、d",&c);</p><p><b> }</b></p><p><b> switch(c)</b></p><p><b> {</b></p><p> case 1:printf("請輸入圖書書名: \n");</
93、p><p> scanf("%s",&name1);</p><p> while(p!=NULL)</p><p><b> {</b></p><p> if(strcmp( name1,p->data.name)!=0) //查找圖書書名</p><p>
94、; p=p->next; </p><p><b> else</b></p><p><b> {</b></p><p> printf("書號 書名 作者 出版社名稱 存館數(shù)量 定價\n");</p><p> printf("%d
95、 %s %s %s %d %s",p->data.num,p->data.name,p->data.author,p->data.press,p->data.count,&p->data.price);</p><p> printf("\n");</p><p&
96、gt; p=p->next;</p><p><b> x++;</b></p><p><b> }</b></p><p><b> } </b></p><p> if (p==NULL&&x==0)</p><p&g
97、t; printf("對不起,不存在此圖書!\n");</p><p><b> break;</b></p><p> case 2:printf("請輸入圖書作者:\n");</p><p> scanf("%s",author1);</p><p>
98、; while(p!=NULL)</p><p><b> {</b></p><p> if(strcmp( author1,p->data.author)!=0)//查找圖書作者 </p><p> p=p->next; </p><p><b> else</b><
99、;/p><p><b> {</b></p><p> printf("書號 書名 作者 出版社名稱 存館數(shù)量 定價\n");</p><p> printf("%d %s %s %s %d %s",p->data.num,p-
100、>data.name,p->data.author,p->data.press,p->data.count,&p->data.price);</p><p> printf("\n");</p><p> p=p->next ;</p><p><b> x++;</b>&
101、lt;/p><p><b> }</b></p><p><b> } </b></p><p> if (p==NULL&&x==0)</p><p> printf("對不起,不存在此圖書!\n");</p><p><b
102、> break;</b></p><p> case 3:printf("請輸入圖書的出版社名稱: \n"); </p><p> scanf("%s",press1);</p><p> while(p!=NULL)</p><p><b> {</b
103、></p><p> if(strcmp( press1,p->data.press)!=0)//查找圖書出版社名稱 </p><p> p=p->next; </p><p><b> else</b></p><p><b> {</b></p>&l
104、t;p> printf("書號 書名 作者 出版社名稱 存館數(shù)量 定價\n");</p><p> printf("%d %s %s %s %d %s",p->data.num,p->data.name,p->data.author,p->data.press,p->
105、;data.count,&p->data.price);</p><p> printf("\n");</p><p> p=p->next;</p><p><b> x++;</b></p><p><b> }</b></p>&l
106、t;p><b> } </b></p><p> if (p==NULL&&x==0)</p><p> printf("對不起!不存在此圖書\n");</p><p><b> break;</b></p><p><b> case
107、 4:</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> int Sort(LinkList *&L) //遞增有序排序(直接插入排序法)&l
108、t;/p><p><b> {</b></p><p> LinkList *p=L->next,*q,*r; //p指向第一個數(shù)據(jù)結點</p><p> if(p!=NULL) //若原單鏈表中有一個或以上的數(shù)據(jù)結點</p><p><b> {</b>&l
109、t;/p><p> r=p->next; //r保存*p結點直接后繼結點的指針</p><p> p->next=NULL; //構造只含一個數(shù)據(jù)結點的有序表</p><p><b> p=r;</b></p><p> while(p!=NULL)</p>
110、;<p><b> {</b></p><p> r=p->next; //r保存*p結點的直接后繼結點的指針</p><p><b> q=L;</b></p><p> while(q->next!=NULL&&q->next->data.nu
111、m<p->data.num)</p><p> q=q->next; //在有序表中找插入*p的直接前驅結點*q的位置</p><p> p->next=q->next; //將*p插入到*q之后</p><p> q->next=p;</p><p> p=r;
112、//掃描原單鏈表余下的結點</p><p><b> }</b></p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> void
113、 Display(LinkList *&L) //輸出排序結果</p><p><b> {</b></p><p> LinkList *p=L->next;</p><p> while (p!=NULL)</p><p><b> {</b></p>&
114、lt;p> printf("書號 書名 作者 出版社名稱 存館數(shù)量 定價\n");</p><p> printf("%d %s %s %s %d %s",p->data.num,p->data.name,p->data.author,p->data.press,p->data.co
115、unt,p->data.price);</p><p> printf("\n");</p><p> p=p->next;</p><p><b> }</b></p><p><b> }</b></p><p> int Mod
116、ifyList(LinkList *&L) //修改</p><p> { </p><p> LinkList *p=L;</p><p> char name1[10];</p><p> printf("請輸入要修改的圖書的書名:\n");</p
117、><p> scanf("%s",name1);</p><p> while(p!=NULL)</p><p><b> {</b></p><p> if(strcmp(name1,p->data.name)==0) //查找所要修改的書名</p><p><
118、;b> { </b></p><p> printf("請輸入修改后的信息!\n");</p><p> printf("書號 書名 作者 出版社名稱 存館數(shù)量 定價\n");</p><p> scanf("%d%s%s%s%d%s",&p->d
119、ata.num,p->data.name,p->data.author,p->data.press,&p->data.count,p->data.price);</p><p> printf("修改成功!\n"); </p><p><b> return 0;</b></p><p
120、><b> }</b></p><p> p=p->next;</p><p><b> }</b></p><p> printf("不存在此圖書\n");</p><p><b> return 0;</b></p>
121、<p><b> }</b></p><p> int ListDelete(LinkList *&L) //刪除 </p><p> { LinkList *p=L->next,*q=L;</p><p> char name1[10];</p><p>
122、if(p!=NULL)</p><p><b> {</b></p><p> printf("請輸入要刪除的書名:");</p><p> scanf("%s",&name1);</p><p><b> }</b></p>&
123、lt;p> while(p->next!=NULL&&strcmp(p->data.name,name1)!=0)</p><p><b> {</b></p><p> p=p->next;</p><p> q=q->next;</p><p><b>
124、 }</b></p><p> if(p->next!=NULL) //如果p此時不是最后一個節(jié)點,說明此時已經找到書</p><p><b> {</b></p><p> q->next=p->next;</p><p> printf("刪除成功!\n"
125、;);</p><p><b> return 0;</b></p><p><b> } </b></p><p> if(p->next==NULL&&strcmp(name1,p->data.name)!=0) //如果p此時為最后一個結點并且沒有找到與之相符的書名</p>
126、;<p><b> {</b></p><p> printf("你輸入的書名不存在,請核實后重新輸入!\n");</p><p><b> } </b></p><p><b> else</b></p><p><b>
127、 {</b></p><p> q->next=NULL;</p><p> printf("刪除成功!\n");</p><p><b> }</b></p><p><b> return 0;</b></p><p>&
128、lt;b> }</b></p><p> void Borrow(LinkList *&L) //借閱</p><p><b> {</b></p><p> LinkList *p=L->next;</p><p> char name1[10];</p>
129、<p> printf("請輸入要借閱的圖書的書名:\n");</p><p> scanf("%s",&name1);</p><p> while(p->next!=NULL&&strcmp(name1,p->data.name)!=0)</p><p> p=p-&g
130、t;next;</p><p> if(p->next==NULL&&strcmp(name1,p->data.name)!=0)</p><p> printf("此圖書不存在!\n");</p><p> else if(p->data.count<1) </p><p
131、> printf("此書已借完!\n") ;</p><p> else if(strcmp(name1,p->data.name)==0)</p><p><b> {</b></p><p> printf("借書成功!\n");</p><p> p-&
132、gt;data.count--;</p><p><b> }</b></p><p><b> }</b></p><p> void Return(LinkList *&L) //歸還</p><p><b> {</b></p><
133、p> LinkList *p=L->next;</p><p> char name1[10];</p><p> printf("輸入歸還書的書名: \n");</p><p> scanf("%s",&name1);</p><p> while(p->next!
134、=NULL&&strcmp(name1,p->data.name)!=0)</p><p> p=p->next;</p><p> if(p->next==NULL&&strcmp(name1,p->data.name)!=0)</p><p> printf("錯誤!此圖書不存在!\n&qu
135、ot;);</p><p> else if(strcmp(name1,p->data.name)==0)</p><p><b> {</b></p><p> printf("該書歸還成功!\n");</p><p> p->data.count++;</p>&
136、lt;p><b> }</b></p><p><b> }</b></p><p> void main() //主函數(shù)</p><p><b> {</b></p><p><b> int s;</b></p>
137、;<p> LinkList *L;</p><p> L=(LinkList *)malloc(sizeof(LinkList)); </p><p> InitList(*&L);</p><p> w:while(s!=0){</p><p> printf("-----------------
138、-------------------------------------------------- \n");</p><p> printf(" 歡迎光臨圖書管理系統(tǒng)! \n");</p><p> printf("-----------------
139、-------------------------------------------------- \n");</p><p> printf("1.圖書信息錄入添加功能:\n");</p><p> printf("2.圖書信息查詢功能:\n"); </p><p> printf("3.圖書信
140、息排序功能:\n");</p><p> printf("4.圖書的修改功能:\n");</p><p> printf("5.圖書的刪除功能:\n");</p><p> printf("6.圖書借閱功能:\n");</p><p> printf("7
141、.圖書歸還功能:\n");</p><p> printf("0.退出系統(tǒng):\n");</p><p> printf("請選擇你需要的操作:\n");</p><p> scanf("%d",&s);</p><p><b> switch(s)
142、</b></p><p><b> {</b></p><p> case 1: CreateListR(L);break;</p><p> case 2: LocateElem(L);break;</p><p> case 3: Sort(L);Display(L);break;</p&g
143、t;<p> case 4: ModifyList(L);break;</p><p> case 5:ListDelete(L); break;</p><p> case 6:Borrow(L); break;</p><p> case 7:Return(L); break;</p><p> ccase 0:p
144、rintf("謝謝使用\n");return 0;break;goto w;}</p><p><b> }</b></p><p><b> }</b></p><p> 五、運行示例及結果分析</p><p><b> (一)界面輸出:</b>
145、;</p><p> 系統(tǒng)運行以后即可進入菜單</p><p> (二)圖書信息錄入添加功能:</p><p> 按提示依次錄入信息即可。</p><p> (三)圖書信息查詢功能:</p><p> 可選擇按書名、作者名、出版社名稱查詢。若所要查詢的圖書不存在,會有相應的提示。</p><
146、;p> (四)圖書信息排序功能:</p><p> 按照圖書書號的大小遞增排序。</p><p> (五)圖書的修改功能:</p><p> 根據(jù)提示輸入要修改的書名,再錄入修改后的信息即可。</p><p> (六)圖書的刪除功能:</p><p> 根據(jù)提示輸入要刪除的書名。</p>
147、<p> (七)圖書借閱功能:</p><p> 根據(jù)提示輸入要借閱的書名。若圖書不存在或圖書已借完會有相應的提示。</p><p> (八)圖書歸還功能:</p><p> 根據(jù)提示輸入要歸還的書名。若圖書不存在會有相應的提示。</p><p><b> (九)退出程序:</b></p>
148、;<p> 調試和運行程序過程中產生的問題及采取的措施</p><p><b> 問題:</b></p><p> 錄入圖書信息后,輸出圖書信息時有些項目輸出亂碼。</p><p><b> 采取的措施:</b></p><p> 在輸入語句中,定義為int型的項目在輸入語句
149、中加上取地址符號“&”。</p><p><b> (二)問題:</b></p><p> 執(zhí)行查詢功能時,按作者或是按出版社查詢,若出現(xiàn)多本書均為同一作者所作或是同一出版社出版,只能輸出一本書的信息。</p><p><b> 采取的措施:</b></p><p> 將輸出語句放到
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結構課程設計圖書管理系統(tǒng)
- 數(shù)據(jù)結構課程設計--圖書管理系統(tǒng)
- 《數(shù)據(jù)結構》課程設計---圖書管理系統(tǒng)
- 數(shù)據(jù)結構課程設計--圖書管理系統(tǒng)
- 數(shù)據(jù)結構課程設計---圖書管理系統(tǒng)
- 數(shù)據(jù)結構課程設計圖書管理系統(tǒng)實驗報告
- 數(shù)據(jù)結構課程設計-圖書管理系統(tǒng)
- 數(shù)據(jù)結構課程設計-圖書管理
- 數(shù)據(jù)結構課程設計--圖書管理
- 數(shù)據(jù)結構課程設計報告——圖書管理系統(tǒng)
- 數(shù)據(jù)結構課程設計報告圖書管理系統(tǒng)
- 數(shù)據(jù)結構課程設計報告--學院圖書管理系統(tǒng)
- 數(shù)據(jù)結構課程設計——圖書管理信息系統(tǒng)
- 數(shù)據(jù)結構課程設計圖書館管理系統(tǒng)
- 數(shù)據(jù)庫課程設計圖書管理系統(tǒng)
- 課程設計---課程設計圖書管理系統(tǒng)
- 數(shù)據(jù)結構課程設計報告---- 圖書管理系統(tǒng)的設計與實現(xiàn)
- 數(shù)據(jù)結構-圖書管理系統(tǒng)
- 數(shù)據(jù)結構課程設計--圖書借閱管理系統(tǒng)
- 圖書管理系統(tǒng)(含源代碼)c語言_數(shù)據(jù)結構課程設計報告
評論
0/150
提交評論