圖書管理系統(tǒng)源碼及課程設(shè)計(jì)c語(yǔ)言版

上傳人:GCG1****010 文檔編號(hào):57135561 上傳時(shí)間:2022-02-23 格式:DOC 頁(yè)數(shù):15 大小:53KB
收藏 版權(quán)申訴 舉報(bào) 下載
圖書管理系統(tǒng)源碼及課程設(shè)計(jì)c語(yǔ)言版_第1頁(yè)
第1頁(yè) / 共15頁(yè)
圖書管理系統(tǒng)源碼及課程設(shè)計(jì)c語(yǔ)言版_第2頁(yè)
第2頁(yè) / 共15頁(yè)
圖書管理系統(tǒng)源碼及課程設(shè)計(jì)c語(yǔ)言版_第3頁(yè)
第3頁(yè) / 共15頁(yè)

下載文檔到電腦,查找使用更方便

0 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《圖書管理系統(tǒng)源碼及課程設(shè)計(jì)c語(yǔ)言版》由會(huì)員分享,可在線閱讀,更多相關(guān)《圖書管理系統(tǒng)源碼及課程設(shè)計(jì)c語(yǔ)言版(15頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、圖書管理系統(tǒng)題目:圖書管理基本業(yè)務(wù)包括:對(duì)一本書的采編入庫(kù)、清除庫(kù)存、借閱、和歸還等等.試設(shè)計(jì)一個(gè)圖書管理系統(tǒng),將上述業(yè)務(wù)活動(dòng)借助于計(jì)算機(jī)系統(tǒng)完成。一、需求分析1、每種書的登記內(nèi)容至少包括書號(hào),書名,著者,現(xiàn)存量和總存量等五項(xiàng)。2、系統(tǒng)的操作定義及其功能定義如下: 采編入庫(kù):新購(gòu)一種書,經(jīng)分類和確定書號(hào)之后的攻擊到圖書賬目中去,如果這種書在帳中已有,則只將總庫(kù)存量增加。 清除庫(kù)存:某種書已無保留價(jià)值,將它從圖書賬目中注銷 借閱:如果將一種書的現(xiàn)存量大于零,則借出一本書登記借閱者的圖書證號(hào)和歸還期限。 歸還:注銷對(duì)借閱者的登記,改變?cè)摃默F(xiàn)存量二、概要設(shè)計(jì)要實(shí)現(xiàn)上述需求,需用到 查找、排序的算法

2、及定義.ADT StaticSearchTable 數(shù)據(jù)對(duì)象D: D是具有相同特性的數(shù)據(jù)元素的集合。每個(gè)數(shù)據(jù)元素含有類型相同的關(guān)鍵字,可唯一標(biāo)識(shí)數(shù)據(jù)元素。 數(shù)據(jù)關(guān)系R:數(shù)據(jù)元素同屬一個(gè)集合?;静僮?P: Create(ST, n); Destroy(ST);Search(ST, key); Traverse(ST, Visit()); ADT StaticSearchTableCreate(ST, n);操作結(jié)果:構(gòu)造一個(gè)含n個(gè)數(shù)據(jù) 元素的靜態(tài)查找表ST。Destroy(&ST);初始條件:靜態(tài)查找表ST存在;操作結(jié)果:銷毀表ST。int Search_Seq(SSTable ST, Key

3、Type key) / 在順序表ST中順序查找其關(guān)鍵字等于 /key的數(shù)據(jù)元素。若找到,則函數(shù)值為 / 該元素在表中的位置,否則為0。 ST。elem0。key = key; / “哨兵”for(i=ST。length;ST。elemi.key!=key; -i); / 從后往前找 return i; / 找不到時(shí),i為0 / Search_Seq、動(dòng)態(tài)查找表:ADT DynamicSearchTable 數(shù)據(jù)對(duì)象D:D是具有相同特性的數(shù)據(jù)元素的集合。每個(gè)數(shù)據(jù)元素含有類型相同的關(guān)鍵字,可唯一標(biāo)識(shí)數(shù)據(jù)元素.數(shù)據(jù)關(guān)系R:數(shù)據(jù)元素同屬一個(gè)集合InitDSTable(&DT);操作結(jié)果:構(gòu)造一個(gè)空的動(dòng)

4、態(tài)查找表DT.DestroyDSTable(&DT);初始條件:態(tài)查找動(dòng)表DT存在操作結(jié)果:銷毀動(dòng)態(tài)查找表DTInsertDSTable(DT, e);初始條件:動(dòng)態(tài)查找表DT存在,e為待插入的數(shù)據(jù)元素;若DT中不存在其關(guān)鍵字操作結(jié)果:等于 e.key 的 數(shù)據(jù)元素,則插入 e 到DT.圖書結(jié)構(gòu)體的定義: typedef struct char number10; /書號(hào)char name20; /書名char author20; /作者int countbook; /庫(kù)存 int shY; /剩余量 mbook;typedef struct int count;/書的本數(shù)mbook book

5、100;/最大可有100本書mlibrary;mlibrary library; 三、詳細(xì)設(shè)計(jì)includestdio.hinclude include stdlib。h#include#define Max 2 typedef struct bookchar book_num10;char book_name20;char book_writer10;int book_xy;int book_kc;struct book *next;BK;typedef struct borrowchar borrow_book_num10;char limit_date8;BO;typedef struc

6、t readerchar reader_num10;char reader_name10;int right;BO borrowMax;struct reader next;RD;BK *h_book;RD h_reader;void Login(); int Menu(); void Init(); void Init_book(); void Menu_select(); void Insert_New_Book(); void Find_Book(); void add_reader();void Print_reader(); void Print_book(); void Borro

7、w_Book(); void Return_Book(); void Save(); void Save_Book(); void Save_Reader(); void Load();void Load_Reader(); void Load_Book(); int Menu() /*主菜單/ int dm;printf(”ntt圖書管理系統(tǒng)主菜單n”);printf(=n);printf(n);printf(t1-采編入庫(kù) n);printf(”n”); printf(”n);printf(”n );printf(n);printf(”n);printf(=n);printf(”請(qǐng)選擇相應(yīng)

8、的代碼:”); for(;) scanf(”%d,&dm); if(dm0|dm6) printf(n錯(cuò)誤!請(qǐng)重新輸入:”); else break;return dm; void Menu_select()/*主菜單選擇函數(shù)*/for(;;) switch(Menu()) /*功能選擇*/ case 0: system(”cls); Save();printf(nnt文件保存成功!n”); printf(nnt歡迎下次使用本系統(tǒng)!n); getch(); exit(0); case 1:Insert_New_Book();break; case 2:add_reader();break; c

9、ase 3:Borrow_Book();break; case 4:Return_Book();break; case 5:Print_book();break; case 6:Print_reader();break; default:printf(”n錯(cuò)誤!”); exit(0);void Init() /*初始化/ Init_book();void Init_book() /初始化圖書信息*/BK p0;printf(n圖書初始化開始,請(qǐng)輸入圖書信息。n包括編號(hào).書名.數(shù)量.n);p0=(BK*)malloc(sizeof(BK);h_book=p0; printf(”n請(qǐng)輸入圖書信息:

10、n); printf(”圖書編號(hào):”); /輸入圖書編號(hào)(唯一)/ scanf(%s”,p0-book_num); printf(”圖書名稱:); /輸入圖書名稱*/ scanf(”%s,p0-book_name);printf(圖書作者:); /輸入圖書作者*/ scanf(s,p0-book_writer); printf(”圖書數(shù)量:”); /輸入圖書數(shù)量*/ scanf(”%d”,p0-book_kc); p0-book_xy=p0book_kc; /開始時(shí)圖書現(xiàn)有量和庫(kù)存量相等*/ p0next=NULL; printf(”n圖書信息初始化完畢!按任意鍵繼續(xù)下一步操作。n); get

11、ch(); system(”cls);void Insert_New_Book()/*新書入庫(kù)/BK p,*p0,p1; p=p1=h_book;printf(n新書入庫(kù)模塊。.。n);printf(n請(qǐng)輸入新書信息。.n包括書號(hào)。書名.數(shù)量。n);p0=(BK *)malloc(sizeof(BK); printf(圖書編號(hào):”); scanf(”%s,p0book_num); while(strcmp(p0-book_num,p1-book_num)!=0&p1-next!=NULL) p1=p1next; if(strcmp(p0-book_num,p1book_num)=0) /此處分

12、兩種情況,若圖書編號(hào)存在,則直接進(jìn)庫(kù),只須輸入書的數(shù)量/ printf(”n此編號(hào)圖書已存在!!直接入庫(kù)!n”); printf(圖書數(shù)量:); scanf(%d,&p0book_kc); p1-book_kc+=p0book_kc; p1book_xy+=p0book_kc; else/若不存在,則需要輸入其他的信息 ,然后在進(jìn)行插入操作*/ printf(圖書名稱:); scanf(s”,p0-book_name);printf(”圖書作者:); scanf(s,p0book_writer); printf(”圖書數(shù)量:); scanf(”%d”,&p0-book_kc);while(p-

13、next) p=p-next; if(h_book=NULL) h_book=p0; /*此處分兩種情況,鏈表中沒有數(shù)據(jù),head直接指向p0處*/ else pnext=p0; /此處分兩種情況,鏈表中有數(shù)據(jù),鏈表中最后元素的next指向p0處/ p0next=NULL; p0book_xy=p0book_kc; printf(”n新書入庫(kù)完畢!按任意鍵繼續(xù)下一步操作.。n”); getch(); system(”cls”);void add_reader()/添加讀者*/ RD *p0; int i; printf(n讀者初始化開始,請(qǐng)輸入讀者信息.。n包括書證號(hào)。姓名。n);p0=(RD

14、*)malloc(sizeof(RD)); /*申請(qǐng)新結(jié)點(diǎn)存儲(chǔ)空間/h_reader=p0;printf(”n請(qǐng)輸入讀者的信息:n”); printf(讀者書證號(hào):”); scanf(”%s,p0-reader_num); printf(”讀者姓名:); scanf(s,p0-reader_name); p0right=0; for(i=0;iMax;i+) strcpy(p0borrowi.borrow_book_num,”0”); /*所借圖書直接置為0(即沒有借書)/ strcpy(p0borrowi.limit_date,”0); p0next=NULL; printf(”n讀者信息初

15、始化完畢!按任意鍵繼續(xù)下一步操作.n”); getch(); system(”cls);void Borrow_Book() /借書模塊/BK p0; RD *p1;char bo_num10,rea_num10,lim_date8;int i;p0=h_book; p1=h_reader;printf(n借書模塊.。n”);printf(n請(qǐng)輸入借書的讀者書證號(hào):); scanf(”%s”,rea_num);while(p1next!=NULL&strcmp(rea_num,p1reader_num)!=0) p1=p1next; if(p1next=NULL&strcmp(rea_num,

16、p1-reader_num)!=0) printf(”n此讀者編號(hào)不存在!按任意鍵返回.n); goto END; printf(n請(qǐng)輸入你要借的書的編號(hào):”); scanf(%s”,bo_num); while(strcmp(bo_num,p0book_num)!=0&p0next!=NULL) p0=p0next; if(p0next=NULL&strcmp(bo_num,p0book_num)!=0) printf(n此圖書編號(hào)不存在!按任意鍵返回.。n”); else if(p0book_xy=0) printf(n抱歉,此書已借完!請(qǐng)等待新書的到來!!n按任意鍵返回。.); else

17、 if(p1-right=Max) printf(”n不好意思,借書數(shù)目已滿!不能借書!n按任意鍵返回。.。); else if(strcmp(p1borrow0。borrow_book_num,”0)!=0) for(i=0;iborrowi。borrow_book_num,bo_num)=0) printf(”n抱歉!同一個(gè)讀者不能同借兩本相同的書!n”); else if(strcmp(p1-borrowi。borrow_book_num,”0)=0) printf(”n請(qǐng)輸入你要?dú)w還圖書的日期:); scanf(s,lim_date); strcpy(p1-borrowp1right+

18、.borrow_book_num,bo_num); strcpy(p1borrowp1-right1。limit_date,lim_date); p0book_xy; printf(”n讀者編號(hào)s借書完畢!按任意鍵繼續(xù)下步操作.。”,p1-reader_num); else printf(”n請(qǐng)輸入你要?dú)w還圖書的日期:); scanf(”s,lim_date); strcpy(p1borrowp1-right+.borrow_book_num,bo_num); strcpy(p1borrowp1-right-1。limit_date ,lim_date ); p0-book_xy; print

19、f(n讀者編號(hào)%s借書完畢!按任意鍵繼續(xù)下步操作.”,p1-reader_num); END:getch(); system(cls); void Return_Book() /還書模塊/BK p; RD q;int i,j,find=0;char return_book_num10,return_reader_num10;p=h_book; q=h_reader;printf(n還書模塊.。n);printf(n請(qǐng)輸入要還書的讀者編號(hào):); scanf(”s”,return_reader_num); while(qnext!=NULL&strcmp(return_reader_num,q-r

20、eader_num)!=0) q=q-next;if(qnext=NULLstrcmp(return_reader_num,q-reader_num)!=0) find=2; printf(n此讀者編號(hào)不存在!按任意鍵返回.n); goto end; printf(”n請(qǐng)輸入讀者還書的編號(hào):”); scanf(%s”,return_book_num); while(p-next!=NULL&strcmp(return_book_num,p-book_num)!=0) p=pnext; if(pnext=NULL&strcmp(return_book_num,pbook_num)!=0) fin

21、d=2; printf(n錯(cuò)誤!此圖書編號(hào)不存在!按任意鍵返回。.n”); goto end; for(i=0;iborrowi.borrow_book_num)=0) /*如果此讀者借了此書*/ find=1; for(j=i;jMax-1;j+) strcpy(q-borrowj.borrow_book_num,q-borrowj+1。borrow_book_num); strcpy(q-borrowj.limit_date,q-borrowj+1。limit_date); strcpy(qborrowMax1.borrow_book_num,0); strcpy(q-borrowMax1

22、。limit_date,0”); p-book_xy+; qright-; printf(”n編號(hào)%s的讀者還書完畢!按任意鍵繼續(xù)下步操作.。,return_reader_num); if(find=0) printf(”n錯(cuò)誤!此讀者未借此書!按任意鍵返回。.n”); end: getch(); system(cls”);void Print_book() /查詢圖書信息*/BK p;p=h_book;printf(”n圖書信息如下:nn”);printf(”圖書編號(hào)t圖書名稱t圖書作者t現(xiàn)有tt庫(kù)存n);while(p!=NULL) printf(”%sttstt%sttdtt%dn”,p

23、-book_num,pbook_name,pbook_writer,pbook_xy,pbook_kc); p=p-next;printf(n圖書信息打印完畢!按任意鍵繼續(xù)下一步操作。.”);getch();system(”cls”);void Print_reader() /*查詢讀者信息/RD *p;int i;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;iMax;i+)

24、 printf(n”); printf(”圖書編號(hào)”,i+1); printf(”t還書日期,i+1); printf(”n); printf(t%s”,p-borrowi.borrow_book_num); printf(tts”,p-borrowi.limit_date); printf(”n”); p=p-next;printf(”n讀者信息打印完畢!按任意鍵繼續(xù)下一步操作。.”);getch();system(cls”);void Save() /*保存信息/Save_Reader();Save_Book();void Save_Reader() /保存讀者信息*/FILE fp_re

25、ader; RD p,*p0;p=h_reader;if((fp_reader=fopen(Reader。txt,wb)=NULL) /創(chuàng)建文件,進(jìn)行保存*/ printf(”n文件保存失敗!n請(qǐng)重新啟動(dòng)本系統(tǒng)。.n); exit(0);while(p!=NULL) if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /將鏈表中的信息寫入文件中*/ printf(n寫入文件失敗!n請(qǐng)重新啟動(dòng)本系統(tǒng)!n); p0=p; p=pnext; free(p0); /釋放所有結(jié)點(diǎn)/h_reader=NULL;fclose(fp_reader); /關(guān)閉文件/void Save

26、_Book() /保存圖書信息*/FILE *fp_book; /*創(chuàng)建文件型指針*/BK *p,p0;p=h_book;if((fp_book=fopen(”Book.txt,wb)=NULL) /*創(chuàng)建文件,進(jìn)行保存/ printf(n文件保存失敗!n請(qǐng)重新啟動(dòng)本系統(tǒng).。n”); exit(0);while(p!=NULL) if(fwrite(p,sizeof(BK),1,fp_book)!=1) /*將鏈表中的信息寫入文件中/ printf(n寫入文件失??!n請(qǐng)重新啟動(dòng)本系統(tǒng)!n); p0=p; p=pnext; free(p0); h_book=NULL;fclose(fp_book

27、); /關(guān)閉文件*/void Load() /加載信息/Load_Reader();Load_Book();void Load_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,size

28、of(RD),1,fp); p2-next=p1; p3=p2; p2=p1; p3next=NULL; free(p1); fclose(fp); /關(guān)閉文件/void Load_Book() /加載圖書信息/BK *p1,*p2,*p3;FILE fp; /創(chuàng)建文件型指針*/fp=fopen(Book。txt,”rb); /*打開文件*/ p1=(BK *)malloc(sizeof(BK)); fread(p1,sizeof(BK),1,fp); h_book=p3=p2=p1; while(! feof(fp)) /讀出信息,重新鏈入鏈表/ p1=(BK )malloc(sizeof(

29、BK)); fread(p1,sizeof(BK),1,fp); p2-next=p1; p3=p2; p2=p1; p3next=NULL; free(p1); fclose(fp); /*關(guān)閉文件/void main() FILE fp_book,fp_reader; /創(chuàng)建文件型指針*/printf(*n”);printf(” 圖書管理系統(tǒng)演示 n);printf(*n); if((fp_book=fopen(Book.txt,rb)=NULL(fp_reader=fopen(”Reader。txt”,rb”))=NULL) Init(); else Load(); Menu_selec

30、t(); /調(diào)用主菜單*/四、調(diào)試分析1、設(shè)計(jì)程序中出現(xiàn)的問題不一一列舉,主要是由于知識(shí)掌握不清,但是最后慢慢了解,多方學(xué)習(xí),解決。2、在定義圖書的時(shí)候忘了一項(xiàng) 書號(hào) 結(jié)果最后無法輸入。粗心可以彌補(bǔ)3、為了更好的使用循環(huán),設(shè)計(jì)了for語(yǔ)句,結(jié)果不能執(zhí)行,最后無奈只能使用函數(shù)系統(tǒng) 另加函數(shù),在主函數(shù)里調(diào)用。4、在打開文件的時(shí)候 fp 寫錯(cuò),經(jīng)過很多的調(diào)試沒成功,這也是個(gè)粗心錯(cuò)誤,下次避免。5、少加“;的問題就不列舉了五、用戶手冊(cè) 1、本程序運(yùn)行前先新建一個(gè)文件夾,并且在文件夾里面新建一個(gè)名字叫l(wèi)ibrary。txt的文件,便于存放數(shù)據(jù)。2、其余相應(yīng)的 沿用以前程序,需要輸入的時(shí)候有提醒。便于操作 詳細(xì)見圖六、測(cè)試結(jié)果廢話不說。有圖有真相!!附錄:1、本程序中含有文件操作,需先建文件再執(zhí)行程序。2、 include c語(yǔ)言專用頭文件#include string。h 字符串操作頭文件#include stdlib.h 包含比較雜的頭函數(shù)文件 #includeconio.h 輸出格式的函數(shù)頭文件完

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!