圖書館管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)大作業(yè)

上傳人:p*** 文檔編號(hào):43808986 上傳時(shí)間:2021-12-04 格式:DOC 頁數(shù):30 大?。?41.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
圖書館管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第1頁
第1頁 / 共30頁
圖書館管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第2頁
第2頁 / 共30頁
圖書館管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第3頁
第3頁 / 共30頁

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

20 積分

下載資源

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

資源描述:

《圖書館管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)大作業(yè)》由會(huì)員分享,可在線閱讀,更多相關(guān)《圖書館管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)大作業(yè)(30頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 封面 數(shù)據(jù)結(jié)構(gòu) 課程設(shè)計(jì)報(bào)告 圖書管理信息系統(tǒng) 二〇一三年十二月 本程序是圖書管理信息系統(tǒng)的實(shí)現(xiàn),具體功能包括讀者注冊(cè)、登錄、新書增添、圖書查詢、圖書搜索、借還書、讀存盤等。 程序流程如下: 圖書管理信息系統(tǒng) 注冊(cè) 登陸 讀者注冊(cè) 管理員注冊(cè) 讀者登錄 管理員登錄 入庫 退出系統(tǒng) 個(gè)人信息查詢 還書 借書 任務(wù)分析: 1.新書入庫: 新到書籍入庫包含幾方面的操作:首先查詢?cè)摃臅趫D書館信息中是否已經(jīng)存在,若存在,則增

2、加可借數(shù)量和總庫存量,若不存在,則新增加概述信息,從界面輸入書籍的編號(hào)(0~999999的長(zhǎng)整型)、書名(字符串類型)、作者名(字符串類型)、出版社信息(字符串類型)、出版日期(整型)、該書的現(xiàn)存量(整型)、該書的總量(整型)。輸入該信息之后,將該節(jié)點(diǎn)插入到書籍信息鏈表中去。該節(jié)點(diǎn)的插入位置根據(jù)查找,找到合適的位置插入,這樣可以保證整個(gè)數(shù)據(jù)都是有序的,方便查找。 2.讀者注冊(cè): 沒有賬號(hào)和密碼讀者和管理員都不能登錄系統(tǒng),系統(tǒng)默認(rèn)第一個(gè)注冊(cè)系統(tǒng)的是系統(tǒng)管理員,借閱號(hào)為1000,權(quán)限是1,并輸入密碼000000及基本信息,并將所借書信息區(qū)全部置零.不是第一個(gè)注冊(cè)的讀者,借閱號(hào)從1000往后順延

3、,自己設(shè)置密碼,權(quán)限為0,其余信息與管理員相同,因此登陸之后,管理員可以看到“入庫”菜單選項(xiàng),普通讀者不能看到該選項(xiàng)。 3.借書: 書籍借閱主要涉及存書庫和讀者信息庫的更新。用戶首先登陸系統(tǒng),通過3種查詢方式查詢?cè)摃欠翊嬖?并判斷該書的剩余數(shù)量是否大于零,最后查詢?cè)撟x者是否已經(jīng)借滿書籍。若以上條件都滿足,則將該書編號(hào)存入該讀者的借閱信息區(qū),將該讀者的可借書數(shù)量減1,該存書的可借數(shù)量減1。 4.還書: 讀者登錄后按書名號(hào)來歸還所借書籍,若書名號(hào)正確并且確認(rèn)歸還該書籍,則從讀者的借書區(qū)刪除該書籍,讀者的可借書數(shù)量加1,將該書的可借數(shù)量增加1,然后返回. 5.信息查詢: 信息查詢分為讀

4、者信息查詢和書籍信息查詢,讀者信息查詢是在讀者登錄之后,可以顯示本人的基本信息以及借書狀況(所借書的本數(shù)、可借書本數(shù)以及所借書的信息),還可查詢書籍信息,可根據(jù)書籍的編號(hào)來查找書籍、根據(jù)書名來查找書籍、根據(jù)作者名來查詢書籍。查詢到該書籍后顯示是否借閱該書籍。 算法設(shè)計(jì): 1、 查找 查找分按書名查找、按作者查找和按書號(hào)查找。按書名查找是采用遍歷線性鏈表的方式,從首元結(jié)點(diǎn)開始向下遍歷,檢查輸入的書名和已存的書名是否匹配,如果匹配,則將該書籍的指針返回,然后查找結(jié)束.若直到最后也沒找到,則返回空。按作者查找則根據(jù)輸入的作者名,從書籍鏈表的首元結(jié)點(diǎn)開始遍歷,檢查記錄中的讀者信息和輸入的是否匹配

5、,若找到匹配的,則輸出該書籍信息,然后繼續(xù)向下遍歷,直到鏈表尾部,查找結(jié)束。按書號(hào)查找則是根據(jù)建立的索引表來查找記錄。 2、 讀者信息存儲(chǔ) 讀者信息采用線性單鏈表存儲(chǔ),設(shè)置頭結(jié)點(diǎn),頭結(jié)點(diǎn)不存儲(chǔ)數(shù)據(jù),初始化時(shí)頭結(jié)點(diǎn)—〉next設(shè)置為空,然后每從文件中讀取一組數(shù)據(jù),則將該數(shù)據(jù)存入新開辟的空間,鏈接到讀者信息鏈表中,再將該數(shù)據(jù)的next置空。 3、圖書信息存儲(chǔ) 書籍信息存儲(chǔ)采用單鏈表存儲(chǔ),設(shè)置頭結(jié)點(diǎn),頭結(jié)點(diǎn)不存儲(chǔ)數(shù)據(jù),頭結(jié)點(diǎn)的next為空,初始化時(shí),從文件中讀取一個(gè)格式化的數(shù)據(jù),則將該數(shù)據(jù)存入新開辟的空間,并將該節(jié)點(diǎn)鏈接到鏈表中去,將next置空。 程序主要函數(shù): 1. 增加圖書:voi

6、d insert(book*bhead);輸入書號(hào),判斷是否合法,然后輸入圖書信息。 流程圖如下 進(jìn)入 輸入書號(hào) N 書號(hào)合法 輸入書籍信息 Y Y 結(jié)束輸入 N 繼續(xù)輸入 2. 借書:void borrow(reader *temp,book*Bhead);通過書號(hào)、書名、作者三種查找方式查詢借書,借書成功后,該書的可借書量減1,讀者借書量減1。 流程圖如下: N 進(jìn)入查找 按書名查找 按書號(hào)查找 按作者查找 進(jìn)入 輸入書名 繼續(xù)借書 退出 輸入書號(hào) 輸入作者 未找到

7、找到 借書 找到 借書成功 Y N Y Y N 3. 還書:void returnbook(book*bhead,reader *temp);輸入書號(hào),查詢是否存在,然后還書,該書的可借書量加1,讀者借書量加1。 流程圖如下: 進(jìn)入還書 輸入書號(hào) 存在 還書 還書成功 退出 Y N Y N 詳細(xì)程序模塊 1、頭文件定義 頭文件library.h定義了3個(gè)結(jié)構(gòu)體:書籍結(jié)構(gòu)體、讀者結(jié)構(gòu)體和索引表結(jié)構(gòu)體, 書籍結(jié)構(gòu)體的定義如下: typedefstruct READER{ long number;//借閱號(hào) char name[15];/

8、/讀者姓名 char sex;//讀者性別 char password[16];//讀者的密碼 int residue;//讀者的剩余可借書籍?dāng)?shù)量 long borrowed[10];//讀者已經(jīng)借閱的書籍編號(hào) int limit;//讀者權(quán)限 struct READER *next; }reader; 讀者結(jié)構(gòu)體的定義如下: typedefstruct BOOK{ long number;//書籍編號(hào) char name[30];//書名 char author[30];//作者 char press[30];//出版社信息 long presstime;//出

9、版日期 int exist;//在庫數(shù)量 int total;//總數(shù)量 struct BOOK *next; }book; 索引表結(jié)構(gòu)體的定義如下: typedefstruct KEY{ long key; book *adress; struct KEY *next; }keynode; 頭文件還包含一些系統(tǒng)頭文件的聲明: #include”stdio。h” #include"string.h" #include”conio.h” #include”windows.h” 還有一些函數(shù)的聲明,用#ifndef、#endif來包含,以免重復(fù)包含。 2、插入

10、模塊 插入模塊分為書籍入庫、注冊(cè)、登陸3大塊,分3個(gè)函數(shù),聲明如下: void insert(book*bhead);//入庫 void reg(reader*head);//注冊(cè) reader* login(reader*rhead,book*bhead);//登陸 這3個(gè)函數(shù)分別實(shí)現(xiàn)新書入庫、讀者注冊(cè)、登陸等功能,入庫功能只有管理員才能調(diào)用,其余函數(shù)均可以調(diào)用。 3、讀寫模塊 此模塊主要實(shí)現(xiàn)向文件寫入、讀取數(shù),主要是2個(gè)文件:reader.txt、book。txt,分為4個(gè)函數(shù):讀者讀寫函數(shù),書籍讀寫函數(shù)。定義如下: book* Bload();//書籍鏈表讀取 read

11、er*Rload();//讀者鏈表讀入 void Bsave(book*Bhead);//書籍鏈表寫入 void Rsave(reader*Rhead,book*bhead);//讀者鏈表寫入 讀者和書籍鏈表的初始化就由讀取函數(shù)完成,若文件為空則返回空指針,若不為空,則將文件里面的信息寫入到鏈表中,每讀出一個(gè)數(shù)據(jù),分配一個(gè)空間,將該信息輸入. 4、查找模塊 查找模塊分書籍查找模塊、讀者查找模塊,書籍查找模塊分線性鏈表查詢、遍歷查詢、索引表查詢,讀者查詢直接遍歷讀者鏈表,查找該讀者,若存在,返回指針,不存在則返回NULL。查找模塊的定義如下: book*S_name(book*hea

12、d,char name[]);//按書籍名查找函數(shù) void S_author(book*head);//按作者查找 keynode*initindex(book*head);//初始化建立索引表 book*S_number(long num,book*bhead);//按書號(hào)查找 reader*S_reader(reader*rhead,longnum);//查找讀者 5、顯示模塊 根據(jù)給出的節(jié)點(diǎn)指針,顯示該節(jié)點(diǎn)所包含的信息,顯示分為讀者顯示和書籍信息顯示,讀者信息顯示包含書籍信息顯示,以便顯示讀者所借書的信息。這兩個(gè)函數(shù)的聲明如下: void showR(reader*tr,

13、book*bhead);//顯示讀者信息函數(shù) void showB(book*p);//顯示書籍信息函數(shù) 這個(gè)模塊還有2個(gè)小函數(shù),用于將存入的性別’F’、’M轉(zhuǎn)化成漢字,將存的權(quán)限“1”、“0”轉(zhuǎn)化成“管理員”、“讀者”輸出,這兩個(gè)函數(shù)的定義如下: char*sc(char p) { if(p==’F||p==f) return ”女”; else return ”男”; } char*lc(int i) { if(i==1) return ”管理員"; else return "讀者”; } 程序運(yùn)行結(jié)果 1.登錄界面: 2。入庫界面:

14、 3.借書界面: 4.還書界面: 5.個(gè)人信息查詢界面: 體會(huì) 這次的大作業(yè)讓我復(fù)習(xí)并實(shí)際運(yùn)用本學(xué)期學(xué)的數(shù)據(jù)結(jié)構(gòu)的有關(guān)知識(shí),例如數(shù)據(jù)的存儲(chǔ)、排序、調(diào)用、查找等,加深了對(duì)數(shù)據(jù)結(jié)構(gòu)和C語言的理解,總的來說,收獲頗豐。 代碼 頭文件library。h #ifndef LIBRARY_INCLUDE #define LIBRARY_INCLUDE #include〈stdio。h〉 #include〈string。h〉 #include #in

15、clude

16、]; char sex; char password[16]; int residue; long borrowed[10][2]; int limit; struct READER *next; }reader; char *lc(int i); char *sc(char p); voidshowR(reader *tr,book *bhead); voidshowB(book *p); book *S_name(book *head,char name[]); voidS_author(book *head); keynode *initindex(book

17、*head); voiddelkey(keynode *keyhead); book *S_number(long num,book *bhead); reader *S_reader(reader *rhead,longnum); book *Bload(); reader *Rload(); voidBsave(book *Bhead); voidRsave(reader *Rhead,book *bhead); void insert(book *bhead); voidreg(reader *head); reader *login(reader *rhead,bo

18、ok *bhead); void borrow(reader *temp,book *Bhead); voidreturnbook(book *bhead,reader *temp); void style(); voidintpsd(char *psd); void menu(struct BOOK *Bhead,reader *Rhead); void menu2(reader *temp,reader *rhead,book *bhead); longbacktime(); #endif 借還書文件borrow_return.cpp #include"library.

19、h” void borrow(reader *temp,book *Bhead) { style(); longnum; int i; chart,k,name[30]; book *Bbook; getch(); system("cls"); while(1) { printf("\n ┏━━━━━━━━━━┓ ”); printf(”\n█━━━━━━━━━━━┫借書┣━━━━━━━━━━━█”); printf(”\n ┗

20、━━━━━━━━━━┛ "); printf(”\n請(qǐng)輸入您要查找借閱書籍的方式:”); printf("\n 1、按書號(hào)查找\n"); printf(”\n 2、按作者查找\n"); printf(”\n 3、按書名查找\n"); printf("\n 4、返回主菜單\n"); t=getch(); switch(t) {

21、 case ’1: { printf("\n請(qǐng)輸入您要查找的書籍編號(hào):”); scanf("%d",&num); if((Bbook=S_number(num,Bhead))!=NULL) { showB(Bbook); printf(”\n請(qǐng)問你是否要借閱該書籍?Y/N"); k=getch(); if(k==Y’||k==y’) goto borrow; else break; } else break; } case 2’: { S_author(Bhead); break; } case ’3’: { printf("\

22、n請(qǐng)輸如您要查找的書籍名:"); scanf(”%s”,name); if((Bbook=S_name(Bhead,name))!=NULL) { showB(Bbook); printf(”\n請(qǐng)問你是否要借閱該書籍?Y/N”); k=getch(); if(k==’Y||k==’y) goto borrow; else break; } else continue; break; } default: return; borrow: if(Bbook!=NULL&&temp—〉residue〉0&&Bbook—>exist>0) { t

23、emp->residue--; Bbook—〉exist——; for(i=0;i〈10;i++) { if(temp->borrowed[i][0]==0) { temp->borrowed[i][0]=Bbook-〉number; temp-〉borrowed[i][1]=backtime(); break; } } printf(”\n 借閱成功!”); } else if(!(temp—〉residue>0)) printf("\n您只能借閱10本書籍!"); else if(!(Bbook—〉ex

24、ist〉0)) printf(”\n該書沒有庫存,請(qǐng)借閱其他書籍!”); printf(”\n您要繼續(xù)借閱書籍嗎?Y/N”); t=getch(); if(t==y||t==’Y) continue; else break; } } } voidreturnbook(book *bhead,reader *temp) { longnum; inti,j=0; char t; book *p; printf("\n ┏━━━━━━━━━━┓ "); p

25、rintf(”\n█━━━━━━━━━━━┫還書┣━━━━━━━━━━━█"); printf("\n ┗━━━━━━━━━━┛ ”); printf(”\n\n請(qǐng)輸入您所還書的編號(hào):”); scanf("%d",&num); for(i=0;i<10;i++) { if(num==temp->borrowed[i][0]) j=1; } p=S_number(num,bhead); if(p!=NULL&&j==1) { printf("\n┌────┬──────┬

26、───────┬────┬───────┐”); printf("\n│書本編號(hào)│書籍名稱│出版社名稱│出版時(shí)間│作者│”); printf("\n├────┼──────┼───────┼────┼───────┤"); printf("\n│%8d│%12s│%14s│%8d│%14s│",p—〉number,p—〉name,p-〉press,p—〉presstime,p—〉author); printf("\n└────┴──────┴───────┴────┴───────┘\n"); printf("\n確認(rèn)歸還該書籍?Y/N"); t=getch(); if(t==

27、’Y’||t==y’) { p-〉exist++; temp-〉residue++; for(i=0;i〈10;i++) { if(temp->borrowed[i][0]==num) { temp->borrowed[i][0]=0; temp->borrowed[i][1]=0; break; } } } else return; } else { printf(”\n編號(hào)有誤,請(qǐng)仔細(xì)檢查!"); } } 新書入庫insert.cpp #include ”library.h” void insert(book *bhe

28、ad) { style(); long t; book *temp1,*temp,*temp2; temp1=bhead-〉next; printf(”\n ┏━━━━━━━━━━┓ "); printf("\n█━━━━━━━━━━━┫入庫┣━━━━━━━━━━━█"); printf(”\n ┗━━━━━━━━━━┛ ”); while(1) { printf("\n請(qǐng)輸入您給定書的

29、編號(hào)(6位以內(nèi)的正整數(shù)):"); scanf(”%d",&t); if(t〈=0||t〉999999) { printf(”\n您的編號(hào)不在處理范圍(1~999999)之內(nèi)!”); fflush(stdin); continue; } else { temp2=S_number(t,bhead); if(temp2==NULL) { break; } else { temp2—>total++; temp2—>exist++; printf(”\n編號(hào)為%d的書已存在,入庫成功!”,t); return; } } } te

30、mp=(book*)malloc(sizeof(book)); temp->number=t; printf(”\n請(qǐng)輸入書名:"); scanf("%s”,temp-〉name); printf("\n請(qǐng)輸入本書作者:"); scanf("%s",temp—>author); printf(”\n請(qǐng)輸入本書出版社:”); scanf(”%s”,temp-〉press); printf("\n請(qǐng)輸入本書出版時(shí)間:”); scanf(”%d”,&temp->presstime); temp—>next=NULL; temp->total=1; temp—>exist=1;

31、 if(bhead->next==NULL) bhead->next=temp; else { while(temp1—>next!=NULL&&temp1-〉number〈temp->number) temp1=temp1-〉next; temp—〉next=temp1->next; temp1->next=temp; } printf(”\n ┏━━━━━━━━━━┓ "); printf(”\n█━━━━━━━━━━━┫入庫成功┣━━━━━━━━━━━█"); pr

32、intf("\n ┗━━━━━━━━━━┛ "); } voidreg(reader *head) { style(); long i=1000; int j; char t1[16],t2[16]; reader *temp=head—>next; reader *p; p=new(reader); printf("\n ┏━━━━━━━━━━┓ ”); printf(”\n█

33、━━━━━━━━━━━┫注冊(cè)┣━━━━━━━━━━━█”); printf(”\n ┗━━━━━━━━━━┛ "); printf("\n 請(qǐng)輸入姓名:”); scanf(”%s",p—〉name); fflush(stdin); while(1) { printf("\n 請(qǐng)輸入性別:\n M:男性:\n

34、 F:女性:”); p-〉sex=getchar(); if(p—>sex==’F||p—〉sex==’f’||p—>sex==M||p-〉sex==m) break; else printf("\n 閣下既非男,又非女,莫非來自泰國(guó)?”); } while(1) { while(1) { printf("\n 請(qǐng)輸入您的密碼:”); intpsd(t1); if(strlen(t1)〈=4) printf(”\n 您設(shè)置的密碼過于簡(jiǎn)單,請(qǐng)重新設(shè)置:"

35、); else break; } printf("\n 請(qǐng)確認(rèn)您的密碼:”); intpsd(t2); if(strcmp(t1,t2)==0) { strcpy(p->password,t1); break; } else printf(”\n 您兩次輸入的密碼不一致!"); } p—〉residue=10; p-〉next=NULL; for(j=0;j<10;j++) { p->borrowed[j][0]=0; p—〉borrowed[j][1]=0;

36、 } if(temp==NULL) { p—〉number=i; head->next=p; p-〉limit=1; } else { ++i; while(temp-〉next!=NULL) { ++i; temp=temp-〉next; } p-〉number=i; p—>limit=0; temp—〉next=p; } showR(p,NULL); } reader *login(reader *rhead,book *bhead) { longnum; char pass[16]; int i=5; reade

37、r *reader; style(); printf(”\n ┏━━━━━━━━━━┓ ”); printf("\n█━━━━━━━━━━━┫登錄┣━━━━━━━━━━━█"); printf(”\n ┗━━━━━━━━━━┛ ”); while(1) { printf(”\n 請(qǐng)輸入您的借閱證號(hào):"); scanf("%d”,&num); if(

38、(reader=S_reader(rhead,num))==NULL) { printf(”\n 沒有找到您所在編號(hào)的讀者?!保? getch(); return NULL; } else break; } while(i>0) { printf(”\n 請(qǐng)輸入密碼:”); intpsd(pass); if(strcmp(pass,reader—〉password)==0) return reader; else { printf(”\n

39、 密碼錯(cuò)誤"); return NULL; } } } 文件讀、寫load_save。cpp #include "library.h" book *Bload() { FILE *p; book *Bhead=(book*)malloc(sizeof(book)); book *temp,*temp1; Bhead->next=NULL; if((p=fopen("book.txt",”r”))==NULL) { printf(”\n打開文件book.txt失敗,請(qǐng)檢查.。."); returnBhead; } else {

40、 fgetc(p); if(!feof(p)) { printf("\n非空"); rewind(p); temp=(book*)malloc(sizeof(book)); fscanf(p,”%14d%12s%18s%8d%14s%4d%4d\n",&temp->number,temp-〉name,temp—>press,&temp—>presstime,temp—>author,&temp-〉total,&temp->exist); temp—>next=NULL; Bhead-〉next=temp; } while(!feof(p)) { temp1=

41、(book*)malloc(sizeof(book)); fscanf(p,"%14d%12s%18s%8d%14s%4d%4d\n",&temp1—>number,temp1—〉name,temp1->press,&temp1—〉presstime,temp1-〉author,&temp1->total,&temp1—〉exist); temp1—〉next=NULL; temp—〉next=temp1; temp=temp—〉next; } printf(”\n書籍信息讀取成功。。."); returnBhead; } } reader *Rload()

42、{ FILE *p; int i; reader *temp,*temp1; reader *Rhead=(reader*)malloc(sizeof(reader)); Rhead-〉next=NULL; if((p=fopen(”reader。txt”,"r"))==NULL) { printf(”\n打開文件reader.txt失敗,請(qǐng)檢查”); returnRhead; } else { fgetc(p); if(!feof(p)) { rewind(p); temp=(reader*)malloc(sizeof(reader)); fs

43、canf(p,"%12d%10s%3c%8d%2d%12s”,&temp—>number,temp—〉name,&temp-〉sex,&temp—>residue,&temp-〉limit,temp-〉password); for(i=0;i〈10;i++) { fscanf(p,"%6d”,&temp->borrowed[i][0]); fscanf(p,"%10d”,&temp—〉borrowed[i][1]); } temp—〉next=NULL; Rhead-〉next=temp; } while(!feof(p)) { printf("\a"); t

44、emp1=(reader*)malloc(sizeof(reader)); fread(temp1,sizeof(reader),1,p); temp1-〉next=NULL; temp—>next=temp1; temp=temp-〉next; } printf("\n讀者信息讀取成功。..”); returnRhead; } } voidBsave(book *Bhead) { FILE *p; book *temp=Bhead->next; if(temp==NULL) return; else { if((p=fopen(”book.t

45、xt","w”))==NULL) printf("\n打開book。txt失敗...”); while(temp!=NULL) { showB(temp); fprintf(p,”%14d%12s%14s%8d%14s%4d%4d\n",temp—>number,temp-〉name,temp->press,temp—>presstime,temp—〉author,temp—>total,temp—〉exist); temp=temp—〉next; } printf(”\n存儲(chǔ)書籍成功..."); } } voidRsave(reader *Rhead,boo

46、k *Bhead) { FILE *p; int i; reader *temp=Rhead-〉next; if(temp==NULL) return; else { if((p=fopen("reader.txt",”w"))==NULL) printf(”\n打開reader。txt失敗.。?!?; while(temp!=NULL) { Sleep(1000); showR(temp,Bhead); fprintf(p,”%12d%10s%3c%8d%2d%12s”,temp—>number,temp->name,temp—>sex,temp—>

47、residue,temp—〉limit,temp—>password); for(i=0;i<10;i++) { fprintf(p,”%6d",temp—>borrowed[i][0]); fprintf(p,"%10d”,temp—>borrowed[i][1]); } temp=temp—〉next; } printf("\n存儲(chǔ)讀者成功。.。"); } } 圖書搜索search.cpp #include”library。h” book *S_name(book *head,char name[]) { book *temp=head->next

48、; if(temp==NULL) printf("\n書庫中還沒有書籍,請(qǐng)入庫!”); else { while(temp!=NULL) { if(strcmp(temp->name,name)==0) { printf(”\n書名為<<%s〉〉的書存在!”,name); break; } else temp=temp-〉next; } } return temp; } voidS_author(book *head) { char author[30]; book *temp=head—>next; if(temp==NULL)

49、printf(”\n書庫中還沒有書籍,請(qǐng)入庫!”); else { printf("\n請(qǐng)輸入您要查找的作者名:”); scanf(”%s”,author); while(temp!=NULL) { if(strcmp(author,temp—>author)==0) showB(temp); temp=temp->next; } } getch(); } keynode *initindex(book *head) { int i; book *temp=head->next; keynode *tempkey,*p; printf("\n初

50、始化索引表開始。。。”); keynode *keyhead=(keynode*)malloc(sizeof(keynode)); keyhead—>next=NULL; tempkey=keyhead—〉next; if(temp!=NULL) { p=(keynode*)malloc(sizeof(keynode)); p-〉key=temp—>number; p—〉adress=temp; p-〉next=NULL; keyhead—〉next=p; tempkey=keyhead->next; } while(temp!=NULL) { for(i

51、=0;i〈5&&temp—>next!=NULL;i++) { temp=temp—〉next; } if(i<4) returnkeyhead; else { p=(keynode*)malloc(sizeof(keynode)); p—〉key=temp—〉number; p—〉adress=temp; p—〉next=NULL; tempkey->next=p; tempkey=tempkey->next; } } getch(); returnkeyhead; } voiddelkey(keynode *keyhead) { k

52、eynode *temp; if(keyhead->next==NULL) { free(keyhead); } else { while(keyhead!=NULL) { temp=keyhead; keyhead=keyhead—〉next; free(temp); } } printf("\n索引表清空!”); } book *S_number(long num,book *bhead) { int i; book *p; keynode *keyhead=initindex(bhead); keynode *tempkey=ke

53、yhead-〉next; if(tempkey==NULL) { printf(”\n書庫無記錄,請(qǐng)輸入!"); delkey(keyhead); return NULL; } else { while(tempkey->next!=NULL) { if(tempkey—〉keykeynext; else break; } if(tempkey==NULL) { printf("沒有找到編號(hào)為%d的書籍!",num); delkey(keyhead);

54、return NULL; } else { p=tempkey—〉adress; for(i=0;i<5&&p!=NULL;i++) { if(p—〉number==num) { showB(p); delkey(keyhead); return p; } else p=p—>next; } delkey(keyhead); return NULL; } } } reader *S_reader(reader *rhead,longnum) { reader *temp=rhead—〉next; if(temp==NULL

55、) { printf("\n文件中沒有數(shù)據(jù)導(dǎo)入,請(qǐng)檢查修復(fù)系統(tǒng)!”); return NULL; } else { while(temp) { if(temp—>number==num) return temp; else temp=temp—>next; } return temp; } } 顯示圖書及讀者信息showing.cpp #include"library.h" voidshowR(reader *tr,book *bhead) { int i; book *p; printf("\n

56、 ╔════════╗"); printf(”\n╔══════════╣讀者信息╠══════════╗”); printf("\n║╚════════╝║"); printf("\n╠══════╦═════╦═══╦════╦════╦═══╣"); printf("\n║借閱證號(hào)║姓名║性別║剩余可借║已借本數(shù)║權(quán)限║"); printf("\n╠══════╬═════╬═══╬════╬════╬═══╣"); printf(”\n║%12d║%10s║%6s║%8d║%8d║%6s║",tr->number,tr—>name,sc(tr—〉sex),tr-〉re

57、sidue,10-tr->residue,lc(tr-〉limit)); printf("\n╚══════╩═════╩═══╩════╩════╩═══╝"); printf("\n 以下為所借書籍信息:\n"); for(i=0;i<10;i++) { if(tr-〉borrowed[i][0]==0) continue; else { printf(”\n %d”,tr->borrowed[i][0]); p=S_number(tr->borrowed[i][0],bhead); printf("\n┌───

58、─┬──────┬───────┬────┬───────┬────┬────┐”); printf("\n│書本編號(hào)│書籍名稱│出版社名稱│出版時(shí)間│作者│借書日期│可借時(shí)間│"); printf(”\n├────┼──────┼───────┼────┼───────┼────┼────┤"); printf(”\n│%8d│%12s│%14s│%8d│%14s│%8d│ 2個(gè)月│”,p—〉number,p—>name,p—〉press,p-〉presstime,p->author,tr->borrowed[i][1]); printf("\n└────┴──────┴──────

59、─┴────┴───────┴────┴────┘\n”); } } } voidshowB(book *p) { printf(”\n┌────┬──────┬───────┬────┬───────┬──┬──┐"); printf("\n│書本編號(hào)│書籍名稱│出版社名稱│出版時(shí)間│作者│共計(jì)│可借│"); printf("\n├────┼──────┼───────┼────┼───────┼──┼──┤”); printf(”\n│%8d│%12s│%14s│%8d│%14s│%4d│%4d│”,p->number,p—>name,p—>press,p—〉pr

60、esstime,p-〉author,p—>total,p-〉exist); printf("\n└────┴──────┴───────┴────┴───────┴──┴──┘\n"); } char *sc(char p) { if(p==’F||p==’f’) return "女"; else return "男"; } char *lc(int i) { if(i==1) return "管理員"; else return ”讀者”; } 菜單menu。cpp #include "library.h” void style()

61、{ system("mode con cols=90 lines=30"); system(”color 0f"); system("cls"); } voidintpsd(char *psd) { int i=0; char c; while((c=getch())!=13) { if (c!=’\b&&c!=’\t&&i〈20) { psd[i]=c; putchar(*’); i++; } if(c==’\b’&&i〉0) { printf("\b \b"); i——; } } psd[i]=’\0; return;

62、} void menu(book *Bhead,reader *Rhead) { reader *tempr; style(); charm;int i; while(1) { printf("\n\t ┏━━━━━━━━━━┓ "); printf("\n\t◢━━━━━━━━━━━┫長(zhǎng)安大學(xué)圖書館┣━━━━━━━━━━◣”); printf(”\n\t┃┗━━━━━━━━━━┛┃”); printf("\n\t┃┏━━━━━━━━┓┃”); printf("\n\t┃┃

63、┃┃"); printf(”\n\t┃┃┃┃"); printf("\n\t┃┃ 1﹑登陸┃┃"); printf("\n\t┃┃┃┃"); printf("\n\t┃┃ 2﹑注冊(cè)┃┃”); printf(”\n\t┃┃┃┃"); printf(”\n\t┃┃┃┃”); printf(”\n\t┃┃┃┃"); printf(”\n\t┃┗━━━━━━━━┛━〉按任意鍵退出〈━┃”); printf("\n\t◥━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◤\n”); fflush(stdin); m=getch(); if(m==

64、’2’) { char message[] = "\n正在進(jìn)入請(qǐng)稍候.... "; for(i=0;i〈strlen(message);i++) { printf(”%c”,message[i]); Sleep(50); } system(”cls”); reg(Rhead); } else if(m==’1) { char message[] = "\n正在進(jìn)入請(qǐng)稍候...。 "; for(i=0;i

65、 } system(”cls”); tempr=login(Rhead,Bhead); if(tempr==NULL) continue; menu2(tempr,Rhead,Bhead); } else { system("cls”); Rsave(Rhead,Bhead); Bsave(Bhead); exit(0); } } } void menu2(reader *temp,reader *rhead,book *bhead) { style(); char i; getch(); system(”cls"); while(1)

66、 { printf("\n ┏━━━━━━━━┓ "); printf(”\n◢━━━━━━━━━━━┫圖書館菜單┣━━━━━━━━━━━◣"); printf(”\n┃┗━━━━━━━━┛┃”); printf("\n┃┏━━━━━━━━┓┃"); printf("\n┃┃請(qǐng)選擇您的操作: ┃┃”); printf(”\n┃┃┃┃"); printf(”\n┃┃ 1﹑借書┃┃”); printf("\n┃┃ 2﹑還書┃┃”); printf("\n┃┃ 3﹑個(gè)人信息┃┃"); printf(”\n┃┃ 4﹑返回上級(jí)┃┃"); printf(”\n┃┃ 5﹑退出系統(tǒng)┃┃"); if(temp—>limit==1) printf(”\n┃┃ 6﹑入庫┃┃”);else ; printf("\n┃┗━━━━━━━━┛┃”); printf("\n◥━━━━━━━━━━━━━━━━━

展開閱讀全文
溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。

相關(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),我們立即給予刪除!