圖書管理系統(tǒng)_第1頁(yè)
圖書管理系統(tǒng)_第2頁(yè)
圖書管理系統(tǒng)_第3頁(yè)
圖書管理系統(tǒng)_第4頁(yè)
圖書管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C+項(xiàng)目開發(fā)全程實(shí)錄第1章 圖書管理系統(tǒng)(VisualC+6.0實(shí)現(xiàn))PAGE 18PAGE 17111章章導(dǎo)讀第第 圖書管理系統(tǒng)(VisualC+ 6.0實(shí)現(xiàn))隨著現(xiàn)代社會(huì)的信息量不斷增加,圖書的種類及信息也越來越多,如何管理龐大的圖書信息成為圖書管理工作中的一大難題。在計(jì)算機(jī)信息技術(shù)高速發(fā)展的今天,人們意識(shí)到原有的人工管理方式已經(jīng)不能適應(yīng)社會(huì),而使用計(jì)算機(jī)信息系統(tǒng)來管理已是最有效率的一種手段。通過學(xué)習(xí)本章,讀者可以學(xué)到: 了解軟件整體設(shè)計(jì) 掌握類的實(shí)際應(yīng)用 掌握分頁(yè)數(shù)據(jù)瀏覽 掌握文件存儲(chǔ)數(shù)據(jù)1.1 開 發(fā) 背 景隨著現(xiàn)代圖書市場(chǎng)競(jìng)爭(zhēng)愈演愈烈,如何以一種便捷的管理方式加快圖書流通信息的反饋速

2、度,降低圖書庫(kù)存占用,縮短資金周轉(zhuǎn)時(shí)間,提高工作效率,已經(jīng)成為能否增強(qiáng)圖書企業(yè)競(jìng)爭(zhēng)力的關(guān)鍵。信息技術(shù)的飛速發(fā)展給圖書企業(yè)的管理帶來了全新的變革,采用圖書管理系統(tǒng)對(duì)圖書企業(yè)的經(jīng)營(yíng)運(yùn)作進(jìn)行全程管理,不僅使企業(yè)擺脫了以往人工管理產(chǎn)生的一系列問題,而且使圖書企業(yè)提高了管理效率,減少了管理成本,增加了經(jīng)濟(jì)效益。通過管理系統(tǒng)對(duì)圖書企業(yè)的發(fā)展進(jìn)行規(guī)劃,可以收集大量關(guān)鍵、可靠的數(shù)據(jù)。企業(yè)決策層分析這些數(shù)據(jù),作出合理決策,及時(shí)調(diào)整,使之能夠更好地遵循市場(chǎng)的銷售規(guī)律,適應(yīng)市場(chǎng)的變化,從而讓企業(yè)能夠在激烈的行業(yè)競(jìng)爭(zhēng)中占據(jù)一席之地。1.2 需 求 分 析目前,圖書市場(chǎng)日益激烈的競(jìng)爭(zhēng)迫使圖書企業(yè)希望采用一種新的管理方式

3、來加快圖書流通信息的反饋速度,而計(jì)算機(jī)信息技術(shù)的發(fā)展為圖書管理注入了新的生機(jī)。通過對(duì)市場(chǎng)的調(diào)查得知,一款合格的圖書信息管理系統(tǒng)必須具備以下3個(gè)特點(diǎn):能夠?qū)D書信息進(jìn)行集中管理。能夠大大提高用戶的工作效率。能夠?qū)D書的部分信息進(jìn)行查詢。1.3 系 統(tǒng) 設(shè) 計(jì)1.3.1 系統(tǒng)目標(biāo)對(duì)于圖書管理這樣的管理系統(tǒng),必須要滿足使用方便、操作靈活和安全性好等設(shè)計(jì)需求。設(shè)計(jì)本系統(tǒng)時(shí)應(yīng)該完成以下幾個(gè)目標(biāo):圖書的錄入使用交互方式。能夠?yàn)g覽文件中存儲(chǔ)的全部圖書。圖書信息在屏幕上的輸出要有固定格式。系統(tǒng)最大限度地實(shí)現(xiàn)易維護(hù)性和易操作性。系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。1.3.2 系統(tǒng)功能結(jié)構(gòu)系統(tǒng)功能結(jié)構(gòu)如圖1.1所示。添加新書

4、模塊:該模塊主要供圖書管理者使用。圖書管理者應(yīng)用該模塊將圖書信息錄入到系統(tǒng),系統(tǒng)將圖書信息保存到文件中。瀏覽全部模塊添加新書模塊圖書管理系統(tǒng)圖1.1 系統(tǒng)功能結(jié)構(gòu)瀏覽全部模塊:該模塊供讀者和圖書管理者使用。圖書管理者可以通過該模塊查看圖書是否存在,以及獲取圖書的編號(hào),方便日后刪除。讀者可以根據(jù)該模塊了解到圖書的價(jià)格和作者等信息,從而決定是否購(gòu)買。刪除圖書模塊:該模塊主要供圖書管理者使用。圖書管理者可以通過該模塊刪除書店中已經(jīng)銷售完的圖書的信息。1.3.3 系統(tǒng)預(yù)覽圖書管理系統(tǒng)由添加圖書、瀏覽全部和刪除圖書3部分組成,由于篇幅有限,在此只給出部分功能預(yù)覽圖。圖書管理系統(tǒng)主界面如圖1.2所示。添加

5、新書界面如圖1.3所示。 圖1.2 圖書管理系統(tǒng)主界面 圖1.3 添加新書界面瀏覽全部界面如圖1.4所示。圖1.4 瀏覽全部界面1.4 公共類設(shè)計(jì)圖1.5 CBook類設(shè)計(jì)圖圖書管理系統(tǒng)需要?jiǎng)?chuàng)建CBook類,通過CBook類可實(shí)現(xiàn)圖書記錄的寫入和刪除,還可以通過CBook類查看每條圖書的信息。CBook類中包含m_cName、m_cIsbn、m_cPrice和m_cAuthor 4個(gè)成員變量,分別代表圖書的名稱、ISBN編號(hào)、價(jià)格和作者。在設(shè)計(jì)類時(shí),可以將成員變量看做屬性,這樣類中還需要有設(shè)置屬性和獲取屬性的成員函數(shù),設(shè)置屬性的函數(shù)以set開頭,獲取屬性的函數(shù)以get開頭。CBook類設(shè)計(jì)圖如

6、圖1.5所示。CBook類定義在頭文件Book.h中,代碼如下:#define NUM1 128#define NUM2 50class CBookpublic:CBook()CBook(char* cName,char* cIsbn,char* cPrice,char* cAuthor);CBook()public:char* GetName();/獲取圖書名稱void SetName(char* cName);/設(shè)置圖書名稱char* GetIsbn();/獲取圖書ISBN編號(hào)void SetIsbn(char* cIsbn);/設(shè)置圖書ISBN編號(hào)char* GetPrice();/獲取

7、圖書價(jià)格void SetPrice(char* cPrice);/設(shè)置圖書價(jià)格char* GetAuthor();/獲取圖書作者void SetAuthor(char* cAuthor);/設(shè)置圖書作者void WriteData();void DeleteData(int iCount);void GetBookFromFile(int iCount);protected:char m_cNameNUM1;char m_cIsbnNUM1;char m_cPriceNUM2;char m_cAuthorNUM2;CBook類成員函數(shù)的實(shí)現(xiàn)都存儲(chǔ)在實(shí)現(xiàn)文件Book.cpp內(nèi)。#include

8、Book.h#include #include #include #include using namespace std;CBook:CBook(char* cName,char* cIsbn,char* cPrice,char* cAuthor)strncpy(m_cName,cName,NUM1);strncpy(m_cIsbn,cIsbn,NUM1);strncpy(m_cPrice,cPrice,NUM2);strncpy(m_cAuthor,cAuthor,NUM2);char* CBook:GetName()return m_cName;void CBook:SetName(ch

9、ar* cName)strncpy(m_cName,cName,NUM1);char* CBook:GetIsbn()return m_cIsbn;void CBook:SetIsbn(char* cIsbn)strncpy(m_cIsbn,cIsbn,NUM1);char* CBook:GetPrice()return m_cPrice;void CBook:SetPrice(char* cPrice)strncpy(m_cPrice,cPrice,NUM2);char* CBook:GetAuthor()return m_cAuthor;void CBook:SetAuthor(char*

10、 cAuthor)strncpy(m_cAuthor,cAuthor,NUM2);函數(shù)WriteData、GetBookFromFile和DeleteData是類對(duì)象讀寫文件的函數(shù),相當(dāng)于操作數(shù)據(jù)庫(kù)的接口。(1)成員函數(shù)WriteData主要實(shí)現(xiàn)將圖書對(duì)象寫入到文件中。void CBook:WriteData()ofstream ofile;ofile.open(book.dat,ios:binary|ios:app);tryofile.write(m_cName,NUM1);ofile.write(m_cIsbn,NUM1);ofile.write(m_cPrice,NUM2);ofile.

11、write(m_cAuthor,NUM2);catch(.)throw file error occurred;ofile.close();ofile.close();(2)成員函數(shù)GetBookFromFile能夠?qū)崿F(xiàn)從文件中讀取數(shù)據(jù)來構(gòu)建對(duì)象。void CBook:GetBookFromFile(int iCount)char cNameNUM1;char cIsbnNUM1;char cPriceNUM2;char cAuthorNUM2;ifstream ifile;ifile.open(book.dat,ios:binary);tryifile.seekg(iCount*(NUM1+

12、NUM1+NUM2+NUM2),ios:beg);ifile.read(cName,NUM1);if(ifile.tellg()0)strncpy(m_cName,cName,NUM1);ifile.read(cIsbn,NUM1);if(ifile.tellg()0)strncpy(m_cIsbn,cIsbn,NUM1);ifile.read(cPrice,NUM2);if(ifile.tellg()0)strncpy(m_cIsbn,cIsbn,NUM2);ifile.read(cAuthor,NUM2);if(ifile.tellg()0)strncpy(m_cAuthor,cAutho

13、r,NUM2);catch(.)throw file error occurred;ifile.close();ifile.close();(3)成員函數(shù)DeleteData負(fù)責(zé)將圖書信息從文件中刪除。void CBook:DeleteData(int iCount)long respos;int iDataCount=0;fstream file;fstream tmpfile;ofstream ofile;char cTempBufNUM1+NUM1+NUM2+NUM2;file.open(book.dat,ios:binary|ios:in|ios:out);tmpfile.open(t

14、emp.dat,ios:binary|ios:in|ios:out|ios:trunc);file.seekg(0,ios:end);respos=file.tellg();iDataCount=respos/(NUM1+NUM1+NUM2+NUM2);if(iCount iDataCount)throw Input number error;elsefile.seekg(iCount)*(NUM1+NUM1+NUM2+NUM2),ios:beg);for(int j=0;j(iDataCount-iCount);j+)memset(cTempBuf,0,NUM1+NUM1+NUM2+NUM2

15、);file.read(cTempBuf,NUM1+NUM1+NUM2+NUM2);tmpfile.write(cTempBuf,NUM1+NUM1+NUM2+NUM2);file.close();tmpfile.seekg(0,ios:beg);ofile.open(book.dat);ofile.seekp(iCount-1)*(NUM1+NUM1+NUM2+NUM2),ios:beg);for(int i=0;i(iDataCount-iCount);i+)memset(cTempBuf,0,NUM1+NUM1+NUM2+NUM2);tmpfile.read(cTempBuf,NUM1+

16、NUM1+NUM2+NUM2);ofile.write(cTempBuf,NUM1+NUM1+NUM2+NUM2);tmpfile.close();ofile.close();remove(temp.dat);1.5 主窗體模塊設(shè)計(jì)1.5.1 主窗體模塊概述主程序界面是應(yīng)用程序提供給用戶訪問其他功能模塊的平臺(tái),根據(jù)實(shí)際需要,圖書管理系統(tǒng)的主界面采用了傳統(tǒng)的“數(shù)字選擇功能”風(fēng)格。輸入數(shù)字1進(jìn)入到添加新書模塊,輸入數(shù)字2進(jìn)入到瀏覽全部模塊,輸入數(shù)字3進(jìn)入到刪除圖書模塊。圖書管理系統(tǒng)主界面如圖1.6所示。圖1.6 系統(tǒng)主界面1.5.2 主窗體模塊技術(shù)分析要實(shí)現(xiàn)圖書管理系統(tǒng)的功能,需要對(duì)引用庫(kù)函數(shù)添加

17、頭文件引用。頭文件引用和宏定義的代碼如下:#include #include #include #include #include #include #include Book.h#define CMD_COLS 80#define CMD_LINES 25using namespace std;除主函數(shù)外,系統(tǒng)自定義了許多函數(shù),主要函數(shù)及功能如下。void SetScreenGrid():設(shè)置屏幕顯示的行數(shù)和列數(shù)。void ClearScreen():清除屏幕信息。void SetSysCaption(const char *pText):設(shè)置窗體標(biāo)題欄。void ShowWelcome()

18、:顯示歡迎信息。void ShowRootMenu():顯示開始菜單。void WaitView(int iCurPage):瀏覽數(shù)據(jù)時(shí)等待用戶操作。void WaitUser():等待用戶操作。void GuideInput():使用向?qū)砑訄D書信息。int GetSelect():獲得用戶菜單選擇。long GetFileLength(ifstream & ifs):獲取文件長(zhǎng)度。void ViewData(int iSelPage):瀏覽所有圖書記錄。void DeleteBookFromFile():在文件中產(chǎn)生圖書信息。void mainloop():主循環(huán)。1.5.3 主窗體模塊實(shí)

19、現(xiàn)過程圖書管理系統(tǒng)的主窗體設(shè)計(jì)實(shí)現(xiàn)過程如下。(1)在控制臺(tái)中輸入mode命令可以設(shè)置控制顯示信息的行數(shù)、列數(shù)和背景顏色等信息。SetScreenGrid函數(shù)主要通過system函數(shù)來執(zhí)行mode命令,CMD_COLS和CMD_LINES是宏定義中的值。void SetScreenGrid()char sysSetBuf80;sprintf(sysSetBuf,mode con cols=%d lines=%d,CMD_COLS,CMD_LINES);system(sysSetBuf);(2)SetSysCaption函數(shù)主要完成在控制臺(tái)的標(biāo)題欄上顯示Sample信息。控制臺(tái)的標(biāo)題欄信息可以使用

20、title命令來設(shè)置,函數(shù)中使用system函數(shù)來執(zhí)行title命令。void SetSysCaption()system(title Sample);(3)ClearScreen函數(shù)主要通過system函數(shù)來執(zhí)行cls命令,完成控制臺(tái)屏幕信息的清除。void ClearScreen()system(cls); (4)SetSysCaption函數(shù)共有兩個(gè)版本,這是SetSysCaption函數(shù)的另一個(gè)版本,主要實(shí)現(xiàn)在控制臺(tái)的標(biāo)題欄上顯示指定字符。void SetSysCaption( const char *pText)char sysSetBuf80;sprintf(sysSetBuf,t

21、itle %s,pText);system(sysSetBuf);(5)ShowWelcome函數(shù)在屏幕上顯示“圖書管理系統(tǒng)”字樣的歡迎信息,“圖書管理系統(tǒng)”字樣應(yīng)盡量顯示在屏幕的中央位置。void ShowWelcome()for(int i=0;i7;i+)cout endl;cout setw(40);cout * endl;cout setw(40);cout 圖書管理系統(tǒng) endl;cout setw(40);cout * endl;(6)ShowRootMenu函數(shù)主要顯示系統(tǒng)的主菜單,系統(tǒng)中有3個(gè)菜單選項(xiàng),分別是添加新書、瀏覽全部和刪除圖書。3個(gè)菜單選項(xiàng)是進(jìn)入系統(tǒng)3個(gè)模塊的入口。

22、void ShowRootMenu()cout setw(40);cout 請(qǐng)選擇功能 endl;cout endl;cout setw(38);cout 1 添加新書 endl;cout endl;cout setw(38);cout 2 瀏覽全部 endl;cout endl;cout setw(38);cout 3 刪除圖書 endl;(7)WaitUser函數(shù)主要負(fù)責(zé)當(dāng)程序進(jìn)入某一模塊后,等待用戶進(jìn)行處理。用戶可以選擇返回主菜單,也可以直接退出系統(tǒng)。void WaitUser()int iInputPage=0;cout enter返回主菜單 q退出 endl;char buf256;

23、gets(buf);if(buf0=q)system(exit);(8)main函數(shù)是程序的入口,主要調(diào)用了SetScreenGrid、SetSysCaption和mainloop 3個(gè)函數(shù),其中,mainloop函數(shù)是主函數(shù),負(fù)責(zé)模塊執(zhí)行的調(diào)度,主要代碼如下:void mainloop()ShowWelcome();while(1)ClearScreen();ShowWelcome();ShowRootMenu();switch(GetSelect()case 1:ClearScreen();GuideInput();break;case 2:ClearScreen();ViewData()

24、;break;case 3:ClearScreen();DeleteBookFromFile();break;(9)GetSelect函數(shù)主要負(fù)責(zé)獲取用戶在菜單中的選擇。int GetSelect()char buf256;gets(buf);return atoi(buf);其他函數(shù)都應(yīng)用在添加新書模塊、瀏覽全部模塊和刪除圖書模塊中,相關(guān)內(nèi)容將在具體模塊中講解。1.6 添加新書模塊設(shè)計(jì)1.6.1 添加新書模塊概述在圖書管理系統(tǒng)主窗體中輸入數(shù)字1,則進(jìn)入到添加新書模塊中。添加新書模塊中主要需要用戶輸入所要添加的圖書的書名、ISBN編碼、價(jià)格以及作者信息,其運(yùn)行效果如圖1.7所示。圖1.7 添加

25、新書1.6.2 添加新書模塊技術(shù)分析在添加新書模塊中定義了GuideInput函數(shù),通過在main函數(shù)中調(diào)用來完成添加圖書的功能。void GuideInput();其次,利用CBook類構(gòu)建一個(gè)CBook對(duì)象,通過CBook對(duì)象的成員函數(shù)WriteData將圖書信息寫入文件。CBook book(inName,inIsdn,inPrice,inAuthor);book.WriteData();1.6.3 添加新書模塊實(shí)現(xiàn)過程圖書管理系統(tǒng)中添加新書模塊的實(shí)現(xiàn)代碼如下:void GuideInput()char inNameNUM1;char inIsdnNUM1;char inPriceNUM

26、2;char inAuthorNUM2;cout 輸入書名 inName;cout 輸入ISBN inIsdn;cout 輸入價(jià)格 inPrice;cout 輸入作者 inAuthor;CBook book(inName,inIsdn,inPrice,inAuthor);book.WriteData();cout Write Finish =1)bIndex=true;iPage=iDataCount / 20+1;ClearScreen();/清除屏幕信息cout 共有記錄 iDataCount ;cout 共有頁(yè)數(shù) iPage ;cout 當(dāng)前頁(yè)數(shù) iCurPage ;cout n顯示下一

27、頁(yè)m返回 endl;cout setw(5)Index ;cout setw(22) Name setw(22) Isbn ;cout setw(15) Price setw(15) Author;cout endl;try/根據(jù)圖書記錄編號(hào)查找在文件中的位置ifile.seekg(iCur1)*20*(NUM1+NUM1+NUM2+NUM2),ios:beg); if(!ifile.fail()for(int i=1;i21;i+)memset(inName,0,128); /將變量清零memset(inIsbn,0,128);memset(price,0,50);memset(inAuth

28、or,0,50);if(bIndex)cout setw(3) (iCur1)*20+i);ifile.read(inName,NUM1); /讀取圖書名稱cout setw(24) inName;ifile.read(inIsbn,NUM1);/讀取圖書ISBN編號(hào)cout setw(24) inIsbn;ifile.read(price,NUM2);/讀取圖書價(jià)格cout setw(12) price;ifile.read(inAuthor,NUM2);/讀取圖書作者cout setw(12) inAuthor;cout endl;if( ifile.tellg()0)bIndex=false;elsebIndex=true;catch(.)cout throw file exception endl;throw file error occurred; /拋出異常ifile.close();/異常后關(guān)閉文件流if(iCurPageiPage)iCurPage=iCurPage+1;WaitView(iCurPage); /等待用戶處理elseWaitView(iCurPage); /等待用戶處理ifile.close();GetFileLength函數(shù)的代碼如下:long GetFileLength(ifstre

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論