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

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

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

10 積分

下載資源

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

資源描述:

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

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

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

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

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

5、開始遍歷,檢查記錄中的讀者信息和輸入的是否匹配,假如找到匹配的,如此輸出該書籍信息,然后繼續(xù)向下遍歷,直到鏈表尾部,查找完畢。按書號查找如此是根據(jù)建立的索引表來查找記錄。 2、 讀者信息存儲 讀者信息采用線性單鏈表存儲,設(shè)置頭結(jié)點(diǎn),頭結(jié)點(diǎn)不存儲數(shù)據(jù),初始化時(shí)頭結(jié)點(diǎn)->next設(shè)置為空,然后每從文件中讀取一組數(shù)據(jù),如此將該數(shù)據(jù)存入新開辟的空間,到讀者信息鏈表中,再將該數(shù)據(jù)的next置空。 3、圖書信息存儲 書籍信息存儲采用單鏈表存儲,設(shè)置頭結(jié)點(diǎn),頭結(jié)點(diǎn)不存儲數(shù)據(jù),頭結(jié)點(diǎn)的next為空,初始化時(shí),從文件中讀取一個(gè)格式化的數(shù)據(jù),如此將該數(shù)據(jù)存入新開辟的空間,并將該節(jié)點(diǎn)到鏈表中去,將next置

6、空。 程序主要函數(shù): 1. 增加圖書:void insert(book *bhead);輸入書號,判斷是否合法,然后輸入圖書信息。 流程圖如下 進(jìn)入 輸入書號 N 書號合法 輸入書籍信息 Y Y 完畢輸入 N 繼續(xù)輸入 2. 借書:void borrow(reader *temp,book*Bhead);通過書號、書名、作者三種查找方式查詢借書,借書成功后,該書的可借書量減1,讀者借書量減1。 流程圖如下: 3. 還書:void return book(book *bhead,reade

7、r *temp);輸入書號,查詢是否存在,然后還書,該書的可借書量加1,讀者借書量加1。 流程圖如下: 詳細(xì)程序模塊 1、 頭文件定義 頭文件library.h定義了3個(gè)結(jié)構(gòu)體:書籍結(jié)構(gòu)體、讀者結(jié)構(gòu)體和索引表結(jié)構(gòu)體, 書籍結(jié)構(gòu)體的定義如下: typedef struct READER{ long number;//借閱號 char name[15];//讀者 char sex;//讀者性別 char password[16];//讀者的密碼 int residue;//讀者的剩余可借書籍?dāng)?shù)量 long borrowed[10];//讀者已經(jīng)借閱的書籍編號 int

8、 limit;//讀者權(quán)限 struct READER *next; }reader; 讀者結(jié)構(gòu)體的定義如下: typedef struct BOOK{ long number;//書籍編號 char name[30];//書名 char author[30];//作者 char press[30];//信息 long presstime;//出版日期 int exist;//在庫數(shù)量 int total;//總數(shù)量 struct BOOK *next; }book; 索引表結(jié)構(gòu)體的定義如下: typedef struct KEY{ long key;

9、 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、 插入模塊 插入模塊分為書籍入庫、注冊、登陸3大塊,分3個(gè)函數(shù),聲明如下: void insert(book*bhead);//入庫 void reg(reader*head);//注冊 reader* login(re

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

11、化就由讀取函數(shù)完成,假如文件為空如此返回空指針,假如不為空,如此將文件里面的信息寫入到鏈表中,每讀出一個(gè)數(shù)據(jù),分配一個(gè)空間,將該信息輸入。 4、 查找模塊 查找模塊分書籍查找模塊、讀者查找模塊,書籍查找模塊分線性鏈表查詢、遍歷查詢、索引表查詢,讀者查詢直接遍歷讀者鏈表,查找該讀者,假如存在,返回指針,不存在如此返回NULL。查找模塊的定義如下: book*S_name(book*head,char name[]);//按書籍名查找函數(shù) void S_author(book*head);//按作者查找 keynode*initindex(book*head);//初始化建立索引表 b

12、ook*S_number(long num,book*bhead);//按書號查找 reader*S_reader(reader*rhead,long num);//查找讀者 5、 顯示模塊 根據(jù)給出的節(jié)點(diǎn)指針,顯示該節(jié)點(diǎn)所包含的信息,顯示分為讀者顯示和書籍信息顯示,讀者信息顯示包含書籍信息顯示,以便顯示讀者所借書的信息。這兩個(gè)函數(shù)的聲明如下: void showR(reader*tr,book*bhead);//顯示讀者信息函數(shù) void showB(book*p);//顯示書籍信息函數(shù) 這個(gè)模塊還有2個(gè)小函數(shù),用于將存入的性別’F’、’M’轉(zhuǎn)化成漢字,將存的權(quán)限“1〞、“0〞轉(zhuǎn)

13、化成“管理員〞、“讀者〞輸出,這兩個(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.入庫界面: 3.借書界面: 4.還書界面: 5.個(gè)人信息查詢界面: 體會 這次的大作業(yè)讓我復(fù)習(xí)并實(shí)際運(yùn)用本學(xué)期學(xué)的數(shù)據(jù)結(jié)構(gòu)的有關(guān)知識,例如數(shù)據(jù)的存儲、

14、排序、調(diào)用、查找等,加深了對數(shù)據(jù)結(jié)構(gòu)和C語言的理解,總的來說,收獲頗豐。 代碼 #ifndef LIBRARY_INCLUDE #define LIBRARY_INCLUDE #include #include #include #include #include #include typedef struct BOOK{ long number; char name[30]; char author[30]; char pres

15、s[30]; long presstime; int exist; int total; struct BOOK *next; }book; typedef struct KEY{ long key; book *adress; struct KEY *next; }keynode; typedef struct READER{ long number; char name[15]; char sex; char password[16]; int residue; long borrowed[10][2]; int li

16、mit; struct READER *next; }reader; char *lc(int i); char *sc(char p); void showR(reader *tr,book *bhead); void showB(book *p); book *S_name(book *head,char name[]); void S_author(book *head); keynode *initindex(book *head); void delkey(keynode *keyhead); book *S_number(long num,book *bhe

17、ad); reader *S_reader(reader *rhead,long num); book *Bload(); reader *Rload(); void Bsave(book *Bhead); void Rsave(reader *Rhead,book *bhead); void insert(book *bhead); void reg(reader *head); reader *login(reader *rhead,book *bhead); void borrow(reader *temp,book *Bhead); void returnbook(

18、book *bhead,reader *temp); void style(); void intpsd(char *psd); void menu(struct BOOK *Bhead,reader *Rhead); void menu2(reader *temp,reader *rhead,book *bhead); long backtime(); #endif #include"library.h" void borrow(reader *temp,book *Bhead) { style(); long num; int i; char t,k,

19、name[30]; book *Bbook; getch(); system("cls"); while(1) { printf("\n ┏━━━━━━━━━━┓ "); printf("\n█━━━━━━━━━━━┫ 借書 ┣━━━━━━━━━━━█"); printf("\n ┗━━━━━━━━━━┛ "); printf("\n請輸入您

20、要查找借閱書籍的方式:"); printf("\n 1、按書號查找\n"); printf("\n 2、按作者查找\n"); printf("\n 3、按書名查找\n"); printf("\n 4、返回主菜單\n"); t=getch(); switch(t) { case '1': { printf("\n請輸入您要查找的書

21、籍編號:"); 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; }

22、 case '3': { printf("\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; }

23、 default: return; borrow: if(Bbook!=NULL&&temp->residue>0&&Bbook->exist>0) { temp->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; }

24、 } printf("\n 借閱成功!"); } else if(!(temp->residue>0)) printf("\n您只能借閱10本書籍!"); else if(!(Bbook->exist>0)) printf("\n該書沒有庫存,請借閱其他書籍!"); printf("\n您要繼續(xù)借閱書籍嗎?Y/N"); t=getch(); if(t=='y'||t=='Y') continue; else break; } }

25、} void returnbook(book *bhead,reader *temp) { long num; int i,j=0; char t; book *p; printf("\n ┏━━━━━━━━━━┓ "); printf("\n█━━━━━━━━━━━┫ 還書 ┣━━━━━━━━━━━█"); printf("\n ┗━━━━━━━━━━┛

26、 "); 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┌────┬──────┬───────┬────┬───────┐"); printf("\n│書本編號│ 書籍名稱 │ 名稱 │出版時(shí)間│ 作者 │"); printf("\n├

27、────┼──────┼───────┼────┼───────┤"); 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=='Y'||t=='y') { p->exist++; temp->residue++; for(i=0;i

28、<10;i++) { if(temp->borrowed[i][0]==num) { temp->borrowed[i][0]=0; temp->borrowed[i][1]=0; break; } } } else return; } else { printf("\n編號有誤,請仔細(xì)檢查!"); } } #include "library.h" void insert(book *bhead) { style(); long t; book

29、*temp1,*temp,*temp2; temp1=bhead->next; printf("\n ┏━━━━━━━━━━┓ "); printf("\n█━━━━━━━━━━━┫ 入庫 ┣━━━━━━━━━━━█"); printf("\n ┗━━━━━━━━━━┛ "); while(1) { printf("\n請輸入您給定書的編號(6位以的正整數(shù)

30、):"); scanf("%d",&t); if(t<=0||t>999999) { printf("\n您的編號不在處理圍(1~999999)之!"); fflush(stdin); continue; } else { temp2=S_number(t,bhead); if(temp2==NULL) { break; } else { temp2->total++; temp2->exist++; printf("\n編號為%d的書已存在,入庫

31、成功!",t); return; } } } temp=(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請輸入本書出版時(shí)間:"); scanf("%d",&temp->presstime); tem

32、p->next=NULL; temp->total=1; temp->exist=1; if(bhead->next==NULL) bhead->next=temp; else { while(temp1->next!=NULL&&temp1->numbernumber) temp1=temp1->next; temp->next=temp1->next; temp1->next=temp; } printf("\n ┏━━━━━━━━━━┓

33、 "); printf("\n█━━━━━━━━━━━┫ 入庫成功 ┣━━━━━━━━━━━█"); printf("\n ┗━━━━━━━━━━┛ "); } void reg(reader *head) { style(); long i=1000; int j; char t1[16],t2[16]; reader *temp=head->next; reader *p; p=new(reader); print

34、f("\n ┏━━━━━━━━━━┓ "); printf("\n█━━━━━━━━━━━┫ 注冊 ┣━━━━━━━━━━━█"); printf("\n ┗━━━━━━━━━━┛ "); printf("\n 請輸入:"); scanf("%s",p->name); fflush(stdin); while(1

35、) { printf("\n 請輸入性別:\n M:男性:\n 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)

36、 { printf("\n 請輸入您的密碼:"); intpsd(t1); if(strlen(t1)<=4) printf("\n 您設(shè)置的密碼過于簡單,請重新設(shè)置:"); else break; } printf("\n 請確認(rèn)您的密碼:"); intpsd(t2); if(strcmp(t1,t2)==0) { strcpy(p->password,t1); break;

37、 } 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; } if(temp==NULL) { p->number=i; head->next=p; p->limit=1; } else { ++i; while(temp->next!=NULL) {

38、 ++i; temp=temp->next; } p->number=i; p->limit=0; temp->next=p; } showR(p,NULL); } reader *login(reader *rhead,book *bhead) { long num; char pass[16]; int i=5; reader *reader; style(); printf("\n ┏━━━━━━━━━━┓ ");

39、 printf("\n█━━━━━━━━━━━┫ 登錄 ┣━━━━━━━━━━━█"); printf("\n ┗━━━━━━━━━━┛ "); while(1) { printf("\n 請輸入您的借閱證號:"); scanf("%d",&num); if((reader=S_reader(rhead,num))==NULL) { printf("\n

40、 沒有找到您所在編號的讀者."); getch(); return NULL; } else break; } while(i>0) { printf("\n 請輸入密碼:"); intpsd(pass); if(strcmp(pass,reader->password)==0) return reader; else { printf("\n 密碼錯(cuò)誤"); return NULL; }

41、 } } #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失敗,請檢查..."); return Bhead; } else { fgetc(p); if(!feof(p)) { print

42、f("\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=(book*)malloc(si

43、zeof(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書籍信息讀取成功..."); return Bhead; } } reader *Rload()

44、{ 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失敗,請檢查"); return Rhead; } else { fgetc(p); if(!feof(p)) { rewind(p); temp=(reader*)malloc

45、(sizeof(reader)); fscanf(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

46、; } while(!feof(p)) { printf("\a"); temp1=(reader*)malloc(sizeof(reader)); fread(temp1,sizeof(reader),1,p); temp1->next=NULL; temp->next=temp1; temp=temp->next; } printf("\n讀者信息讀取成功..."); return Rhead; } } void Bsave(book *Bhead) { FILE *p; book *

47、temp=Bhead->next; if(temp==NULL) return; else { if((p=fopen("book.txt","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->e

48、xist); temp=temp->next; } printf("\n存儲書籍成功..."); } } void Rsave(reader *Rhead,book *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) {

49、 Sleep(1000); showR(temp,Bhead); fprintf(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++) { fprintf(p,"%6d",temp->borrowed[i][0]); fprintf(p,"%10d",temp->borrowed[i][1]); } temp=temp->next;

50、 } printf("\n存儲讀者成功..."); } } #include"library.h" book *S_name(book *head,char name[]) { book *temp=head->next; if(temp==NULL) printf("\n書庫中還沒有書籍,請入庫!"); else { while(temp!=NULL) { if(strcmp(temp->name,name)==0) { printf("\n書名為<<%s>>的書存在!",name); bre

51、ak; } else temp=temp->next; } } return temp; } void S_author(book *head) { char author[30]; book *temp=head->next; if(temp==NULL) printf("\n書庫中還沒有書籍,請入庫!"); else { printf("\n請輸入您要查找的作者名:"); scanf("%s",author); while(temp!=NULL) { if(strcmp(author

52、,temp->author)==0) showB(temp); temp=temp->next; } } getch(); } keynode *initindex(book *head) { int i; book *temp=head->next; keynode *tempkey,*p; printf("\n初始化索引表開始..."); keynode *keyhead=(keynode*)malloc(sizeof(keynode)); keyhead->next=NULL; tempkey=keyhead->nex

53、t; 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=0;i<5&&temp->next!=NULL;i++) { temp=temp->next; } if(i<4) return keyhead;

54、 else { p=(keynode*)malloc(sizeof(keynode)); p->key=temp->number; p->adress=temp; p->next=NULL; tempkey->next=p; tempkey=tempkey->next; } } getch(); return keyhead; } void delkey(keynode *keyhead) { keynode *temp; if(keyhead->next==NULL) { free(keyhe

55、ad); } 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=keyhead->next; if(tempkey==NULL)

56、{ printf("\n書庫無記錄,請輸入!"); delkey(keyhead); return NULL; } else { while(tempkey->next!=NULL) { if(tempkey->keynext->keynext; else break; } if(tempkey==NULL) { printf("沒有找到編號為%d的書籍!",num); delkey(keyhead); r

57、eturn 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

58、,long num) { reader *temp=rhead->next; if(temp==NULL) { printf("\n文件中沒有數(shù)據(jù)導(dǎo)入,請檢查修復(fù)系統(tǒng)!"); return NULL; } else { while(temp) { if(temp->number==num) return temp; else temp=temp->next; } return temp; } } #include"library.h" void showR(reader *t

59、r,book *bhead) { int i; book *p; printf("\n ╔════════╗"); printf("\n╔══════════╣ 讀 者 信 息 ╠══════════╗"); printf("\n║╚════════╝║"); printf("\n╠══════╦═════╦═══╦════╦════╦═══╣"); printf("\n║ 借閱證號 ║ 姓 名 ║ 性別 ║剩余可借║已借本數(shù)║ 權(quán)限 ║"); printf("\n╠══════╬═════╬═══╬═

60、═══╬════╬═══╣"); printf("\n║%12d║%10s║%6s║%8d║%8d║%6s║",tr->number,tr->name,sc(tr->sex),tr->residue,10-tr->residue,lc(tr->limit)); printf("\n╚══════╩═════╩═══╩════╩════╩═══╝"); printf("\n 以下為所借書籍信息:\n"); for(i=0;i<10;i++) { if(tr->borrowed[i][0]==0) continue

61、; else { printf("\n %d",tr->borrowed[i][0]); p=S_number(tr->borrowed[i][0],bhead); printf("\n┌────┬──────┬───────┬────┬───────┬────┬────┐"); printf("\n│書本編號│ 書籍名稱 │ 名稱 │出版時(shí)間│ 作者 │借書日期│可借時(shí)間│"); printf("\n├────┼──────┼───────┼────┼───────┼────┼────┤"); printf(

62、"\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└────┴──────┴───────┴────┴───────┴────┴────┘\n"); } } } void showB(book *p) { printf("\n┌────┬──────┬───────┬────┬───────┬──┬──┐"); printf("\n│書本編號│ 書籍名稱 │ 名稱

63、 │出版時(shí)間│ 作者 │共計(jì)│可借│"); printf("\n├────┼──────┼───────┼────┼───────┼──┼──┤"); printf("\n│%8d│%12s│%14s│%8d│%14s│%4d│%4d│",p->number,p->name,p->press,p->presstime,p->author,p->total,p->exist); printf("\n└────┴──────┴───────┴────┴───────┴──┴──┘\n"); } char *sc(char p) { if(p=='F'||

64、p=='f') return "女"; else return "男"; } char *lc(int i) { if(i==1) return "管理員"; else return "讀者"; } #include "library.h" void style() { system("mode con cols=90 lines=30"); system("color 0f"); system("cls"); } void intpsd(char *psd) { int i=0; char c; wh

65、ile((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; } void menu(book *Bhead,reader *Rhead) { reader *tempr; style(); char m;int i; while(1)

66、 { printf("\n\t ┏━━━━━━━━━━┓ "); printf("\n\t◢━━━━━━━━━━━┫ 長安大學(xué)圖書館 ┣━━━━━━━━━━◣"); printf("\n\t┃┗━━━━━━━━━━┛┃"); printf("\n\t┃┏━━━━━━━━┓┃"); printf("\n\t┃┃┃┃"); 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"); f

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

相關(guān)資源

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

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

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


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