




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《高級語言程序設(shè)計(jì)(C++)》課程答辯題
目:圖書館管理系統(tǒng)院
系:班
級:學(xué)
號:姓
名:《高級語言程序設(shè)計(jì)(C++)》課程答辯題目:圖書館管系統(tǒng)開發(fā)背景
某民辦高校在創(chuàng)辦初期,辦學(xué)規(guī)模比較小。學(xué)校的圖書數(shù)量,以及借閱人數(shù)都比較少,所以,一直以來對圖書管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對于圖書借閱情況的統(tǒng)計(jì)和審核等往往采用對借書卡的人工檢查進(jìn)行,對借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計(jì)算、手抄進(jìn)行。近年來由于國家對民辦教育的大力扶持,該民辦高校的辦學(xué)規(guī)模迅速擴(kuò)大,學(xué)校的硬件設(shè)施以及在校學(xué)生和職工數(shù)都在成倍增長,給學(xué)校的圖書館管理也帶來了巨大的壓力,早期的手工圖書管理方式已經(jīng)不能滿足日益增長的圖書借閱需求。
使用計(jì)算機(jī)對圖書信息進(jìn)行管理,具有手工管理所無法比擬的特點(diǎn)。例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。為了適應(yīng)學(xué)校迅速發(fā)展的趨勢,解決日益尖銳的圖書館管理矛盾,該校提出了采用計(jì)算機(jī)管理圖書信息的需求。本系統(tǒng)就是基于這個(gè)需求進(jìn)行開發(fā)的。高級語言程序設(shè)計(jì)C--課程答辯課件
系統(tǒng)需求在圖書管理信息系統(tǒng)開發(fā)時(shí)應(yīng)該滿足以下具體的系統(tǒng)需求:1)滿足圖書借閱管理的基本需求2)滿足圖書書庫管理的基本需求3)滿足圖書借閱人管理的基本需求4)對操作人員的技能要求比較低,操作方便。5)能夠?qū)崿F(xiàn)方便的擴(kuò)展,滿足圖書館發(fā)展的需要。6)能夠保障圖書館管理數(shù)據(jù)的安全、準(zhǔn)確。高級語言程序設(shè)計(jì)C--課程答辯課件
系統(tǒng)層次模塊圖某學(xué)校圖書管理信息系統(tǒng)可以分為5個(gè)子模塊:系統(tǒng)登錄、圖書信息管理、讀者信息管理、借書服務(wù)管理、還書服務(wù)管理,如圖所示。系統(tǒng)層次模塊圖
數(shù)據(jù)庫設(shè)計(jì)
根據(jù)系統(tǒng)功能設(shè)計(jì)的要求以及功能模塊的劃分,對于本系統(tǒng)的數(shù)據(jù)庫,可以列出以下數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):(1)名稱:登錄信息表表名標(biāo)識符:CLERK高級語言程序設(shè)計(jì)C--課程答辯課件(2)名稱:書籍信息表表名標(biāo)識符:BOOK(3)名稱:讀者信息表表名標(biāo)識符:READER(3)名稱:讀者信息表(4)名稱:借書信息表表名標(biāo)識符:BORROW(5)名稱:借還書歷史表表名標(biāo)識符:HISTORY(5)名稱:借還書歷史表
創(chuàng)建項(xiàng)目
創(chuàng)建一個(gè)基于對話框的MFCAppWizard(exe)項(xiàng)目,項(xiàng)目名為Library。為了能在對話框中用ODBC編寫數(shù)據(jù)庫,需在stdafx.h中手動(dòng)添加支持:#include<afxdb.h>高級語言程序設(shè)計(jì)C--課程答辯課件
登錄模塊(1)模塊的功能書籍市圖書館最寶貴的財(cái)產(chǎn),它的借進(jìn)借出都應(yīng)該保證安全。每個(gè)管理員用自己的用戶名和密碼登陸,來使用圖書館管理系統(tǒng)。通過某管理員借進(jìn)和借出的書都有他的標(biāo)記。這樣就保證了書籍的安全。(2)界面設(shè)計(jì)設(shè)計(jì)界面如圖所示。高級語言程序設(shè)計(jì)C--課程答辯課件對話框?qū)傩栽O(shè)置為:IDD_DIALOG_LOGIN。為IDD_DIALOG_LOGIN添加CLoginDlg類其中主要控件的屬性、功能及成員變量如圖所示。對話框?qū)傩栽O(shè)置為:IDD_DIALOG_LOGIN。(3)添加CClerkDataSet類與登錄信息表連接(3)添加CClerkDataSet類與登錄信息表連接高級語言程序設(shè)計(jì)C--課程答辯課件高級語言程序設(shè)計(jì)C--課程答辯課件(4)代碼編寫①“取消”按鈕——取消輸入,并關(guān)閉登錄對話框:②“登錄”按鈕——當(dāng)管理員填完用戶名和密碼后,單擊“登錄”按鈕,先檢查用戶名和密碼是否合法。然后查找數(shù)據(jù)庫中是否有該管理員的信息,若有則登陸成功。具體代碼如下:voidCLoginDlg::OnConfirm(){ //TODO:Addyourcontrolnotificationhandlercodehere CClerkDataSetmrsDataSet;/*聲明記錄集*/ CStringmSqlStr;
UpdateData(TRUE);
if(m_strName.IsEmpty())/*判斷用戶名信息是否為空*/ { AfxMessageBox("請輸入用戶名!"); return; }
mSqlStr="SELECT*FROMCLERKWHERENAME='";
mSqlStr=mSqlStr+m_strName; mSqlStr=mSqlStr+"'ANDPASSWORD='"; mSqlStr=mSqlStr+m_strPassword; mSqlStr=mSqlStr+"'";if(!mrsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,mSqlStr)) { AfxMessageBox("CLERK表打開失?。?); return; } if(!mrsDataSet.IsEOF()) { //Openallfunctionforuser CDialog::OnOK(); CLibraryDlgdlg; dlg.DoModal(); } else { AfxMessageBox("登錄失?。?); return; }
}(4)代碼編寫voidCLoginDlg::OnConfi主界面模塊(1)模塊的功能通過主界面可以進(jìn)入每個(gè)模塊,是各個(gè)模塊切換和聯(lián)系的橋梁。主界面力求簡單,對每個(gè)按鈕的功能給予適當(dāng)簡介。從主界面中可以退出系統(tǒng)。(2)界面設(shè)計(jì)設(shè)計(jì)界面如圖所示高級語言程序設(shè)計(jì)C--課程答辯課件其中主要控件的屬性、功能及成員變量如圖所示。其中主要控件的屬性、功能及成員變量如圖所示。圖書信息模塊(1)模塊的功能圖書信息模塊主要完成圖書信息管理功能,包括瀏覽、查找、添加、刪除和修改。管理員可以根據(jù)使用的需要,依次單擊對應(yīng)按鈕,來實(shí)現(xiàn)這些功能?!g覽功能:管理員可以查看全部圖書信息?!げ檎夜δ埽阂?yàn)闀畻l碼和書籍是一一對應(yīng)的關(guān)系,所以通過書籍條碼可以查找到任意一本書的信息并顯示出來。·添加功能:可以向書籍表中添加新的書籍信息,系統(tǒng)會(huì)自動(dòng)檢測新的書籍信息中書籍條碼是否在書籍表中存在,確保每本書具有唯一的書籍條碼?!h除功能:刪除界面上當(dāng)前現(xiàn)實(shí)的書籍信息,系統(tǒng)會(huì)彈出確認(rèn)對話框,提示是否確認(rèn)刪除,得到確認(rèn)后,便會(huì)刪除該書信息?!ば薷墓δ埽簩?shí)現(xiàn)對當(dāng)前信息的修改,為安全起見,系統(tǒng)默認(rèn)書籍條目不能修改。圖書信息模塊(2)界面設(shè)計(jì)設(shè)計(jì)的界面如圖所示:(2)界面設(shè)計(jì)對話框?qū)傩栽O(shè)置:IDD_DIALOG_BOOK為IDD_DIALOG_BOOK添加CBookDlg類其中主要控件的屬性、功能及成員變量如圖所示。(3)添加CCBookDataSet類與書籍信息表連接對話框?qū)傩栽O(shè)置:IDD_DIALOG_BOOK(3)添加CCBookDataSet類與書籍信息表連接(4)代碼編寫①功能函數(shù):把一些常用的功能封裝為成員函數(shù)?!isplayRecord——對話框各控件顯示當(dāng)先記錄:BOOLCBookDlg::DisplayRecord(){ if(m_rsDataSet.IsEOF()&&m_rsDataSet.IsBOF()) { m_strBookID=""; m_strBookName=""; m_strPress=""; m_strAuthor=""; m_strFlag=""; m_strPressDate=""; } else { if(m_rsDataSet.IsBOF()) { m_rsDataSet.MoveNext(); }
else { if(m_rsDataSet.IsEOF()) { m_rsDataSet.MovePrev(); } } m_strBookID=m_rsDataSet.m_BOOK_ID; m_strBookName=m_rsDataSet.m_BOOK_NAME; m_strPress=m_rsDataSet.m_PRESS; m_strAuthor=m_rsDataSet.m_AUTHOR; m_strFlag=m_rsDataSet.m_FLAG_BORROW; m_strPressDate=m_rsDataSet.m_PRESS_DATE; } UpdateData(FALSE); returnTRUE;
}(3)添加CCBookDataSet類與書籍信息表連接·Di
·SetButtonState——根據(jù)不同的情況,調(diào)整按鈕的狀態(tài)。
如:當(dāng)?shù)绞子涗浀臅r(shí)候,“上一條”按鈕無效。BOOLCBookDlg::SetButtonState(){ CWnd*pWnd;
if(!m_rsDataSet.IsOpen()) { pWnd=GetDlgItem(IDC_FIRST); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_NEXT); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_PRIOR); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_LAST); pWnd->EnableWindow(FALSE);
pWnd=GetDlgItem(IDC_NEW); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_EDIT); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_ENQUERY); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_DELETE); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_SAVE); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_CANCEL_REC); pWnd->EnableWindow(FALSE); returnTRUE; }
if(m_bEdit) { pWnd=GetDlgItem(IDC_FIRST); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_NEXT); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_PRIOR); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_LAST); pWnd->EnableWindow(FALSE);
pWnd=GetDlgItem(IDC_NEW); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_EDIT); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_ENQUERY); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_DELETE); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_SAVE); pWnd->EnableWindow(TRUE); pWnd=GetDlgItem(IDC_CANCEL_REC); pWnd->EnableWindow(TRUE);
returnTRUE;
}
·SetButtonStaif(m_rsDataSet.IsBOF()) { pWnd=GetDlgItem(IDC_FIRST); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_PRIOR); pWnd->EnableWindow(FALSE); } else { pWnd=GetDlgItem(IDC_FIRST); pWnd->EnableWindow(TRUE); pWnd=GetDlgItem(IDC_PRIOR); pWnd->EnableWindow(TRUE); }
if(m_rsDataSet.IsEOF()) { pWnd=GetDlgItem(IDC_NEXT); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_LAST); pWnd->EnableWindow(FALSE); } else { pWnd=GetDlgItem(IDC_NEXT); pWnd->EnableWindow(TRUE); pWnd=GetDlgItem(IDC_LAST); pWnd->EnableWindow(TRUE);
}
if(m_rsDataSet.IsBOF()&&m_rsDataSet.IsEOF()) { pWnd=GetDlgItem(IDC_EDIT); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_DELETE); pWnd->EnableWindow(FALSE);
} else { pWnd=GetDlgItem(IDC_EDIT); pWnd->EnableWindow(TRUE); pWnd=GetDlgItem(IDC_DELETE); pWnd->EnableWindow(TRUE);
}
pWnd=GetDlgItem(IDC_NEW); pWnd->EnableWindow(TRUE); pWnd=GetDlgItem(IDC_ENQUERY); pWnd->EnableWindow(TRUE); pWnd=GetDlgItem(IDC_SAVE); pWnd->EnableWindow(FALSE); pWnd=GetDlgItem(IDC_CANCEL_REC); pWnd->EnableWindow(FALSE);
returnTRUE;
}if(m_rsDataSet·SetButtonState——根據(jù)不同的情況,調(diào)整按鈕的狀態(tài)。如:當(dāng)?shù)绞子涗浀臅r(shí)候,“上一條”按鈕無效。②初始化——顯示記錄,設(shè)置按鈕、編輯框狀態(tài)。BOOLCBookDlg::OnInitDialog(){ CDialog::OnInitDialog();
//TODO:Addextrainitializationhere m_bAdd=FALSE; m_bEdit=FALSE;
if(!m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE)) AfxMessageBox("數(shù)據(jù)打開失?。?);
DisplayRecord(); SetButtonState(); SetTextState();
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol //EXCEPTION:OCXPropertyPagesshouldreturnFALSE}·SetButtonState——根據(jù)不同的情況,調(diào)整按鈕的·查詢——不同條件下進(jìn)行查詢,顯示查詢記錄,設(shè)置按鈕狀態(tài)。voidCBookDlg::OnEnquery(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); if(m_strBookIDQ.IsEmpty()&&m_strBookNameQ.IsEmpty()) { m_rsDataSet.m_strFilter=""; m_rsDataSet.Requery(); DisplayRecord(); SetButtonState(); return; } BOOLmAll=FALSE; if(!m_strBookIDQ.IsEmpty()) { m_rsDataSet.m_strFilter="BOOK_ID='"+m_strBookIDQ; m_rsDataSet.m_strFilter=m_rsDataSet.m_strFilter+"'"; mAll=TRUE; }·查詢——不同條件下進(jìn)行查詢,顯示查詢記錄,設(shè)置按鈕狀態(tài)。vif(!m_strBookNameQ.IsEmpty()) { if(mAll) { m_rsDataSet.m_strFilter=m_rsDataSet.m_strFilter+"ANDBOOK_NAME='"; m_rsDataSet.m_strFilter=m_rsDataSet.m_strFilter+m_strBookNameQ; m_rsDataSet.m_strFilter=m_rsDataSet.m_strFilter+"'"; } else { m_rsDataSet.m_strFilter="BOOK_NAME='"+m_strBookNameQ; m_rsDataSet.m_strFilter=m_rsDataSet.m_strFilter+"'"; }
} m_rsDataSet.Requery(); DisplayRecord(); SetButtonState();
}if(!m_strBookNameQ.IsEmpty())·保存——適用于增加和修改狀態(tài),判斷信息的合理性,并進(jìn)行增加和修改操作。voidCBookDlg::OnSave(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); if(m_strBookID.IsEmpty()||m_strBookName.IsEmpty()) { AfxMessageBox("請輸入相應(yīng)數(shù)據(jù)!"); return; } if(m_bAdd) { m_rsDataSet.AddNew();
} else { m_rsDataSet.Edit(); }
m_rsDataSet.m_AUTHOR=m_strAuthor; m_rsDataSet.m_BOOK_NAME=m_strBookName; m_rsDataSet.m_BOOK_ID=m_strBookID; m_rsDataSet.m_PRESS=m_strPress; m_rsDataSet.m_FLAG_BORROW=m_strFlag; m_rsDataSet.m_PRESS_DATE=m_strPressDate;
m_rsDataSet.Update(); m_rsDataSet.Requery(); m_bAdd=FALSE; m_bEdit=FALSE; DisplayRecord(); SetButtonState(); SetTextState();
}·保存——適用于增加和修改狀態(tài),判斷信息的合理性,并進(jìn)行增加全部圖書資料全部圖書資料高級語言程序設(shè)計(jì)C--課程答辯課件高級語言程序設(shè)計(jì)C--課程答辯課件借書服務(wù)模塊(1)模塊的功能借書模塊主要完成借書操作。首先檢查讀者是否有權(quán)借書,超期還書的讀者需與管理員協(xié)商后方可獲得權(quán)限再次借書,接著檢查需要借的書籍是否可借,館內(nèi)保留的書籍不可借,一切正常后,登記借書時(shí)間、借書管理員ID完成借書。(2)界面設(shè)計(jì)設(shè)計(jì)界面如圖所示高級語言程序設(shè)計(jì)C--課程答辯課件對話框?qū)傩栽O(shè)置為:IDD_DIALOG_BORROW。為IDD_DIALOG_BORROW添加CBorrowDlg類其中主要控件的屬性、功能及成員變量如圖所示。對話框?qū)傩栽O(shè)置為:IDD_DIALOG_BORROW。(3)添加CBorrowDataSet類與登錄信息表連接(4)代碼編寫①“確定”按鈕——檢查讀者和書籍是否合理,若任意一項(xiàng)不合理,則給出警告信息,若合理,添加成功。voidCBorrowDlg::OnConfirm(){ //TODO:Addyourcontrolnotificationhandlercodehere //TODO:Addyourcontrolnotificationhandlercodehere BOOLm_bCanBorrow; BOOLm_bCanLendOut; m_bCanBorrow=FALSE; m_bCanLendOut=FALSE; CStringmSqlStr;
UpdateData(TRUE);
if(!m_rsReaderDataSet.Open(AFX_DB_USE_DEFAULT_TYPE)) { AfxMessageBox("數(shù)據(jù)表打開錯(cuò)誤!"); return; }
m_rsReaderDataSet.m_strFilter="READER_ID='"+m_strReaderID; m_rsReaderDataSet.m_strFilter=m_rsReaderDataSet.m_strFilter+"'"; m_rsReaderDataSet.Requery();
(3)添加CBorrowDataSet類與登錄信息表連接voif(!m_rsReaderDataSet.IsEOF()) { if(m_rsReaderDataSet.m_FLAG_BORROW=="Y") { mSqlStr="SELECT*FROMBORROWWHEREREADER_ID='"+m_strReaderID; mSqlStr=mSqlStr+"'";
if(!m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,mSqlStr)) { m_rsReaderDataSet.Close(); AfxMessageBox("數(shù)據(jù)表打開錯(cuò)誤!"); return;
}
//Addsomecodetodeterminethenumofbookwhichthisreaderborrowed. m_bCanBorrow=TRUE; m_rsDataSet.Close(); } } m_rsReaderDataSet.Close();
if(!m_bCanBorrow) { AfxMessageBox("讀者不能借書!"); return; }if(!m_rsReaderDataSet.IsEOF()mSqlStr="SELECT*FROMBOOKWHEREBOOK_ID='"+m_strBookID; mSqlStr=mSqlStr+"'";
if(!m_rsBookDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,mSqlStr)) { AfxMessageBox("數(shù)據(jù)表打開錯(cuò)誤!"); return; } if(!m_rsBookDataSet.IsEOF()) { if(m_rsBookDataSet.m_FLAG_BORROW=="Y") { m_bCanLendOut=TRUE; } else { AfxMessageBox("此書不外借!"); m_rsBookDataSet.Close(); return; } } else { AfxMessageBox("無此書!"); m_rsBookDataSet.Close(); return; }
m_rsBookDataSet.Close();
mSqlStr="SELECT*FROMBOOKCStringm_strUserID; m_strUserID=theApp.m_strUserName;
COleDateTimem_CurrentTime=COleDateTime::GetCurrentTime(); CStringstrTime; inty=m_CurrentTime.GetYear(); intm=m_CurrentTime.GetMonth();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年債務(wù)債權(quán)交易策劃合同范本
- 城市文化品牌創(chuàng)新策略-深度研究
- 2025年東方花園別墅裝修項(xiàng)目合同樣本
- 2025年兒童看護(hù)服務(wù)綜合合同示范
- 深層氣藏開發(fā)研究-深度研究
- 傳統(tǒng)文化心理傳承-深度研究
- 紙漿造紙產(chǎn)業(yè)自動(dòng)化升級-深度研究
- 文化遺產(chǎn)記憶與旅游業(yè)-深度研究
- 社交媒體傳播效果研究-深度研究
- 智能會(huì)議營銷策略-深度研究
- 新產(chǎn)品開發(fā)(toshiba案例分析組)
- 4.1.1 有理數(shù)指數(shù)冪-參考課件
- 人教版六年級數(shù)學(xué)下冊全冊大單元教學(xué)任務(wù)單
- JJF(新) 112-2023 微量殘?zhí)繙y定儀校準(zhǔn)規(guī)范
- 2024銷售人員年終工作總結(jié)2篇
- 2024年牛排行業(yè)分析報(bào)告及未來發(fā)展趨勢
- 食品投訴處理培訓(xùn)課件
- 血液科品管圈PDCA案例合集
- 創(chuàng)傷患者護(hù)理和評估
- 【全套】醫(yī)院智能化系統(tǒng)報(bào)價(jià)清單
- 北師大版五年級數(shù)學(xué)上冊典型例題系列之期中專項(xiàng)練習(xí):分段計(jì)費(fèi)問題(解析版)
評論
0/150
提交評論