版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 湖南工業(yè)大學(xué)課 程 設(shè) 計(jì)資 料 袋 理 學(xué)院(系、部) 20112012 學(xué)年第 1 學(xué)期 課程名稱 數(shù)據(jù)結(jié)構(gòu) 指導(dǎo)教師 職稱 講師 學(xué)生姓名 專業(yè)班級(jí) 信計(jì)092 學(xué)號(hào) 09411100201 題 目 圖書管理系統(tǒng) 成 績(jī) 起止日期2011 年 12月 12日 2011 年 12 月 17 日目 錄 清 單序號(hào)材 料 名 稱資料數(shù)量備 注1課程設(shè)計(jì)任務(wù)書12課程設(shè)計(jì)說明書1 湖南工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書2011-2012學(xué)年第 1學(xué)期 理 學(xué)院(系、部) 信息與計(jì)算科學(xué) 專業(yè) 092 班級(jí)課程名稱: 數(shù)據(jù)結(jié)構(gòu) 設(shè)計(jì)題目: 圖書管理系統(tǒng) 完成期限:自 2011 年 12 月 12 日至 20
2、11 年 12 月 17 日共 1 周內(nèi)容及任務(wù) 設(shè)計(jì)一個(gè)圖書管理系統(tǒng),實(shí)現(xiàn)圖書入庫、借書和還書功能,具體步驟如下:圖書入庫學(xué)生注冊(cè)學(xué)生借書查看圖書館圖書信息查看學(xué)生信息還書管理再查看圖書和學(xué)生信息。 最后寫出課程設(shè)計(jì)報(bào)告。進(jìn)度安排起止日期工作內(nèi)容12月12日至12月13日明確課程設(shè)計(jì)目的及任務(wù),查找資料和文獻(xiàn)12月14日至12月15日編寫相關(guān)代碼并經(jīng)行調(diào)試12月15日至12月17日總結(jié)設(shè)計(jì)的心得與不足主要參考資料1 嚴(yán)蔚敏、吳偉民主編 數(shù)據(jù)結(jié)構(gòu)(c語言版) 清華大學(xué)出版社 20022 金遠(yuǎn)平著 數(shù)據(jù)結(jié)構(gòu)(c+描述) 清華大學(xué)出版社 2005 3 許卓群等著 數(shù)據(jù)結(jié)構(gòu)與算法 高等教育出版社 2
3、004指導(dǎo)教師(簽字): 年 月 日系(教研室)主任(簽字): 年 月 日29 數(shù)據(jù)結(jié)構(gòu)課程 設(shè)計(jì)說明書圖書管理系統(tǒng)起止日期: 2011 年 12月 12 日 至 2011 年 12 月 17 日學(xué)生姓名黃暢班級(jí)信計(jì)092學(xué)號(hào)09411100201成績(jī)指導(dǎo)教師(簽字)理學(xué)院2011年12 月 16 日目 錄一、需求分析51、需求提出52、需求描述5二、概要設(shè)計(jì)51、系統(tǒng)用到的抽象數(shù)據(jù)類型定義52、系統(tǒng)中子程序及功能要求的說明63、各程序模塊之間的調(diào)用關(guān)系6三、詳細(xì)設(shè)計(jì)7四、運(yùn)行結(jié)果11五、本設(shè)計(jì)使用說明及測(cè)試數(shù)據(jù)19七、參考文獻(xiàn)20八、源代碼實(shí)現(xiàn)20一、需求分析1、需求提出:各大高校都有圖書館
4、,每個(gè)學(xué)校的圖書管理系統(tǒng)可能都不會(huì)完全相同,但大致主要功能還是差不多的。好的圖書管理系統(tǒng)當(dāng)然既方便學(xué)生借閱書籍,又方便學(xué)校圖書的管理。2、需求描述:首先,當(dāng)然是要保證圖書館有書,在這個(gè)程序中,我們可以理解為圖書的采編入庫,得保證學(xué)生有書借才行。圖書館已經(jīng)有各式的書了,如果你需要借,則先應(yīng)該在學(xué)校的圖書管理系統(tǒng)中注冊(cè)才行,至少的確認(rèn)你是該校的學(xué)生才有資格的。其實(shí)就是一個(gè)通行證。接下來就是借書的過程了。借了書最后還是要還的,所以還有一個(gè)還書的過程。二、概要設(shè)計(jì)1、系統(tǒng)用到的抽象數(shù)據(jù)類型定義: 從整個(gè)管理系統(tǒng)來看,我們知道這里主要有兩個(gè)對(duì)象,一個(gè)是圖書館的圖書,另一個(gè)就是學(xué)生。這里這兩個(gè)對(duì)象不單單是
5、作為簡(jiǎn)單的主體存在,他們都有很多功能,所以我們使用結(jié)構(gòu)體來定義這兩個(gè)。1)圖書結(jié)構(gòu)體的定義: typedef struct char number10; /書號(hào)char name20; /書名char author20; /作者int countbook; /庫存 int shy; /剩余量 mbook;typedef struct int count;/書的本數(shù)mbook book100;/最大可有100本書mlibrary;mlibrary library; 2)學(xué)生結(jié)構(gòu)體 typedef struct /學(xué)生系統(tǒng) char accountmaxcount; /學(xué)生帳號(hào) char name
6、10; /學(xué)生姓名 book borrow_bookmaxnum; /所借書目(書號(hào)) int borrownum; /借書數(shù)目 stu; typedef struct int u; /用于記錄已注冊(cè)的學(xué)生數(shù)目 stu zw; /最大學(xué)生 數(shù) 可以有1000人 wstudent; wstudent student; 22、系統(tǒng)中子程序及功能要求的說明:1) void putin() 圖書的采編入庫:為了給學(xué)生提供較好的學(xué)習(xí)資源,我們可以采編多種類型的圖書,而且每種類型的書籍可以入庫一定數(shù)量,方便廣大學(xué)生借閱。2)void regist() 學(xué)生注冊(cè)信息:在借閱之前,通常要有身份識(shí)別,主要是為了
7、學(xué)校管理各種書籍借出,能夠統(tǒng)一規(guī)則管理整個(gè)借書于還書的過程。3)void borrow() (借書的方法) 其實(shí)整個(gè)程序的主要目的就是學(xué)生借書,學(xué)生通過自己注冊(cè)的唯一編號(hào)借閱圖書館在館的圖書。而且每個(gè)學(xué)生最多只能借8本。4)void lent() (還書的方法)借了書之后,在一定的時(shí)間內(nèi)必須要?dú)w還,書是圖書館的,不是某個(gè)人的,不能總是占有它,當(dāng)然也是從大眾利益出發(fā)。5)void lookstu() (查看學(xué)生信息) 不管你是借了還是沒有借書,只要你注冊(cè)了,就會(huì)有你 的信息。包括你的借閱號(hào),姓名,所借書籍書證號(hào),借閱的書的數(shù)目,還書日期等6) void save_student() (保存學(xué)生信
8、息) 如果只是你單方面的注冊(cè),而并沒有將你的所有信息保存起來,那就等于你沒有注冊(cè),如果你注冊(cè)過了,借書時(shí),沒有保存,那就是說圖書館的系統(tǒng)并不承認(rèn)你借過書。7)void readstu() (讀取學(xué)生信息) 看上去好像和查看學(xué)生信息類似,其實(shí)完全不同的過程,這是一個(gè)將學(xué)生的有關(guān)信息保存在文件中的過程,這個(gè)過程是我們視覺上感覺不到的。這和保存學(xué)生8)void lookup() (查詢圖書信息) 這個(gè)類似于查詢學(xué)生信息的方法,都是將從文件中讀取的信息打印出來。9) void save() (保存圖書信息的方法) 也就是將所有圖書的信息記錄在文件中,比如每次入庫了多少圖示,是哪些圖書,數(shù)量是多少,或者
9、是借出去一些后那些圖書的現(xiàn)有量是多少等相關(guān)的信息。10)void readbook() (讀取圖書信息) 這個(gè)跟讀取學(xué)生的信息道理是一樣的,只有將學(xué)生的所有信息讀取得內(nèi)存中,我們才能得到完整的圖書信息。3、各程序模塊之間的調(diào)用關(guān)系1)從上面每個(gè)方法差不多也可以知道每個(gè)方法之間的關(guān)系了。入庫之前,我們也需要將已經(jīng)入庫的圖書和已經(jīng)注冊(cè)好的學(xué)生信息讀取到內(nèi)存中,以便后面的操作。入庫圖書后,需要void save(),之后還要void readbook() 也就是更新圖書信息。2)學(xué)生注冊(cè)和圖書入庫的道路是一樣的,注冊(cè)之后,需要保存,再讀取到內(nèi)存中,也就是及時(shí)更新信息。2) 借書和還書的過程都是將圖書
10、和學(xué)生聯(lián)系起來,每次借書時(shí)都需要同時(shí)更新圖書的信息和學(xué)生的信息,借了書后,學(xué)生的記錄中應(yīng)該保存了他所借的書證號(hào)以及要還書的日期,而此時(shí)圖書的信息也要相應(yīng)的改變,借出后圖書的數(shù)量或書目上要體現(xiàn)出來。還書也是如此,成功還書后,學(xué)生信息和圖書信息也都要更新,就用到了對(duì)學(xué)生和圖書的信息的保存和讀取。三、詳細(xì)設(shè)計(jì)圖書管理系統(tǒng)的偽碼描述如下: /保存圖書信息的算法 fp=fopen(library.doc,w); /打開文件if(fp=null)printf(n不能保存圖書信息n);return;fwrite(&library.count,sizeof(int),1,fp); /讀取sizeof(int)
11、個(gè)數(shù)據(jù)到文件中fwrite(library.book,sizeof(library.book0),library.count,fp);/從文件中讀取圖書信息 fp=fopen(library.doc,r); /打開文件if(fp=null)printf(n不能打開圖書信息n);return; fread(&library.count,sizeof(int),1,fp); /從文件中讀取sizeof(int)個(gè)數(shù)據(jù)到library中 printf(-圖書數(shù)量-+library.count); fread(library.book,sizeof(library.book0),library.cou
12、nt,fp);/圖書信息入庫 while(y) scanf(%s,num); strcpy(library.booklibrary.count.number,num); scanf(%s,); scanf(%s,library.booklibrary.count.author); scanf(%d,&library.booklibrary.count.countbook); library.booklibrary.count.shy=library.booklibrary.count.countbook; library.count+
13、; /每次新書入庫,要將圖書的全部信息記錄/查看所以圖書信息 for (i=0;ilibrary.count;i+)printf(%st%st%st%dt%dn,library.booki.number,,library.booki.author,library.booki.shy,library.booki.countbook); /遍歷圖書的種類,將其打印出來/保存學(xué)生信息 fwrite(&student.u,sizeof(int),1,fp); /從學(xué)生信息中,讀取sizeof(int)個(gè)學(xué)生結(jié)構(gòu)體類型數(shù)據(jù)信息保存到文件中fwrite(student.
14、z,sizeof(student.z0),student.u,fp);/讀取學(xué)生信息 fread(&student.u,sizeof(int),1,fp);fread(student.z,sizeof(student.z0),student.u,fp);/借書管理 scanf(%s,bnum);/選擇要借的書籍序列號(hào) strcpy(student.zi.borrow_bookstudent.zi.borrownum.bname,bnum);/記錄學(xué)生借書的信息scanf(%s,bo_day); strcpy(student.zi.borrow_bookstudent.zi.borrownum.
15、borrow_day,bo_day); scanf(%s,lent_day); strcpy(student.zi.borrow_bookstudent.zi.borrownum.lent_day,lent_day);library.booki.shy-;student.zi.borrownum+;/每次借書后,學(xué)生的借書數(shù)目就會(huì)增加,而圖書館內(nèi)的該類型書數(shù)目將減少1/還書管理 for(i=0;istudent.u;i+) /遍歷已經(jīng)注冊(cè)好的學(xué)生for(j=0;jstudent.zi.borrownum;j+) /找到學(xué)生后,遍歷他所借的所有圖書 library.booki.shy+;stud
16、ent.zi.borrownum-; /還書后,要將該信息清除掉四、運(yùn)行結(jié)果 按照附錄中的測(cè)試數(shù)據(jù),得出如下測(cè)試、分析結(jié)果: 進(jìn)入系統(tǒng)初始界面(未操作之前,圖書和學(xué)生的文件也還不存在)注冊(cè)讀者(已經(jīng)注冊(cè)了的,就不需要注冊(cè)了,可以直接借書)查詢讀者信息(未借書之前,沒有借書記錄)圖書入庫(可以入庫不同的書)查詢圖書信息(沒有借出之前,圖書的現(xiàn)有量和庫存是相同的)借書0101讀者借01號(hào)圖書一本此時(shí)查詢圖書信息01書本現(xiàn)有量減少10101讀者的信息(借書后的學(xué)生信息)繼續(xù)借7本書達(dá)到借書上限(一個(gè)學(xué)生只能借8本書)此時(shí)的0101讀者的信息還書此時(shí)01號(hào)書的現(xiàn)有量增1此時(shí)0101讀者的信息未借書五、
17、本設(shè)計(jì)使用說明及測(cè)試數(shù)據(jù)a=1 時(shí),采編入庫圖書,a=2時(shí),注冊(cè)學(xué)生信息,a=3時(shí),學(xué)生借書管理,a=4時(shí),學(xué)生還書,a=5時(shí),顯示學(xué)生信息,a=6時(shí),顯示圖書信息,a=0時(shí),退出圖書管理系統(tǒng)。入庫的圖書書證號(hào) 01 書名 11 作者 aa 庫存 100書證號(hào) 02 書名 22 作者 bb 庫存 100書證號(hào) 5 書名 cc 作者 vv 庫存 100注冊(cè)學(xué)生 讀者書證號(hào) 0101 讀者姓名 qq六、設(shè)計(jì)總結(jié)通過該課程設(shè)計(jì),熟練掌握了數(shù)據(jù)結(jié)構(gòu)的選擇、設(shè)計(jì)、實(shí)現(xiàn)以及操作方法,以及如何選擇存儲(chǔ)表來存儲(chǔ),并讓我更加能熟練、靈活的運(yùn)用循環(huán)語句,讓我深刻理解了函數(shù)的定義和作用,函數(shù)調(diào)用的方便,為進(jìn)一步的應(yīng)
18、用開發(fā)打好基礎(chǔ),提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法地理分析和解決問題的能力,同時(shí)還讓我感覺到了自己的不足,我們應(yīng)該認(rèn)真學(xué)習(xí)知識(shí),學(xué)更多知識(shí)來完善自己。七、參考文獻(xiàn)1 嚴(yán)蔚敏、吳偉民主編 數(shù)據(jù)結(jié)構(gòu)(c語言版) 清華大學(xué)出版社 20022 金遠(yuǎn)平著 數(shù)據(jù)結(jié)構(gòu)(c+描述) 清華大學(xué)出版社 2005 3 許卓群等著 數(shù)據(jù)結(jié)構(gòu)與算法 高等教育出版社 2004八、源代碼實(shí)現(xiàn)#include#include#include#define maxcount 10#define maxnum 20#define w 1000typedef struct char number10; /書號(hào)char name20;
19、 /書名char author20; /作者int countbook; /庫存 int shy; /剩余量 mbook;typedef struct int count;/書的本數(shù)mbook book100;/最大可有100本書mlibrary;mlibrary library; typedef struct char borrow_day10; /借書日期 char lent_day10; /還書日期 char bname10; / book;typedef struct /學(xué)生系統(tǒng) char accountmaxcount; /學(xué)生帳號(hào) char name10; /學(xué)生姓名 book b
20、orrow_bookmaxnum; /所借書目(書號(hào)) int borrownum; /借書數(shù)目 stu; typedef struct int u; /用于記錄已注冊(cè)的學(xué)生數(shù)目 stu zw; /最大學(xué)生 數(shù) 可以有1000人 wstudent; wstudent student; void save()/保存圖書信息。file *fp;fp=fopen(library.doc,w);if(fp=null)printf(n不能保存圖書信息n);return;fwrite(&library.count,sizeof(int),1,fp);fwrite(library.book,sizeof(l
21、ibrary.book0),library.count,fp);fclose(fp);/每次將文件中的圖書信息 ,加載到內(nèi)存中void readbook() file *fp;fp=fopen(library.doc,r);if(fp=null)printf(n不能打開圖書信息n);return; fread(&library.count,sizeof(int),1,fp); printf(-圖書數(shù)量-+library.count); fread(library.book,sizeof(library.book0),library.count,fp); fclose(fp); void put
22、in() /*定義錄入函數(shù)*/ int i,count1; char num10;int y=1;while(y) printf(n新書入庫模塊.); printf(n請(qǐng)輸入新書信息.);printf(n包括書號(hào),書名,數(shù)量);printf(n圖書編號(hào):);scanf(%s,num); / count1=library.count;for(i=0;ilibrary.count;i+) if(strcmp(library.booki.number,num)=0) return; count1+;if(strcmp(count1,library.count)=0) strcpy(library.b
23、ooklibrary.count.number,num); printf(圖書書名:); scanf(%s,); printf(圖書作者:); scanf(%s,library.booklibrary.count.author); printf(圖書數(shù)量:); scanf(%d,&library.booklibrary.count.countbook); library.booklibrary.count.shy=library.booklibrary.count.countbook; library.count+;/if(strcm
24、p(count1,library.count)!=0)/*elseprintf(圖書管已經(jīng)有此書,請(qǐng)輸入要增加的數(shù)量:); scanf(%d,&library.booklibrary.count.countbook); library.booklibrary.count.shy=library.booklibrary.count.shy+library.booklibrary.count.countbook; */printf(n是否繼續(xù)錄入(1.繼續(xù);0,退出錄入):);fflush(stdin);scanf(%d,&y);if (y!=1)y=0;break; save();/查詢圖書信息
25、void lookup() int i;printf(圖書號(hào)t圖書名t作者名t現(xiàn)有量t庫存量n);for (i=0;i%d,student.u);fread(student.z,sizeof(student.z0),student.u,fp);fclose(fp);/學(xué)生注冊(cè)void regist()int i;char account10;printf(nn讀者初始化開始,請(qǐng)輸入讀者信息:n包括證號(hào),姓名.n學(xué)生注冊(cè)信息);printf(請(qǐng)輸入讀者的信息n讀者書證號(hào):);scanf(%s,account);for(i=0;istudent.u;i+)if(strcmp(student.zi.
26、account,account)=0)printf(你已經(jīng)注冊(cè)了!); return;if(i=student.u)strcpy(student.zstudent.u.account,account); printf(n讀者的姓名:); scanf(%s,); printf(恭喜你 注冊(cè)成功!); student.u+; fflush(stdin); save_student(); /保存學(xué)生信息 /借書 管理void borrow()char num10,bnum10,bo_day10,lent_day10;int i,y=1,j,n,cou=0
27、;printf(tt你已進(jìn)入借書模塊.n);while(y) printf(請(qǐng)輸入借書的讀者證號(hào):);scanf(%s,num) ; cou=library.count; for(i=0;i0) if(student.zi.borrownum=8) printf(對(duì)不起!你已達(dá)到最大借書上限,不能再借n);break; else printf(請(qǐng)輸入你要借的書的編號(hào):); scanf(%s,bnum); for(j=0;j+library.bookj.shy); if(strcmp(library.bookj.number,bnum)!=0) continue; else strcpy(stu
28、dent.zi.borrow_bookstudent.zi.borrownum.bname,bnum); printf(請(qǐng)輸入借書日期,格式如(08,03,24):); scanf(%s,bo_day); strcpy(student.zi.borrow_bookstudent.zi.borrownum.borrow_day,bo_day); printf(請(qǐng)輸入還書日期,格式如(08,03,24):); scanf(%s,lent_day); strcpy(student.zi.borrow_bookstudent.zi.borrownum.lent_day,lent_day); print
29、f(恭喜你!你已借書成功!n);library.booki.shy-;student.zi.borrownum+; save(); save_student(); readbook(); readstu(); break; if(j=cou) printf(對(duì)不起,本圖書館沒有你要借的書(或者貨存不足)!n); return; if(n=i) printf(對(duì)不起,你還沒有注冊(cè),請(qǐng)先注冊(cè),才能借書!); return; printf(n是否繼續(xù)錄入(1.繼續(xù);0,退出錄入):); fflush(stdin); scanf(%d,&y); if (y!=1) y=0; return; save(
30、);save_student();/還書管理void lent() char num10,bnum10,bo_day10,lent_day10;int i,j,con;printf(tt你已進(jìn)入還書模塊.n); printf(請(qǐng)輸入還書的讀者證號(hào):);scanf(%s,num) ; for(i=0;istudent.u;i+) con+; if(strcmp(student.zi.account,num)=0) if(student.zi.borrownum1) printf(對(duì)不起!你沒有借書,不需要還!n);break; else printf(請(qǐng)輸入你要借的書的編號(hào):); scanf(%s,bnum); for(j=0;jstudent.zi.borrownum;j+) if(strcmp(student.zi.borrow_bookj.bname,bnum)=0) printf(恭喜你!你已成功還書!n); library.booki.shy+;student.zi.borrownum-; save(); save_student(); return; if(strcmp(con,student.u)=0) printf(對(duì)不起,你還沒
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024農(nóng)產(chǎn)品訂購合同
- 2024年廣西古建施工承攬合同模板
- 2024年人力資源服務(wù)保密協(xié)議
- 2024年度城市軌道交通安全監(jiān)控系統(tǒng)合同
- 2024年建筑內(nèi)架搭建專業(yè)承包合同
- 2024年度產(chǎn)品研發(fā)與技術(shù)服務(wù)合同
- 2024不能強(qiáng)迫續(xù)訂勞動(dòng)合同
- 2024年度贈(zèng)與合同
- 2024年廢舊物品回收處理協(xié)議
- 2024商鋪?zhàn)赓U合同適用于各類商業(yè)街、購物中心店鋪
- 航站樓管理部《機(jī)場(chǎng)使用手冊(cè)》實(shí)施細(xì)則
- 腦卒中基本知識(shí)課件
- 高效溝通與管理技能提升課件
- 消防維保方案 (詳細(xì)完整版)
- 四年級(jí)上冊(cè)英語課件- M3U1 In the school (Period 3 ) 上海牛津版試用版(共15張PPT)
- 檔案館建設(shè)標(biāo)準(zhǔn)
- 高邊坡支護(hù)專家論證方案(附有大量的圖件)
- 蘇教版五年級(jí)上冊(cè)數(shù)學(xué)試題-第一、二單元 測(cè)試卷【含答案】
- 人員定位礦用井口唯一性檢測(cè)系統(tǒng)
- 電力系統(tǒng)數(shù)據(jù)標(biāo)記語言E語言格式規(guī)范CIME
- 歷史紀(jì)年與歷史年代的計(jì)算方法
評(píng)論
0/150
提交評(píng)論