版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> C語言課程設(shè)計(jì)報(bào)告</b></p><p> 2011~2012學(xué)年第2學(xué)期</p><p> 課 程:C語言課程設(shè)計(jì)</p><p> 課程設(shè)計(jì)名稱:圖書管理系統(tǒng)</p><p> 2012年05月04日</p><p><b>
2、一、需求分析</b></p><p> 為了滿足圖書管理的要求,通過計(jì)算機(jī)技術(shù)給圖書管理人員和讀者借、還書帶來便利。使用c語言編寫了圖書此管理系統(tǒng)。本系統(tǒng)主要實(shí)現(xiàn)圖書信息管理的功能,通過此系統(tǒng)可對(duì)圖書館庫存圖書信息進(jìn)行管理和維護(hù)操作。實(shí)現(xiàn)了圖書館內(nèi)管理的幾乎所有功能,包括查詢、添加、刪除、修改圖書信息,以及對(duì)圖書信息的存檔、讀取、排序。所設(shè)計(jì)的系統(tǒng)以菜單方式工作,為用戶提供清晰的使用提示,依據(jù)用戶的
3、選擇來進(jìn)行各種處理,并且在此過程中能夠盡可能的處理用戶使用過程中可能出現(xiàn)的異常情況。圖書信息包括作者名、書名、出版社、出版時(shí)間、圖書編號(hào)、價(jià)格、借書人姓名、借書人性別、借書人學(xué)號(hào)。圖書信息的錄入和顯示要求有一定的規(guī)范格式,錄入的圖書信息用文件形式保存,并可以對(duì)其進(jìn)行瀏覽、查詢、修改、刪除等基本操作。整個(gè)程序?qū)崿F(xiàn)鏈表操作,對(duì)圖書信息的操作逐個(gè)地進(jìn)行。</p><p><b> 二、算法設(shè)計(jì):</b
4、></p><p><b> 1.設(shè)計(jì)思想:</b></p><p> 整個(gè)系統(tǒng)制造的而過程中,涉及了較多C語言知識(shí)點(diǎn),對(duì)于不同的數(shù)據(jù)類型、程序控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)作以分析和總結(jié),并結(jié)合這個(gè)課題進(jìn)行綜合的應(yīng)用,在一定程度上做到了對(duì)所學(xué)知識(shí)融會(huì)貫通。進(jìn)一步加深、鞏固了所學(xué)的專業(yè)的基本理論知識(shí),培養(yǎng)了綜合分析問題、解決問題的能力。在設(shè)計(jì)程序時(shí),實(shí)現(xiàn)了程序的模塊化、
5、結(jié)構(gòu)化。在主函數(shù)中調(diào)用各種子函數(shù),操作界面簡單,易操作。 </p><p><b> 2.設(shè)計(jì)表示:</b></p><p> (1)整個(gè)系統(tǒng)除了主函數(shù)外,另外還有各種功能子函數(shù),利用循環(huán)語句do-while()和選擇語句switch()實(shí)現(xiàn)各個(gè)子函數(shù)的調(diào)用,系統(tǒng)根據(jù)輸入的數(shù)字選項(xiàng)來調(diào)用相應(yīng)的函數(shù),以實(shí)現(xiàn)相應(yīng)的功能。主函數(shù)中首先從文件讀取信息到鏈表中,以用于后面其
6、他函數(shù)的操作??傮w主要實(shí)現(xiàn)了圖書的錄入、存儲(chǔ)、查詢、添加、刪除、修改、排序等功能。</p><p> ?。?)在主函數(shù)中選擇管理員登錄或者學(xué)生登錄,并且輸入正確密碼后才可以進(jìn)入系統(tǒng),若連續(xù)3次輸入密碼錯(cuò)誤將會(huì)被強(qiáng)制退出。</p><p> (3) Create_Books_Doc();這是一個(gè)指針函數(shù),它主要實(shí)現(xiàn)了鏈表的創(chuàng)建,它返回的時(shí)一個(gè)單向鏈表的頭。其他函數(shù)調(diào)用時(shí)只需調(diào)用它返回的頭即
7、可。Clear();此為清屏操作,在運(yùn)行中可以隨時(shí)將屏幕清空。</p><p> (4) Print_Book_Doc ();這個(gè)函數(shù)為鏈表的輸出函數(shù),把鏈表的頭傳給函數(shù)后,可以表格的形式輸出整個(gè)鏈表的所有信息。、</p><p> (5)save();這個(gè)函數(shù)為保存信息到文件的函數(shù),使用時(shí)將鏈表的頭傳給函數(shù),函數(shù)可將整個(gè)鏈表的所有信息存入到磁盤文件中。并覆蓋掉源文件,以便以后調(diào)用。R
8、ead()這個(gè)函數(shù)為讀取文件的函數(shù),將文件中的數(shù)據(jù)讀入鏈表中。 </p><p> (7)search_book1();search_book2();search_book3();search_book4();search_book5();這五個(gè)函數(shù)為查詢圖書信息函數(shù),它們分別按編號(hào)、書名、作者、借書人姓名、借書人學(xué)號(hào)進(jìn)行查詢。查詢到信息后返回信息所在節(jié)點(diǎn),查詢不到則返回空指針。</p>&l
9、t;p> (8)InsertDoc();Sorting_order1();Sorting_order2();DeleteDoc ();info_change ();這四個(gè)函數(shù)為功能函數(shù),InsertDoc();添加圖書信息、Sorting_order1();將圖書按編號(hào)排序、Sorting_order2();將圖書按價(jià)格排序、DeleteDoc ();刪除圖書信息、info_change ();修改圖書信息。調(diào)用時(shí)將鏈表頭指針傳
10、遞給函數(shù),函數(shù)返回經(jīng)過功能操作后的頭指針。</p><p><b> 3.結(jié)構(gòu)體系設(shè)計(jì):</b></p><p><b> 以下為部分流程圖:</b></p><p> 圖書管理系統(tǒng)主界面流程圖</p><p> 管理員版圖書管理系統(tǒng)流程圖</p><p> 圖書查
11、詢系統(tǒng)主界面流程圖</p><p><b> 排序頁面</b></p><p> 5.設(shè)計(jì)過程中的想法與程序中的不足:</p><p> 總的來說這個(gè)程序大致實(shí)現(xiàn)了題目的要求,但是這套程序仍然存在著很多的問題與不足。比如,程序中主函數(shù)寫的有點(diǎn)繁瑣,有太多的嵌套,不是那么井然有序,條理清晰,程序注釋也不是很完善,對(duì)信息處理功能還有些不足之處
12、,提示信息不明確。還有就是沒能做到模糊查詢。</p><p> 這個(gè)系統(tǒng)主要是參照課本手機(jī)通訊錄模版編寫的,同時(shí)也得到了老師和同學(xué)的一些幫助。我在做系統(tǒng)的過程中也遇到了很多問題,有的是知識(shí)不足,有的是考慮不夠周全。事實(shí)證明,只靠自己的知識(shí)面還是很窄,獨(dú)立處理問題能力不是很強(qiáng),以后還要加強(qiáng)對(duì)c語言的學(xué)習(xí)。 </p><p> 我認(rèn)為對(duì)于C語言編寫的程序來說,使用方法大致都是一樣的,所以如
13、果要改進(jìn)的話,就是要改進(jìn)一些算法,盡量把界面編寫清楚,提示信息全面,方便易用。</p><p><b> 三、調(diào)試與測試:</b></p><p> 上機(jī)操作(部分截圖)</p><p> 系統(tǒng)主界面(選擇數(shù)字進(jìn)入,退出系統(tǒng))</p><p> 選擇1輸入密碼進(jìn)入管理員版系統(tǒng),然后出現(xiàn)功能菜單;</p>
14、;<p> 選擇1進(jìn)入錄入系統(tǒng),錄入后瀏覽;</p><p><b> 選擇8進(jìn)行清屏;</b></p><p> 由于版面原因,其他操作頁面可以上機(jī)運(yùn)行進(jìn)行操作,在此就不再一一列出。</p><p><b> 四、小節(jié):</b></p><p> 在這一個(gè)星期的實(shí)踐中,通過
15、編寫這個(gè)圖書管理系統(tǒng),我體會(huì)到了c語言學(xué)習(xí)的實(shí)用性。將理論和實(shí)踐結(jié)合在一起,用先進(jìn)的計(jì)算機(jī)工具方便人們的生活。C語言程序的編寫首先要從大局考慮,把自己編寫整個(gè)程序的思想都寫在草稿上,這樣有助于自己編寫程序,在編寫時(shí)要完善注釋,方便其他人理解程序。編寫的程序從理論上來說并沒有錯(cuò),但一上機(jī)就問題不斷。甚至有些課本上的知識(shí)照搬不變,也不能得到正確的結(jié)果。有時(shí)一個(gè)程序改了一遍又一遍,但就是不能成功,編程顯得枯燥乏味,看似簡單的程序題,在調(diào)試時(shí)卻
16、屢屢出錯(cuò)。經(jīng)反復(fù)的修改后,結(jié)果正確了,這時(shí)所有的乏味都顯得那么無力,一切都是值得的。</p><p> 我認(rèn)為,開發(fā)一套系統(tǒng),最重要的是細(xì)心,并且思考要全面,結(jié)合實(shí)際,充分考慮到客戶的需求和現(xiàn)實(shí)意義。不管什么系統(tǒng),只用運(yùn)用到實(shí)際應(yīng)用中,才具有現(xiàn)實(shí)意義。 所以c語言程序的實(shí)用性很強(qiáng),我們以后還要更加努力認(rèn)真地學(xué)習(xí)編程語言。</p><p><b> 附錄:</b>&
17、lt;/p><p><b> 源代碼:</b></p><p> #include<stdio.h></p><p> #include<math.h></p><p> #include<string.h></p><p> #include<st
18、dlib.h></p><p> struct books_list{</p><p> char author[20]; /*作者名*/</p><p> char bookname[20]; /*書名*/ </p><p> char publisher[20];
19、 /*出版單位*/</p><p> char pbtime[15]; /*出版時(shí)間*/</p><p> char booknum[10]; /*圖書編號(hào)*/</p><p> float price; /*價(jià)格*/</p><p> char
20、 lendername[20]; /*借書人姓名*/</p><p> char lendersex[10]; /*借書人性別*/</p><p> char lendernum[20]; /*借書人學(xué)號(hào)*/</p><p> struct books_list * next; /*鏈表的指針域
21、*/</p><p><b> };</b></p><p><b> /*清屏函數(shù)*/</b></p><p> void Clear()</p><p><b> { </b></p><p> system("cls"
22、);</p><p><b> }</b></p><p> /*保存數(shù)據(jù)至文件*/</p><p> void save(struct books_list * head)</p><p><b> {</b></p><p> struct books_list
23、 *p;</p><p><b> FILE *fp;</b></p><p><b> p=head;</b></p><p> fp=fopen("f1.txt","w+"); </p><p> fprintf(fp,"%20s%20s
24、%20s%20s%20s%20f%20s%20s%20s",p->booknum,p->bookname,p->author,p->publisher,p->pbtime,p->price,p->lendername,p->lendersex,p->lendernum);</p><p> while(p->next!= NULL){<
25、/p><p> p=p->next;</p><p> fprintf(fp,"%20s%20s%20s%20s%20s%20f%20s%20s%20s",p->booknum,p->bookname,p->author,p->publisher,p->pbtime,p->price,p->lendername,p->
26、;lendersex,p->lendernum);</p><p><b> }</b></p><p> fclose(fp);</p><p> printf("已將數(shù)據(jù)保存到 f1.txt 文件\n");</p><p><b> }</b></p>
27、;<p><b> /*插入*/</b></p><p> struct books_list * InsertDoc(struct books_list * head,struct books_list * book)</p><p><b> {</b></p><p><b> cha
28、r a;</b></p><p> struct books_list * ptr,* p;</p><p><b> p=head;</b></p><p><b> ptr=book;</b></p><p> if(head==NULL){</p><p
29、><b> head=ptr;</b></p><p> head->next=NULL;</p><p><b> }</b></p><p><b> else{</b></p><p> while(p->next!=NULL)</p&g
30、t;<p> p=p->next;</p><p> p->next=ptr;</p><p> ptr->next=NULL;</p><p><b> }</b></p><p> printf("是否保存插入的圖書信息?(Y/N)");</p>
31、;<p> getchar();</p><p> scanf("%c",&a);</p><p> if(a=='Y'||a=='y')</p><p> save(head);</p><p><b> else</b></p&
32、gt;<p> printf("\n未保存插入后數(shù)據(jù)!\n\n");</p><p> return head;</p><p><b> }</b></p><p> /*新建鏈表頭節(jié)點(diǎn)*/</p><p> struct books_list * Create_Books_
33、Doc()</p><p><b> {</b></p><p> struct books_list * head,*p;</p><p> int size=sizeof(struct books_list);</p><p> head=NULL;</p><p> char fl
34、ag='Y';</p><p> while(flag=='Y'||flag=='y'){</p><p> p=(struct books_list *)malloc(sizeof(struct books_list));/*開辟新空間,存入數(shù)據(jù),添加進(jìn)鏈表*/</p><p><b> here0:
35、</b></p><p> printf("\n 請(qǐng)輸入圖書編號(hào):");</p><p> getchar();</p><p> scanf("%s",p->booknum);</p><p> printf("\n
36、 請(qǐng)輸入圖書書名:");</p><p> getchar();</p><p> scanf("%s",p->bookname);</p><p> printf("\n 請(qǐng)輸入圖書作者名:");</p><p>
37、 getchar();</p><p> scanf("%s",p->author);</p><p> printf("\n 請(qǐng)輸入圖書出版社:");</p><p> getchar();</p><p> scanf("%s"
38、,p->publisher);</p><p> printf("\n 請(qǐng)輸入圖書出版時(shí)間:");</p><p> getchar();</p><p> scanf("%s",p->pbtime);</p><p> printf("
39、;\n 請(qǐng)輸入圖書價(jià)格:");</p><p> getchar();</p><p> if(scanf("%f",&p->price)!=1){</p><p> printf("價(jià)格輸入有誤,請(qǐng)重新輸入!");</p><p>
40、 goto here0;</p><p><b> }</b></p><p> printf("\n 請(qǐng)輸入借書人姓名:");</p><p> getchar();</p><p> scanf("%s",p->lendern
41、ame); </p><p> printf("\n 請(qǐng)輸入借書人性別:");</p><p> getchar();</p><p> scanf("%s",p->lendersex); </p><p> printf("\n
42、 請(qǐng)輸入借書人學(xué)號(hào):");</p><p> getchar();</p><p> scanf("%s",p->lendernum);</p><p> printf("\n");</p><p> head=InsertDoc(head,p);<
43、;/p><p> printf(" ━━━━ 添加成功!━━━━");</p><p> printf("\n 繼續(xù)添加(輸入‘Y’或‘y’繼續(xù),否則結(jié)束)?");</p><p> getchar();</p><p
44、> scanf("%c",&flag);</p><p> printf("\n");</p><p><b> }</b></p><p> return head;</p><p><b> }</b></p><
45、;p><b> /*修改操作*/</b></p><p> void info_change(struct books_list * head)</p><p><b> {</b></p><p> struct books_list * p;</p><p> int pandu
46、an=0; </p><p> char temp[20],a;</p><p><b> p=head;</b></p><p> if(head==NULL)</p><p> printf(" ━━━━ 圖書庫為空!━━━━\n");</p><p&
47、gt;<b> else{</b></p><p> printf("請(qǐng)輸入要修改圖書的書名:");</p><p> getchar();</p><p> scanf("%s",temp);</p><p> while(p!=NULL){</p>&l
48、t;p> if(strcmp(p->bookname,temp)==0){</p><p> printf("\n 請(qǐng)輸入修改后的圖書編號(hào):");</p><p> getchar();</p><p> scanf("%s",p->booknum);</p
49、><p> printf("\n 請(qǐng)輸入修改后的圖書書名:");</p><p> getchar();</p><p> scanf("%s",p->bookname);</p><p> printf("\n
50、 請(qǐng)輸入修改后的圖書作者名:");</p><p> getchar();</p><p> scanf("%s",p->author);</p><p> printf("\n 請(qǐng)輸入修改后的圖書出版社:");</p><p> get
51、char();</p><p> scanf("%s",p->publisher);</p><p> printf("\n 請(qǐng)輸入修改后的圖書出版時(shí)間:");</p><p> getchar();</p><p> scanf("%s&q
52、uot;,p->pbtime);</p><p> printf("\n 請(qǐng)輸入修改后的圖書價(jià)格:");</p><p> getchar();</p><p> scanf("%f",&p->price);</p><p> print
53、f("\n 請(qǐng)輸入修改后的借書人姓名:");</p><p> getchar();</p><p> scanf("%s",p->lendername); </p><p> printf("\n 請(qǐng)輸入修改后的借書人性別:&q
54、uot;);</p><p> getchar();</p><p> scanf("%s",p->lendersex); </p><p> printf("\n 請(qǐng)輸入修改后的借書人學(xué)號(hào):");</p><p> getchar();</p&
55、gt;<p> scanf("%s",p->lendernum);</p><p> printf("\n");</p><p> getchar();</p><p> panduan=1;</p><p><b> }</b></p>
56、<p> p=p->next;</p><p><b> }</b></p><p><b> }</b></p><p> if(panduan==0){</p><p> printf("\n ━━━━ 沒有此圖書記
57、錄! ━━━━\n\n");</p><p><b> }</b></p><p><b> else{</b></p><p> printf("是否保存修改后的圖書信息?(Y/N)");</p><p> scanf("%c",&
58、;a);</p><p> if(a=='Y'||a=='y')</p><p> save(head);</p><p><b> else</b></p><p> printf("\n未保存修改后數(shù)據(jù)!\n\n");</p><p>
59、;<b> }</b></p><p><b> return;</b></p><p><b> }</b></p><p> /*按照?qǐng)D書號(hào)查詢*/</p><p> void search_book1(struct books_list *head)</p
60、><p><b> {</b></p><p><b> int a=0;</b></p><p> struct books_list * p;</p><p> char temp[20];</p><p><b> p=head;</b>&l
61、t;/p><p> if(head==NULL)</p><p> printf(" ━━━━ 圖書庫為空!━━━━\n");</p><p><b> else{</b></p><p> printf("請(qǐng)輸入您要查找圖書的編號(hào): ");</p>
62、;<p> getchar();</p><p> scanf("%s",temp);</p><p> while(p!= NULL){</p><p> if(strcmp(p->booknum,temp)==0){</p><p> printf("\n圖書已找到!\n&quo
63、t;);</p><p> printf("\n");</p><p> printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"); </p><p> printf("┃圖書號(hào)┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出
64、版時(shí)間 ┃ 價(jià)格 ┃借書人姓名┃借書人性別┃ 借書人學(xué)號(hào) ┃\n"); </p><p> printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━━╋━━━━━╋━━━━━╋━━━━━━┫\n");</p><p> printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.
65、12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-12.12s┃\n",p->booknum,p->bookname,p->author,p->publisher,p->pbtime,p->price,p->lendername,p->lendersex,p->lendernum);</p><p> printf("┗━━━
66、┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━━━━━┻━━━━━┻━━━━━━┛\n");</p><p> printf("\n");</p><p><b> a++;</b></p><p><b> }</b></p><p> p=
67、p->next;</p><p> if(p==NULL&&a==0)</p><p> printf("\n查詢完畢,未找到所要查詢的信息!\n");</p><p><b> } </b></p><p><b> }</b></p>
68、<p><b> return;</b></p><p><b> }</b></p><p> /*按照?qǐng)D書名查詢*/</p><p> void search_book2(struct books_list *head)</p><p><b> {</b
69、></p><p><b> int a=0;</b></p><p> struct books_list * p;</p><p> char temp[20];</p><p><b> p=head;</b></p><p> if(head==NUL
70、L)</p><p> printf(" ━━━━ 圖書庫為空!━━━━\n");</p><p><b> else{</b></p><p> printf("請(qǐng)輸入您要查找書本的名稱: ");</p><p> getchar();</p>
71、;<p> scanf("%s",temp);</p><p> while(p!= NULL){</p><p> if(strcmp(p->bookname,temp)==0){</p><p> printf("\n圖書已找到!\n");</p><p> print
72、f("\n");</p><p> printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"); </p><p> printf("┃圖書號(hào)┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出版時(shí)間 ┃ 價(jià)格 ┃借書人姓名┃借書人性別┃ 借書人學(xué)號(hào)
73、┃\n"); </p><p> printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━━╋━━━━━╋━━━━━╋━━━━━━┫\n");</p><p> printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-1
74、2.12s┃\n",p->booknum,p->bookname,p->author,p->publisher,p->pbtime,p->price,p->lendername,p->lendersex,p->lendernum);</p><p> printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━
75、━━━━┻━━━━━┻━━━━━━┛\n");</p><p> printf("\n");</p><p><b> a++;</b></p><p><b> }</b></p><p> p=p->next;</p><p>
76、 if(p==NULL&&a==0)</p><p> printf("\n查詢完畢,未找到所要查詢的信息!\n");</p><p><b> } </b></p><p><b> }</b></p><p><b> return;<
77、;/b></p><p><b> }</b></p><p> /*按照?qǐng)D書作者查詢*/</p><p> void search_book3(struct books_list *head)</p><p><b> {</b></p><p><b&
78、gt; int a=0;</b></p><p> struct books_list * p;</p><p> char temp[20];</p><p><b> p=head;</b></p><p> if(head==NULL)</p><p> printf
79、(" ━━━━ 圖書庫為空!━━━━\n");</p><p><b> else{</b></p><p> printf("請(qǐng)輸入您要查找圖書的作者: ");</p><p> getchar();</p><p> scanf("%s&qu
80、ot;,temp);</p><p> while(p!= NULL){</p><p> if(strcmp(p->author,temp)==0){</p><p> printf("\n圖書已找到!\n");</p><p> printf("\n");</p><
81、;p> printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"); </p><p> printf("┃圖書號(hào)┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出版時(shí)間 ┃ 價(jià)格 ┃借書人姓名┃借書人性別┃ 借書人學(xué)號(hào) ┃\n"); </p><p>
82、 printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━━╋━━━━━╋━━━━━╋━━━━━━┫\n");</p><p> printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-12.12s┃\n",p->booknum,p-&g
83、t;bookname,p->author,p->publisher,p->pbtime,p->price,p->lendername,p->lendersex,p->lendernum);</p><p> printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━━━━━┻━━━━━┻━━━━━━┛\n");</
84、p><p> printf("\n");</p><p><b> a++;</b></p><p><b> }</b></p><p> p=p->next;</p><p> if(p==NULL&&a==0)</p
85、><p> printf("\n查詢完畢,未找到所要查詢的信息!\n");</p><p><b> } </b></p><p><b> }</b></p><p><b> return;</b></p><p><b
86、> }</b></p><p> /*按照借書人姓名查詢*/</p><p> void search_book4(struct books_list *head)</p><p><b> {</b></p><p><b> int a=0;</b></p>
87、;<p> struct books_list * p;</p><p> char temp[20];</p><p><b> p=head;</b></p><p> if(head==NULL)</p><p> printf(" ━━━━ 圖書庫為空!━━━━
88、\n");</p><p><b> else{</b></p><p> printf("請(qǐng)輸入您要查找的圖書借書人姓名: ");</p><p> getchar();</p><p> scanf("%s",temp);</p><p&g
89、t; while(p!= NULL){</p><p> if(strcmp(p->lendername,temp)==0){</p><p> printf("\n圖書已找到!\n");</p><p> printf("\n");</p><p> printf("┏━━━
90、┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"); </p><p> printf("┃圖書號(hào)┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出版時(shí)間 ┃ 價(jià)格 ┃借書人姓名┃借書人性別┃ 借書人學(xué)號(hào) ┃\n"); </p><p> printf("┣━━━╋━━━━━
91、╋━━━━━╋━━━━━╋━━━━━━╋━━━━╋━━━━━╋━━━━━╋━━━━━━┫\n");</p><p> printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-12.12s┃\n",p->booknum,p->bookname,p->author,p
92、->publisher,p->pbtime,p->price,p->lendername,p->lendersex,p->lendernum);</p><p> printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━━━━━┻━━━━━┻━━━━━━┛\n");</p><p> printf(
93、"\n");</p><p><b> a++;</b></p><p><b> }</b></p><p> p=p->next;</p><p> if(p==NULL&&a==0)</p><p> printf(&
94、quot;\n查詢完畢,未找到所要查詢的信息!\n");</p><p><b> } </b></p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p&g
95、t;<p> /*按照借書人學(xué)號(hào)查詢*/</p><p> void search_book5(struct books_list *head)</p><p><b> {</b></p><p><b> int a=0;</b></p><p> struct book
96、s_list * p;</p><p> char temp[20];</p><p><b> p=head;</b></p><p> if(head==NULL)</p><p> printf(" ━━━━ 圖書庫為空!━━━━\n");</p><
97、;p><b> else{</b></p><p> printf("請(qǐng)輸入您要查找圖書的借書人學(xué)號(hào): ");</p><p> getchar();</p><p> scanf("%s",temp);</p><p> while(p!= NULL){</
98、p><p> if(strcmp(p->lendernum,temp)==0){</p><p> printf("\n圖書已找到!\n");</p><p> printf("\n");</p><p> printf("┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳
99、━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"); </p><p> printf("┃圖書號(hào)┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出版時(shí)間 ┃ 價(jià)格 ┃借書人姓名┃借書人性別┃ 借書人學(xué)號(hào) ┃\n"); </p><p> printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━━╋━
100、━━━━╋━━━━━╋━━━━━━┫\n");</p><p> printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-12.12s┃\n",p->booknum,p->bookname,p->author,p->publisher,p->pbtim
101、e,p->price,p->lendername,p->lendersex,p->lendernum);</p><p> printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━━━━━┻━━━━━┻━━━━━━┛\n");</p><p> printf("\n");</p>
102、<p><b> a++;</b></p><p><b> }</b></p><p> p=p->next;</p><p> if(p==NULL&&a==0)</p><p> printf("\n查詢完畢,未找到所要查詢的信息!\n&
103、quot;);</p><p><b> } </b></p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p><p><b> /*
104、刪除操作*/</b></p><p> struct books_list * DeleteDoc(struct books_list * head)</p><p><b> {</b></p><p> struct books_list * ptr1,* ptr2;</p><p><b&g
105、t; int a=0;</b></p><p><b> char b;</b></p><p> char temp[20];</p><p> printf(" [請(qǐng)輸入您要?jiǎng)h除的圖書書名]:");</p><p> scanf(&qu
106、ot;%s",temp);</p><p> while(head!=NULL&&strcmp(head->bookname,temp)==0){</p><p> ptr2=head;</p><p> head=head->next;</p><p> free(ptr2);</p>
107、;<p><b> a=1;</b></p><p> printf("已成功刪除!");</p><p><b> }</b></p><p> if(head==NULL){</p><p> printf("\n鏈表為空,無法刪除!\n\n
108、");</p><p> return NULL;</p><p><b> }</b></p><p> ptr1=head;</p><p> ptr2=head->next;</p><p> while(ptr2!=NULL){</p><p&
109、gt; if(strcmp(ptr2->bookname,temp)==0){</p><p> ptr1->next=ptr2->next;</p><p> free(ptr2);</p><p><b> a=1;</b></p><p> printf("已成功刪除!&quo
110、t;);</p><p><b> }</b></p><p><b> else</b></p><p> ptr1=ptr2;</p><p> ptr2=ptr1->next;</p><p><b> }</b></p>
111、;<p> if(ptr2==NULL&&a==0){</p><p> printf("\n未找到要?jiǎng)h除的數(shù)據(jù)!\n\n");</p><p> goto here10;</p><p><b> }</b></p><p> printf("是否保
112、存刪除后的圖書信息?(Y/N)");</p><p> getchar();</p><p> scanf("%c",&b);</p><p> if(b=='Y'||b=='y')</p><p> save(head);</p><p>
113、<b> else</b></p><p> printf("\n未保存刪除后數(shù)據(jù)!\n\n");</p><p><b> here10:</b></p><p> return head;</p><p><b> }</b></p>
114、;<p><b> /*瀏覽*/</b></p><p> void Print_Book_Doc(struct books_list * head)</p><p><b> {</b></p><p> struct books_list * p1;</p><p> i
115、f(head==NULL){</p><p> printf("\n鏈表為空,無法輸出!\n\n");</p><p><b> return;</b></p><p><b> }</b></p><p> printf("┏━━━┳━━━━━┳━━━━━┳━
116、━━━━┳━━━━━━┳━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"); </p><p> printf("┃圖書號(hào)┃ 書 名 ┃ 作 者┃ 出版單位 ┃ 出版時(shí)間 ┃ 價(jià)格 ┃借書人姓名┃借書人性別┃ 借書人學(xué)號(hào) ┃\n"); </p><p> printf("┣━━━╋━━━━━╋━━━━━╋━━━━━╋━
117、━━━━━╋━━━━╋━━━━━╋━━━━━╋━━━━━━┫\n");</p><p> for(p1=head;p1;p1=p1->next)</p><p> printf("┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-12.12s┃\n",p1-&
118、gt;booknum,p1->bookname,p1->author,p1->publisher,p1->pbtime,p1->price,p1->lendername,p1->lendersex,p1->lendernum);</p><p> printf("┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━━━━━┻━━━━━
119、┻━━━━━━┛\n");</p><p> printf("\n");</p><p><b> }</b></p><p><b> /*讀文件*/</b></p><p> struct books_list * Read()</p><
120、;p><b> {</b></p><p> struct books_list *p1,*head=NULL,*tail;</p><p> FILE * fp;</p><p> if((fp=fopen("f1.txt","r"))==NULL){ </p><p&
121、gt; printf("File open error!\n");</p><p> printf("此時(shí)文件中無圖書信息,請(qǐng)管理員先輸入圖書信息并進(jìn)行保存。\n\n");</p><p><b> goto end;</b></p><p><b> }</b></p
122、><p> while(!feof(fp)){</p><p> p1=(struct books_list *)malloc(sizeof(struct books_list));</p><p> fscanf(fp,"%s%s%s%s%s%f%s%s%s",p1->booknum,p1->bookname,p1->aut
123、hor,p1->publisher,p1->pbtime,&p1->price,p1->lendername,p1->lendersex,p1->lendernum);</p><p> if(head==NULL)</p><p><b> head=p1;</b></p><p><b&
124、gt; else</b></p><p> tail->next=p1;</p><p><b> tail=p1; </b></p><p><b> }</b></p><p> tail->next=NULL; </p><p> f
125、close(fp);</p><p><b> end:</b></p><p> return head;</p><p><b> }</b></p><p> /*按照?qǐng)D書價(jià)格排序*/</p><p> struct books_list * Sorting_
126、order1(struct books_list * head)</p><p><b> {</b></p><p> struct books_list *p1,*p2,*p3,*p4,*p5,*p6,*p7;</p><p><b> int x=1;</b></p><p><b
127、> char b;</b></p><p> for(p1=head;p1->next!=NULL;p4=p1,p1=p1->next){</p><p><b> p3=p1;</b></p><p> for(p2=p1->next,p5=p7=p2;p2!=NULL;p7=p2,p2=p2-&g
128、t;next){</p><p> if(p1->price>=p2->price){</p><p><b> p3=p2;</b></p><p><b> p5=p7;</b></p><p><b> }</b></p><
129、p><b> }</b></p><p> if(p3!=p1){ /*說明p1->price>=p2->price成立*/</p><p> if(x&&p1==head){ /*對(duì)p1==head時(shí)排序的處理*/</p><p> p6=p1->next
130、;</p><p> p1->next=p3->next;</p><p> p3->next=p6;</p><p> p5->next=p1;</p><p><b> head=p3;</b></p><p><b> p1=p3;</b&g
131、t;</p><p><b> x=0;</b></p><p><b> }</b></p><p> else{ /*對(duì)p1!=head時(shí)排序的處理*/</p><p> p6=p1->next;</p><p>
132、p1->next=p3->next;</p><p> p3->next=p6;</p><p> p4->next=p3;</p><p> p5->next=p1;</p><p><b> p1=p3;</b></p><p><b> }&
133、lt;/b></p><p><b> }</b></p><p><b> }</b></p><p> printf("是否保存排序后的圖書信息?(Y/N)");</p><p> getchar();</p><p> scanf(&
134、quot;%c",&b);</p><p> if(b=='Y'||b=='y')</p><p> save(head);</p><p><b> else</b></p><p> printf("\n未保存排序后數(shù)據(jù)!\n\n");&l
135、t;/p><p> return head;</p><p><b> }</b></p><p> /*按照書號(hào)排序*/</p><p> struct books_list * Sorting_order2(struct books_list * head)</p><p><b&g
136、t; {</b></p><p> struct books_list *p1,*p2,*p3,*p4,*p5,*p6,*p7;</p><p><b> int x=1;</b></p><p><b> char b;</b></p><p> for(p1=head;p1
137、->next!=NULL;p4=p1,p1=p1->next){</p><p><b> p3=p1;</b></p><p> for(p2=p1->next,p5=p7=p2;p2!=NULL;p7=p2,p2=p2->next){</p><p> if(strcmp(p1->booknum,p2-&
138、gt;booknum )>0){</p><p><b> p3=p2;</b></p><p><b> p5=p7;</b></p><p><b> }</b></p><p><b> }</b></p><p&g
139、t; if(p3!=p1){</p><p> if(x&&p1==head){</p><p> p6=p1->next;</p><p> p1->next=p3->next;</p><p> p3->next=p6;</p><p> p5->ne
140、xt=p1;</p><p><b> head=p3;</b></p><p><b> p1=p3;</b></p><p><b> x=0;</b></p><p><b> }</b></p><p><b&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言圖書管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c語言圖書管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 圖書管理系統(tǒng)-c語言課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)--圖書管理系統(tǒng)
- 小型圖書管理系統(tǒng)c語言課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)--圖書管理系統(tǒng)
- c語言課程設(shè)計(jì)(圖書管理系統(tǒng))
- c語言課程設(shè)計(jì)-圖書管理系統(tǒng)
- c語言課程設(shè)計(jì)---圖書管理系統(tǒng)
- c語言課程設(shè)計(jì)報(bào)告---圖書管理信息
- c語言課程設(shè)計(jì)--圖書管理
- c課程設(shè)計(jì)報(bào)告-- 圖書管理系統(tǒng)
- c語言課程設(shè)計(jì)---某高校圖書管理系統(tǒng)
- c++課程設(shè)計(jì)報(bào)告-圖書管理系統(tǒng)
- c#圖書管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c課程設(shè)計(jì)---圖書管理系統(tǒng)課程設(shè)計(jì)
- c++課程設(shè)計(jì)報(bào)告--小型圖書管理系統(tǒng)
- c++課程設(shè)計(jì)--圖書管理系統(tǒng)
- 圖書管理系統(tǒng)c++課程設(shè)計(jì)
- c++圖書管理系統(tǒng)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論