圖書(shū)館管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第1頁(yè)
圖書(shū)館管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第2頁(yè)
圖書(shū)館管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第3頁(yè)
圖書(shū)館管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第4頁(yè)
圖書(shū)館管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu)大作業(yè)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(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ù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告圖書(shū)管理信息系統(tǒng)二一三年十二月本程序是圖書(shū)管理信息系統(tǒng)的實(shí)現(xiàn),具體功能包括讀者注冊(cè)、登錄、新書(shū)增添、圖書(shū)查詢、圖書(shū)搜索、借還書(shū)、讀存盤(pán)等。程序流程如下:圖書(shū)管理信息系統(tǒng)注冊(cè)登陸讀者注冊(cè)管理員注冊(cè)讀者登錄管理員登錄入庫(kù)退出系統(tǒng)個(gè)人信息查詢還書(shū)借書(shū)任務(wù)分析:1新書(shū)入庫(kù):新到書(shū)籍入庫(kù)包含幾方面的操作:首先查詢?cè)摃?shū)名的書(shū)籍在圖書(shū)館信息中是否已經(jīng)存在,若存在,則增加可借數(shù)量和總庫(kù)存量,若不存在,則新增加概述信息,從界面輸入書(shū)籍的編號(hào)(0999999的長(zhǎng)整型)、書(shū)名(字符串類型)、作者名(字符串類型)、出版社信息(字符串類型)、出版日期(整型)、該書(shū)的現(xiàn)存量(整型)、該書(shū)的

2、總量(整型)。輸入該信息之后,將該節(jié)點(diǎn)插入到書(shū)籍信息鏈表中去。該節(jié)點(diǎn)的插入位置根據(jù)查找,找到合適的位置插入,這樣可以保證整個(gè)數(shù)據(jù)都是有序的,方便查找。2讀者注冊(cè):沒(méi)有賬號(hào)和密碼讀者和管理員都不能登錄系統(tǒng),系統(tǒng)默認(rèn)第一個(gè)注冊(cè)系統(tǒng)的是系統(tǒng)管理員,借閱號(hào)為1000,權(quán)限是1,并輸入密碼000000及基本信息,并將所借書(shū)信息區(qū)全部置零。不是第一個(gè)注冊(cè)的讀者,借閱號(hào)從1000往后順延,自己設(shè)置密碼,權(quán)限為0,其余信息與管理員相同,因此登陸之后,管理員可以看到“入庫(kù)”菜單選項(xiàng),普通讀者不能看到該選項(xiàng)。3借書(shū):書(shū)籍借閱主要涉及存書(shū)庫(kù)和讀者信息庫(kù)的更新。用戶首先登陸系統(tǒng),通過(guò)3種查詢方式查詢?cè)摃?shū)是否存在,并判

3、斷該書(shū)的剩余數(shù)量是否大于零,最后查詢?cè)撟x者是否已經(jīng)借滿書(shū)籍。若以上條件都滿足,則將該書(shū)編號(hào)存入該讀者的借閱信息區(qū),將該讀者的可借書(shū)數(shù)量減1,該存書(shū)的可借數(shù)量減1。4還書(shū):讀者登錄后按書(shū)名號(hào)來(lái)歸還所借書(shū)籍,若書(shū)名號(hào)正確并且確認(rèn)歸還該書(shū)籍,則從讀者的借書(shū)區(qū)刪除該書(shū)籍,讀者的可借書(shū)數(shù)量加1,將該書(shū)的可借數(shù)量增加1,然后返回。5信息查詢:信息查詢分為讀者信息查詢和書(shū)籍信息查詢,讀者信息查詢是在讀者登錄之后,可以顯示本人的基本信息以及借書(shū)狀況(所借書(shū)的本數(shù)、可借書(shū)本數(shù)以及所借書(shū)的信息),還可查詢書(shū)籍信息,可根據(jù)書(shū)籍的編號(hào)來(lái)查找書(shū)籍、根據(jù)書(shū)名來(lái)查找書(shū)籍、根據(jù)作者名來(lái)查詢書(shū)籍。查詢到該書(shū)籍后顯示是否借閱該書(shū)

4、籍。算法設(shè)計(jì):1、 查找查找分按書(shū)名查找、按作者查找和按書(shū)號(hào)查找。按書(shū)名查找是采用遍歷線性鏈表的方式,從首元結(jié)點(diǎn)開(kāi)始向下遍歷,檢查輸入的書(shū)名和已存的書(shū)名是否匹配,如果匹配,則將該書(shū)籍的指針?lè)祷?,然后查找結(jié)束。若直到最后也沒(méi)找到,則返回空。按作者查找則根據(jù)輸入的作者名,從書(shū)籍鏈表的首元結(jié)點(diǎn)開(kāi)始遍歷,檢查記錄中的讀者信息和輸入的是否匹配,若找到匹配的,則輸出該書(shū)籍信息,然后繼續(xù)向下遍歷,直到鏈表尾部,查找結(jié)束。按書(shū)號(hào)查找則是根據(jù)建立的索引表來(lái)查找記錄。2、 讀者信息存儲(chǔ)讀者信息采用線性單鏈表存儲(chǔ),設(shè)置頭結(jié)點(diǎn),頭結(jié)點(diǎn)不存儲(chǔ)數(shù)據(jù),初始化時(shí)頭結(jié)點(diǎn)->next設(shè)置為空,然后每從文件中讀取一組數(shù)據(jù),則

5、將該數(shù)據(jù)存入新開(kāi)辟的空間,鏈接到讀者信息鏈表中,再將該數(shù)據(jù)的next置空。3、圖書(shū)信息存儲(chǔ)書(shū)籍信息存儲(chǔ)采用單鏈表存儲(chǔ),設(shè)置頭結(jié)點(diǎn),頭結(jié)點(diǎn)不存儲(chǔ)數(shù)據(jù),頭結(jié)點(diǎn)的next為空,初始化時(shí),從文件中讀取一個(gè)格式化的數(shù)據(jù),則將該數(shù)據(jù)存入新開(kāi)辟的空間,并將該節(jié)點(diǎn)鏈接到鏈表中去,將next置空。程序主要函數(shù):1. 增加圖書(shū):void insert(book *bhead);輸入書(shū)號(hào),判斷是否合法,然后輸入圖書(shū)信息。流程圖如下進(jìn)入輸入書(shū)號(hào)N書(shū)號(hào)合法輸入書(shū)籍信息YY結(jié)束輸入N繼續(xù)輸入2. 借書(shū):void borrow(reader *temp, book *Bhead);通過(guò)書(shū)號(hào)、書(shū)名、作者三種查找方式查詢借書(shū),

6、借書(shū)成功后,該書(shū)的可借書(shū)量減1,讀者借書(shū)量減1。流程圖如下:N進(jìn)入查找按書(shū)名查找按書(shū)號(hào)查找按作者查找進(jìn)入輸入書(shū)名繼續(xù)借書(shū)退出輸入書(shū)號(hào)輸入作者未找到找到借書(shū)找到借書(shū)成功YNYYN3. 還書(shū):void return book(book *bhead,reader *temp);輸入書(shū)號(hào),查詢是否存在,然后還書(shū),該書(shū)的可借書(shū)量加1,讀者借書(shū)量加1。流程圖如下:進(jìn)入還書(shū)輸入書(shū)號(hào)存在還書(shū)還書(shū)成功退出YNYN詳細(xì)程序模塊1、頭文件定義頭文件library.h定義了3個(gè)結(jié)構(gòu)體:書(shū)籍結(jié)構(gòu)體、讀者結(jié)構(gòu)體和索引表結(jié)構(gòu)體,書(shū)籍結(jié)構(gòu)體的定義如下: typedef struct READERlong number;/借

7、閱號(hào)char name15;/讀者姓名char sex;/讀者性別char password16;/讀者的密碼int residue;/讀者的剩余可借書(shū)籍?dāng)?shù)量long borrowed10;/讀者已經(jīng)借閱的書(shū)籍編號(hào)int limit;/讀者權(quán)限struct READER *next; reader;讀者結(jié)構(gòu)體的定義如下:typedef struct BOOKlong number;/書(shū)籍編號(hào)char name30;/書(shū)名char author30;/作者char press30;/出版社信息long presstime;/出版日期int exist;/在庫(kù)數(shù)量int total;/總數(shù)量str

8、uct BOOK *next; book;索引表結(jié)構(gòu)體的定義如下:typedef struct 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來(lái)包含,以免重復(fù)包含。2、插入模塊插入模塊分為書(shū)籍入庫(kù)、注冊(cè)、登陸3大塊,分3個(gè)函數(shù),聲明如下:

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

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

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

12、轉(zhuǎn)化成“管理員”、“讀者”輸出,這兩個(gè)函數(shù)的定義如下:char*sc(char p)if(p='F'|p='f')return "女"elsereturn "男"char*lc(int i)if(i=1)return "管理員"elsereturn "讀者"程序運(yùn)行結(jié)果1.登錄界面:2.入庫(kù)界面:3.借書(shū)界面:4.還書(shū)界面: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語(yǔ)言的理解,總的來(lái)說(shuō)

13、,收獲頗豐。代碼頭文件library.h#ifndef LIBRARY_INCLUDE#define LIBRARY_INCLUDE#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<windows.h>#include<time.h>typedef struct BOOKlong number;char name30;char author30;char press30;long presstime;int exis

14、t;int total;struct BOOK *next;book;typedef struct KEYlong key;book *adress;struct KEY *next;keynode;typedef struct READERlong number;char name15;char sex;char password16;int residue;long borrowed102;int limit;struct READER *next;reader;char *lc(int i);char *sc(char p);void showR(reader *tr,book *bhe

15、ad);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 *bhead);reader *S_reader(reader *rhead,long num);book *Bload();reader *Rload();void Bsave(book *Bhead);void Rsave(reader *Rhe

16、ad,book *bhead);void insert(book *bhead);void reg(reader *head);reader *login(reader *rhead,book *bhead);void borrow(reader *temp,book *Bhead);void returnbook(book *bhead,reader *temp);void style();void intpsd(char *psd);void menu(struct BOOK *Bhead,reader *Rhead);void menu2(reader *temp,reader *rhe

17、ad,book *bhead);long backtime();#endif借還書(shū)文件borrow_return.cpp#include"library.h"void borrow(reader *temp,book *Bhead)style();long num;int i;char t,k,name30;book *Bbook;getch();system("cls");while(1)printf("n ");printf("n 借書(shū) ");printf("n ");printf(&quo

18、t;n請(qǐng)輸入您要查找借閱書(shū)籍的方式:");printf("n 1、按書(shū)號(hào)查找n");printf("n 2、按作者查找n");printf("n 3、按書(shū)名查找n");printf("n 4、返回主菜單n");t=getch();switch(t)case '1':printf("n請(qǐng)輸入您要查找的書(shū)籍編號(hào):");scanf("%d",&num);if(Bbook=S_number(num,Bhead)!=NULL)showB(Bbook);

19、printf("n請(qǐng)問(wèn)你是否要借閱該書(shū)籍?Y/N");k=getch();if(k='Y'|k='y')goto borrow;elsebreak;elsebreak;case '2':S_author(Bhead);break;case '3':printf("n請(qǐng)輸如您要查找的書(shū)籍名:");scanf("%s",name);if(Bbook=S_name(Bhead,name)!=NULL)showB(Bbook);printf("n請(qǐng)問(wèn)你是否要借閱該書(shū)籍?

20、Y/N");k=getch();if(k='Y'|k='y')goto borrow;elsebreak;elsecontinue;break;default:return;borrow:if(Bbook!=NULL&&temp->residue>0&&Bbook->exist>0)temp->residue-;Bbook->exist-;for(i=0;i<10;i+)if(temp->borrowedi0=0)temp->borrowedi0=Bbook->

21、number;temp->borrowedi1=backtime();break;printf("n 借閱成功!");elseif(!(temp->residue>0)printf("n您只能借閱10本書(shū)籍!");elseif(!(Bbook->exist>0)printf("n該書(shū)沒(méi)有庫(kù)存,請(qǐng)借閱其他書(shū)籍!");printf("n您要繼續(xù)借閱書(shū)籍嗎?Y/N");t=getch();if(t='y'|t='Y')continue;elsebreak;vo

22、id returnbook(book *bhead,reader *temp)long num;int i,j=0;char t;book *p;printf("n ");printf("n 還書(shū) ");printf("n ");printf("nn請(qǐng)輸入您所還書(shū)的編號(hào):");scanf("%d",&num);for(i=0;i<10;i+)if(num=temp->borrowedi0)j=1;p=S_number(num,bhead);if(p!=NULL&&am

23、p;j=1)printf("n");printf("n書(shū)本編號(hào) 書(shū)籍名稱 出版社名稱 出版時(shí)間 作者 ");printf("n");printf("n%8d%12s%14s%8d%14s",p->number,p->name,p->press,p->presstime,p->author);printf("nn");printf("n確認(rèn)歸還該書(shū)籍?Y/N");t=getch();if(t='Y'|t='y')p-

24、>exist+;temp->residue+;for(i=0;i<10;i+)if(temp->borrowedi0=num)temp->borrowedi0=0;temp->borrowedi1=0;break;else return;elseprintf("n編號(hào)有誤,請(qǐng)仔細(xì)檢查!");新書(shū)入庫(kù)insert.cpp#include "library.h"void insert(book *bhead)style();long t;book *temp1,*temp,*temp2;temp1=bhead->ne

25、xt;printf("n ");printf("n 入庫(kù) ");printf("n ");while(1)printf("n請(qǐng)輸入您給定書(shū)的編號(hào)(6位以內(nèi)的正整數(shù)):");scanf("%d",&t);if(t<=0|t>999999)printf("n您的編號(hào)不在處理范圍(1999999)之內(nèi)!");fflush(stdin);continue;elsetemp2=S_number(t,bhead);if(temp2=NULL)break;elsetem

26、p2->total+;temp2->exist+;printf("n編號(hào)為%d的書(shū)已存在,入庫(kù)成功!",t);return;temp=(book*)malloc(sizeof(book);temp->number=t;printf("n請(qǐng)輸入書(shū)名:");scanf("%s",temp->name);printf("n請(qǐng)輸入本書(shū)作者:");scanf("%s",temp->author);printf("n請(qǐng)輸入本書(shū)出版社:");scanf(&qu

27、ot;%s",temp->press);printf("n請(qǐng)輸入本書(shū)出版時(shí)間:");scanf("%d",&temp->presstime);temp->next=NULL;temp->total=1;temp->exist=1;if(bhead->next=NULL)bhead->next=temp;elsewhile(temp1->next!=NULL&&temp1->number<temp->number)temp1=temp1->next;t

28、emp->next=temp1->next;temp1->next=temp;printf("n ");printf("n 入庫(kù)成功 ");printf("n ");void reg(reader *head)style();long i=1000;int j;char t116,t216;reader *temp=head->next;reader *p;p=new(reader);printf("n ");printf("n 注冊(cè) ");printf("n

29、");printf("n 請(qǐng)輸入姓名:");scanf("%s",p->name);fflush(stdin);while(1)printf("n 請(qǐng)輸入性別:n M:男性:n F:女性:");p->sex=getchar();if(p->sex='F'|p->sex='f'|p->sex='M'|p->sex='m')break;elseprintf("n 閣下既非男,又非女,莫非來(lái)自泰國(guó)?");whil

30、e(1)while(1)printf("n 請(qǐng)輸入您的密碼:");intpsd(t1);if(strlen(t1)<=4)printf("n 您設(shè)置的密碼過(guò)于簡(jiǎn)單,請(qǐng)重新設(shè)置:");elsebreak;printf("n 請(qǐng)確認(rèn)您的密碼:");intpsd(t2);if(strcmp(t1,t2)=0)strcpy(p->password,t1);break;elseprintf("n 您兩次輸入的密碼不一致!");p->residue=10;p->next=NULL;for(j=0;j&l

31、t;10;j+)p->borrowedj0=0;p->borrowedj1=0;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)long num;char pass16;int i=5;reader *reade

32、r;style();printf("n ");printf("n 登錄 ");printf("n ");while(1)printf("n 請(qǐng)輸入您的借閱證號(hào):");scanf("%d",&num);if(reader=S_reader(rhead,num)=NULL)printf("n 沒(méi)有找到您所在編號(hào)的讀者.");getch();return NULL;elsebreak;while(i>0)printf("n 請(qǐng)輸入密碼:");int

33、psd(pass);if(strcmp(pass,reader->password)=0)return reader;elseprintf("n 密碼錯(cuò)誤");return NULL;文件讀、寫(xiě)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")=NU

34、LL)printf("n打開(kāi)文件book.txt失敗,請(qǐng)檢查.");return Bhead;elsefgetc(p);if(!feof(p)printf("n非空");rewind(p);temp=(book*)malloc(sizeof(book);fscanf(p,"%14d%12s%18s%8d%14s%4d%4dn",&temp->number,temp->name,temp->press,&temp->presstime,temp->author,&temp->t

35、otal,&temp->exist);temp->next=NULL;Bhead->next=temp;while(!feof(p)temp1=(book*)malloc(sizeof(book);fscanf(p,"%14d%12s%18s%8d%14s%4d%4dn",&temp1->number,temp1->name,temp1->press,&temp1->presstime,temp1->author,&temp1->total,&temp1->exist);te

36、mp1->next=NULL;temp->next=temp1;temp=temp->next;printf("n書(shū)籍信息讀取成功.");return Bhead;reader *Rload()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打開(kāi)文件reader.txt失敗,

37、請(qǐng)檢查");return Rhead;elsefgetc(p);if(!feof(p)rewind(p);temp=(reader*)malloc(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",&

38、temp->borrowedi0);fscanf(p,"%10d",&temp->borrowedi1);temp->next=NULL;Rhead->next=temp;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讀者信息讀取成功.&

39、quot;);return Rhead;void Bsave(book *Bhead)FILE *p;book *temp=Bhead->next;if(temp=NULL)return;elseif(p=fopen("book.txt","w")=NULL)printf("n打開(kāi)book.txt失敗.");while(temp!=NULL)showB(temp);fprintf(p,"%14d%12s%14s%8d%14s%4d%4dn",temp->number,temp->name,temp

40、->press,temp->presstime,temp->author,temp->total,temp->exist);temp=temp->next;printf("n存儲(chǔ)書(shū)籍成功.");void Rsave(reader *Rhead,book *Bhead)FILE *p;int i;reader *temp=Rhead->next;if(temp=NULL)return;elseif(p=fopen("reader.txt","w")=NULL)printf("n打開(kāi)re

41、ader.txt失敗.");while(temp!=NULL)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->borrowedi0);fprintf(p,"%10d",tem

42、p->borrowedi1);temp=temp->next;printf("n存儲(chǔ)讀者成功.");圖書(shū)搜索search.cpp#include"library.h"book *S_name(book *head,char name)book *temp=head->next;if(temp=NULL)printf("n書(shū)庫(kù)中還沒(méi)有書(shū)籍,請(qǐng)入庫(kù)!");elsewhile(temp!=NULL)if(strcmp(temp->name,name)=0)printf("n書(shū)名為<<%s>

43、>的書(shū)存在!",name);break;elsetemp=temp->next;return temp;void S_author(book *head)char author30;book *temp=head->next;if(temp=NULL)printf("n書(shū)庫(kù)中還沒(méi)有書(shū)籍,請(qǐng)入庫(kù)!");elseprintf("n請(qǐng)輸入您要查找的作者名:");scanf("%s",author);while(temp!=NULL)if(strcmp(author,temp->author)=0)showB

44、(temp);temp=temp->next;getch();keynode *initindex(book *head)int i;book *temp=head->next;keynode *tempkey,*p;printf("n初始化索引表開(kāi)始.");keynode *keyhead=(keynode*)malloc(sizeof(keynode);keyhead->next=NULL;tempkey=keyhead->next;if(temp!=NULL)p=(keynode*)malloc(sizeof(keynode);p->ke

45、y=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;elsep=(keynode*)malloc(sizeof(keynode);p->key=temp->number;p->adress=temp;p->next=NU

46、LL;tempkey->next=p;tempkey=tempkey->next;getch();return keyhead;void delkey(keynode *keyhead)keynode *temp;if(keyhead->next=NULL)free(keyhead);elsewhile(keyhead!=NULL)temp=keyhead;keyhead=keyhead->next;free(temp);printf("n索引表清空!");book *S_number(long num,book *bhead)int i;book

47、*p;keynode *keyhead=initindex(bhead);keynode *tempkey=keyhead->next;if(tempkey=NULL)printf("n書(shū)庫(kù)無(wú)記錄,請(qǐng)輸入!");delkey(keyhead);return NULL;elsewhile(tempkey->next!=NULL)if(tempkey->key<num&&tempkey->next->key<num)tempkey=tempkey->next;else break;if(tempkey=NULL)p

48、rintf("沒(méi)有找到編號(hào)為%d的書(shū)籍!",num);delkey(keyhead);return NULL;elsep=tempkey->adress;for(i=0;i<5&&p!=NULL;i+)if(p->number=num)showB(p);delkey(keyhead);return p;elsep=p->next;delkey(keyhead);return NULL;reader *S_reader(reader *rhead,long num)reader *temp=rhead->next;if(temp=

49、NULL)printf("n文件中沒(méi)有數(shù)據(jù)導(dǎo)入,請(qǐng)檢查修復(fù)系統(tǒng)!");return NULL;elsewhile(temp)if(temp->number=num)return temp;elsetemp=temp->next;return temp;顯示圖書(shū)及讀者信息showing.cpp#include"library.h"void showR(reader *tr,book *bhead)int i;book *p;printf("n ");printf("n 讀 者 信 息 ");printf("n "

溫馨提示

  • 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)論