版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 《數(shù)據(jù)結(jié)構(gòu)》</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p><b> ?。▓D書管理系統(tǒng))</b></p><p><b> 目錄</b></p><p> 一.需求分析…………………………………
2、…………………….3</p><p> 二.概要設(shè)計(jì)……………………………………………………….3</p><p> 三.詳細(xì)設(shè)計(jì)……………………………………………………….4</p><p> 四.調(diào)試分析……………………………………………………….6</p><p> 五.用戶使用說明………………………………………………….6&l
3、t;/p><p> 六.測試結(jié)果……………………………………………………….7</p><p> 七.附錄:帶注釋的源代碼……………………………………….8</p><p><b> 一.需求分析</b></p><p> 大學(xué)的圖書館藏書是非常龐大的,原始的人工借書也是非常麻煩的,因此用一種自動系統(tǒng)來管理圖書是非常
4、有必要的,所以設(shè)計(jì)一個圖書管理系統(tǒng),要能夠自如管理借書,還書,以及注冊,注銷書本,這樣就能節(jié)省很多資源,提高效率。</p><p><b> 明確規(guī)定:</b></p><p> 1.每種書的登記內(nèi)容包括書號、書名、著作者、現(xiàn)存量和庫存量;</p><p> 2.對書號建立索引表(線性表)以提高查找效率;</p><p
5、> 3.系統(tǒng)主要功能如下:</p><p> *采編入庫:新購一種書,確定書號后,登記到圖書帳目表中,如果表中已有,則只將庫存量增加;*借閱:如果一種書的現(xiàn)存量大于0,則借出一本,登記借閱者的書證號和歸還期限,改變現(xiàn)存量;*歸還:注銷對借閱者的登記,改變該書的現(xiàn)存量。</p><p><b> 二.概要設(shè)計(jì)</b></p><p&g
6、t; 1.本題中用到了以下函數(shù)和結(jié)構(gòu)體:</p><p> 本程序首先命名頭文件:</p><p> #include <stdio.h> </p><p> #include <stdlib.h> </p><p> #include <conio.h> </p><p>
7、; 以實(shí)現(xiàn)對各種函數(shù)的調(diào)用以及可能用到的各種循環(huán)。</p><p> 用“struct BOOK”結(jié)構(gòu)體,用來存放書籍以及借書信息;</p><p> 并用到“void page_title”的頁頭函數(shù),通過“void book_out”, “void book_in”來實(shí)現(xiàn)對書本的借出以及還書,定義“search_book”來實(shí)現(xiàn)對書本各種信息的搜索任務(wù),“void book_ad
8、d”實(shí)現(xiàn)對書本的購進(jìn)時的注冊,用“void book_del”實(shí)現(xiàn)對書本的注銷。最后通過“goto menu”語句跳出整個循環(huán)語句,在各種操作做完后能夠返回到主菜單。用到goto語句原則上一般不符合結(jié)構(gòu)化一些規(guī)定,但是此題中大大提高了效率,因此我采用了。</p><p> 2. 主程序的流程及各程序模塊之間的層次:</p><p> 本程序運(yùn)用到的是用數(shù)組作為線性表的一種代替方式,實(shí)現(xiàn)
9、各種查詢,對各種數(shù)據(jù)的管理,運(yùn)用線性表的話可能會更加簡便,但是我在用了數(shù)組代替后發(fā)現(xiàn)其實(shí)這樣更容易看懂?!皊truct Book”結(jié)構(gòu)體就保證了各種信息的存放和管理,接下來便是定義各種函數(shù)來一一實(shí)現(xiàn)對書籍的借出,歸還,注銷和注冊,而在這些函數(shù)中,有包括了一些小的函數(shù)以及循環(huán),例如在搜索函數(shù)中,我用到了“for , if”等循環(huán)語句,當(dāng)然少不了數(shù)組的添加,一個大的程序就是這些小的部分而組成的。</p><p>
10、也可以簡單的歸納為:整個程序是由搜索,借書,還書,注冊書,注銷書這幾個模塊組成,這些又都是在整個“struct Book”結(jié)構(gòu)體中。</p><p><b> 三.詳細(xì)設(shè)計(jì)</b></p><p> struct BOOK為主結(jié)構(gòu)體;</p><p> void page_title(char *menu_item)為頁頭函數(shù)也就是登錄界
11、面的顯示; </p><p> void return_confirm(void)為返回確認(rèn)函數(shù),以便返回主菜單;</p><p> int search_book(void)為搜索書本信息的變量定義;</p><p> void book_out(void)為借出書本的變量定義;</p><p> void book_in(void
12、)為歸還書本的變量定義;</p><p> void book_add(void)為注冊書本的變量定義;</p><p> void book_del(void)為注銷書本的變量定義;</p><p> switch(getch())為多分支選擇語句,即輸入一個數(shù),即選擇了一個操作;</p><p> goto menu返回主菜單的語
13、句;</p><p> ——圖書目錄文件示例圖</p><p> struct Book</p><p> int search_book void book_out void book_in void book_add void book_del</p><p><b> ——函數(shù)調(diào)用關(guān)系圖</b>
14、;</p><p> 詳細(xì)流程為: Start </p><p><b> Home</b></p><p> user option</p><p> Member login Borrow Return Registeration</p>&
15、lt;p> Search book</p><p><b> 四.調(diào)試分析</b></p><p> (1).調(diào)試過程中遇到的問題是如何解決的以及對設(shè)計(jì)與實(shí)現(xiàn)的回顧討論和分析:</p><p> 在調(diào)試過程中主要遇到的問題是對函數(shù)的定義是出現(xiàn)過一些錯誤,最后是翻看教材找到了對這些函數(shù)的準(zhǔn)確定義和使用解決了問題。</p>
16、<p> (2).算法的時空分析(包括基本操作和其他算法的時間復(fù)雜度和空間復(fù)雜度的分析)和改進(jìn)設(shè)想:</p><p> 一個能執(zhí)行的程序除了需要存儲空間來寄存本身所用指令、常數(shù)、變量和輸入數(shù)據(jù)外,也需要一些對數(shù)據(jù)進(jìn)行操作的工作單元和存儲一些為實(shí)現(xiàn)計(jì)算所需要的信息的輔助空間。我的算法應(yīng)當(dāng)說是挺簡單的一種方法實(shí)現(xiàn)的,空間可能做得不夠好,但是時間我想是有保證的,這也就是彌補(bǔ)了那方面的不足了。需要改進(jìn)的
17、地方就是:每輸入完一個操作,就得返回原來的操作界面,不能夠繼續(xù)在現(xiàn)有的面板上操作,這挺不方便的,需要改進(jìn)。</p><p> (3).經(jīng)驗(yàn)和體會:</p><p> 經(jīng)過了這次編程體驗(yàn),我感想蠻多的,一個好的程序最起碼要能運(yùn)行成功,其次是里邊的算法的簡便度,這能夠?yàn)槟愎?jié)省很多時間和空間,當(dāng)然如果自己還不能運(yùn)用高級算法,那么我們就用自己會的東西編,這也是一種達(dá)到目標(biāo)的方法。</p&
18、gt;<p><b> 五.用戶使用說明</b></p><p> 首先成功運(yùn)行程序后,會彈出一個運(yùn)行窗口,窗口會有一個簡單的介紹操作步驟:如</p><p> 按照步驟,你可以很簡便的實(shí)現(xiàn)各種操作,完成一個操作后,你必須按任意鍵返回到最初的界面然后繼續(xù)接下來的操作。</p><p><b> 六.測試結(jié)果<
19、;/b></p><p> 七.附錄:帶注釋的源代碼</p><p> #include <stdio.h> </p><p> #include <stdlib.h> </p><p> #include <conio.h> </p><p> struct BOO
20、K </p><p><b> { </b></p><p> int id,usr[10],total,store,days[10]; </p><p> char name[30],author[20]; </p><p> }books[100]; </p><p> /*結(jié)構(gòu)體,
21、存放書籍及借書信息。*/ </p><p> void page_title(char *menu_item) </p><p><b> { </b></p><p> printf(">>> 以下是圖 書 管 理 系 統(tǒng)--請 按 要 求 操 作 <<<\n\n- %s -\n\n&quo
22、t;,menu_item); </p><p><b> } </b></p><p> /*頁頭函數(shù),可以通過參數(shù)menu_item,顯示當(dāng)前狀態(tài)。*/ </p><p> void return_confirm(void) </p><p><b> { </b></p>
23、<p> printf("\n任意鍵返回……\n"); </p><p><b> getch(); </b></p><p><b> } </b></p><p> /*返回前請求確認(rèn)函數(shù),方便返回前觀察結(jié)果*/ </p><p> int search_
24、book(void) </p><p><b> { </b></p><p><b> int n,i; </b></p><p> printf("請輸入圖書序號:"); </p><p> scanf("%d",&i); </p&g
25、t;<p> for(n=0;n<100;n++) </p><p><b> { </b></p><p> if(books[n].id==i) </p><p><b> { </b></p><p> printf("書名:%s\n",boo
26、ks[n].name); </p><p> printf("作者:%s\n",books[n].author); </p><p> printf("存數(shù):%d\n",books[n].store); </p><p> printf("總數(shù):%d\n",books[n].total); </
27、p><p> return n; </p><p><b> } </b></p><p><b> } </b></p><p> printf("\n輸入有錯或圖書序號不存在.\n"); </p><p> return -1; </p&g
28、t;<p><b> } </b></p><p> /*上面是在數(shù)組中找到圖書號匹配的記錄,顯示其信息并返 </p><p> 回?cái)?shù)組下標(biāo),如果找不到相應(yīng)記錄則提示錯誤并返回-1。*/ </p><p> void book_out(void) </p><p><b> { <
29、/b></p><p> int n,s,l,d; </p><p> page_title("借書"); </p><p> if((n=search_book())!=-1&&books[n].store>0) </p><p><b> { </b></
30、p><p> printf("請輸入借書證序號:"); </p><p> scanf("%d",&s); </p><p> printf("請輸入可借天數(shù):"); </p><p> scanf("%d",&d); </p>
31、<p> for(l=0;l<10;l++) </p><p><b> { </b></p><p> if(books[n].usr[l]==0) </p><p><b> { </b></p><p> books[n].usr[l]=s; </p>
32、<p> books[n].days[l]=d; </p><p><b> break; </b></p><p><b> } </b></p><p><b> } </b></p><p> books[n].store--; </p>
33、<p><b> } </b></p><p> if(n!=-1&&books[n].store==0) printf("此書已經(jīng)全部借出.\n"); </p><p> return_confirm(); </p><p><b> } </b></p>
34、;<p> /*借書的函數(shù),首先調(diào)用找書函數(shù)*/ </p><p> void book_in(void) </p><p><b> { </b></p><p> int n,s,l; </p><p> page_title("還書"); </p><
35、p> if((n=search_book())!=-1&&books[n].store<books[n].total) </p><p><b> { </b></p><p> printf("借閱者圖書證列表:\n"); </p><p> for(l=0;l<10;l++) &
36、lt;/p><p> if (books[n].usr[l]!=0) </p><p> printf("[%d] - %d天\n",books[n].usr[l],books[n].days[l]); </p><p> printf("請輸入借書證序號:"); </p><p> scanf(&
37、quot;%d",&s); </p><p> for(l=0;l<10;l++) </p><p><b> { </b></p><p> if(books[n].usr[l]==s) </p><p><b> { </b></p><p&g
38、t; books[n].usr[l]=0; </p><p> books[n].days[l]=0; </p><p><b> break; </b></p><p><b> } </b></p><p><b> } </b></p><p
39、> books[n].store++; </p><p><b> } </b></p><p> if(n!=-1&&books[n].store==books[n].total) </p><p> printf("全部入藏.\n"); </p><p> retu
40、rn_confirm(); </p><p><b> } </b></p><p> void book_add(void) </p><p><b> { </b></p><p><b> int n; </b></p><p> pag
41、e_title("注冊書"); </p><p> for(n=0;n<100;n++) </p><p> if(books[n].id==0) break; </p><p> printf("序號:"); </p><p> scanf("%d",&boo
42、ks[n].id); </p><p> printf("書名:"); </p><p> scanf("%s",&books[n].name); </p><p> printf("作者:"); </p><p> scanf("%s",&
43、;books[n].author); </p><p> printf("數(shù)量:"); </p><p> scanf("%d",&books[n].total); </p><p> books[n].store=books[n].total; </p><p> return_con
44、firm(); </p><p><b> } </b></p><p> void book_del(void) </p><p><b> { </b></p><p><b> int n; </b></p><p> page_titl
45、e("注銷書"); </p><p> if((n=search_book())!=-1) books[n].id=0; </p><p> printf("該書已注銷.\n"); </p><p> return_confirm(); </p><p><b> } </b&g
46、t;</p><p> void main(void) </p><p><b> { </b></p><p> menu: page_title("操作選擇單子"); </p><p> printf("請按以上要求選擇操作\n\n"); </p><
47、;p> printf("1 借書\n2 還書\n\n"); </p><p> printf("3 注冊書\n4 注銷書\n\n"); </p><p> printf("\n0 退出\n"); </p><p> switch(getch()) </p><p>&l
48、t;b> { </b></p><p> case '1' : book_out();break; </p><p> case '2' : book_in();break; </p><p> case '3' : book_add();break; </p><p>
49、; case '4' : book_del();break; </p><p> case '0' : exit(0); </p><p><b> } </b></p><p> goto menu; </p><p><b> }</b></p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)---圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-圖書管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--圖書管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告——圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--學(xué)院圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——圖書管理信息系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)圖書管理系統(tǒng)實(shí)驗(yàn)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---- 圖書管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)-圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--圖書借閱管理系統(tǒng)
- 圖書管理系統(tǒng)(含源代碼)c語言_數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----用c++語言實(shí)現(xiàn)圖書管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--圖書館管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--小型圖書購銷管理系統(tǒng)
評論
0/150
提交評論