某高校圖書管理系統(tǒng)_第1頁
某高校圖書管理系統(tǒng)_第2頁
某高校圖書管理系統(tǒng)_第3頁
某高校圖書管理系統(tǒng)_第4頁
某高校圖書管理系統(tǒng)_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、沈 陽 航 空 航 天 大 學 課程設(shè)計題目:某高校圖書管理系統(tǒng)一、課程設(shè)計時間201011第2學期 第15周,共計1周,20學時。二、課程設(shè)計內(nèi)容用C語言編寫軟件完成以下任務:1.錄入圖書信息(根據(jù)圖書館的管理情況自行設(shè)定,要具有實用性);2.借書處理(數(shù)量不足三本,不予外借,并顯示相應的提示信息);3.還書處理。4 查詢圖書信息(根據(jù)書名或圖書編號)。三、課程設(shè)計要求1. 程序質(zhì)量: 貫徹結(jié)構(gòu)化程序設(shè)計思想。 用戶界面友好,功能明確,操作方便;可以加以其它功能或修飾。 用戶界面中的菜單至少應包括“圖書信息錄入”、“借書處理”、“還書處理”、“退出”、“查詢圖書信息”5項。 代碼應適當縮進,

2、并給出必要的注釋,以增強程序的可讀性。2. 課程設(shè)計說明書:課程結(jié)束后,上交課程設(shè)計說明書和源程序。課程設(shè)計說明書的格式和內(nèi)容參見提供的模板。四、指導教師和學生簽字指導教師:_ 學生簽名:_五、成績六、教師評語目錄一、需求分析1二、設(shè)計分析3三、主要界面截圖10四、技術(shù)要點13五、個人總結(jié)24六、參考文獻25七、源程序25一、需求分析 根據(jù)任務書給定的“課程設(shè)計內(nèi)容”和“課程設(shè)計要求”作如下的需求分析。經(jīng)過對程序設(shè)計題目的分析可知,整個程序的設(shè)計實現(xiàn)大致分為5個模塊,其中每一個模塊對應一個函數(shù)(查詢模塊對應三個函數(shù)),他們的功能分別是:錄入圖書信息(luru);借書(jieshu);還書(hu

3、anshu);查詢(chaxun)。該系統(tǒng)是一個較典型的數(shù)據(jù)管理系統(tǒng),其使用者被假定為圖書管理人員,系統(tǒng)應該具有易于管理、快速、穩(wěn)定、功能齊全的特點。1. 管理性分析系統(tǒng)管理的數(shù)據(jù)涉及到圖書的管理問題,數(shù)據(jù)量較大且是一種基礎(chǔ)性數(shù)據(jù),是管理圖書的重要數(shù)據(jù),所以應該能夠快速方便調(diào)用修改增添。2. 快速性分析快速性分析,由于信息量較大且變動較為頻繁,因此,該程序應該能快速的調(diào)用和增補。3. 穩(wěn)定性分析指系統(tǒng)比較健壯,只要是用戶的合理操作,系統(tǒng)都應給出合理正確的回應,而不是出現(xiàn)令用戶感到意外的系統(tǒng)錯誤或系統(tǒng)崩潰。4. 主要功能分析(1)錄入函數(shù):主要功能是將圖書信息錄入書庫中; (2)借書函數(shù):主要實

4、現(xiàn)學生借閱書籍的功能;(3)還書函數(shù):實現(xiàn)的功能是把學生借閱的書籍還給書庫;(4)查詢函數(shù):是顯示圖書信息(用戶輸入查詢條件,系統(tǒng)規(guī)則地在界面顯示查詢結(jié)果,且顯示的數(shù)據(jù)盡量全面。當輸入圖書編號時,可查詢到該圖書的書名,作者,出版社,數(shù)量;當輸入書名時,可查詢到該圖書的編號,作者,出版社,數(shù)量)。除上面介紹的功能之外,程序還具有退出功能,可以在程序的一次運行當中循環(huán)執(zhí)行所有的功能,并根據(jù)需要終止程序的執(zhí)行。每一個圖書都包含編號,書名,作者,出版社,數(shù)目,將圖書紀錄類型定義為結(jié)構(gòu)體類型,數(shù)據(jù)讀取自程序所在目錄下的圖書。二、設(shè)計分析主要有5個功能模塊,每個模塊對應一個C語言自定義函數(shù)。他們的功能分別

5、是:錄入圖書信息(luru);借書(jieshu);還書(huanshu);查詢圖書信息(chaxun)。 這些函數(shù)原型及其功能簡述如下:1、錄入函數(shù):void luru()/圖書錄入 主要功能是將圖書信息錄入書庫中;2、借書函數(shù):void jieshu()/借書 主要實現(xiàn)學生借閱書籍的功能;3、還書函數(shù):void huanshu()/還書 實現(xiàn)的功能是把學生借閱的書籍還給書庫;4。查詢函數(shù):void chaname() 功能是顯示圖書信息。當輸入圖書編號時,可查詢到該圖書的書名,作者,出版社,數(shù)量;當輸入書名時,可查詢到該圖書的編號,作者,出版社,數(shù)量。除上面介紹的功能之外,程序還具有退出功

6、能,可以在程序的一次運行當中循環(huán)執(zhí)行所有的功能,并根據(jù)需要終止程序的執(zhí)行。每一個圖書都包含編號,書名,作者,出版單位,庫存數(shù)量,將圖書紀錄類型定義為結(jié)構(gòu)體類型,數(shù)據(jù)讀取自程序所在目錄下的tushiguanli.txt。1、程序總體結(jié)構(gòu)圖2、主要功能模塊框圖(1)錄入圖書信息luru (2)借書函數(shù)jieshu(3)還書函數(shù)huanshu(4)查詢函數(shù)chaxun 三、主要界面截圖圖1 程序主界面圖2 錄入圖書信息圖示3 借書功能圖示4 還書功能圖示5 查詢功能(按書名)圖示6 查詢功能(按書號)四、技術(shù)要點設(shè)計的程序由七個自定義函數(shù)和一個主函數(shù)組成,其中主函數(shù)以菜單的形式調(diào)用其他函數(shù)來實現(xiàn)要求

7、的所有功能。在這些函數(shù)當中,輸入圖書信息、借閱圖書信息、還書函數(shù)和查詢圖書函數(shù)是程序中較為核心的部分,其中查詢函數(shù)調(diào)用了按書號查詢和按書名查詢兩個函數(shù)。1、結(jié)構(gòu)體的應用定義了結(jié)構(gòu)體用來描述圖書的編號、作者、書名、出版社以及圖書的數(shù)量;并且定義了指針:頭指針head和指針p1、p2。具體的定義如下:struct book int num; char author10; char name10; char publicor10; int amount; struct book *next;*head,*p1,*p2;所定義的結(jié)構(gòu)體主要用于定義數(shù)組和指針。2、文件操作包括了文件的寫入和讀取兩個方面。

8、文件的寫入操作,用于保存錄入的學生數(shù)據(jù),也用于保存所修改的數(shù)據(jù)。例如如下程序段用于保存錄入的圖書信息:void luru()/圖書錄入 FILE *fp; fp=fopen(d:tushuguanli.txt,w); if (fp=NULL) printf(n 打開文件失敗!n); exit(0); printf( 請輸入圖書信息(圖書號為“0”時結(jié)束)n); printf( 輸入順序為:圖書號、書名、作者、出版社、圖書數(shù)量n); head=NULL; p1=p2=(struct book*) malloc(LEN); scanf(%d%s%s%s%d,&p1-num,p1-name,p1-a

9、uthor,p1-publicor,&p1-amount); while (p1-num) fprintf(fp,%d%s%s%s%d,p1-num,p1-name,p1-author,p1-publicor,p1-amount); n=n+1; if (n=1) head=p1; else p2-next=p1; p2=p1; p1=(struct book *)malloc(LEN); printf( 請您繼續(xù)輸入n); scanf(%d%s%s%s%d,&p1-num,p1-name,p1-author,p1-publicor,&p1-amount); p2-next=NULL;fclo

10、se(fp);例如如下程序段用于讀取錄入的圖書信息:void jieshu()/借書int i;FILE *fp;fp=fopen(d:tushuguanli.txt,r);if(fp=NULL)printf(n 打開文件失敗!n);exit(0);p1=head;printf(請輸入你要借的書的書號n);scanf(%d,&i);while(p1!=NULL)if(i=p1-num)if(p1-amountamount-;printf( 書號 書名 作者 出版單位 剩余數(shù)量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-pub

11、licor,p1-amount);p1=p1-next;getch();fclose(fp);3、輸入圖書信息函數(shù) 輸入圖書信息,首先由程序創(chuàng)建一個新文件,并將錄入的圖書信息寫入該文件當中,具體的程序段如下:void luru()/圖書錄入 FILE *fp;fp=fopen(d:tushuguanli.txt,w);if(fp=NULL)printf(n 打開文件失敗!n);exit(0);printf( 請輸入圖書信息(圖書號為“0”時結(jié)束)n);printf(輸入順序為:圖書號、書名、作者、出版社、圖書數(shù)量n);head=NULL;p1=p2=(struct book*) malloc(

12、LEN);scanf(%d%s%s%s%d,&p1-num,p1-name,p1-author,p1-publicor,&p1-amount);while(p1-num) fprintf(fp,%d%s%s%s%d,p1-num,p1-name,p1-author,p1-publicor,p1-amount);n=n+1;if(n=1) head=p1;elsep2-next=p1;p2=p1;p1=(struct book *)malloc(LEN);printf( 請您繼續(xù)輸入n);scanf(%d%s%s%s%d,&p1-num,p1-name,p1-author,p1-publicor

13、,&p1-amount);p2-next=NULL;fclose(fp);4、借閱圖書函數(shù)該函數(shù)的核心內(nèi)容是更改算法。該函數(shù)執(zhí)行時,由用戶輸入要借閱圖書的編號,而后按照該編號進行查找。如果庫存少于三本了則提示庫存有限無法借閱,如果庫存大于等于三本時,顯示借書成功,p1-amount值減1。具體程序段如下:void jieshu()/借書int i;FILE *fp;fp=fopen(d:tushuguanli.txt,r);if(fp=NULL)printf(n 打開文件失敗!n);exit(0);p1=head;printf(請輸入你要借的書的書號n);scanf(%d,&i);while(

14、p1!=NULL)if(i=p1-num)if(p1-amountamount-;printf( 書號 書名 作者 出版單位 剩余數(shù)量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next;getch();fclose(fp);5、還書函數(shù)提示輸入要還的書的編號,如果所輸入的書號在已借圖書中,顯示還書成功,p1-amount值加1,具體程序段如下:void huanshu()/還書 int i; FILE *fp;fp=fopen(d:tushuguanli.txt,r);i

15、f(fp=NULL)printf(n 打開文件失敗!n);exit(0);p1=head;printf(請輸入你要還的書的書號n);scanf(%d,&i);while(p1!=NULL)if(i=p1-num)printf(還書成功n);p1-amount+;printf( 書號 書名 作者 出版單位 剩余數(shù)量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next;getch();fclose(fp);6、查詢函數(shù)提示按照書名或者書號來查詢圖書信息,如果選擇按書名查詢信息,

16、則會用按書名查詢函數(shù),該函數(shù)的核心內(nèi)容是if函數(shù)嵌套以及strcmp比較字符串函數(shù)的使用;如果選擇按書號查詢信息,則會用按書號查詢函數(shù),該函數(shù)如果輸入的書號和書庫所有書號相符合,則會顯示該圖書信息,程序段如下:void chaxun()/查詢int choose;FILE *fp;fp=fopen(d:tushuguanli.txt,r);if(fp=NULL)printf(n 打開文件失敗!n);exit(0);p1=head;printf( n 書名查詢請按(1),書號查詢請按(2)n);scanf(%d,&choose);switch(choose)case 1: chaname();b

17、reak;case 2: chanum();break;default:printf( n Error n);fclose(fp);void chaname()char shuming10;p1=head;printf(n 請輸入書名 );scanf(%s,shuming);while(p1!=NULL) if(strcmp(shuming,p1-name)=0)printf( 書號 書名 作者 出版單位 剩余數(shù)量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next; ge

18、tch();void chanum()int number;printf(n 請輸入書號 );scanf(%d,&number);p1=head;while(p1!=NULL)if(number=p1-num)printf( 書號 書名 作者 出版單位 剩余數(shù)量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next; getch(); 7、所用到的主要知識點 (1)、熟練使用函數(shù),能夠自己行編寫函數(shù)并調(diào)用。 void luru()/圖書錄入 (2)、掌握了switch語句的運

19、用,及面對多分支處理的情況。void main()int order;while(1)system(cls);caidan();fflush(stdin);scanf(%d,&order);switch (order)case 1:luru();break;case 2:jieshu();break;case 3:huanshu();break;case 4:chaxun();break;case 5:exit(0);break;default:printf(ttt輸入的序號有誤,請檢查后重新輸入.n);getch();break; (3)、鏈表的應用:鏈表是一種物理存儲單元上非連續(xù)、非順序的

20、存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(鏈表中每一個元素稱為結(jié)點)組成,結(jié)點可以在運行時動態(tài)生成。每個結(jié)點包括兩個部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲下一個結(jié)點地址的指針域。 相比于線性表順序結(jié)構(gòu),鏈表比較方便插入和刪除操作。while(p1-num) fprintf(fp,%d%s%s%s%d,p1-num,p1-name,p1-author,p1-p ublicor,p1-amount);n=n+1;if(n=1) head=p1;elsep2-next=p1;p2=p1;p1=(struct book *)malloc(LEN); (4)

21、、指針的應用: p2-next = p1(5)、if else語句的應用: if(p1-amountamount-;printf( 書號 書名 作者 出版單位 剩余數(shù)量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount); (6)、定義數(shù)組: void chaname()char shuming10; (7)、占位符、換行等的應用: printf(t%dt%st%st%st%dn,五、個人總結(jié)此次課程設(shè)計中,運用鏈表和文件讀寫技術(shù),完成了一個簡單的圖書管理系統(tǒng),在編寫代碼的過程中,對鏈表的應用有

22、了更加深入的了解,對文件的讀寫也有了一定的認識,但是,程序依然存在不足:比如說,在處理文件異常時,沒有相應的處理代碼。在刪除鏈表結(jié)點時,當鏈表為空時的判斷不夠詳細,在查詢和寫入文件時,對輸出格式的控制還不夠完善,今后在代碼編寫中,這些都是需要注意的問題。相信通過今后的努力,我的代碼編寫的實際應用能力會有更大的提高!六、參考文獻1 譚浩強C程序設(shè)計北京:清華大學出版社,20052 劉成等C語言程序設(shè)計實驗指導與習題集北京:中國鐵道出版社,2006七、源程序#include#include#include#include#define LEN sizeof(struct book)struct b

23、ookint num;char author10;char name10;char publicor10;int amount;struct book *next;*head,*p1,*p2;int n=0;void caidan()/菜單 printf(nnnnnnn);printf(ttt*menu*n);printf(ttt* 1.圖書信息錄入: *n);printf(ttt* 2.借書處理: *n);printf(ttt* 3.還書處理: *n);printf(ttt* 4.查詢圖書信息: *n);printf(ttt* 5.退出 *n);printf(ttt*n);printf(tt

24、t 請輸入選項編號(0-5):);void luru()/圖書錄入 FILE *fp;fp=fopen(d:tushuguanli.txt,w);if(fp=NULL)printf(n 打開文件失敗!n);exit(0);printf( 請輸入圖書信息(圖書號為“0”時結(jié)束)n);printf( 輸入順序為:圖書號、書名、作者、出版社、圖書數(shù)量n);head=NULL;p1=p2=(struct book*) malloc(LEN);scanf(%d%s%s%s%d,&p1-num,p1-name,p1-author,p1-publicor,&p1-amount);while(p1-num)f

25、printf(fp,%d%s%s%s%d,p1-num,p1-name,p1-author,p1-publicor,p1-amount);n=n+1;if(n=1) head=p1;elsep2-next=p1;p2=p1;p1=(struct book *)malloc(LEN);printf( 請您繼續(xù)輸入n);scanf(%d%s%s%s%d,&p1-num,p1-name,p1-author,p1-publicor,&p1-amount);p2-next=NULL;fclose(fp);void jieshu()/借書int i;FILE *fp;fp=fopen(d:tushugua

26、nli.txt,r);if(fp=NULL)printf(n 打開文件失敗!n);exit(0);p1=head;printf(請輸入你要借的書的書號n);scanf(%d,&i);while(p1!=NULL)if(i=p1-num)if(p1-amountamount-;printf( 書號 書名 作者 出版單位 剩余數(shù)量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next;getch();fclose(fp);void huanshu()/還書 int i; FILE

27、 *fp;fp=fopen(d:tushuguanli.txt,r);if(fp=NULL)printf(n 打開文件失敗!n);exit(0);p1=head;printf(請輸入你要還的書的書號n);scanf(%d,&i);while(p1!=NULL)if(i=p1-num)printf(還書成功n);p1-amount+;printf( 書號 書名 作者 出版單位 剩余數(shù)量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next;getch();fclose(fp);void chaname()char shuming10;p1=head;printf(n 請輸入書名 );scanf(%s,shuming);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論