圖書館管理系統(tǒng)程序設(shè)計方案.doc_第1頁
圖書館管理系統(tǒng)程序設(shè)計方案.doc_第2頁
圖書館管理系統(tǒng)程序設(shè)計方案.doc_第3頁
圖書館管理系統(tǒng)程序設(shè)計方案.doc_第4頁
圖書館管理系統(tǒng)程序設(shè)計方案.doc_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

圖書館管理系統(tǒng)程序設(shè)計方案. 系統(tǒng)分析2.1 數(shù)據(jù)需求本系統(tǒng)主要是某圖書館的圖書信息簡單管理的系統(tǒng)。需要向系統(tǒng)輸入圖書的信息,例如:圖書名、編號、作者、圖書類別、出版社、圖書定價、圖書簡介。 2.2功能需求本系統(tǒng)需要有添加,刪除,查詢,修改,循環(huán)顯示主菜單,保存信息功能,讀取信息,可以按書名實現(xiàn)模糊查詢,可以按類別統(tǒng)計圖書數(shù)量,可以統(tǒng)計圖書總數(shù)。2.3 性能需求在運行本程序時只要按照正確的操作方法不會出現(xiàn)無法運行的情況,系統(tǒng)穩(wěn)定性好,安全,可靠。3. 總體設(shè)計3.1功能模塊設(shè)計根據(jù)分析整個系統(tǒng)主要劃分為8個功能模塊,分別執(zhí)行要求中的功能。該系統(tǒng)需要有刪除,修改,添加,查詢,保存信息功能,按類圖書別統(tǒng)計,統(tǒng)計總數(shù),模糊查詢。功能模塊如圖1所示。圖1功能模塊圖(1)添加圖書信息模塊添加圖書基本信息:圖書編號、圖書名、作者、圖書類別、出版社、圖書定價、圖書簡介。(2) 修改圖書信息模塊對會圖書內(nèi)部信息的修改,修改圖書的基本信息:圖書名、圖書編號、作者、圖書類別、出版社、圖書定價、圖書簡介。(3) 查詢圖書信息模塊對圖書內(nèi)部信息的查詢包括通過書名查詢和按類別查詢。查詢的結(jié)果顯示為圖書名、圖書編號、作者、圖書類別、出版社、圖書定價、圖書簡介。(4)刪除圖書信息模塊可以刪除圖書的所有基本信息。 (5) 按類別統(tǒng)計模塊可將圖書按類別統(tǒng)計其圖書個數(shù)。(6) 統(tǒng)計總數(shù)模塊對圖書總數(shù)進行統(tǒng)計。(7) 圖示借閱模塊可實現(xiàn)對圖書的借閱,需輸入學(xué)生信息。(8) 圖書歸還模塊歸還圖書,增加圖書的現(xiàn)存量。(9) 讀取模塊讀取儲存的圖書基本信息。3.2系統(tǒng)設(shè)計方案(1) 菜單設(shè)計一個總菜單,1添加圖書信息,2根據(jù)書名查找圖書,3修改圖書信息,4刪除圖書信息,5 圖書歸還,6圖書總數(shù)統(tǒng)計,7圖書借閱,8儲存,9按類別查詢圖書,10讀取圖書信息,基本功能的實現(xiàn)都將體現(xiàn)在菜單選項中。(2) 數(shù)據(jù)結(jié)構(gòu)建立結(jié)構(gòu)體如下:struct booklong digit;/圖書編號char name50;/書名char author20;/作者char gategory20;/圖書類別char phouse20;/出版社long price;/定價char synopsis20;/圖書簡介struct book *next;/struct book 類型的結(jié)構(gòu)體成員*head; /定義一個指向結(jié)構(gòu)體的指針根據(jù)模塊需要本系統(tǒng)需要用到鏈表結(jié)構(gòu)。(3) 函數(shù)定義了12個函數(shù),都實現(xiàn)以下功能:void menu();/主菜單void print();/輸出void creat();/創(chuàng)建void search_name()/按姓名查詢;void search gategory ();/按類別查詢void modify();/修改void del();/刪除void l();/按類別統(tǒng)計void w();/統(tǒng)計總數(shù) void MH(struct book *p,char a)/;模糊查詢void save();/儲存void read()/讀取4. 詳細(xì)設(shè)計和實現(xiàn) 4.1創(chuàng)建模塊創(chuàng)建模塊:分為2個部分1輸出、2創(chuàng)建。(1)輸出部分流程圖:如圖2所示。圖2輸出流程圖輸出部分創(chuàng)建一個結(jié)構(gòu)體struct book結(jié)構(gòu)體內(nèi)有成員7個:編號,名字,作者,類別,出版社,價格簡介。輸出程序流程如圖2所示。(2)創(chuàng)建部分如圖3所示。圖3 創(chuàng)建模塊流程圖所謂創(chuàng)建是指在程序執(zhí)行過程中從無到有地建立起一個鏈表,即一個一個地開辟結(jié)點和輸入各結(jié)點數(shù)據(jù),并建立起前后相鏈的關(guān)系。設(shè)3個指針變量:head、P1、P2它們都是用來指向struct book 類型數(shù)據(jù)的。先用malloc函數(shù)開辟第一個結(jié)點,并使P1 P2,它們都用來指向它。然后從鍵盤讀入一個圖書的數(shù)據(jù)給p1所指的第一個結(jié)點。我們設(shè)定編號不能為0如果輸入圖書編號為0,則表示鏈表建立的過程完成,該結(jié)點不應(yīng)該連接到鏈表中。先使head的值為NULL,這是鏈表為空的情況。當(dāng)建立第一個結(jié)點的時候head指向該結(jié)點。如果輸入的p1-num不等于0則輸入第一個結(jié)點數(shù)據(jù)(n=1),令head=p1,即把p1的值賦給head,也就是使head也指向新開辟的結(jié)點。然后在開辟另一個結(jié)點并使p1指向它,接著輸入該結(jié)點的數(shù)據(jù)。如果輸入的p1-num!=0,則應(yīng)鏈入第二個結(jié)點(n=2),由于n!=1,則將p1的值賦給p2-next,此時p2指向第一個節(jié)點,因此執(zhí)行“p2-next=p1”就將新結(jié)點的地址賦給第一個結(jié)點的next成員,使第一個結(jié)點的next成員指向第二個結(jié)點。接著使p2=p1,也就是使p2指向剛才建立的結(jié)點。接著在開辟一個結(jié)點并使p1指向它,并輸入該結(jié)點的數(shù)據(jù)。在第三次循環(huán)中,由于n=3(n!=1),又將p1的值賦給p2-next,也就是將第三個結(jié)點連接到第二個結(jié)點之后,并使p2=p1,使p2指向最后一個結(jié)點。再開辟一個新的結(jié)點,并使p1指向它,輸入該結(jié)點的數(shù)據(jù)。由于p1-num的值是0,不再執(zhí)行循環(huán),此新結(jié)點不應(yīng)被連接到鏈表中。此時將NULL賦給p2-next,建立鏈表的過程至此結(jié)束。P1最后指向的結(jié)點未鏈入鏈表中,第三個結(jié)點的next成員的值為NULL,它不指向任何結(jié)點。雖然p1指向新開辟的結(jié)點,但從鏈表中無法找到該結(jié)點。4.2查詢模塊該模塊包括三種可查詢的選項:按圖書名查找,按圖書名模糊查詢,按圖書類別查找。對圖書內(nèi)部信息的查詢包括通過圖書名查詢,按圖書類別查詢,每一個子模塊基本思想相同,先輸入需要查尋的方式然后輸入查詢所需要的信息,如果輸入信息與系統(tǒng)中的圖書信息相匹配則輸出此圖書所有信息。對圖書名可以實現(xiàn)模糊查詢,模糊查詢既是只需要輸入圖書名的一個字母就可以顯示出所有圖書名內(nèi)含有該字母的圖書。(1)按書名查詢的流程圖:如圖4所示。 圖4按書名查找圖書信息流程圖由于按圖書名查找圖書信息和按圖書類別查找圖書信息的流程基本一致所以只畫出一個流程圖。按姓名查找:定義一個名字?jǐn)?shù)組,這個數(shù)組是struct book 這個結(jié)構(gòu)體的成員,定義一個指針*p。當(dāng)首結(jié)點是NULL時則輸出list NULL。首結(jié)點不是空,P 作為首結(jié)點,判斷P是否是空,如果P不是空,用strcmp函數(shù)來查找與輸入相對應(yīng)的名字,然后輸出該名字圖書的所有信息。如果沒有可以和輸入名字對應(yīng)的名字則輸出not been found。4.3修改圖書信息信息模塊修改圖書信息模塊,是在已經(jīng)存在的圖書信息的基礎(chǔ)上對圖書的基本信息,例如:圖書編號、圖書名、圖書作者、圖書出版社、圖書類別、圖書定價,進行修改,并且保存。如圖6所示。4.4刪圖7 刪除圖書信息流程圖先定義兩個頭指針p1,p2,找到要刪除的圖書名,如果圖書名是鏈表的頭則將head賦給此圖書所存結(jié)點的next,此圖書所存結(jié)點不是頭結(jié)點就將此圖書上一個結(jié)點的next與此圖書的結(jié)點的next相連。4.5統(tǒng)計圖書信息模塊統(tǒng)計圖書模塊分為兩類:一類是按圖書類別統(tǒng)計不同類別的圖書數(shù)量,另一類是直接統(tǒng)計所有圖書總數(shù)。如圖8所示。圖8 按類別統(tǒng)計流程圖流程圖按類別統(tǒng)計是按照圖書類別將圖書分累統(tǒng)計,輸入圖書類別用strcmp函數(shù)將輸入的圖書類別和已經(jīng)存有的圖書類別進行比較,找到相同的類別輸出該類所有圖書數(shù)量。統(tǒng)計總數(shù)就是統(tǒng)計結(jié)點所以只需要n+即可統(tǒng)計圖書總數(shù)。4.6保存模塊保存所存儲的圖書信息,以二進制寫的方式打開一個名字為book 的文本文件,調(diào)用fwrite()函數(shù)將信息存儲到名為book的文本文件中,最后關(guān)閉文件。如圖9所示。圖9 保存圖書信息流程圖用保存函數(shù)將圖書的所有基本信息進行保存,定義一個文件指針,然后判斷文件不等于NULL,然后將輸入圖書基本信息圖書編號、圖書名、圖書作者、圖書出版社、圖書類別、圖書定價,進行修改,并且保存,然后關(guān)閉文件。4.7讀取模塊:對已經(jīng)存儲的圖書今本信息進行讀取,如圖10所示。 圖10 讀取圖書信息流程圖利用讀取函數(shù)對已經(jīng)儲存的圖書信息進行讀取??梢燥@示已經(jīng)存入圖書的基本信息例如:圖書編號、圖書名、圖書作者、圖書出版社、圖書類別、圖書定價,進行讀取。并且顯示圖書基本信息。5. 調(diào)試與測試5.1 調(diào)試調(diào)試是軟件開發(fā)過程中的一個重要環(huán)節(jié),也是最復(fù)雜,對軟件開發(fā)者者來說也是最艱巨的任務(wù)。調(diào)試的任務(wù)是及時改正測試過程中發(fā)現(xiàn)的軟件錯誤。具體地說,調(diào)試過程由兩個步驟組成,它從表示程序中存在錯誤的某跡象開始,首先確定錯誤的準(zhǔn)確位置,也就是找出哪個模塊或哪個語句引起的錯誤。然后仔細(xì)研究推斷代碼以確定問題的原因,并設(shè)法改正。調(diào)試過程主要是運行編制好的程序,然后遇到錯誤后根據(jù)系統(tǒng)的提示,找到相關(guān)的問題所在。本系統(tǒng)調(diào)試過程中遇到問題、原因和解決方法如下面介紹。(1) 程序在儲存圖書信息時只能一次存入,并且讀取。再次添加新的程序時將會把原來添加的圖書信息覆蓋。原因時存儲函數(shù)只能只寫2進制文件不能追加填寫2進制文件。(2) 運行完程序一次有錯誤提醒原因是上次運行程序后沒有關(guān)閉操作界面當(dāng)點擊編譯時會有一個錯誤提示,解決方法:將上一次運行時的操作界面關(guān)閉。(3) 程序不能運行程序運行到添加新圖書時自動提示錯誤需要調(diào)試,其原因是指針指向的位置出現(xiàn)錯誤導(dǎo)致程序傳參錯亂無法運行,解決辦法:使程序進入調(diào)試狀態(tài)在傳參出現(xiàn)錯誤的位置一句一句查找傳遞的參數(shù)是否是你所希望的,如若不是就加以修正。5.2 測試軟件測試是軟件生存期中的一個重要階段,是軟件質(zhì)量保證的關(guān)鍵步驟從用戶的角度來看,普遍希望通過軟件測試暴露軟件中隱藏的錯誤和缺陷,所以軟件測試應(yīng)該是“為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程”?;蛘哒f,軟件測試應(yīng)該根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測試用例去運行程序,以發(fā)現(xiàn)程序錯誤或缺陷。過度測試則會浪費許多寶貴的資源。到測試后期,即使找到了錯誤,然而付出了過高的代價。測試數(shù)據(jù)過程如下。當(dāng)圖書管理系統(tǒng)已經(jīng)具備對圖書基本信息進行添加,刪除,查詢,修改,保存信息,讀取信息的功能?,F(xiàn)在測試系統(tǒng)是否能夠正確顯示所有已輸入的圖書基本信息,當(dāng)系統(tǒng)中已存入圖書信息當(dāng)執(zhí)行顯示功能時,系統(tǒng)會將內(nèi)部圖書信息全部列出。添加一個圖書信息:digit :1name:lunyu author:kongzi gategory:jiaoyu phouse:China price10 synopsis:youpengziyuanfanglaibuyiyuehu。顯示該圖書信息:digit :1name:lunyu author:kongzi gategory:jiaoyu phouse:China price10 synopsis:youpengziyuanfanglaibuyiyuehu。6. 結(jié)論課程設(shè)計順利完成,任務(wù)書中所提出的要求全部實現(xiàn),可以對圖書信息進行添加、修改、刪除以及按各種信息查找,并且將各種信息保存到文本文件中。不過這個程序還有些不夠完善,例如:只能手動儲存圖書信息,不能自動存入。而且讀取時受到字符限制。結(jié)束語為期一個星期的C語言綜合課程設(shè)計實習(xí)終于順利完成,在這期間真正的學(xué)到了一些經(jīng)驗,能夠熟練的掌握一些C語言的編程思路,能夠熟練的運用學(xué)到的函數(shù),學(xué)會了在曾經(jīng)編寫過的函數(shù)上加以修改實現(xiàn)了我期望實現(xiàn)的功能,知道學(xué)習(xí)編程必須親手將每一個字符輸入電腦中這樣才能真正的學(xué)到課本或一些理論中學(xué)不到的知識,這才達到了實踐的目的,當(dāng)程序編寫完成而且能夠正常運行心里一種說不出的自豪感,雖然這對于一名程序員來說可能非常簡單,但這是我編程的開始,如果希望在編程這方面能夠有所發(fā)展我所要走過的路還很長,還需要不斷的學(xué)習(xí)!再學(xué)習(xí)!參考文獻1 譚浩強. C語言程序設(shè)計(第三版). 北京:清華大學(xué)出版社 20052 林碧英. C語言程序設(shè)計教程. 中國電力出版社, 20063 美赫伯特.希爾特, 王子恢等譯.C語言大全. 電子工業(yè)出版社, 200331附錄1用戶手冊點擊運行,首先出現(xiàn)的是菜單界面,選擇菜單選項進行操作,可進行如圖11所示。圖11 菜單界面按1進入添加圖書信息界面,如圖12所示。圖12 添加界面輸入4后點擊回車執(zhí)行對圖書刪除,如圖13所示。圖13圖書刪除界面輸入2后點擊回車進行圖書借閱操作,如圖14所示圖14 圖書借閱界面輸入3后點擊回車進行圖書歸還功能的操作。如圖15所示圖15刪除界面輸入2后點擊回車進行對圖書信息顯示操作。如圖16所示圖16顯示圖書信息界面附錄2源程序#include#include#include#include#define LEN sizeof(struct book)int i=0;struct book long digit;/定義圖書編號char name50;/定義圖書名char author20;/定義圖書作者char gategory20/;定義圖書類別char phouse20;/定義圖書出版社long price;/定義圖書定價char synopsis20;/定義圖書簡介struct book *next;book1000;#define NULL 0int n;struct book *head,*end;void main()int p;char a10;void menu();/菜單顯示void print();/輸出void creat();/創(chuàng)建函數(shù)void search_name();/按圖書名查詢函數(shù)void modify();/修改圖書信息函數(shù)void del();/刪除圖書信息函數(shù)void l();/按圖書類別統(tǒng)計函數(shù)void w();/按圖書總數(shù)統(tǒng)計函數(shù) void MH(struct book *p,char a);/模糊查詢函數(shù)void save();/保存函數(shù)void search_gategory();/按圖書類別查詢函數(shù)void read();/讀取函數(shù)head=NULL;/end=NULL;/loop:menu(); printf(nplease to choice:n); scanf(%d,&p); if(p=1&pdigit,p-name,p-author,p-gategory,p-phouse,p-price,p-synopsis);p=p-next;void creat()/創(chuàng)建struct book *p1,*p2; p2=end;p1=(struct book *)malloc(LEN);printf(請輸入編號 圖書名 作者 類別 出版社 價格 簡介n);scanf(%ld %s %s %s %s %d %s,&p1-digit,p1-name,p1-author,p1-gategory,p1-phouse,&p1-price,p1-synopsis);while(p1-digit!=0)n+;if(n=1) head=p1;else p2-next=p1;p2=p1;p1=(struct book *)malloc(LEN);scanf(%ld %s %s %s %s %d %s,&p1-digit,p1-name,p1-author,p1-gategory,p1-phouse,&p1-price,p1-synopsis);p2-next=NULL;end=p2;print();void search_name()/*搜名字*/char name50;struct book *p;int w=0;printf(input the searched name:n);scanf(%s,name);if(head=NULL)printf(list null!n);else p=head; while(p!=NULL) if(strcmp(name,p-name)=0) printf(%ld %s %s %s %s %d %sn,p-digit,p-name,p-author,p-gategory,p-phouse,p-price,p-synopsis); w=1; p=p-next; if(!w) printf(%s not been found!n,name);void search_gategory()/搜類別char gategory20;struct book *p;int w=0;printf(input the search gategory:n);scanf(%s,gategory);if(head=NULL)printf(不存在n);elsep=head;while(p!=NULL)if(strcmp(gategory,p-gategory)=0)printf( %ld %s %s %s %s %d %sn,p-digit,p-name,p-author,p-gategory,p-phouse,p-price,p-synopsis); w=1;p=p-next;if(!w) printf(%s not been found!n,gategory);void modify()/*修改*/struct book *p;char name50;printf(input names:n);scanf(%s,name);p=head;while(p!=NULL)if(strcmp(name,p-name)=0)printf(Now new records:n);scanf(%ld %s %s %s %s %d %s,&p-digit,p-name,p-author,p-gategory,p-phouse,&p-price,p-synopsis);p=p-next;print();void del()/*刪除*/struct book *p1,*p2;char name50;if(head=NULL) printf(list null!n);goto end;p1=head;printf(input the deleted name:n);scanf(%s,name);while(strcmp(name,p1-name)!=0&p1-next!=NULL)p2=p1;p1=p1-next;if(strcmp(name,p1-name)=0)if(p1=head) head=p1-next;elseif(p1-next=NULL) p2-next=NULL;end=p2;elsep2-next=p1-next;free(p1);printf(delete: %sn,name);n=n-1;else printf(%s not been found!n,name);print();end:return;void l()/按類別統(tǒng)計struct book *p1,*p2;int z=0;char gategory20;printf(請輸入圖書類別:n);scanf(%s,gategory);if(head=NULL) printf(list null!n); goto end;p1=head; while(p1-next!=NULL)while(strcmp(gategory,p1-gategory)!=0&p1-next!=NULL)p2=p1;p1=p1-next;if(strcmp(gategory,p1-gategory)=0)z+;p2=p1;p1=p1-

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論