數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——圖書(shū)管理信息系統(tǒng)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——圖書(shū)管理信息系統(tǒng)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——圖書(shū)管理信息系統(tǒng)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——圖書(shū)管理信息系統(tǒng)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——圖書(shū)管理信息系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、圖書(shū)管理信息系統(tǒng)一、 課程設(shè)計(jì)題目:圖書(shū)管理信息系統(tǒng)二、課程設(shè)計(jì)內(nèi)容:實(shí)現(xiàn)圖書(shū)管理信息系統(tǒng)的設(shè)計(jì)。這是一個(gè)數(shù)據(jù)結(jié)構(gòu)的綜合使用,涉及的知識(shí)比較全面,特別是對(duì)文件的使用更為全面。進(jìn)入系統(tǒng)后,操作員可進(jìn)行系統(tǒng)維護(hù)、讀者管理、圖書(shū)管理、圖書(shū)流通、退出系統(tǒng)等操作。系統(tǒng)維護(hù):有“初始化”和“讀盤(pán)”兩個(gè)重要操作。第一次開(kāi)始運(yùn)行時(shí),必須選擇“初始化”,使有關(guān)文件指針、計(jì)數(shù)器等初始化為0;而在以后的每次操作開(kāi)始時(shí),選擇“讀盤(pán)”,將保存過(guò)的相關(guān)圖書(shū)信息磁盤(pán)文件讀入,以便進(jìn)行各類操作。讀者管理:可實(shí)現(xiàn)讀者信息的追加一項(xiàng)輸入。需要輸入讀者號(hào)、讀者名、可借書(shū)數(shù)。 輸入“y”可連續(xù)輸入信息,若輸入“n”則結(jié)束輸入,退出讀

2、者管理。 圖書(shū)管理:有“圖書(shū)信息輸入”和“圖書(shū)信息查詢”兩個(gè)重要操作。若選“圖書(shū)信息輸入”,就進(jìn)入相關(guān)子模塊,在輸入信息的同時(shí)建立相應(yīng)的索引及索引文件和索引鏈頭文件,輸入書(shū)號(hào)、書(shū)名、作者名、出版社、分類號(hào)、藏書(shū)量等信息,根據(jù)提示輸入“y”實(shí)現(xiàn)連續(xù)輸入,若輸入“n”則結(jié)束輸入,退出圖書(shū)管理;有了圖書(shū)信息數(shù)據(jù)之后,就可以進(jìn)行圖書(shū)信息的查詢以及圖書(shū)借閱等操作了。若選“圖書(shū)信息查詢”,可根據(jù)提示按書(shū)號(hào)、書(shū)名、作者、出版社等進(jìn)行查詢,系統(tǒng)會(huì)將查詢結(jié)果輸出。 圖書(shū)流通:有“借書(shū)處理”和“還書(shū)處理”兩個(gè)重要操作。當(dāng)選擇“借書(shū)處理”,系統(tǒng)接受輸入信息后,首先查詢讀者文件。若沒(méi)查到,顯示“非法讀者!”,若查到,

3、則再檢查該讀者書(shū)是否已借滿,如果未借滿,則繼續(xù)檢查圖書(shū)文件;否則顯示“書(shū)已借滿!”。檢查圖書(shū)文件如發(fā)現(xiàn)書(shū)號(hào)不存在或書(shū)已借出,都會(huì)提示讀者“非法書(shū)號(hào)!”或“書(shū)已借出”,否則,進(jìn)行借出處理,修改借閱文件、讀者文件以及圖書(shū)主文件的相關(guān)數(shù)據(jù)項(xiàng),并顯示“借書(shū)成功!”。當(dāng)選擇“還書(shū)處理”,系統(tǒng)在接受輸入信息之后,首先用書(shū)號(hào)查詢借還書(shū)文件,若找到,則填入還書(shū)日期,然后再用書(shū)號(hào)查詢圖書(shū)主文件,修改借出數(shù),用讀者號(hào)查找讀者文件,修改讀者的借書(shū)數(shù),而后顯示“還書(shū)成功!”,否則顯示“非法書(shū)號(hào)!”并返回主控菜單。 退出系統(tǒng):當(dāng)需要的操作完成后,選擇該項(xiàng),系統(tǒng)會(huì)自動(dòng)將當(dāng)前圖書(shū)數(shù)據(jù)及相關(guān)的信息寫(xiě)入磁盤(pán)文件。待下次運(yùn)行系統(tǒng)

4、時(shí),首先讀入文件,再進(jìn)行各種操作。三、算法設(shè)計(jì): 對(duì)于主關(guān)鍵字的查找,采取折半查找的算法,對(duì)于次關(guān)鍵字的查找,采取順序查找的算法。 存儲(chǔ)用到了靜態(tài)鏈表和文件操作。四、程序正確性驗(yàn)證(指邊界測(cè)試數(shù)據(jù),即程序?qū)τ诰倪x擇的典型、苛刻而帶有刁難性的幾組輸入數(shù)據(jù)能夠得出滿足要求的結(jié)果): (1)當(dāng)輸入相同的讀者信息時(shí): (2)當(dāng)輸入相同的圖書(shū)信息時(shí): (3)當(dāng)借書(shū)時(shí)輸入無(wú)效的讀者號(hào)時(shí): (4)當(dāng)借書(shū)時(shí)輸入無(wú)效的書(shū)號(hào)時(shí):(5)當(dāng)還書(shū)時(shí)輸入錯(cuò)誤的書(shū)號(hào)時(shí):五、課程設(shè)計(jì)過(guò)程中出現(xiàn)的主要問(wèn)題、原因及解決方法:出現(xiàn)的主要問(wèn)題是:當(dāng)連續(xù)輸入三個(gè)字符串時(shí),第二個(gè)字符串不能傳入變量中;原因:第一個(gè)字符數(shù)組的長(zhǎng)度定義的有

5、問(wèn)題。解決方法:讓三個(gè)字符串分開(kāi)輸入,將第一個(gè)字符數(shù)組的長(zhǎng)度加1。出現(xiàn)的問(wèn)題還有,就是對(duì)scanf和prinf的用法不熟。六、  課程設(shè)計(jì)的主要收獲:通過(guò)這次課程設(shè)計(jì),我對(duì)學(xué)過(guò)的知識(shí)進(jìn)行了綜合,一些理解的不夠深刻的問(wèn)題,能得以解決。從碰到問(wèn)題,在網(wǎng)上找資料,從圖書(shū)館借相關(guān)書(shū)籍看,請(qǐng)同學(xué)和老師幫忙,到真正解決問(wèn)題,我經(jīng)歷了,從痛苦到喜悅的全過(guò)程。這次課程設(shè)計(jì)給我更多的,我想還是那份編程的經(jīng)驗(yàn)與其過(guò)程中的酸甜苦辣。同時(shí)很感謝幫助過(guò)我的同學(xué),更感謝胡老師的悉心教導(dǎo)。七、   對(duì)今后課程設(shè)計(jì)的建議: 希望老師在驗(yàn)收時(shí),不要盲目的相信學(xué)生,也不要懷疑學(xué)生,僅此而已。八、 源

6、代碼 /*borrow.c*/*(1)借書(shū)處理算法*/void BorrowBook(BookDbaseFile &bf,BnoIdxFile bif,BbookFile &bbf,ReadFile &rf)char dzh4,sh5,jyrq8;char a5;int i,j,k=0,jls=0;cout<<"輸入讀者號(hào):"cin>>dzh;for(i=1;i<=rf.len;i+) /查找讀者文件if(strcmp(dzh,rf.ReadReci.rno)=0) k=i;break;if(k=0)printf(&qu

7、ot;非法讀者!n");return;if(rf.ReadReck.bn2>=rf.ReadReck.bn1) printf("書(shū)已借滿!n");return;cout<<"輸入書(shū)號(hào):"cin>>sh; strcpy(a,sh);j=BinSearch(bif,sh); /查找圖書(shū)文件if(j=0) printf("非法書(shū)號(hào)!n");return;if(bf.BookDbasej.borrownum>=bf.BookDbasej.storenum)printf("圖書(shū)已借出n&q

8、uot;);return; cout<<"輸入借書(shū)日期:" cin>>jyrq;jls=+bbf.len; /借還書(shū)文件記錄數(shù)加1 strcpy(bbf.Bbookjls.rno,dzh); /借還書(shū)文件追加一條記錄,記錄相關(guān)內(nèi)容 strcpy(bbf.Bbookjls.bno,a); strcpy(bbf.Bbookjls.date1,jyrq);rf.ReadReck.bn2+;cout<<"該讀者現(xiàn)在已借書(shū)數(shù):"<<rf.ReadReck.bn2<<endl;bf.BookDbasej.b

9、orrownum+;cout<<"該圖書(shū)被借出次數(shù):"<<bf.BookDbasej.borrownum<<endl;printf("借書(shū)成功!n");/*(2)還書(shū)處理算法*/void BackBook(BookDbaseFile &bf,BnoIdxFile bif,BbookFile &bbf,ReadFile &rf)char dzh8,sh4,hsrq8;int i,j,k=0,m=0; cout<<"輸入讀者號(hào):" scanf("%s&quo

10、t;,dzh);for(i=1;i<=rf.len;i+) /查找讀者文件if(strcmp(dzh,rf.ReadReci.rno)=0) k=i;break;if(k=0)printf("非法讀者!n");return; cout<<"輸入書(shū)號(hào):"scanf("%s",sh);for(i=1;i<=bbf.len;i+) /查詢借還書(shū)文件if(strcmp(sh,bbf.Bbooki.bno)=0)m=i;break;if(m=0)printf("書(shū)號(hào)有誤,不是該讀者所借的書(shū)的書(shū)號(hào)!n"

11、);return;j=BinSearch(bif,sh); /查找圖書(shū)文件if(j=0)printf("非法書(shū)號(hào)!n");return; cout<<"輸入還書(shū)日期:" scanf("%s",hsrq);rf.ReadReck.bn2-; /修改借書(shū)數(shù)bf.BookDbasej.borrownum-; /修改借出數(shù)strcpy(bbf.Bbookm.date2,hsrq); /填入還書(shū)日期printf("還書(shū)成功!n"); /*createfile.c輸入圖書(shū)記錄建立相關(guān)文件*/*(1)追加一條圖書(shū)主數(shù)

12、據(jù)庫(kù)記錄*/void AppeDBaseRec(BookDbaseFile &df)int i;i=+df.len; /圖書(shū)主數(shù)據(jù)庫(kù)長(zhǎng)度加1printf("書(shū)號(hào) 書(shū) 名 作者名 出版社 分類 藏書(shū)量n");scanf("%s%s",df.BookDbasei.bno,df.BookDbasei.bname); scanf("%s%s",df.BookDbasei.author,df.BookDbasei.press); scanf("%s %d",df.BookDbasei.sortno,&df.B

13、ookDbasei.storenum);df.BookDbasei.borrownum=0; /借出數(shù)置0for(int j=1;j<i;j+)if(strcmp(df.BookDbasei.bno,df.BookDbasei.bno)=0)cout<<"已有相同的書(shū)號(hào),請(qǐng)重新輸入!"<<endl;df.len-;break;/*(2)修改書(shū)號(hào)索引表*/void ChangeBnoIdxF(BookDbaseFile &df,BnoIdxFile &bif)int i,j,k;char sh5;i=df.len; /圖書(shū)主文件的

14、當(dāng)前長(zhǎng)度,也就是要處理的當(dāng)前記錄號(hào)strcpy(sh,df.BookDbasei.bno); /取記錄中書(shū)號(hào)送至變量sh中j=bif.len; k=1;while(j>=1)if(strcmp(sh,bif.BnoIdxj.bno)>0)k=j+1;break;j-; if(bif.len>0) /有序表的插入for(j=bif.len;j>=k;j-)bif.BnoIdxj+1=bif.BnoIdxj; /記錄后移strcpy(bif.BnoIdxk.bno,sh);bif.BnoIdxk.RecNo=i;bif.len+; /表長(zhǎng)加1/*(3)修改書(shū)名索引以及書(shū)名鏈

15、頭索引表*/void ChangeLinkHeadF1(BookDbaseFile &df,LHFile1 &lhf1)int i,j,k,m;char sm20;i=df.len; /圖書(shū)主文件的當(dāng)前長(zhǎng)度,也就是要處理的當(dāng)前記錄號(hào)strcpy(sm,df.BookDbasei.bname); /取記錄中書(shū)名送至變量sm中j=1;k=0;while(j<=lhf1.len1)if(strcmp(sm,lhf1.LHFrec1j.bname)=0) k=j;break;j+; if(k!=0)df.BookDnext=lhf1.LHFrec1k.lhea

16、d;lhf1.LHFrec1k.lhead=i; /i為主文件的當(dāng)前記錄號(hào)(假定為指針)lhf1.LHFrec1k.RecNum+;else m=+lhf1.len1; /索引關(guān)鍵字個(gè)數(shù)加1df.BookDnext=0; /用頭插法建立鏈表,指針置空l(shuí)hf1.LHFrec1m.lhead=i; /i為主文件的當(dāng)前記錄號(hào)(假定為指針)lhf1.LHFrec1m.RecNum=1; /計(jì)數(shù)器置1strcpy(lhf1.LHFrec1m.bname,sm);/*(4)修改作者索引以及作者鏈頭索引表*/void ChangeLinkHeadF2(BookDbaseFile &

17、;df,LHFile2 &lhf2)int i,j,k,m;char zz8;i=df.len; /圖書(shū)主文件的當(dāng)前長(zhǎng)度,也就是要處理的當(dāng)前記錄號(hào)strcpy(zz,df.BookDbasei.author);/取記錄中作者送至變量zz中j=1;k=0;while(j<=lhf2.len2) if(strcmp(zz,lhf2.LHFrec2j.author)=0)k=j; break;j+;if(k!=0)df.BookDbasei.authnext=lhf2.LHFrec2k.lhead;lhf2.LHFrec2k.lhead=i; /i為文件的當(dāng)前記錄號(hào)(假定為指針)lhf

18、2.LHFrec2k.RecNum+;elsem=+lhf2.len2; /索引關(guān)鍵字個(gè)數(shù)加1df.BookDbasei.authnext=0; /用頭插法建立鏈表,指針置空 lhf2.LHFrec2m.lhead=i; /i為主文件的當(dāng)前記錄號(hào)(假定為指針)lhf2.LHFrec2m.RecNum=1; /計(jì)數(shù)器置1strcpy(lhf2.LHFrec2m.author,zz);/*(5)修改出版社索引以及出版社鏈頭索引表。*/void ChangeLinkHeadF3(BookDbaseFile &df,LHFile3 &lhf3)int i,j,k,m;char cbs1

19、0;i=df.len; /圖書(shū)主文件的當(dāng)前長(zhǎng)度,也就是要處理的當(dāng)前記錄號(hào) strcpy(cbs,df.BookDbasei.press); /取記錄中書(shū)名送至變量sm中j=1;k=0;while(j<=lhf3.len3) if(strcmp(cbs,lhf3.LHFrec3j.press)=0)k=j;break;j+;if(k!=0)df.BookDbasei.prenext=lhf3.LHFrec3k.lhead;lhf3.LHFrec3k.lhead=i; /i為主文件的當(dāng)前記錄號(hào)(假定為指針)lhf3.LHFrec3k.RecNum+;elsem=+lhf3.len3; /索引

20、關(guān)鍵字個(gè)數(shù)加1df.BookDbasei.prenext=0; /用頭插法建立鏈表,指針置空l(shuí)hf3.LHFrec3m.lhead=i; /i為主文件的當(dāng)前記錄號(hào)(假定為指針)lhf3.LHFrec3m.RecNum=1; /計(jì)數(shù)器置1strcpy(lhf3.LHFrec3m.press,cbs);/*(6)建立圖書(shū)多重表主索引及相關(guān)索引鏈頭文件。*/ void CreateBook(BookDbaseFile &bf,BnoIdxFile &bif,LHFile1 &f1,LHFile2 &f2,LHFile3 &f3) char yn='y&

21、#39; while(yn='y'|yn='Y') AppeDBaseRec(bf); /輸入記錄 ChangeBnoIdxF(bf,bif); /修改書(shū)號(hào)索引文件 ChangeLinkHeadF1(bf,f1); ChangeLinkHeadF2(bf,f2); ChangeLinkHeadF3(bf,f3); cout<<"繼續(xù)輸入嗎? y/n :" cin>>yn; /*reader.c 讀者管理子系統(tǒng)*/void ReaderManage(ReadFile &rf) int i;char yn='

22、;y'i=+rf.len;while(yn='y'|yn='Y')printf("輸入讀者號(hào) 讀者名 可借圖書(shū)數(shù)n");scanf("%s %s",rf.ReadReci.rno,rf.ReadR);scanf("%d",&rf.ReadReci.bn1); rf.ReadReci.bn2=0; /將已借書(shū)數(shù)置0for(int j=1;j<i;j+)if(strcmp(rf.ReadReci.rno,rf.ReadRecj.rno)=0&&strcm

23、p(rf.ReadR,rf.ReadR)=0)cout<<"已有該讀者的信息,請(qǐng)重新輸入!"<<endl; i=rf.len-1; break;cout<<"繼續(xù)輸入嗎?y/n:"cin>>yn; i+;rf.len=i-1;/*readfile.c 讀入盤(pán)中各類文件*/void readfile(BookDbaseFile &bf,BnoIdxFile &bif,LHFile1 &f1,LHFile2 &f2,LHFile3 &f3,

24、ReadFile &rf,BbookFile &bbf)FILE *fpout;int i;/讀圖書(shū)文件fpout=fopen("book","rb");if(fpout=NULL) printf("Cannot open this file book.txt!n"); exit(0);i=1;while(!feof(fpout)fread(&bf.BookDbasei,sizeof(BookRecType),1,fpout);i+;if(feof(fpout)break;bf.len=i-1;fclose(f

25、pout);/讀書(shū)號(hào)索引文件fpout=fopen("bidx","rb");if(fpout=NULL) printf("Cannot open this file bidx.txt!n"); exit(0);i=1;while(!feof(fpout)fread(&bif.BnoIdxi,sizeof(BidxRecType),1,fpout);i+;if(feof(fpout)break;bif.len=i-1;fclose(fpout); /讀書(shū)名索引鏈頭文件fpout=fopen("nidx",&

26、quot;rb");if(fpout=NULL) printf("Cannot open this file nidx.txt!n"); exit(0);i=1;while(!feof(fpout)fread(&f1.LHFrec1i,sizeof(BNRecType),1,fpout);i+;f1.len1=i-1;fclose(fpout);/讀作者索引文件fpout=fopen("aidx","rb");if(fpout=NULL) printf("Cannot open this file aidx

27、.txt!n"); exit(0);i=1;while(!feof(fpout)fread(&f2.LHFrec2i,sizeof(BARecType),1,fpout);i+;f2.len2=i-1;fclose(fpout);/讀出版社索引鏈頭文件fpout=fopen("pidx","rb");if(fpout=NULL) printf("Cannot open this file pidx.txt!n"); exit(0);i=1;while(!feof(fpout)fread(&f3.LHFrec3

28、i,sizeof(BPRecType),1,fpout);i+;f3.len3=i-1;fclose(fpout);/讀讀者文件fpout=fopen("read","rb");if(fpout=NULL) printf("Cannot open this file read.txt!n"); exit(0);i=1;while(!feof(fpout)fread(&rf.ReadReci,sizeof(RRecType),1,fpout);i+;rf.len=i-1;fclose(fpout);/讀借還書(shū)文件fpout=fo

29、pen("bbff","rb");if(fpout=NULL) printf("Cannot open this file bbff.txt!n"); exit(0);i=1;while(!feof(fpout)fread(&bbf.Bbooki,sizeof(BbookRecType),1,fpout);i+;bbf.len=i-1;fclose(fpout);/search.c/*(1)書(shū)號(hào)查詢算法.用二分法查找實(shí)現(xiàn)書(shū)號(hào)查詢算法如下*/int BinSearch(BnoIdxFile bif,char key)int lo

30、w,high,mid;low=1;high=bif.len;while(low<=high)mid=(low+high)/2;if(strcmp(key,bif.BnoIdxmid.bno)=0)return bif.BnoIdxmid.RecNo;else if(strcmp(key,bif.BnoIdxmid.bno)<0)high=mid-1;else low=mid+1;return 0;/BinSearch/*(2)按書(shū)名查詢算法*/int BnameFind(LHFile1 lhf1,char key)int i,k=0;for(i=1;i<=lhf1.len1;

31、i+)if(strcmp(key,lhf1.LHFrec1i.bname)=0)k=lhf1.LHFrec1i.lhead;break;return k;/*(3)按作者查詢算法*/int BauthFind(LHFile2 lhf2,char key)int i,k=0; for(i=1;i<=lhf2.len2;i+)if(strcmp(key,lhf2.LHFrec2i.author)=0)k=lhf2.LHFrec2i.lhead;break;return k;/*(4)按出版社查詢算法*/int BnameFind(LHFile3 lhf3,char key)int i,k=0

32、; for(i=1;i<=lhf3.len3;i+)if(strcmp(key,lhf3.LHFrec3i.press)=0)k=lhf3.LHFrec3i.lhead;break;return k;/*(5)輸出一條圖書(shū)主數(shù)據(jù)庫(kù)記錄*/void ShowRec(BookDbaseFile df,int i)printf("書(shū)號(hào) 書(shū) 名 作者名 出版社 分類號(hào)n");printf("=n");printf("%-6s%10s",df.BookDbasei.bno,df.BookDbasei.bname);printf("

33、;%8s%8s",df.BookDbasei.author,df.BookDbasei.press);printf("%-6sn",df.BookDbasei.sortno);printf("=n");cout<<endl;/*(6)圖書(shū)查詢控制程序*/void SearchBook(BookDbaseFile df,BnoIdxFile bif,LHFile1 f1,LHFile2 f2,LHFile3 f3)char sh5,sm20,zz8,cbs10;int i,k,choose=1;while(choose>=1&a

34、mp;&choose<=5)printf(" 圖書(shū)查詢子系統(tǒng)n");printf("-n");printf("1.書(shū) 號(hào) 2.書(shū) 名n");printf("3.作 者 4. 出版社n");printf("5.退出n");printf("-n");printf("請(qǐng)用戶選擇: n");scanf("%d",&choose);switch(choose)case 1:printf("輸入書(shū)號(hào):n")

35、;scanf("%s",sh);k=BinSearch(bif,sh); /調(diào)用書(shū)號(hào)查詢算法if(k=0)printf("沒(méi)有要查找的圖書(shū),請(qǐng)檢查是否輸入有錯(cuò)n");break;ShowRec(df,k); /輸出查找的圖書(shū)記錄break;case 2:printf("輸入書(shū)名:n");scanf("%s",sm);k=BnameFind(f1,sm);/調(diào)用書(shū)名查詢算法 if(k=0)printf("沒(méi)有要查找的圖書(shū),請(qǐng)檢查是否輸入有錯(cuò)n");break;for(i=k;i;i=df.Book

36、Dnext)ShowRec(df,i); /輸出一條圖書(shū)記錄break;case 3:printf("輸入作者名:n");scanf("%s",zz);k=BauthFind(f2,zz); /調(diào)用作者查詢算法if(k=0)printf("沒(méi)有要查找的圖書(shū),請(qǐng)檢查是否輸入有錯(cuò)n");break;for(i=k;i;i=df.BookDbasei.authnext)ShowRec(df,i); /輸出一條圖書(shū)記錄break;case 4: printf("輸入出版社:n");scanf("

37、;%s",cbs);k=BnameFind(f3,cbs); /調(diào)用作者查詢算法if(k=0)printf("沒(méi)有要查找的圖書(shū),請(qǐng)檢查是否輸入有錯(cuò)n");break;for(i=k;i;i=df.BookDbasei.prenext)ShowRec(df,i); /輸出一條圖書(shū)記錄break;case 5:return;/type.h/(1)主數(shù)據(jù)庫(kù)文件typedef structchar bno5; /書(shū)號(hào)char bname21; /書(shū)名int namenext; /書(shū)名指針鏈,為了處理方便,僅將數(shù)據(jù)庫(kù)記錄號(hào)看為記錄的地址指針char author9; /作者

38、int authnext; /作者鏈指針(用記錄號(hào))char press11; /出版社int prenext; /出版社鏈指針(用記錄號(hào))char sortno4; /分類號(hào)int storenum; /藏書(shū)量int borrownum; /借出數(shù)BookRecType; /數(shù)據(jù)庫(kù)記錄類型typedef struct BookRecType BookDbaseBookSize; int len; /文件當(dāng)前長(zhǎng)度BookDbaseFile; /定義圖書(shū)數(shù)據(jù)庫(kù)文件類型/(2)書(shū)號(hào)索引文件typedef structchar bno5; /書(shū)號(hào)int RecNo; /記錄指針BidxRecType

39、; /索引文件記錄類型typedef structBidxRecType BnoIdxBookSize;int len; /當(dāng)前記錄個(gè)數(shù)BnoIdxFile; /書(shū)號(hào)索引文件類型/(3)書(shū)名鏈頭索引文件typedef structchar bname21; /書(shū)名int lhead; /鏈頭指針int RecNum; /長(zhǎng)度BNRecType; /書(shū)名鏈頭文件記錄類型typedef structBNRecType LHFrec1BLHnum;int len1; /鏈頭文件當(dāng)前長(zhǎng)度LHFile1; /書(shū)名鏈頭文件類型/(4)作者鏈頭索引文件typedef structchar author9;

40、/作者int lhead; /鏈頭指針int RecNum; /長(zhǎng)度BARecType; /作者鏈頭文件記錄類型typedef structBARecType LHFrec2BLHnum;int len2;LHFile2; /作者鏈頭文件類型/(5)出版社鏈頭索引文件typedef structchar press11; /出版社int lhead; /鏈頭指針int RecNum; /長(zhǎng)度BPRecType; /出版社鏈頭文件記錄類型typedef structBPRecType LHFrec3BLHnum;int len3;LHFile3; /出版社鏈頭文件類型/(6)讀者文件typede

41、f structchar rno4; /讀者號(hào)char name8; /讀者名int bn1; /可借書(shū)數(shù)int bn2; /已借書(shū)數(shù)RRecType; /讀者文件記錄類型typedef structRRecType ReadRecRRnum; int len; /當(dāng)前讀者數(shù)ReadFile; /讀者文件類型/(7)借還書(shū)文件typedef structchar rno4; /讀者號(hào)char bno5; /書(shū)號(hào)char date19; /借書(shū)日期char date29; /還書(shū)日期BbookRecType; /借還書(shū)文件類型typedef structBbookRecType BbookBoo

42、kSize;int len; /當(dāng)前借書(shū)數(shù)BbookFile; /借還書(shū)文件類型/*writefile.c 各類文件寫(xiě)盤(pán)*/void writefile(BookDbaseFile bf,BnoIdxFile bif,LHFile1 f1,LHFile2 f2,LHFile3 f3,ReadFile rf,BbookFile bbf)FILE *fpin;int i;/寫(xiě)圖書(shū)主文件fpin=fopen("book","wb");if(fpin=NULL) printf("Cannot open this file book.txt!n"

43、;); exit(0);for(i=1;i<=bf.len;i+)fwrite(&bf.BookDbasei,sizeof(BookRecType),1,fpin);fclose(fpin);/寫(xiě)圖書(shū)索引文件fpin=fopen("bidx","wb");if(fpin=NULL) printf("Cannot open this file bidx.txt!n"); exit(0);for(i=1;i<=bif.len;i+)fwrite(&bif.BnoIdxi,sizeof(BidxRecType),

44、1,fpin);fclose(fpin);/寫(xiě)書(shū)名索引鏈頭文件fpin=fopen("nidx","wb");if(fpin=NULL) printf("Cannot open this file nidx.txt!n"); exit(0);for(i=1;i<=f1.len1;i+)fwrite(&f1.LHFrec1i,sizeof(BNRecType),1,fpin);fclose(fpin); /寫(xiě)作者索引鏈頭文件fpin=fopen("aidx","wb");if(fpi

45、n=NULL) printf("Cannot open this file aidx.txt!n"); exit(0);for(i=1;i<=f2.len2;i+)fwrite(&f2.LHFrec2i,sizeof(BARecType),1,fpin);fclose(fpin);/寫(xiě)出版社索引鏈頭文件fpin=fopen("pidx","wb");if(fpin=NULL) printf("Cannot open this file pidx.txt!n"); exit(0);for(i=1;i&l

46、t;=f3.len3;i+)fwrite(&f3.LHFrec3i,sizeof(BPRecType),1,fpin);fclose(fpin);/寫(xiě)讀者文件fpin=fopen("read","wb");if(fpin=NULL) printf("Cannot open this file read.txt!n"); exit(0);for(i=1;i<=rf.len;i+)fwrite(&rf.ReadReci,sizeof(RRecType),1,fpin);fclose(fpin);/寫(xiě)借還書(shū)文件fpin

47、=fopen("bbff","wb");if(fpin=NULL) printf("Cannot open this file bbff.txt!n"); exit(0);for(i=1;i<=bbf.len;i+)fwrite(&bbf.Bbooki,sizeof(BbookRecType),1,fpin);fclose(fpin);#define BookSize 100 /假定圖書(shū)文件的最大可能記錄數(shù)#define BLHnum 50 /索引鏈頭文件中的記錄數(shù)#define RRnum 50 /讀者的最大可能數(shù)#i

48、nclude <iostream>using namespace std;#include <stdio.h> /包含標(biāo)準(zhǔn)系統(tǒng)輸入輸出頭文件#include <string.h> /包含字符串處理頭文件#include "type.h" /包含已定義各文件類型#include "createfile.c" /包含建立各種文件算法#include "search.c" /包含各種查詢算法#include "reader.c" /包含讀者管理算法#include "borrow.c" /包含借還書(shū)處理算法#include "writefile.c" /包含

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論