




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、#include #include #include #include /輸入/輸出文件流類using namespace std;const int Maxr=100;/最多的讀者const int Maxb=100;/最多的圖書const int Maxbor=5;/每位讀者最多借五本書/讀者類,實現(xiàn)對讀者的信息的描述class Reader private: int tag; /刪除標(biāo)記 1:已刪 0:未刪 int no; /讀者編號 char name10; /讀者姓名 int borbookMaxbor;/所借圖書 public: Reader() char *getname() r
2、eturn name; /獲取姓名 int gettag() return tag; /獲取刪除標(biāo)記 int getno() return no; /獲取讀者編號 void setname(char na) /設(shè)置姓名 strcpy(name,na); void delbook() tag=1; /設(shè)置刪除標(biāo)記 1:已刪 0:未刪 void addreader(int n,char *na)/增加讀者 tag=0; no=n; strcpy(name,na); for(int i=0;iMaxbor;i+) borbooki=0; void borrowbook(int bookid)/借書操
3、作 for(int i=0;iMaxbor;i+) if (borbooki=0) borbooki=bookid; return; int retbook(int bookid)/還書操作 for(int i=0;iMaxbor;i+) if(borbooki=bookid) borbooki=0; return 1; return 0; void disp()/讀出讀者信息 cout setw(5) no setw(10) name借書編號:; for(int i=0;iMaxbor;i+) if(borbooki!=0) cout borbooki |; cout endl; ;/讀者類
4、庫,實現(xiàn)建立讀者的個人資料 class RDatabase private: int top; /讀者記錄指針 Reader readMaxr;/讀者記錄public: RDatabase() /構(gòu)造函數(shù),將reader.txt讀到read中 Reader s; top=-1; fstream file(reader.txt,ios:in);/打開一個輸入文件 while (1) file.read(char *)&s,sizeof(s); if (!file)break; top+; readtop=s; file.close(); /關(guān)閉 reader.txt void clear()/刪
5、除所有讀者信息 top=-1; int addreader(int n,char *na)/添加讀者時先查找是否存在 Reader *p=query(n); if (p=NULL) top+; readtop.addreader(n,na); return 1; return 0; Reader *query(int readerid)/按編號查找 for (int i=0;i=top;i+) if (readi.getno()=readerid & readi.gettag()=0) return &readi; return NULL; void disp() /輸出所有讀者信息 for
6、(int i=0;i=top;i+) readi.disp(); void readerdata();/讀者庫維護(hù) RDatabase() /析構(gòu)函數(shù),將read寫到reader.txt文件中 fstream file(reader.txt,ios:out); for (int i=0;i=top;i+) if (readi.gettag()=0) file.write(char *)&readi,sizeof(readi); file.close(); ;void RDatabase:readerdata() char choice; char rname20; int readerid;
7、Reader *r; while (choice!=0) cout nnttt讀 者 維 護(hù)nnntt 1 新 增nntt 2 更 改nntt 3 刪 除nntt 4 查 找nntt 5 顯 示nntt 6 全 刪nntt 0 退 出 choice; switch (choice) case 1: cout readerid; cout rname; addreader (readerid,rname); break; case 2: cout readerid; r=query(readerid); if (r=NULL) cout 該讀者不存在 endl; break; cout rnam
8、e; r-setname(rname); break; case 3: cout readerid; r=query(readerid); if (r=NULL) cout 該讀者不存在 delbook(); break; case 4: cout readerid; r=query(readerid); if (r=NULL) cout 該讀者不存在disp(); break; case 5: disp(); break; case 6: clear(); break; default:cout輸入錯誤,請從新輸入:;break; /圖書類,實現(xiàn)對圖書的描述,圖書的編號,書名,借出,還入等c
9、lass Bookprivate: int tag;/刪除標(biāo)記 1:已刪 0:未刪 int no;/圖書編號 char name20;/書名 int onshelf;/是否再架 1:再架 2:已借public: Book() char *getname() return name; /獲取姓名 int getno() return no; /獲取圖書編號 int gettag() return tag; /獲取刪除標(biāo)記 void setname(char na)/設(shè)置書名 strcpy(name,na); void delbook() tag=1;/刪除圖書 void addbook(int
10、n,char *na)/增加圖書 tag=0; no=n; strcpy(name,na); onshelf=1; int borrowbook()/借書操作 if (onshelf=1) onshelf=0; return 1; return 0; void retbook()/還書操作 onshelf=1; void disp()/輸出圖書 cout setw(6) no setw(18) name setw(10) (onshelf=1? 在架:已借) endl; ;/圖書庫類,實現(xiàn)對圖書的維護(hù),查找,刪除等class BDatabaseprivate: int top; /圖書記錄指針
11、 Book bookMaxb; /圖書記錄public: BDatabase()/構(gòu)造函數(shù),將book.txt讀到book中 Book b; top=-1; fstream file(book.txt,ios:in); while (1) file.read(char *)&b,sizeof(b); if (!file) break; top+; booktop=b; file.close(); void clear()/全刪 top=-1; int addbook(int n,char *na)/增加圖書 Book *p=query(n); if (NULL=p) top+; booktop
12、.addbook(n,na); return 1; return 0; Book *query(int bookid)/查找圖書 for (int i=0;i=top;i+) if (booki.getno()=bookid &booki.gettag()=0) return &booki; return NULL; void bookdata();/圖書庫維護(hù) void disp() for (int i=0;i=top;i+) if (booki.gettag()=0) booki.disp(); BDatabase()/析構(gòu)函數(shù),將book寫到book.txt文件中 fstream fi
13、le(book.txt,ios:out); for (int i=0;i=top;i+) if (booki.gettag()=0) file.write(char *)&booki,sizeof(booki); file.close(); ;void BDatabase:bookdata() char choice; char bname40; int bookid; Book *b; while (choice!=0) cout nnnttt圖 書 維 護(hù) endlendl; couttt1 新 增n tt2 更 改ntt3 刪 除ntt4 查 找ntt5 顯 示ntt6 全 刪ntt0
14、退 出 choice; switch (choice) case 1: cout 輸入圖書編號: bookid; cout 輸入圖書書名: bname; addbook(bookid,bname); break; case 2: cout 輸入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在 endl; break; cout 輸入新的書名: bname; b-setname(bname); break; case 3: cout 讀入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖
15、書不存在 delbook(); break; case 4: cout 讀入圖書編號: bookid; b=query(bookid); if (b=NULL) cout 該圖書不存在disp(); break; case 5: disp(); break; case 6: clear(); break; default:cout輸入錯誤,請從新輸入:; /main() 函數(shù)的實現(xiàn),程序的主界面的引導(dǎo)void main() char choice; int bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Boo
16、k *b; while(choice!=0) cout endlendlttt 圖 書 管 理 系 統(tǒng)nnn; cout ttt1 借 書nnttt2 還 書 nnttt3 圖 書 維 護(hù)nnttt4 讀 者 維 護(hù)nnttt0 離 開 choice; switch (choice) case 1: cout readerid; cout bookid; r=ReaderDB.query(readerid);/按編號查找 if (NULL=r) cout 不存在該讀者,不能借書 endl; break; b=BookDB.query(bookid); if (b=NULL) cout 不存在該
17、圖書,不能借書borrowbook()=0) cout 該圖書已借出,不能借書borrowbook(b-getno(); break; case 2: coutreaderid; cout bookid; r=ReaderDB.query(readerid); if (r=NULL) cout 不存在該讀者,不能還書 endl; break; b=BookDB.query(bookid); if (b=NULL) cout 不存在該圖書,不能還書 retbook(); r-retbook(b-getno(); break; case 3: BookDB.bookdata(); break; c
18、ase 4: ReaderDB.readerdata(); break; default:cout輸入錯誤,請從新輸入:; 頭文件:=#ifndef _DATA_STRUCT_H_#define _DATA_STRUCT_H_/*圖書結(jié)構(gòu)*/struct Book unsigned long BookID;/*圖書編號*/ char BookName512;/*書名*/ char Writer512;/*作者*/ int CurrentNumber;/*現(xiàn)存量*/ Book *pNext;/*下一個圖書信息*/;/*圖書索引結(jié)構(gòu)*/struct Index unsigned long Book
19、ID;/*圖書編號*/ Index *pNext;/*下一個索引指針*/;/*借閱信息結(jié)構(gòu)*/struct Borrow unsigned long BookID;/*借閱圖書編號*/ char BookName512;/*書名*/ unsigned long StuID;/*圖書證號*/ char ReturnTime512;/*歸還日期*/ Borrow *pNext;/*下一個借閱信息*/;#endif/*_DATA_STRUCT_H_*/實現(xiàn)文件:=/ BookManage.cpp : 定義控制臺應(yīng)用程序的入口點。/#include #include #include #include
20、 #include DataStruct.h/*數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(基于C) 圖書管理系統(tǒng) 懸賞分:100 - 離問題結(jié)束還有 14 天 23 小時 【問題描述】 圖書管理基本業(yè)務(wù)活動包括,對一本書的采編入庫、清楚庫存、借閱和歸還等等。試設(shè)計一個圖書管理系統(tǒng),將上述業(yè)務(wù)活動借助于計算機(jī)系統(tǒng)完成?!净疽蟆?(1) 每種書的登記至少包括書號書名作者現(xiàn)存量總庫存量5項(2)對書號建立索引表(線性表)以提高查找效率(3) 系統(tǒng)要實現(xiàn)的操作及其功能定義如下:1 采編入庫:新購入一種書,經(jīng)分類和確定數(shù)好之后登記到圖書館賬目中去。如果這種書在賬戶中已有,則只將總庫存量增加。2借閱:如果一本書的現(xiàn)存量大于零
21、,則借出一本,登出借閱者的圖書證號和歸還日期3歸還:注銷對借閱者的登記,改變該書的現(xiàn)存量*/*獲取輸入字符串*/void GetInput(char *pInOutStr,int StrLen,bool OnlyGetNumber = false);/*顯示主菜單 并返回選擇*/int ShowMainMenu();/*圖書入庫操作,傳入?yún)?shù)為圖書列表頭指針的指針和索引信息的頭指針的指針,因為在此函數(shù)內(nèi)部可能會改變頭指針的值*/void PutBookInLib(Book *pHead,Index *pIndex);/*查詢圖書館庫存,查詢不改變數(shù)據(jù),故傳入指針即可*/void QueryBo
22、okLib(Book *pHead);/*借閱圖書*/void BorrowBook(Borrow *pBorrow,Book *pHead);/*查詢借閱*/void QueryBorrow(Borrow *pBorrow);/*歸還圖書*/void ReturnBook(Borrow *pBorrow,Book *pHead);/*釋放圖書鏈表及索引鏈表及借閱信息鏈表*/void DeleteBookList(Book *pHead);void DeleteIndexList(Index *pIndex);void DeleteBorrowList(Borrow *pBorrow);int
23、 main() /*圖書列表頭指針*/ Book *pBookHead = NULL; /*圖書索引頭指針*/ Index *pIndexHead = NULL; /*借閱信息頭指針*/ Borrow *pBorrowHead = NULL; /*用來保存當(dāng)前用戶的輸入*/ int ChoosedNum = -1; while ( true ) ChoosedNum = ShowMainMenu(); switch(ChoosedNum) case 0 :/*退出*/ return 0; break; case 1:/*圖書入庫*/ PutBookInLib(&pBookHead,&pInde
24、xHead); break; case 2:/*查詢庫存*/ QueryBookLib(pBookHead); printf(按回車鍵繼續(xù).); fflush(stdin); getchar(); system(cls); break; case 3:/*借閱圖書*/ QueryBookLib(pBookHead); BorrowBook(&pBorrowHead,pBookHead); break; case 4:/*查詢借閱*/ QueryBorrow(pBorrowHead); printf(按回車鍵繼續(xù).); fflush(stdin); getchar(); system(cls);
25、 break; case 5:/*歸還圖書*/ QueryBorrow(pBorrowHead); ReturnBook(&pBorrowHead,pBookHead); break; DeleteBookList(&pBookHead); DeleteIndexList(&pIndexHead); DeleteBorrowList(&pBorrowHead); fflush(stdin); getchar(); return 0;/*獲取輸入字符串*/void GetInput(char *pInOutStr,int StrLen,bool OnlyGetNumber) memset(pIn
26、OutStr,0x0,StrLen); fflush(stdin); int Count = 0; while ( true ) char TmpC = 0; fread(&TmpC,1,1,stdin); if ( 10 = TmpC ) break; if ( OnlyGetNumber & TmpC = 0 & TmpC = 9 ) pInOutStrCount = TmpC; Count+; else pInOutStrCount = TmpC; Count+; /*顯示主菜單 并返回選擇*/int ShowMainMenu() char InPutStr1024;NO_INPUT:
27、printf(nnn); printf(*n); printf(* 圖書管理系統(tǒng) *n); printf(*n); printf(n); printf(請選擇:n); printf(t1.圖書入庫n); printf(t2.查詢庫存n); printf(t3.借閱圖書n); printf(t4.查詢借閱n); printf(t5.歸還圖書n); printf(t0.退出n); printf(n); printf(t輸入 : ); GetInput(InPutStr,1024,true); if ( strlen(InPutStr) pNext != NULL ) pWork = pWork-p
28、Next; BookID = pWork-BookID + 1; Book *pTmpNewBook = (Book *)(malloc(sizeof(Book); memset(pTmpNewBook,0x0,sizeof(Book); Index *pTmpIndex = (Index *)(malloc(sizeof(Index); memset(pTmpIndex,0x0,sizeof(Index); pTmpNewBook-BookID = BookID; pTmpIndex-BookID = BookID; system(cls); printf(輸入圖書名稱 : ); GetIn
29、put(InPutStr,1024); strcpy(pTmpNewBook-BookName,InPutStr); system(cls); printf(n,pTmpNewBook-BookName); printf(圖書作者 : ); GetInput(InPutStr,1024); strcpy(pTmpNewBook-Writer,InPutStr); system(cls); printf(n,pTmpNewBook-BookName); printf(作者:%sn,pTmpNewBook-Writer); printf(入庫數(shù)量 : ); GetInput(InPutStr,10
30、24,true); pTmpNewBook-CurrentNumber = atoi(InPutStr); if ( pTmpNewBook-CurrentNumber BookName,pTmpNewBook-BookName) = 0 & strcmp(pWork-Writer,pTmpNewBook-Writer) = 0 ) pWork-CurrentNumber += pTmpNewBook-CurrentNumber; return; pWork = pWork-pNext; pWork = *pHead; while ( pWork-pNext != NULL ) pWork =
31、 pWork-pNext; pWork-pNext = pTmpNewBook; Index *pWork2 = *pIndex; while ( pWork2-pNext != NULL ) pWork2 = pWork2-pNext; pWork2-pNext = pTmpIndex; system(cls); printf(圖書:n作者:%sn入庫數(shù):%dnn入庫操作成功!(按回車鍵繼續(xù).),pTmpNewBook-BookName,pTmpNewBook-Writer,pTmpNewBook-CurrentNumber); fflush(stdin); getchar(); syste
32、m(cls);/*釋放圖書鏈表及索引鏈表*/void DeleteBookList(Book *pHead) Book *pWork = *pHead; Book *pNext = pWork; while ( NULL != pWork ) pNext = pWork-pNext; free(pWork); pWork = pNext; void DeleteIndexList(Index *pIndex) Index *pWork = *pIndex; Index *pNext = pWork; while ( NULL != pWork ) pNext = pWork-pNext; fr
33、ee(pWork); pWork = pNext; void DeleteBorrowList(Borrow *pBorrow) Borrow *pWork = *pBorrow; Borrow *pNext = pWork; while ( NULL != pWork ) pNext = pWork-pNext; free(pWork); pWork = pNext; /*查詢圖書館庫存,查詢不改變數(shù)據(jù),故傳入指針即可*/void QueryBookLib(Book *pHead) Book *pWork = pHead; int TotalCount = 0; while ( NULL !
34、= pWork ) TotalCount+; pWork = pWork-pNext; system(cls); printf(當(dāng)前庫存共%d種圖書,列表如下:n=n,TotalCount); pWork = pHead; while ( NULL != pWork ) printf(編號:%d 書名: 作者:%s 當(dāng)前庫存:%dn,pWork-BookID,pWork-BookName,pWork-Writer,pWork-CurrentNumber); pWork = pWork-pNext; printf(=n,TotalCount);/*借閱圖書*/void BorrowBook(Bo
35、rrow *pBorrow,Book *pHead) char InPutStr1024; bool HadTheBook = false; Borrow *pTmpBorrow = (Borrow *)(malloc(sizeof(Borrow); memset(pTmpBorrow,0x0,sizeof(Borrow); printf(請輸入你想借書的編號 : ); GetInput(InPutStr,1024,true); pTmpBorrow-BookID = atoi(InPutStr); Book *pWorkBook = pHead; while ( pWorkBook != N
36、ULL ) if ( pWorkBook-BookID = pTmpBorrow-BookID ) HadTheBook = true; break; pWorkBook = pWorkBook-pNext; if ( HadTheBook ) if ( pWorkBook-CurrentNumber 1 ) system(cls); printf(圖書當(dāng)前無庫存,無法借閱!n(按回車鍵繼續(xù).),pWorkBook-BookName); fflush(stdin); getchar(); system(cls); free(pTmpBorrow); return; else system(cl
37、s); printf(圖書編號%d不存在!n(按回車鍵繼續(xù).),pTmpBorrow-BookID); fflush(stdin); getchar(); system(cls); free(pTmpBorrow); return; strcpy(pTmpBorrow-BookName,pWorkBook-BookName); printf(請輸入借書證號 : ); GetInput(InPutStr,1024,true); pTmpBorrow-StuID = atoi(InPutStr); if ( 0 = pTmpBorrow-StuID ) system(cls); printf(借書
38、證號不存在(借書證號輸入整數(shù))!n(按回車鍵繼續(xù).); fflush(stdin); getchar(); system(cls); free(pTmpBorrow); return; time_t ltime; struct tm *today; time(ime); ltime += 60 * 60 * 24 * 30; today = localtime(ReturnTime,%d年%d月%d日, today-tm_year+1900, today-tm_mon+1, today-tm_mday); if ( *pBorrow = NULL ) *pBorrow = pTmpBorrow
39、; else Borrow *pWork = *pBorrow; while ( NULL != pWork-pNext ) pWork = pWork-pNext; pWork-pNext = pTmpBorrow; pWorkBook-CurrentNumber-; system(cls); printf(借書證號:%dn借閱圖書:nn操作成功!(按回車鍵繼續(xù).),pTmpBorrow-StuID,pTmpBorrow-BookName); fflush(stdin); getchar(); system(cls);/*查詢借閱*/void QueryBorrow(Borrow *pBorrow) Borrow *pWork = pBorrow; int TotalCount = 0; while ( NULL != pWork ) TotalCount+; pWork = pWork-pNext; system(cls); printf(當(dāng)前借
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 分期購車銀行合同范本
- 兼職廚師勞務(wù)合同范本
- 代理建賬合同范本
- 入職各種合同范本
- 2025年湖南a2貨運(yùn)從業(yè)資格證考試
- 介紹客戶返利合同范本
- 農(nóng)村住房建筑合同范本
- 勞務(wù)合同范本英文
- 農(nóng)田托管合同范本
- 凍庫修理合同范本
- 2025年全國高考體育單招政治時事填空練習(xí)50題(含答案)
- 中華人民共和國學(xué)前教育法-知識培訓(xùn)
- 2023年新高考(新課標(biāo))全國2卷數(shù)學(xué)試題真題(含答案解析)
- 事業(yè)單位工作人員獎勵審批表
- 山東省技能大賽青島選拔賽-世賽選拔項目52樣題(平面設(shè)計技術(shù))
- 人教版六年級美術(shù)下冊全冊課件【完整版】
- GB/T 9788-1988熱軋不等邊角鋼尺寸、外形、重量及允許偏差
- 教科版三年級下冊科學(xué)全冊完整課件
- 學(xué)生流失率考核辦法(試行)
- JJG 840-1993 函數(shù)信號發(fā)生器檢定規(guī)程
- 護(hù)理工作質(zhì)量標(biāo)準(zhǔn)及考核細(xì)則
評論
0/150
提交評論