版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 任務(wù)要求:設(shè)計(jì)一圖書信息管理系統(tǒng),使之能提供以下功能:系統(tǒng)以菜單方式工作圖書信息錄入功能(圖書信息用文件保存)——輸入圖書信息瀏覽功能——輸出圖書信息查詢功能——算法查詢方式按書名查詢按作者查詢5.圖書信息的刪除與修改(可選項(xiàng))</p><p> 內(nèi)容摘要:本系統(tǒng)以菜單方式工作,操作界面簡(jiǎn)潔大方、美觀實(shí)用,詳細(xì)收錄圖書信息,總共可以實(shí)現(xiàn)九項(xiàng)功能,具體可以實(shí)現(xiàn)瀏覽書目、錄入、刪除、保存、清空、查
2、詢圖書、退出系統(tǒng)九項(xiàng)功能,其中查詢功能可以通過三種方式實(shí)現(xiàn):按編號(hào)、按書名、按作者名。</p><p> 教師評(píng)語(yǔ):成績(jī) 簽名: 日期: </p><p><b> 課程設(shè)計(jì)報(bào)告書</b></p><p><b> 圖書信息管理系統(tǒng)</b></p&
3、gt;<p><b> 班 級(jí): </b></p><p><b> 學(xué) 號(hào): </b></p><p><b> 姓 名:</b></p><p><b> 指導(dǎo)教師:</b></p><p><b>
4、 2013年7月5日</b></p><p><b> 一 設(shè)計(jì)思想</b></p><p> 操作系統(tǒng)界面應(yīng)該簡(jiǎn)潔、大方、美觀,操作系統(tǒng)實(shí)用性強(qiáng)。打開系統(tǒng)后,系統(tǒng)菜單居中,進(jìn)行操作后,操作結(jié)果顯示在界面的左端,并再次出現(xiàn)系統(tǒng)菜單,繼續(xù)進(jìn)行操作。錄入的圖書信息將會(huì)以文本文檔的格式儲(chǔ)存在相應(yīng)的文件夾下,每次操作結(jié)束后,都會(huì)保留當(dāng)前最新信息,從而保證系統(tǒng)的
5、實(shí)用性。</p><p> 二 系統(tǒng)完成功能及框圖</p><p> 系統(tǒng)完成功能:用戶根據(jù)功能輸入相應(yīng)的編號(hào),按回車鍵進(jìn)入功能選項(xiàng),根據(jù)提示完成操作。 </p><p><b> 三 核心算法及說(shuō)明</b></p><p> 1. 結(jié)構(gòu)體數(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> /*當(dāng)鏈表為NULL時(shí),進(jìn)行如下處理,此時(shí)鏈表頭會(huì)發(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("編號(hào)\n");</p><p> printf("%-10s\n",pos->id);</p><p> printf("書名\n");</p><p> printf("%-30s\
16、n",pos->name);</p><p> printf("作者\(yùn)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("價(jià)格\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> 四 界面設(shè)計(jì)</b></p><p><b> 五 結(jié)論</b></p><p> 本次程序設(shè)計(jì)是由二人共同完成,經(jīng)歷了從選擇題目,整體分析,畫流程圖,設(shè)計(jì)模板,自己編寫程序,上網(wǎng)查找標(biāo)準(zhǔn)代碼,完善所編
24、程序到調(diào)試程序的過程,其中我們有共同合作的歡樂,也有分工進(jìn)行編寫程序的喜悅,我們分工編寫不同的函數(shù),再將各自所編程序組成整體。編寫程序的過程真是一個(gè)幸福的過程,讓我找回了在編程道路上曾經(jīng)失去的信心,讓我感受到了偉大的團(tuán)結(jié)力量。</p><p><b> 參考資料</b></p><p> 譚浩強(qiáng)著,《C程序設(shè)計(jì)(第三版)》,清華大學(xué)出版社,2005</p&g
25、t;<p> 李丹程,劉瑩,那俊著,《C語(yǔ)言程序設(shè)計(jì)案例實(shí)踐》,清華大學(xué)出版社,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("編號(hào):");</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("價(jià)格:");</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("編號(hào)\n");</p><p> printf("%-10s\n",pos->
59、id);</p><p> printf("書名\n");</p><p> printf("%-30s\n",pos->name);</p><p> printf("作者\(yùn)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("價(jià)格\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("編號(hào):%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("價(jià)格:%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("請(qǐng)輸入要查詢的圖書編號(hào):");</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("請(qǐng)輸入要?jiǎng)h除的圖書編號(hào):");</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("請(qǐng)輸入要查詢的圖書書名:");</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("請(qǐng)輸入要查詢的圖書的作者名:");</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("輸入錯(cuò)誤,請(qǐng)重新輸入!\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.按編號(hào)查詢\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.清空?qǐng)D書列表\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請(qǐng)選擇:");</p><p><b> }</b></p>
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖書信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 圖書信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 圖書信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告--圖書信息管理系統(tǒng)設(shè)計(jì)
- 課程設(shè)計(jì)--圖書信息管理系統(tǒng)
- 圖書信息管理系統(tǒng)課程設(shè)計(jì)
- 圖書信息管理系統(tǒng) 課程設(shè)計(jì)
- 程序課程設(shè)計(jì)報(bào)告 圖書信息管理系統(tǒng)
- java圖書信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)---圖書信息管理系統(tǒng)
- 課程設(shè)計(jì)---圖書信息管理系統(tǒng)
- 課程設(shè)計(jì)--- 圖書信息管理系統(tǒng)設(shè)計(jì)
- 課程設(shè)計(jì)---圖書信息管理系統(tǒng)設(shè)計(jì)
- 圖書信息管理系統(tǒng)——c語(yǔ)言課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)報(bào)告---圖書信息管理系統(tǒng)
- c語(yǔ)言圖書信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)報(bào)告—圖書信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告—圖書信息管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告—圖書信息管理系統(tǒng)
- c++課程設(shè)計(jì)報(bào)告---圖書信息管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論