版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 任務要求:設計一圖書信息管理系統(tǒng),使之能提供以下功能:系統(tǒng)以菜單方式工作圖書信息錄入功能(圖書信息用文件保存)——輸入圖書信息瀏覽功能——輸出圖書信息查詢功能——算法查詢方式按書名查詢按作者查詢5.圖書信息的刪除與修改(可選項)</p><p> 內(nèi)容摘要:本系統(tǒng)以菜單方式工作,操作界面簡潔大方、美觀實用,詳細收錄圖書信息,總共可以實現(xiàn)九項功能,具體可以實現(xiàn)瀏覽書目、錄入、刪除、保存、清空、查
2、詢圖書、退出系統(tǒng)九項功能,其中查詢功能可以通過三種方式實現(xiàn):按編號、按書名、按作者名。</p><p> 教師評語:成績 簽名: 日期: </p><p><b> 課程設計報告書</b></p><p><b> 圖書信息管理系統(tǒng)</b></p&
3、gt;<p><b> 班 級: </b></p><p><b> 學 號: </b></p><p><b> 姓 名:</b></p><p><b> 指導教師:</b></p><p><b>
4、 2013年7月5日</b></p><p><b> 一 設計思想</b></p><p> 操作系統(tǒng)界面應該簡潔、大方、美觀,操作系統(tǒng)實用性強。打開系統(tǒng)后,系統(tǒng)菜單居中,進行操作后,操作結果顯示在界面的左端,并再次出現(xiàn)系統(tǒng)菜單,繼續(xù)進行操作。錄入的圖書信息將會以文本文檔的格式儲存在相應的文件夾下,每次操作結束后,都會保留當前最新信息,從而保證系統(tǒng)的
5、實用性。</p><p> 二 系統(tǒng)完成功能及框圖</p><p> 系統(tǒng)完成功能:用戶根據(jù)功能輸入相應的編號,按回車鍵進入功能選項,根據(jù)提示完成操作。 </p><p><b> 三 核心算法及說明</b></p><p> 1. 結構體數(shù)據(jù)類型定義</p><p> struct b
6、k_node{</p><p> char id[16];</p><p> char name[32];</p><p> char author[16];</p><p> char press[32];</p><p> char date[16];</p><p> floa
7、t price;</p><p> n_ptr next;</p><p><b> };</b></p><p><b> 2.函數(shù)定義</b></p><p> n_ptr clean_list(n_ptr list);</p><p> n_ptr creat
8、e_list(void);</p><p> n_ptr create_node(void);</p><p> void save_list(n_ptr list);</p><p> n_ptr insert_node(n_ptr list, n_ptr node);</p><p> n_ptr delete_node(n_pt
9、r list, n_ptr node);</p><p> n_ptr query_node(n_ptr list,char* id);</p><p> n_ptr findbook1_node(n_ptr list,char* name);</p><p> n_ptr findbook2_node(n_ptr list,char* author);<
10、;/p><p> void print_list(n_ptr list);</p><p> void print_node(n_ptr node);</p><p><b> 3. 處理過程</b></p><p><b> //錄入功能</b></p><p> n
11、_ptr insert_node(n_ptr list, n_ptr node){</p><p> n_ptr pos=list;</p><p> /*當鏈表為NULL時,進行如下處理,此時鏈表頭會發(fā)生改變*/</p><p> if(list==NULL){</p><p> list=node;</p><
12、p> return list;</p><p><b> }</b></p><p> while (pos->next !=NULL)</p><p> pos=pos->next;</p><p> node->next=pos->next;</p><p&
13、gt; pos->next=node;</p><p> return list;</p><p><b> }</b></p><p><b> //瀏覽功能</b></p><p> void print_list(n_ptr list){</p><p>
14、; n_ptr pos=list;</p><p> if (list==NULL){</p><p> printf("列表為空!\n");</p><p><b> return;</b></p><p><b> }</b></p><p>
15、; while(pos!=NULL){</p><p> printf("編號\n");</p><p> printf("%-10s\n",pos->id);</p><p> printf("書名\n");</p><p> printf("%-30s\
16、n",pos->name);</p><p> printf("作者\n");</p><p> printf("%-15s\n",pos->author);</p><p> printf("出版單位\n");</p><p> printf(&quo
17、t;%-30s\n",pos->press);</p><p> printf("出版日期\n");</p><p> printf("%-10s\n",pos->date);</p><p> printf("價格\n");</p><p> prin
18、tf("%.2f",pos->price);</p><p> printf("\n\n");</p><p> pos=pos->next;</p><p><b> }</b></p><p><b> }</b></p>
19、<p><b> //查詢功能</b></p><p><b> //按書名查詢</b></p><p> n_ptr findbook1_node(n_ptr list,char* name){</p><p> n_ptr pos=list;</p><p> while(
20、pos!=NULL && strcmp(pos->name, name)!=0)</p><p> pos=pos->next;</p><p> if(pos==NULL)</p><p> printf("沒有找到記錄!\n");</p><p> return pos;</p
21、><p><b> }</b></p><p><b> //按作者名查詢</b></p><p> n_ptr findbook2_node(n_ptr list,char* author){</p><p> n_ptr pos=list;</p><p> whi
22、le(pos!=NULL && strcmp(pos->author, author)!=0)</p><p> pos=pos->next;</p><p> if(pos==NULL)</p><p> printf("沒有找到記錄!\n");</p><p> return pos
23、;</p><p><b> }</b></p><p><b> 四 界面設計</b></p><p><b> 五 結論</b></p><p> 本次程序設計是由二人共同完成,經(jīng)歷了從選擇題目,整體分析,畫流程圖,設計模板,自己編寫程序,上網(wǎng)查找標準代碼,完善所編
24、程序到調(diào)試程序的過程,其中我們有共同合作的歡樂,也有分工進行編寫程序的喜悅,我們分工編寫不同的函數(shù),再將各自所編程序組成整體。編寫程序的過程真是一個幸福的過程,讓我找回了在編程道路上曾經(jīng)失去的信心,讓我感受到了偉大的團結力量。</p><p><b> 參考資料</b></p><p> 譚浩強著,《C程序設計(第三版)》,清華大學出版社,2005</p&g
25、t;<p> 李丹程,劉瑩,那俊著,《C語言程序設計案例實踐》,清華大學出版社,2009.2</p><p><b> 附錄</b></p><p><b> 程序代碼如下:</b></p><p> /*bklist.h*/</p><p> #ifndef BKLIST_
26、H</p><p> #define BKLIST_H</p><p> #define DATA_FILE "data"</p><p> struct bk_node;</p><p> typedef struct bk_node* n_ptr;</p><p> struct bk
27、_node{</p><p> char id[16];</p><p> char name[32];</p><p> char author[16];</p><p> char press[32];</p><p> char date[16];</p><p> float
28、 price;</p><p> n_ptr next;</p><p><b> };</b></p><p> n_ptr clean_list(n_ptr list);</p><p> n_ptr create_list(void);</p><p> n_ptr create_
29、node(void);</p><p> void save_list(n_ptr list);</p><p> n_ptr insert_node(n_ptr list, n_ptr node);</p><p> n_ptr delete_node(n_ptr list, n_ptr node);</p><p> n_ptr
30、query_node(n_ptr list,char* id);</p><p> n_ptr findbook1_node(n_ptr list,char* name);</p><p> n_ptr findbook2_node(n_ptr list,char* author);</p><p> void print_list(n_ptr list);&
31、lt;/p><p> void print_node(n_ptr node);</p><p><b> #endif</b></p><p> /*bklist.c*/</p><p> #include <stdio.h></p><p> #include <stdl
32、ib.h></p><p> #include <string.h></p><p> n_ptr clean_list(n_ptr list){</p><p> n_ptr pos, tmp;</p><p> if(list==NULL){</p><p> printf("
33、列表已經(jīng)為空!\n");</p><p> return NULL;</p><p><b> }</b></p><p><b> pos=list;</b></p><p> while(pos!=NULL){</p><p> tmp=pos->
34、;next;</p><p> free(pos);</p><p><b> pos=tmp;</b></p><p><b> }</b></p><p> printf("列表已清空!\n");</p><p> return NULL;&
35、lt;/p><p><b> }</b></p><p> n_ptr create_list(void){</p><p><b> FILE* fp;</b></p><p> n_ptr list=NULL;</p><p> n_ptr node;</p&
36、gt;<p> fp=fopen(DATA_FILE,"rb");</p><p> if (fp==NULL)</p><p> return list;</p><p><b> while(1){</b></p><p> node=malloc(sizeof(struc
37、t bk_node));</p><p> if(fread(node,sizeof(struct bk_node),1,fp)==0)</p><p><b> break;</b></p><p> node->next=NULL;</p><p> list=insert_node(list,node
38、);</p><p><b> }</b></p><p> return list;</p><p><b> }</b></p><p> void save_list(n_ptr list){</p><p><b> FILE* fp;</b
39、></p><p> n_ptr pos=list;</p><p> fp=fopen(DATA_FILE,"wb");</p><p> while(pos!=NULL){</p><p> fwrite(pos,sizeof(struct bk_node),1,fp);</p><p
40、> pos=pos->next;</p><p><b> }</b></p><p> printf("保存成功!\n");</p><p> fclose(fp);</p><p><b> }</b></p><p> n_p
41、tr create_node(void){</p><p> n_ptr node;</p><p> node=malloc(sizeof(struct bk_node));</p><p> printf("編號:");</p><p> gets(node->id);</p><p&
42、gt; printf("書名:");</p><p> gets(node->name);</p><p> printf("作者:");</p><p> gets(node->author);</p><p> printf("出版單位:");</p&
43、gt;<p> gets(node->press);</p><p> printf("出版日期(年/月):");</p><p> gets(node->date);</p><p> printf("價格:");</p><p> scanf("%f&q
44、uot;,&node->price);</p><p> node->next=NULL;</p><p> getchar();</p><p> return node;</p><p><b> }</b></p><p> n_ptr insert_node(
45、n_ptr list, n_ptr node){</p><p> n_ptr pos=list;</p><p> if(list==NULL){</p><p> list=node;</p><p> return list;</p><p><b> }</b></p>
46、;<p> while (pos->next !=NULL)</p><p> pos=pos->next;</p><p> node->next=pos->next;</p><p> pos->next=node;</p><p> return list;</p>&
47、lt;p><b> }</b></p><p> n_ptr delete_node(n_ptr list, n_ptr node){</p><p> n_ptr pos=list;</p><p> n_ptr tmp;</p><p> if(list==NULL){</p><
48、p> printf("列表為空!\n");</p><p> return list;</p><p><b> }</b></p><p> if (pos==node){</p><p> tmp=pos->next;</p><p> free(p
49、os);</p><p> printf("刪除成功!\n");</p><p> return tmp;</p><p><b> }</b></p><p> while (pos->next !=node && pos->next !=NULL)</p&
50、gt;<p> pos=pos->next;</p><p> if(pos->next !=NULL){</p><p> pos->next=node->next;</p><p> free(node);</p><p> printf("刪除成功!\n");</
51、p><p><b> }else</b></p><p> printf("沒有找到記錄!\n");</p><p> return list;</p><p><b> }</b></p><p> n_ptr query_node(n_ptr l
52、ist, char* id){</p><p> n_ptr pos=list;</p><p> while(pos!=NULL && strcmp(pos->id, id)!=0)</p><p> pos=pos->next;</p><p> if(pos==NULL)</p><
53、;p> printf("沒有找到記錄!\n");</p><p> return pos;</p><p><b> }</b></p><p> n_ptr findbook1_node(n_ptr list,char* name){</p><p> n_ptr pos=list;
54、</p><p> while(pos!=NULL && strcmp(pos->name, name)!=0)</p><p> pos=pos->next;</p><p> if(pos==NULL)</p><p> printf("沒有找到記錄!\n");</p>
55、<p> return pos;</p><p><b> }</b></p><p> n_ptr findbook2_node(n_ptr list,char* author){</p><p> n_ptr pos=list;</p><p> while(pos!=NULL &&am
56、p; strcmp(pos->author, author)!=0)</p><p> pos=pos->next;</p><p> if(pos==NULL)</p><p> printf("沒有找到記錄!\n");</p><p> return pos;</p><p>
57、;<b> }</b></p><p> void print_list(n_ptr list){</p><p> n_ptr pos=list;</p><p> if (list==NULL){</p><p> printf("列表為空!\n");</p><p&
58、gt;<b> return;</b></p><p><b> }</b></p><p> while(pos!=NULL){</p><p> printf("編號\n");</p><p> printf("%-10s\n",pos->
59、id);</p><p> printf("書名\n");</p><p> printf("%-30s\n",pos->name);</p><p> printf("作者\n");</p><p> printf("%-15s\n",pos-&g
60、t;author);</p><p> printf("出版單位\n");</p><p> printf("%-30s\n",pos->press);</p><p> printf("出版日期\n");</p><p> printf("%-10s\n&q
61、uot;,pos->date);</p><p> printf("價格\n");</p><p> printf("%.2f",pos->price);</p><p> printf("\n\n");</p><p> pos=pos->next;<
62、;/p><p><b> }</b></p><p><b> }</b></p><p> void print_node(n_ptr node){</p><p> printf("編號:%s\n",node->id);</p><p>
63、printf("書名:%s\n",node->name);</p><p> printf("作者:%s\n",node->author);</p><p> printf("出版單位:%s\n",node->press);</p><p> printf("出版日期:%s
64、\n",node->date);</p><p> printf("價格:%2f\n",node->price);</p><p><b> }</b></p><p> /*bkman.c*/</p><p> #include <stdio.h></
65、p><p> #include <stdlib.h></p><p> void print_menu(void);</p><p> int main(int argc,char** argv){</p><p><b> char c;</b></p><p> char i
66、d[16];</p><p> char name[32];</p><p> char author[16];</p><p> n_ptr list;</p><p> n_ptr node;</p><p> list=create_list();</p><p><b&g
67、t; while(1){</b></p><p> print_menu();</p><p> c=getchar(); </p><p> getchar();</p><p> switch (c) {</p><p><b> case'1'
68、:</b></p><p> print_list(list);</p><p><b> break;</b></p><p><b> case'2':</b></p><p> printf("請輸入要查詢的圖書編號:");</p&
69、gt;<p> scanf("%s",id);</p><p> getchar();</p><p> node=query_node(list,id);</p><p> if(node!=NULL)</p><p> print_node(node);</p><p>
70、<b> break;</b></p><p><b> case'3':</b></p><p> node=create_node();</p><p> list=insert_node(list,node);</p><p><b> break;<
71、/b></p><p><b> case'4':</b></p><p> printf("請輸入要刪除的圖書編號:");</p><p> scanf("%s",id);</p><p> getchar();</p><p&g
72、t; node=query_node(list,id);</p><p> if(node!=NULL)</p><p> list=delete_node(list,node);</p><p><b> break;</b></p><p><b> case'5':</b&
73、gt;</p><p> list=clean_list(list);</p><p><b> break;</b></p><p><b> case'6':</b></p><p> save_list(list);</p><p><b&
74、gt; break;</b></p><p><b> case'7':</b></p><p> printf("請輸入要查詢的圖書書名:");</p><p> scanf("%s",name);</p><p> getchar();&l
75、t;/p><p> node=findbook1_node(list,name);</p><p> if(node!=NULL)</p><p> print_node(node);</p><p><b> break;</b></p><p><b> case'8&
76、#39;:</b></p><p> printf("請輸入要查詢的圖書的作者名:");</p><p> scanf("%s",author);</p><p> getchar();</p><p> node=findbook2_node(list,author);</p
77、><p> if(node!=NULL)</p><p> print_node(node);</p><p><b> break;</b></p><p><b> case'0':</b></p><p><b> return 0;&l
78、t;/b></p><p><b> default:</b></p><p> printf("輸入錯誤,請重新輸入!\n");</p><p><b> }</b></p><p><b> }</b></p><p&g
79、t;<b> return 0;</b></p><p><b> }</b></p><p> void print_menu(void){</p><p> printf("\n\n\n\t\t------------圖書信息管理系統(tǒng)-----------\n");</p>&
80、lt;p> printf("\n\t\t\t\t1.瀏覽書目\n");</p><p> printf("\n\t\t\t\t2.按編號查詢\n");</p><p> printf("\n\t\t\t\t3.錄入\n");</p><p> printf("\n\t\t\t\t4.
81、刪除\n");</p><p> printf("\n\t\t\t\t5.清空圖書列表\n");</p><p> printf("\n\t\t\t\t6.保存修改\n");</p><p> printf("\n\t\t\t\t7.按書名查詢\n");</p><p&g
82、t; printf("\n\t\t\t\t8.按作者名查詢\n");</p><p> printf("\n\t\t\t\t0.退出系統(tǒng)\n");</p><p> printf("\n\t\t\t\t請選擇:");</p><p><b> }</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書信息管理系統(tǒng)課程設計報告
- 圖書信息管理系統(tǒng)課程設計報告
- 圖書信息管理系統(tǒng)課程設計報告
- 課程設計報告--圖書信息管理系統(tǒng)設計
- 課程設計--圖書信息管理系統(tǒng)
- 圖書信息管理系統(tǒng)課程設計
- 圖書信息管理系統(tǒng) 課程設計
- 程序課程設計報告 圖書信息管理系統(tǒng)
- java圖書信息管理系統(tǒng)課程設計報告
- 課程設計---圖書信息管理系統(tǒng)
- 課程設計---圖書信息管理系統(tǒng)
- 課程設計--- 圖書信息管理系統(tǒng)設計
- 課程設計---圖書信息管理系統(tǒng)設計
- 圖書信息管理系統(tǒng)——c語言課程設計報告
- c++課程設計報告---圖書信息管理系統(tǒng)
- c語言圖書信息管理系統(tǒng)課程設計報告
- c語言課程設計報告—圖書信息管理系統(tǒng)
- c語言課程設計報告—圖書信息管理系統(tǒng)
- c語言課程設計報告—圖書信息管理系統(tǒng)
- c++課程設計報告---圖書信息管理系統(tǒng)
評論
0/150
提交評論