圖書管理系統(tǒng)源碼及課程設(shè)計(jì)報(bào)告c語言版_第1頁
圖書管理系統(tǒng)源碼及課程設(shè)計(jì)報(bào)告c語言版_第2頁
圖書管理系統(tǒng)源碼及課程設(shè)計(jì)報(bào)告c語言版_第3頁
圖書管理系統(tǒng)源碼及課程設(shè)計(jì)報(bào)告c語言版_第4頁
圖書管理系統(tǒng)源碼及課程設(shè)計(jì)報(bào)告c語言版_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.圖書管理系統(tǒng)題目:圖書管理基本業(yè)務(wù)包含:對一本書的采編入庫、消除庫存、借閱、和送還等等。試設(shè)計(jì)一個(gè)圖書管理系統(tǒng),將上述業(yè)務(wù)活動(dòng)借助于計(jì)算機(jī)系統(tǒng)達(dá)成。一、需求剖析1、每種書的登記容起碼包含書號(hào),書名,著者,現(xiàn)存量和總存量等五項(xiàng)。2、系統(tǒng)的操作定義及其功能定義以下:采編入庫:新購一種書,經(jīng)分類和確立書號(hào)以后的攻擊到圖書賬目中去,假如這類書在帳中已有,則只將總庫存量增添。消除庫存:某種書已無保存價(jià)值,將它從圖書賬目中注銷借閱:假如將一種書的現(xiàn)存量大于零,則借出一本書登記借閱者的圖書證號(hào)和送還限期。送還:注銷對借閱者的登記,改變該書的現(xiàn)存量二、綱要設(shè)計(jì)要實(shí)現(xiàn)上述需求,需用到查找、排序的算法及定義。A

2、DTStaticSearchTable數(shù)據(jù)對象D:D是擁有同樣特征的數(shù)據(jù)元素的會(huì)合。每個(gè)數(shù)據(jù)元素含有種類同樣的重點(diǎn)字,可獨(dú)一表記數(shù)據(jù)元素。數(shù)據(jù)關(guān)系R:數(shù)據(jù)元素同屬一個(gè)會(huì)合。word專業(yè)資料.基本操作P:Create(&ST,n);Destroy(&ST);Search(ST,key);Traverse(ST,Visit();ADTStaticSearchTableCreate(&ST,n);操作結(jié)果:結(jié)構(gòu)一個(gè)含n個(gè)數(shù)據(jù)元素的靜態(tài)查找表ST。Destroy(&ST);初始條件:靜態(tài)查找表ST存在;操作結(jié)果:銷毀表ST。intSearch_Seq(SSTableST,KeyTypekey)在次序表

3、ST中次序查找其重點(diǎn)字等于/key的數(shù)據(jù)元素。若找到,則函數(shù)值為該元素在表中的地點(diǎn),不然為0。ST.elem0.key=key;/“標(biāo)兵”for(i=ST.length;ST.elemi.key!=key;-i);/從后往前找returni;/找不到時(shí),i為0/Search_Seq、動(dòng)向查找表:ADTDynamicSearchTable數(shù)據(jù)對象D:D是擁有同樣特征的數(shù)據(jù)元素的集合。每個(gè)數(shù)據(jù)元素含有種類同樣的重點(diǎn)word專業(yè)資料.字,可獨(dú)一表記數(shù)據(jù)元素。數(shù)據(jù)關(guān)系R:數(shù)據(jù)元素同屬一個(gè)會(huì)合InitDSTable(&DT);操作結(jié)果:結(jié)構(gòu)一個(gè)空的動(dòng)向查找表DT。DestroyDSTable(&DT);

4、初始條件:態(tài)查找動(dòng)表DT存在操作結(jié)果:銷毀動(dòng)向查找表DTInsertDSTable(&DT,e);初始條件:動(dòng)向查找表DT存在,e為待插入的數(shù)據(jù)元素;若DT中不存在其關(guān)鍵字操作結(jié)果:等于e.key的數(shù)據(jù)元素,則插入e到DT。圖書結(jié)構(gòu)體的定義:typedefstructcharnumber10;/書號(hào)charname20;/書名charauthor20;/作者intcountbook;/庫存intshY;/節(jié)余量mbook;typedefstructintcount;/書的本數(shù)mbookbook100;/最大可有100本書mlibrary;mlibrarylibrary;三、詳盡設(shè)計(jì)#inclu

5、deword專業(yè)資料.#include#include#include#defineMax2typedefstructbookcharbook_num10;charbook_name20;charbook_writer10;intbook_xy;intbook_kc;structbook*next;BK;typedefstructborrowcharborrow_book_num10;charlimit_date8;BO;typedefstructreadercharreader_num10;charreader_name10;intright;BOborrowMax;structreader

6、*next;RD;BK*h_book;RD*h_reader;voidLogin();intMenu();voidInit();voidInit_book();word專業(yè)資料.voidMenu_select();voidInsert_New_Book();voidFind_Book();voidadd_reader();voidPrint_reader();voidPrint_book();voidBorrow_Book();voidReturn_Book();voidSave();voidSave_Book();voidSave_Reader();voidLoad();voidLoad_R

7、eader();voidLoad_Book();intMenu()/*主菜單*/intdm;printf(ntt圖書管理系統(tǒng)主菜單n);printf(=n);printf(n);printf(n);printf(n);printf(n);printf(n);printf(n);printf(n);printf(=n);printf(請選擇相應(yīng)的代碼:);for(;)scanf(%d,&dm);if(dm6)word專業(yè)資料.printf(n錯(cuò)誤!請從頭輸入:);elsebreak;returndm;voidMenu_select()/*主菜單項(xiàng)選擇擇函數(shù)*/for(;)switch(Menu(

8、)/*功能選擇*/case0:system(cls);Save();printf(nnt文件保存成功!n);printf(nnt歡迎下次使用本系統(tǒng)!n);getch();exit(0);case1:Insert_New_Book();break;case2:add_reader();break;case3:Borrow_Book();break;case4:Return_Book();break;case5:Print_book();break;case6:Print_reader();break;default:printf(n錯(cuò)誤!);exit(0);voidInit()/*初始化*/In

9、it_book();voidInit_book()/*初始化圖書信息*/word專業(yè)資料.BK*p0;printf(n圖書初始化開始,請輸入圖書信息.n包含編號(hào).書名.數(shù)目.n);p0=(BK*)malloc(sizeof(BK);h_book=p0;printf(n請輸入圖書信息:n);printf(圖書編號(hào):);/*輸入圖書編號(hào)(獨(dú)一)*/scanf(%s,p0-book_num);printf(圖書名稱:);/*輸入圖書名稱*/scanf(%s,p0-book_name);printf(圖書作者:);/*輸入圖書作者*/scanf(%s,p0-book_writer);printf(圖書

10、數(shù)目:);/*輸入圖書數(shù)目*/scanf(%d,&p0-book_kc);p0-book_xy=p0-book_kc;/*開始時(shí)圖書現(xiàn)有量和庫存量相等*/p0-next=NULL;printf(n圖書信息初始化完成!按隨意鍵持續(xù)下一步操作.n);getch();system(cls);voidInsert_New_Book()/*新書入庫*/BK*p,*p0,*p1;p=p1=h_book;printf(n新書入庫模塊.n);printf(n請輸入新書信息.n包含書號(hào).書名.數(shù)目.n);p0=(BK*)malloc(sizeof(BK);printf(圖書編號(hào):);scanf(%s,p0-bo

11、ok_num);while(strcmp(p0-book_num,p1-book_num)!=0&p1-next!=word專業(yè)資料.NULL)p1=p1-next;if(strcmp(p0-book_num,p1-book_num)=0)/*此處罰兩種狀況,若圖書編號(hào)存在,則直接進(jìn)庫,只須輸入書的數(shù)目*/printf(n此編號(hào)圖書已存在!直接入庫!n);printf(圖書數(shù)目:);scanf(%d,&p0-book_kc);p1-book_kc+=p0-book_kc;p1-book_xy+=p0-book_kc;else/*若不存在,則需要輸入其余的信息,而后在進(jìn)行插入操作*/printf

12、(圖書名稱:);scanf(%s,p0-book_name);printf(圖書作者:);scanf(%s,p0-book_writer);printf(圖書數(shù)目:);scanf(%d,&p0-book_kc);while(p-next)p=p-next;if(h_book=NULL)h_book=p0;/*此處罰兩種狀況,鏈表中沒有數(shù)據(jù),head直接指向p0處*/elsep-next=p0;/*此處罰兩種狀況,鏈表中有數(shù)據(jù),鏈表中最后元素的next指向p0處*/p0-next=NULL;p0-book_xy=p0-book_kc;printf(n新書入庫完成!按隨意鍵持續(xù)下一步操作.n);g

13、etch();system(cls);voidadd_reader()/*增添讀者*/word專業(yè)資料.RD*p0;inti;printf(n讀者初始化開始,請輸入讀者信息.n包含書證號(hào).姓名.n);p0=(RD*)malloc(sizeof(RD);/*申請新結(jié)點(diǎn)儲(chǔ)存空間*/h_reader=p0;printf(n請輸入讀者的信息:n);printf(讀者書證號(hào):);scanf(%s,p0-reader_num);printf(讀者姓名:);scanf(%s,p0-reader_name);p0-right=0;for(i=0;iborrowi.borrow_book_num,0);/*所借

14、圖書直接置為0(即沒有借書)*/strcpy(p0-borrowi.limit_date,0);p0-next=NULL;printf(n讀者信息初始化完成!按隨意鍵持續(xù)下一步操作.n);getch();system(cls);voidBorrow_Book()/*借書模塊*/BK*p0;RD*p1;charbo_num10,rea_num10,lim_date8;inti;p0=h_book;p1=h_reader;printf(n借書模塊.n);printf(n請輸入借書的讀者書證號(hào):);scanf(%s,rea_num);while(p1-next!=NULL&strcmp(rea_nu

15、m,p1-reader_num)!=0)word專業(yè)資料.p1=p1-next;if(p1-next=NULL&strcmp(rea_num,p1-reader_num)!=0)printf(n此讀者編號(hào)不存在!按隨意鍵返回.n);gotoEND;printf(n請輸入你要借的書的編號(hào):);scanf(%s,bo_num);while(strcmp(bo_num,p0-book_num)!=0&p0-next!=NULL)p0=p0-next;if(p0-next=NULL&strcmp(bo_num,p0-book_num)!=0)printf(n此圖書編號(hào)不存在!按隨意鍵返回.n);els

16、eif(p0-book_xyright=Max)printf(n不好心思,借書數(shù)目已滿!不可以借書!n按隨意鍵返回.);elseif(strcmp(p1-borrow0.borrow_book_num,0)!=0)for(i=0;iborrowi.borrow_book_num,bo_num)=0)printf(n對不起!同一個(gè)讀者不可以同借兩真同樣的書!n);elseif(strcmp(p1-borrowi.borrow_book_num,0)=0)word專業(yè)資料.printf(n請輸入你要送還圖書的日期:);scanf(%s,lim_date);strcpy(p1-borrowp1-ri

17、ght+.borrow_book_num,bo_num);strcpy(p1-borrowp1-right-1.limit_date,lim_date);p0-book_xy-;printf(n讀者編號(hào)%s借書完成!按隨意鍵持續(xù)下步操作.,p1-reader_num);elseprintf(n請輸入你要送還圖書的日期:);scanf(%s,lim_date);strcpy(p1-borrowp1-right+.borrow_book_num,bo_num);strcpy(p1-borrowp1-right-1.limit_date,lim_date);p0-book_xy-;printf(n讀

18、者編號(hào)%s借書完成!按隨意鍵持續(xù)下步操作.,p1-reader_num);END:getch();system(cls);voidReturn_Book()/*還書模塊*/BK*p;RD*q;inti,j,find=0;charreturn_book_num10,return_reader_num10;p=h_book;q=h_reader;printf(n還書模塊.n);word專業(yè)資料.printf(n請輸入要還書的讀者編號(hào):);scanf(%s,return_reader_num);while(q-next!=NULL&strcmp(return_reader_num,q-reader_

19、num)!=0)q=q-next;if(q-next=NULL&strcmp(return_reader_num,q-reader_num)!=0)find=2;printf(n此讀者編號(hào)不存在!按隨意鍵返回.n);gotoend;printf(n請輸入讀者還書的編號(hào):);scanf(%s,return_book_num);while(p-next!=NULL&strcmp(return_book_num,p-book_num)!=0)p=p-next;if(p-next=NULL&strcmp(return_book_num,p-book_num)!=0)find=2;printf(n錯(cuò)誤!

20、此圖書編號(hào)不存在!按隨意鍵返回.n);gotoend;for(i=0;iborrowi.borrow_book_num)=0)/*假如此讀者借了此書*/find=1;for(j=i;jborrowj.borrow_book_num,q-borrowj+1.borrow_book_num);strcpy(q-borrowj.limit_date,q-borrowj+1.limit_date);strcpy(q-borrowMax-1.borrow_book_num,0);strcpy(q-borrowMax-1.limit_date,0);p-book_xy+;q-right-;printf(n

21、編號(hào)%s的讀者還書完成!按隨意鍵持續(xù)下步操作.,return_reader_num);if(find=0)printf(n錯(cuò)誤!此讀者未借此書!按隨意鍵返回.n);end:getch();system(cls);voidPrint_book()/*查問圖書信息*/BK*p;p=h_book;printf(n圖書信息以下:nn);printf(圖書編號(hào)t圖書名稱t圖書作者t現(xiàn)有tt庫存n);while(p!=NULL)printf(%stt%stt%stt%dtt%dn,p-book_num,p-book_name,p-book_writer,p-book_xy,p-book_kc);p=p-n

22、ext;printf(n圖書信息打印完成!按隨意鍵持續(xù)下一步操作.);getch();word專業(yè)資料.system(cls);voidPrint_reader()/*查問讀者信息*/RD*p;inti;p=h_reader;printf(n讀者信息以下:nn);printf(讀者書證號(hào)tt讀者姓名n);printf(n);while(p!=NULL)printf(t%stt%s,p-reader_num,p-reader_name);for(i=0;iborrowi.borrow_book_num);printf(tt%s,p-borrowi.limit_date);printf(n);p=

23、p-next;printf(n讀者信息打印完成!按隨意鍵持續(xù)下一步操作.);getch();system(cls);voidSave()/*保存信息*/Save_Reader();word專業(yè)資料.Save_Book();voidSave_Reader()/*保存讀者信息*/FILE*fp_reader;RD*p,*p0;p=h_reader;if(fp_reader=fopen(Reader.txt,wb)=NULL)/*創(chuàng)立文件,進(jìn)行保存*/printf(n文件保存失敗!n請從頭啟動(dòng)本系統(tǒng).n);exit(0);while(p!=NULL)if(fwrite(p,sizeof(RD),1,

24、fp_reader)!=1)/*將鏈表中的信息寫入文件中*/printf(n寫入文件失敗!n請從頭啟動(dòng)本系統(tǒng)!n);p0=p;p=p-next;free(p0);/*開釋全部結(jié)點(diǎn)*/h_reader=NULL;fclose(fp_reader);/*封閉文件*/voidSave_Book()/*保存圖書信息*/FILE*fp_book;/*創(chuàng)立文件型指針*/BK*p,*p0;p=h_book;if(fp_book=fopen(Book.txt,wb)=NULL)/*創(chuàng)立文件,進(jìn)行保存*/word專業(yè)資料.printf(n文件保存失敗!n請從頭啟動(dòng)本系統(tǒng).n);exit(0);while(p!=

25、NULL)if(fwrite(p,sizeof(BK),1,fp_book)!=1)/*將鏈表中的信息寫入文件中*/printf(n寫入文件失敗!n請從頭啟動(dòng)本系統(tǒng)!n);p0=p;p=p-next;free(p0);h_book=NULL;fclose(fp_book);/*封閉文件*/voidLoad()/*加載信息*/Load_Reader();Load_Book();voidLoad_Reader()/*加載讀者信息*/RD*p1,*p2,*p3;FILE*fp;/*創(chuàng)立文件型指針*/fp=fopen(book.txt,rb);/*翻開文件*/p1=(RD*)malloc(sizeof(RD);fread(p1,sizeof(RD),1,fp);h_reader=p3=p2=p1;while(!feof(fp)/*讀出信息,從頭鏈入鏈表*/p1=(RD*)malloc(sizeof(RD);fread(p1,sizeof(RD),1,fp);p2-next=p1;p3=p2;word專業(yè)資料.p2=p1;p3-next=NULL;free(p1);fclose(fp);/*封閉文件*/voidLoad_Book()/*加載圖書信息*/BK*p1,*p2,*p3;FILE*fp;/*創(chuàng)立文件型指針*/fp=fopen(Book.txt,rb);/*翻開文件*

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論