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

上傳人:p*** 文檔編號:43808986 上傳時間:2021-12-04 格式:DOC 頁數(shù):30 大?。?41.50KB
收藏 版權申訴 舉報 下載
圖書館管理系統(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è)》由會員分享,可在線閱讀,更多相關《圖書館管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)大作業(yè)(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。

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

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

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

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

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

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

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

8、/讀者姓名 char sex;//讀者性別 char password[16];//讀者的密碼 int residue;//讀者的剩余可借書籍數(shù)量 long borrowed[10];//讀者已經(jīng)借閱的書籍編號 int limit;//讀者權限 struct READER *next; }reader; 讀者結(jié)構(gòu)體的定義如下: typedefstruct BOOK{ long number;//書籍編號 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來包含,以免重復包含。 2、插入

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

11、er*Rload();//讀者鏈表讀入 void Bsave(book*Bhead);//書籍鏈表寫入 void Rsave(reader*Rhead,book*bhead);//讀者鏈表寫入 讀者和書籍鏈表的初始化就由讀取函數(shù)完成,若文件為空則返回空指針,若不為空,則將文件里面的信息寫入到鏈表中,每讀出一個數(shù)據(jù),分配一個空間,將該信息輸入. 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);//按書號查找 reader*S_reader(reader*rhead,longnum);//查找讀者 5、顯示模塊 根據(jù)給出的節(jié)點指針,顯示該節(jié)點所包含的信息,顯示分為讀者顯示和書籍信息顯示,讀者信息顯示包含書籍信息顯示,以便顯示讀者所借書的信息。這兩個函數(shù)的聲明如下: void showR(reader*tr,

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

14、 3.借書界面: 4.還書界面: 5.個人信息查詢界面: 體會 這次的大作業(yè)讓我復習并實際運用本學期學的數(shù)據(jù)結(jié)構(gòu)的有關知識,例如數(shù)據(jù)的存儲、排序、調(diào)用、查找等,加深了對數(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請輸入您要查找借閱書籍的方式:”); printf("\n 1、按書號查找\n"); printf(”\n 2、按作者查找\n"); printf(”\n 3、按書名查找\n"); printf("\n 4、返回主菜單\n"); t=getch(); switch(t) {

21、 case ’1: { printf("\n請輸入您要查找的書籍編號:”); scanf("%d",&num); if((Bbook=S_number(num,Bhead))!=NULL) { showB(Bbook); printf(”\n請問你是否要借閱該書籍?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請輸如您要查找的書籍名:"); scanf(”%s”,name); if((Bbook=S_name(Bhead,name))!=NULL) { showB(Bbook); printf(”\n請問你是否要借閱該書籍?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該書沒有庫存,請借閱其他書籍!”); 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請輸入您所還書的編號:”); 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│書本編號│書籍名稱│出版社名稱│出版時間│作者│”); printf("\n├────┼──────┼───────┼────┼───────┤"); printf("\n│%8d│%12s│%14s│%8d│%14s│",p—〉number,p—〉name,p-〉press,p—〉presstime,p—〉author); printf("\n└────┴──────┴───────┴────┴───────┘\n"); printf("\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編號有誤,請仔細檢查!"); } } 新書入庫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請輸入您給定書的

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

30、mp=(book*)malloc(sizeof(book)); temp->number=t; printf(”\n請輸入書名:"); scanf("%s”,temp-〉name); printf("\n請輸入本書作者:"); scanf("%s",temp—>author); printf(”\n請輸入本書出版社:”); scanf(”%s”,temp-〉press); printf("\n請輸入本書出版時間:”); 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、━━━━━━━━━━━┫注冊┣━━━━━━━━━━━█”); printf(”\n ┗━━━━━━━━━━┛ "); printf("\n 請輸入姓名:”); scanf(”%s",p—〉name); fflush(stdin); while(1) { printf("\n 請輸入性別:\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 閣下既非男,又非女,莫非來自泰國?”); } while(1) { while(1) { printf("\n 請輸入您的密碼:”); intpsd(t1); if(strlen(t1)〈=4) printf(”\n 您設置的密碼過于簡單,請重新設置:"

35、); else break; } printf("\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 請輸入您的借閱證號:"); scanf("%d”,&num); if(

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

39、 密碼錯誤"); 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失敗,請檢查.。."); 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失敗,請檢查”); 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存儲書籍成功..."); } } 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存儲讀者成功。.。"); } } 圖書搜索search.cpp #include”library。h” book *S_name(book *head,char name[]) { book *temp=head->next

48、; if(temp==NULL) printf("\n書庫中還沒有書籍,請入庫!”); 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書庫中還沒有書籍,請入庫!”); else { printf("\n請輸入您要查找的作者名:”); 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書庫無記錄,請輸入!"); delkey(keyhead); return NULL; } else { while(tempkey->next!=NULL) { if(tempkey—〉keykeynext; else break; } if(tempkey==NULL) { printf("沒有找到編號為%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ù)導入,請檢查修復系統(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║借閱證號║姓名║性別║剩余可借║已借本數(shù)║權限║"); 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│書本編號│書籍名稱│出版社名稱│出版時間│作者│借書日期│可借時間│"); printf(”\n├────┼──────┼───────┼────┼───────┼────┼────┤"); printf(”\n│%8d│%12s│%14s│%8d│%14s│%8d│ 2個月│”,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│書本編號│書籍名稱│出版社名稱│出版時間│作者│共計│可借│"); 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◢━━━━━━━━━━━┫長安大學圖書館┣━━━━━━━━━━◣”); printf(”\n\t┃┗━━━━━━━━━━┛┃”); printf("\n\t┃┏━━━━━━━━┓┃”); printf("\n\t┃┃

63、┃┃"); printf(”\n\t┃┃┃┃"); printf("\n\t┃┃ 1﹑登陸┃┃"); printf("\n\t┃┃┃┃"); printf("\n\t┃┃ 2﹑注冊┃┃”); 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正在進入請稍候.... "; for(i=0;i〈strlen(message);i++) { printf(”%c”,message[i]); Sleep(50); } system(”cls”); reg(Rhead); } else if(m==’1) { char message[] = "\n正在進入請稍候...。 "; 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┃┃請選擇您的操作: ┃┃”); printf(”\n┃┃┃┃"); printf(”\n┃┃ 1﹑借書┃┃”); printf("\n┃┃ 2﹑還書┃┃”); printf("\n┃┃ 3﹑個人信息┃┃"); printf(”\n┃┃ 4﹑返回上級┃┃"); 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等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

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

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

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


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