版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、c+課設圖書管理系統(tǒng)c+課設圖書管理系統(tǒng)c+課設圖書管理系統(tǒng)c+課設圖書管理系統(tǒng)編制僅供參考審核批準生效日期地址: 電話:傳真: 郵編:南京航空航天大學面向對象程序設計語言課程設計報告圖 書 管 理 系 統(tǒng)學號:姓名:日期: 目 錄一.需求分析.2二.程序主要功能.2三.程序運行平臺.2四.系統(tǒng)功能框架圖.3五.程序類說明.4六.模塊分析.6七.比較有特色的地方.7八.存在的不足與對策.11九.編程體會.12十.程序源代碼.13需求分析本系統(tǒng)旨在實現(xiàn)一個小型的圖書管理系統(tǒng),對于一個小型的圖書館或藏書室來說,實施本系統(tǒng)不僅可以減少工作人員數(shù)量,降低成本,而且可以大大提高工作效率,降低工作強度,方
2、便讀者借書查書及辦理各種手續(xù),更方便工作人員對圖書進行更有效的管理。程序主要實現(xiàn)讀者管理、圖書基本信息及庫存管理、圖書借還管理以及一些輔助功能等。以菜單的方式工作圖書、讀者的基本信息的新增圖書、讀者的基本信息的修改圖書、讀者記錄的刪除圖書的借閱,歸還查詢圖書、讀者信息及借閱狀態(tài)程序主要功能 該程序的主要功能有:讀者功能可進行增加讀者、讀者信息修改、注銷讀者、讀者查詢、顯示讀者信息、顯示所有讀者信息等操作。圖書信息管理可以進行查詢圖書、增加圖書、刪除圖書信息、圖書信息修改、顯示全部圖書信息等操作。其中添加內容包括:書名、ISBN編號、作者、出版商、出版日期、方便讀者查看;圖書借還功能 應該說這是
3、整個系統(tǒng)最主要的功能,借還時要輸入編號已及讀者編號幫助一個簡單的操作指南,指導用戶下一步該如何操作。退出系統(tǒng)在運行時將從文件載入信息。運行程序后每一步都會有詳細的提示,操作簡便,大多數(shù)地方都考慮到防止用戶出現(xiàn)誤操作的情況,以提高程序的健壯性,可以放心使用!三程序運行平臺該程序是用VC+制做的,使用Microsoft Visual C+ 運行該程序,具體操作是:打開Microsoft Visual C+ ,菜單欄里點文件打開工作區(qū)找到“圖書管理系統(tǒng).dsw”這個文件打開,或者在資源管理器中雙擊該文件,此時,VC+會自動打開,并載入該系統(tǒng)相關資源,點擊Run命令菜單或者或用快捷鍵Ctrl+F5運行
4、該程序。借書/還書讀者信息管理圖書管理系統(tǒng)圖書信息管理幫 助借書/還書讀者信息管理圖書管理系統(tǒng)圖書信息管理幫 助統(tǒng)計查詢.新增圖書信息.刪除圖書信息.顯示圖書信息.修改圖書信息.幫助說明.顯示讀者信息.返回上一層.新增讀者信息.修改讀者信息.刪除圖書信息.顯示圖書信息.幫助說明.返回上一層 輸入圖書編號及讀者編號.還書 借書.返回上一層五程序類說明有關圖書信息的類struct BookInfochar BookCode6;塊分析1、讀者信息:下設子菜單,包括:a.新增讀者 b.修改讀者c.刪除讀者d.讀者查詢 e.顯示讀者信息 f.返回上一層 (1)讀者編號:讀者唯一的識別方式,所以不可以重復
5、,長度小于六個字符。(2)讀者姓名:長度小于20個字符。(3)讀者性別:長度小于三個字符。2、書庫信息:該部分內容最豐富,下設子菜單,包括a.新書入庫 b.刪除 c.修改 d.返回上一層 鏈表的思路也跟讀者信息一樣,從頭結點開始建,每當新增加一個類節(jié)點時,就把新增結點加到鏈表尾部,再讓其中的next指向NULL空,這里沒有對鏈表進行排序。 有關菜單的制作,就是先顯示菜單,讓用戶輸入選擇,進行輸入有效性檢查,然后用switch來對不同的選擇調用類中不同的函數(shù)。借書/還書:借書需要判斷的條件不只是判斷圖書是否存在、圖書是否借出、讀者是否存在。還書需要提供讀者編號再判斷圖書是否已經(jīng)借出。十程序源代碼
6、#include#include#include#include #include #includeusing namespace std;#define BOOKLEN sizeof(struct BookInfo)#define READERLEN sizeof(struct ReaderInfo) 書信息管理*endl;cout*2.讀者信息管理*endl;cout*3.借書 還書*endl;cout*4.統(tǒng)計 查詢*endl;cout*0.退出 系統(tǒng)*endl;cout請選擇0-4:m;if(m=0&m=4)break;elsecout選擇錯誤,請在0-4中選擇endl;return
7、m;int CreatSubMenu1()int m;while(1)cout*圖書信息管理*endl;cout*endl;cout*1.新增 圖書*endl;cout*2.修改 圖書*endl;cout*3.刪除 圖書*endl;cout*0.返回上一層*endl;cout請選擇0-3:m;if(m=0&m=3)break;elsecout選擇錯誤,請在0-3中選擇endl; return m; int CreatSubMenu2()int m;while(1)cout*讀者信息管理*endl;cout*endl;cout*1.新增 讀者*endl;cout*2.修改 讀者*endl;cou
8、t*3.刪除 讀者*endl;cout*0.返回上一層*endl;cout請選擇0-3:m;();if(m=0&m=3)break;elsecout選擇錯誤,請在0-3中選擇endl; return m;int CreatSubMenu3()int m;while(1)cout*圖書流通*endl;cout*endl;cout*1.借書*endl;cout*2.還書*endl;cout*0.返回上一層*endl;cout請選擇0-2:m;if(m=0&m=2)break;elsecout選擇錯誤,請在0-2中選擇endl; return m;int CreatSubMenu4()int m;w
9、hile(1)cout*統(tǒng)計查詢*endl;cout*endl;cout*1.圖書清單*endl;cout*2.讀者清單*endl;cout*3.圖書查詢*endl;cout*4.讀者查詢*endl;cout*0.返回上層*endl;cout請選擇0-4:m; if(m=0&m=4)break;elsecout選擇錯誤,請在0-4中選擇endl;return m;int CountBook()/統(tǒng)計已有圖書數(shù)量(有效圖書) struct BookInfo BookTemp;FILE *fp;int count=0;if(fp=fopen(,rb)=NULL)return 0;elsewhile
10、(fread(&BookTemp,BOOKLEN,1,fp)if=1)count+;fclose(fp);return count;int CountReader()/統(tǒng)計已有讀者人數(shù)(有效人數(shù)) struct ReaderInfo ReaderTemp;FILE *fp;int count =0;if(fp=fopen(,rb)=NULL)return 0;elsewhile(fread(&ReaderTemp,READERLEN,1,fp)if=1)count+;fclose(fp);return count;void SubMenu1()/圖書信息管理 int MenuId;while(
11、1)MenuId=CreatSubMenu1();if(MenuId=0)break;switch(MenuId)case 1:AddBookInfo();break;case 2:ModifyBookInfo();break;case 3:DelBookInfo();break;case 0:MainMenu();break;void SubMenu2()/讀者信息管理 int MenuId;while(1)MenuId=CreatSubMenu2();if(MenuId=0)break;switch(MenuId)case 1:AddReaderInfo();break;case 2:Mo
12、difyReaderInfo();break;case 3:DelReaderInfo();break;case 0:MainMenu();break; void SubMenu3()/圖書借閱 int MenuId;while(1)MenuId=CreatSubMenu3();if(MenuId=0)break;switch(MenuId)case 1:BookBorrow();break;case 2:BookReturn();break;case 0:MainMenu();break;void SubMenu4()/信息查詢 int MenuId;while(1)MenuId=Creat
13、SubMenu4();if(MenuId=0)break;switch(MenuId)case 1:ShowBookInfo();break;case 2:ShowReaderInfo();break;case 3:SearchReader();break;case 4:SearchBook();break;case 0:MainMenu();break;void AddBookInfo()/新增圖書記錄struct BookInfo MyBook;cout請輸入圖書編號;while(IsBookExist) cout圖書已存在,請重新輸入;cout請輸入書名;cout請輸入作者;cout請輸
14、入出版商; cout請輸入isbn號;cout請輸入出版日期;=0;strcpy,0);=1;FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打開錯誤endl;exit(0); int SetPs;/查詢寫入文件位置SetPs=InvalidBookPosition();if(SetPs=-1) /圖書記錄都是有效的,文件指針定義在文件尾fseek(fp,0,SEEK_END);elsefseek(fp,(long)BOOKLEN*SetPs,SEEK_SET);/重新定位寫入位置fwrite(&MyBook,BOOKLEN,1,fp);fclose(fp);cou
15、t新增圖書成功,現(xiàn)有圖書CountBook()冊按回車鍵繼續(xù)添加endl;();getchar(); void ModifyBookInfo()/修改圖書struct BookInfo MyBook;char ModifyBookCode6;if(CountBook=0)cout無法修改endl;return;cout請輸入要修改的圖書編號ModifyBookCode;if(!IsBookExist(ModifyBookCode)cout圖書不存在endl;return; int ModiPosition=0;ModiPosition=GetPosition(ModifyBookCode,&M
16、yBook);cout請輸入新書名;cout請輸入新作者;cout請輸入新出版商;cout請輸入新的出版日期; FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打開錯誤endl;exit(0); fseek(fp,(long)BOOKLEN*ModiPosition,SEEK_SET);fwrite(&MyBook,BOOKLEN,1,fp);fclose(fp);cout修改成功,按回車鍵繼續(xù)endl;();getchar(); void DelBookInfo()/刪除圖書char DelBookCode6;if(CountBook=0)cout無法刪除endl
17、;return; cout請輸入要刪除的圖書編號DelBookCode; if(!IsBookExist(DelBookCode) cout該書不存在endl;return;if(IsBorrow(DelBookCode) /書已經(jīng)借出,無法刪除cout書已經(jīng)借出,無法刪除endl;return; FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打開錯誤endl;exit(0); struct BookInfo MyBook;int ModiPosition=0;ModiPosition=GetPosition(DelBookCode,&MyBook);=0;fse
18、ek(fp,(long)BOOKLEN*ModiPosition,SEEK_SET);fwrite(&MyBook,BOOKLEN,1,fp);fclose(fp);cout刪除圖書成功,現(xiàn)有圖書CountBook()冊endl; void BookBorrow()/圖書借閱 char BookCode6;char ReaderCode6;if(CountBook()=0|CountReader()=0)cout無法借書endl;return;cout請輸入圖書編號BookCode; if(!IsBookExist(BookCode)cout借書失敗,該書不存在endl;return; if(
19、IsBorrow(BookCode)cout書已經(jīng)借出,借書失敗endl;return; cout請輸入讀者編號ReaderCode; if(!IsReaderExist(ReaderCode)cout讀者不存在,借書失敗endl;return; FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打開錯誤endl;exit(0); int Position=0; struct BookInfo MyBook; Position=GetPosition(BookCode,&MyBook); =1; strcpy,ReaderCode); fseek(fp,(long)B
20、OOKLEN*Position,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout借書成功,按回車鍵繼續(xù)endl; (); getchar(); void BookReturn()/還書 char BookCode6;if(CountBook()=0|CountReader()=0)cout無法還書endl;return;cout請輸入圖書編號BookCode; if(!IsBookExist(BookCode)cout還書失敗,該書不存在endl;return; if(!IsBorrow(BookCode)cout書未借出,還書
21、失敗endl;return; FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打開錯誤endl;exit(0); int Position=0; struct BookInfo MyBook; Position=GetPosition(BookCode,&MyBook); =0; strcpy,0); fseek(fp,(long)BOOKLEN*Position,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout還書成功,按回車鍵繼續(xù)endl; (); getchar(); void ShowBook
22、Info()/顯示所有圖書信息 struct BookInfo MyBookInfo;int booknum=CountBook();if(booknum=0)cout沒有圖書信息endl;return; FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打開錯誤endl;exit(0); while(fread(&MyBookInfo,BOOKLEN,1,fp)cout編號setw(6)書名setw(20)作者setw(20)出版商setw(30)出版日期setw(8); void SearchBook()/圖書查詢 char BookCode6;if(CountB
23、ook()=0)cout圖書不存在endl;return; cout請輸入圖書編號BookCode;if(!IsBookExist(BookCode)cout圖書不存在endl;return;struct BookInfo MyBook;GetPosition(BookCode,&MyBook);cout編號setw(6)書名setw(20)作者setw(20)出版商setw(30)出版日期setw(8); if=1)/若書借出,則顯示借閱的讀者的信息 ShowAReader; else cout該書未被借閱endl; void SearchReader()/讀者查詢 char ReaderC
24、ode6;if(CountReader=0)cout讀者不存在endl;return;cout請輸入讀者編號ReaderCode; if(!IsReaderExist(ReaderCode)cout讀者不存在endl;return; ShowAReader(ReaderCode);int BorrowCount=IsBorrowed(ReaderCode);if(BorrowCount=0)cout讀者未借閱該書endl;else cout讀者借閱了BorrowCount冊endl;FILE *fp;if(fp=fopen(,rb)=NULL)cout文件打開錯誤endl;exit(0); s
25、truct BookInfo MyBook;int i=0;while(fread(&MyBook,BOOKLEN,1,fp)if(strcmp,ReaderCode)=0)i+;coutiendl; fclose(fp); void ShowAReader(char *ReaderCode)/顯示指定編號的讀者詳細信息 FILE *fp;if(fp=fopen(,rb)=NULL)cout文件打開錯誤endl;exit(0); struct ReaderInfo MyReader;while(fread(&MyReader,READERLEN,1,fp)=NULL)if(strcmp,Rea
26、derCode)=0)break;cout借閱讀者ReaderCodeendl;fclose(fp); int InvalidBookPosition()/查詢第一條無效圖書記錄在文件中的位置 int InvalidPs=-1;int count=0;FILE *fp;if(fp=fopen(,rb)=NULL)cout文件打開錯誤endl;exit(0); struct BookInfo MyBook;while(fread(&MyBook,BOOKLEN,1,fp)if=0)InvalidPs=count;break;count+;fclose(fp);return InvalidPs;i
27、nt IsBookExist(char *ChkBookCode)/查詢指定圖書在文件中是否存在 int IsExist=0;FILE *fp;if(fp=fopen(,rb)=NULL)cout文件打開錯誤endl;exit(0); struct BookInfo MyBook;while(fread(&MyBook,BOOKLEN,1,fp)if(strcmp,ChkBookCode)=0&IsExist=1;break;fclose(fp);return IsExist;int IsBorrow(char *BookCode)/判斷圖書是否已經(jīng)借出 ,在借返回 1,否則返回 0 stru
28、ct BookInfo temp;int IsbBorrow =0;FILE *fp;if(fp=fopen(,rb)!=NULL)while(fread(&temp,BOOKLEN,1,fp)if(strcmp,BookCode)=0&=1)IsbBorrow=1;break;fclose(fp);return IsbBorrow; int GetPosition(char *ModiCode,struct BookInfo *MyBook)/獲得待修改圖書的位置 int count=0;FILE *fp;if(fp=fopen(,rb)=NULL)cout文件打開錯誤BookCode,Mo
29、diCode)=0&MyBook-IsAvailable=1)break;count+;fclose(fp);return count; void AddReaderInfo()/增加讀者 struct ReaderInfo MyReader;cout讀者編號;while(IsReaderExist) cout讀者已存在,請重新輸入; cout讀者姓名;cout讀者性別;=1;/新增讀者FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打開錯誤endl;exit(0); int SetPs;SetPs=InvalidReaderPosition(); if(SetPs
30、=-1) fseek(fp,0,SEEK_END); else fseek(fp,(long)READERLEN*SetPs,SEEK_SET); fwrite(&MyReader,READERLEN,1,fp); fclose(fp); cout添加讀者成功,按回車鍵繼續(xù)添加,現(xiàn)有讀者CountReader()人endl; (); getchar(); void ModifyReaderInfo()/修改讀者信息 struct ReaderInfo MyReader;char ModifyCode6;if(CountReader()=0)cout無法修改endl;return;cout請輸入
31、要修改的編號ModifyCode;if(!IsReaderExist(ModifyCode)cout讀者不存在endl;return;int ModiPosition=0;ModiPosition=GetRdPosition(ModifyCode,&MyReader);cout讀者姓名;cout讀者性別;FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打開錯誤endl;exit(0); fseek(fp,(long)READERLEN*ModiPosition,SEEK_SET);fwrite(&MyReader,READERLEN,1,fp);fclose(fp)
32、;cout修改讀者成功,按回車鍵繼續(xù)endl;();getchar(); void DelReaderInfo()/刪除讀者信息 char DelCode6;if(CountReader()=0)cout無法刪除endl;return; cout請輸入要刪除的讀者編號DelCode; if(!IsReaderExist(DelCode) cout讀者不存在,無法刪除endl; return; int BorrowedNum; BorrowedNum=IsBorrowed(DelCode);/如果讀者有書還未還,那不可以刪除讀者 if(BorrowedNum) cout不可以刪除,有書還未還en
33、dl; return; FILE *fp;if(fp=fopen(,rb+)=NULL)cout文件打開錯誤endl;exit(0); struct ReaderInfo MyReader;int ModiPosition=0;ModiPosition=GetRdPosition(DelCode,&MyReader);=0;fseek(fp,(long)READERLEN*ModiPosition,SEEK_SET);fwrite(&MyReader,READERLEN,1,fp);fclose(fp);cout刪除成功,現(xiàn)有讀者CountReader()人endl; int IsBorrowed(char *ReaderCode)/判斷是否有書未還struct BookInfo temp;int BorrowedNum=0;FILE *fp;if(fp=fopen(,rb)!=NULL)while(fread(&temp,BOOKLEN,1,fp)if(strcmp,ReaderCode)=0&=1)BorrowedNum+;fclose(fp);return BorrowedNum; int GetRdPosition(char *ModiCode,struct
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 晉中師范高等??茖W?!锻ㄐ烹娮泳€路》2023-2024學年第一學期期末試卷
- 鶴壁職業(yè)技術學院《房地產(chǎn)營銷策劃實務》2023-2024學年第一學期期末試卷
- 重慶三峽學院《項目開發(fā)》2023-2024學年第一學期期末試卷
- 重慶財經(jīng)學院《語文教學與文本解讀》2023-2024學年第一學期期末試卷
- 浙江工業(yè)職業(yè)技術學院《會計學原理》2023-2024學年第一學期期末試卷
- 國家一級保護植物水杉的故事
- 中國傳媒大學《英語創(chuàng)新創(chuàng)業(yè)教育》2023-2024學年第一學期期末試卷
- 長治幼兒師范高等??茖W?!端|程學實驗課》2023-2024學年第一學期期末試卷
- 企業(yè)能源管理系統(tǒng)節(jié)能減排計劃
- 數(shù)據(jù)結構講解模板
- 小學二年級100以內進退位加減法800道題
- 2025年1月普通高等學校招生全國統(tǒng)一考試適應性測試(八省聯(lián)考)語文試題
- 《立式輥磨機用陶瓷金屬復合磨輥輥套及磨盤襯板》編制說明
- 保險公司2025年工作總結與2025年工作計劃
- 育肥牛購銷合同范例
- 暨南大學珠海校區(qū)財務辦招考財務工作人員管理單位遴選500模擬題附帶答案詳解
- (精心整理)高中生物必修二非選擇題專題訓練
- 小學二年級100以內進退位加減法混合運算
- 福建省流動人口信息登記表
- 市委組織部副部長任職表態(tài)發(fā)言
- HXD1D客運電力機車轉向架培訓教材
評論
0/150
提交評論