2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、《高級(jí)語言程序設(shè)計(jì)(C++)》課程答辯,題 目:圖書館管理系統(tǒng)院 系:班 級(jí):學(xué) 號(hào):姓 名:,系統(tǒng)開發(fā)背景 某民辦高校在創(chuàng)辦初期,辦學(xué)規(guī)模比較小。學(xué)校的圖書數(shù)量,以及借閱人數(shù)都比較少,所以,一直以來對圖書管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對于圖書借閱情況的統(tǒng)計(jì)和審核等往往采用對借書卡的人工檢查進(jìn)行,對借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計(jì)算、手抄進(jìn)行。近年來由于國家

2、對民辦教育的大力扶持,該民辦高校的辦學(xué)規(guī)模迅速擴(kuò)大,學(xué)校的硬件設(shè)施以及在校學(xué)生和職工數(shù)都在成倍增長,給學(xué)校的圖書館管理也帶來了巨大的壓力,早期的手工圖書管理方式已經(jīng)不能滿足日益增長的圖書借閱需求。 使用計(jì)算機(jī)對圖書信息進(jìn)行管理,具有手工管理所無法比擬的特點(diǎn)。例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長、成本低等。為了適應(yīng)學(xué)校迅速發(fā)展的趨勢,解決日益尖銳的圖書館管理矛盾,該校提出了采用計(jì)算機(jī)管理圖書信息的需求。

3、本系統(tǒng)就是基于這個(gè)需求進(jìn)行開發(fā)的。,系統(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)確。,系統(tǒng)層次模塊圖某學(xué)校圖書管理信息系統(tǒng)可以分為5個(gè)子模塊:系統(tǒng)登錄、圖書信息管理、讀者信息管理、借書

4、服務(wù)管理、還書服務(wù)管理,如圖所示。,數(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)識(shí)符:CLERK,(2)名稱:書籍信息表表名標(biāo)識(shí)符:BOOK,(3)名稱:讀者信息表表名標(biāo)識(shí)符:READER,(4)名稱:借書信息表表名標(biāo)識(shí)符:BORROW,(5)名稱:借還書歷史表表名標(biāo)識(shí)符:HISTORY,創(chuàng)建項(xiàng)目 創(chuàng)建一個(gè)基

5、于對話框的MFC AppWizard(exe)項(xiàng)目,項(xiàng)目名為Library。為了能在對話框中用ODBC編寫數(shù)據(jù)庫,需在stdafx.h中手動(dòng)添加支持:#include,登錄模塊(1)模塊的功能書籍市圖書館最寶貴的財(cái)產(chǎn),它的借進(jìn)借出都應(yīng)該保證安全。每個(gè)管理員用自己的用戶名和密碼登陸,來使用圖書館管理系統(tǒng)。通過某管理員借進(jìn)和借出的書都有他的標(biāo)記。這樣就保證了書籍的安全。(2)界面設(shè)計(jì)設(shè)計(jì)界面如圖所示。,對話框?qū)傩栽O(shè)置為:IDD_

6、DIALOG_LOGIN。為IDD_DIALOG_LOGIN添加CLoginDlg類其中主要控件的屬性、功能及成員變量如圖所示。,(3)添加CClerkDataSet類與登錄信息表連接,(4)代碼編寫①“取消”按鈕——取消輸入,并關(guān)閉登錄對話框:②“登錄”按鈕——當(dāng)管理員填完用戶名和密碼后,單擊“登錄”按鈕,先檢查用戶名和密碼是否合法。然后查找數(shù)據(jù)庫中是否有該管理員的信息,若有則登陸成功。具體代碼如下:,void CLogin

7、Dlg::OnConfirm() {// TODO: Add your control notification handler code hereCClerkDataSet mrsDataSet; /*聲明記錄集*/CString mSqlStr; UpdateData(TRUE); if (m_strName.IsEmpty()) /*判斷用戶名信息是否為空*/{Afx

8、MessageBox("請輸入用戶名!");return;} mSqlStr = "SELECT * FROM CLERK WHERE NAME='";,mSqlStr = mSqlStr + m_strName;mSqlStr = mSqlStr + "' AND PASSWORD='";mSqlStr = mSqlS

9、tr + m_strPassword;mSqlStr = mSqlStr + "'";if (!mrsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE, mSqlStr)){AfxMessageBox("CLERK表打開失??!");return;}if (!mrsDataSet.IsEOF()){// Open all fun

10、ction for userCDialog::OnOK();CLibraryDlg dlg;dlg.DoModal();}else{AfxMessageBox("登錄失?。?quot;);return;}},主界面模塊(1)模塊的功能通過主界面可以進(jìn)入每個(gè)模塊,是各個(gè)模塊切換和聯(lián)系的橋梁。主界面力求簡單,對每個(gè)按鈕的功能給予適當(dāng)簡介。從主界面中可以退出系統(tǒng)。(2)界面設(shè)

11、計(jì)設(shè)計(jì)界面如圖所示,其中主要控件的屬性、功能及成員變量如圖所示。,圖書信息模塊(1)模塊的功能圖書信息模塊主要完成圖書信息管理功能,包括瀏覽、查找、添加、刪除和修改。管理員可以根據(jù)使用的需要,依次單擊對應(yīng)按鈕,來實(shí)現(xiàn)這些功能。·瀏覽功能:管理員可以查看全部圖書信息。·查找功能:因?yàn)闀畻l碼和書籍是一一對應(yīng)的關(guān)系,所以通過書籍條碼可以查找到任意一本書的信息并顯示出來。·添加功能:可以向書籍表中添

12、加新的書籍信息,系統(tǒng)會(huì)自動(dòng)檢測新的書籍信息中書籍條碼是否在書籍表中存在,確保每本書具有唯一的書籍條碼。·刪除功能:刪除界面上當(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ì)的界面如圖所示:,對話框?qū)傩栽O(shè)置:IDD_DIALOG_BOOK為IDD_DIALOG_BOOK添加CBo

13、okDlg類其中主要控件的屬性、功能及成員變量如圖所示。(3)添加CCBookDataSet類與書籍信息表連接,(3)添加CCBookDataSet類與書籍信息表連接(4)代碼編寫①功能函數(shù):把一些常用的功能封裝為成員函數(shù)。,·DisplayRecord——對話框各控件顯示當(dāng)先記錄:BOOL CBookDlg::DisplayRecord(){if (m_rsDataSet.IsEOF() &&a

14、mp; m_rsDataSet.IsBOF()){m_strBookID = "";m_strBookName = "";m_strPress = "";m_strAuthor = "";m_strFlag = "";m_strPressDate="";}else{

15、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

16、_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);return TRUE; },·S

17、etButtonState——根據(jù)不同的情況,調(diào)整按鈕的狀態(tài)。 如:當(dāng)?shù)绞子涗浀臅r(shí)候,“上一條”按鈕無效。 BOOL CBookDlg::SetButtonState() {CWnd *pWnd; if(!m_rsDataSet.IsOpen()){pWnd = GetDlgItem(IDC_FIRST);

18、pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_NEXT);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRIOR);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_LAST);pWnd->EnableWindow(FALSE);

19、pWnd = GetDlgItem(IDC_NEW);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_EDIT);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_ENQUERY);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_D

20、ELETE);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_SAVE);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_CANCEL_REC);pWnd->EnableWindow(FALSE);return TRUE;},if (m_bEdit){pWnd = GetDl

21、gItem(IDC_FIRST);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_NEXT);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRIOR);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_LAST);pWnd->E

22、nableWindow(FALSE); pWnd = GetDlgItem(IDC_NEW);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_EDIT);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_ENQUERY);pWnd->EnableWindow(FALSE);

23、pWnd = GetDlgItem(IDC_DELETE);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_SAVE);pWnd->EnableWindow(TRUE);pWnd = GetDlgItem(IDC_CANCEL_REC);pWnd->EnableWindow(TRUE); return TRUE; 

24、;},if (m_rsDataSet.IsBOF()){pWnd = GetDlgItem(IDC_FIRST);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRIOR);pWnd->EnableWindow(FALSE);}else{pWnd = GetDlgItem(IDC_FIRST);pWnd->Enab

25、leWindow(TRUE);pWnd = GetDlgItem(IDC_PRIOR);pWnd->EnableWindow(TRUE);} if (m_rsDataSet.IsEOF()){pWnd = GetDlgItem(IDC_NEXT);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_LAST);pWnd-&

26、gt;EnableWindow(FALSE);}else{pWnd = GetDlgItem(IDC_NEXT);pWnd->EnableWindow(TRUE);pWnd = GetDlgItem(IDC_LAST);pWnd->EnableWindow(TRUE); },if (m_rsDataSet.IsBOF() && m_rsDataSet.IsE

27、OF()){pWnd = GetDlgItem(IDC_EDIT);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_DELETE);pWnd->EnableWindow(FALSE); }else{pWnd = GetDlgItem(IDC_EDIT);pWnd->EnableWindow(TRUE);

28、pWnd = GetDlgItem(IDC_DELETE);pWnd->EnableWindow(TRUE); } pWnd = GetDlgItem(IDC_NEW);pWnd->EnableWindow(TRUE);pWnd = GetDlgItem(IDC_ENQUERY);pWnd->EnableWindow(TRUE);pWnd = GetDlgItem(

29、IDC_SAVE);pWnd->EnableWindow(FALSE);pWnd = GetDlgItem(IDC_CANCEL_REC);pWnd->EnableWindow(FALSE); return TRUE; },·SetButtonState——根據(jù)不同的情況,調(diào)整按鈕的狀態(tài)。如:當(dāng)?shù)绞子涗浀臅r(shí)候,“上一條”按鈕無效。②初始化——顯示記錄,設(shè)置按鈕、編輯框狀

30、態(tài)。BOOL CBookDlg::OnInitDialog() {CDialog::OnInitDialog();// TODO: Add extra initialization herem_bAdd = FALSE;m_bEdit = FALSE; if (!m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE))AfxMessageBox("數(shù)據(jù)打

31、開失敗!"); DisplayRecord();SetButtonState();SetTextState();return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE},·

32、查詢——不同條件下進(jìn)行查詢,顯示查詢記錄,設(shè)置按鈕狀態(tài)。,void CBookDlg::OnEnquery() {// TODO: Add your control notification handler code hereUpdateData(TRUE);if (m_strBookIDQ.IsEmpty() && m_strBookNameQ.IsEmpty()){m_rsDataSet.m_

33、strFilter = "";m_rsDataSet.Requery();DisplayRecord();SetButtonState();return;}BOOL mAll = FALSE;if (!m_strBookIDQ.IsEmpty()){m_rsDataSet.m_strFilter = "BOOK_ID='" + m_strBoo

34、kIDQ ;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + "'";mAll = TRUE;},if (!m_strBookNameQ.IsEmpty()){if (mAll){m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + " AND BOOK_N

35、AME='";m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + m_strBookNameQ;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + "'";}else{m_rsDataSet.m_strFilter = "BOOK_NAM

36、E='" + m_strBookNameQ;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + "'";}}m_rsDataSet.Requery();DisplayRecord();SetButtonState(); },·保存——適用于增加和修改狀態(tài),判斷信息的合理性,并進(jìn)

37、行增加和修改操作。,void CBookDlg::OnSave() {// TODO: Add your control notification handler code hereUpdateData(TRUE);if (m_strBookID.IsEmpty() || m_strBookName.IsEmpty()){AfxMessageBox("請輸入相應(yīng)數(shù)據(jù)!");return;

38、}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_P

39、RESS = 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();SetButtonSt

40、ate();SetTextState();},全部圖書資料,借書服務(wù)模塊(1)模塊的功能借書模塊主要完成借書操作。首先檢查讀者是否有權(quán)借書,超期還書的讀者需與管理員協(xié)商后方可獲得權(quán)限再次借書,接著檢查需要借的書籍是否可借,館內(nèi)保留的書籍不可借,一切正常后,登記借書時(shí)間、借書管理員ID完成借書。(2)界面設(shè)計(jì)設(shè)計(jì)界面如圖所示,對話框?qū)傩栽O(shè)置為:IDD_DIALOG_BORROW。為IDD_DIALOG_BORROW添

41、加CBorrowDlg類其中主要控件的屬性、功能及成員變量如圖所示。,(3)添加CBorrowDataSet類與登錄信息表連接(4)代碼編寫①“確定”按鈕——檢查讀者和書籍是否合理,若任意一項(xiàng)不合理,則給出警告信息,若合理,添加成功。,void CBorrowDlg::OnConfirm() {// TODO: Add your control notification handler code here// TODO

42、: Add your control notification handler code hereBOOL m_bCanBorrow;BOOL m_bCanLendOut;m_bCanBorrow = FALSE;m_bCanLendOut = FALSE;CString mSqlStr; UpdateData(TRUE); if (!m_rsReaderDataSet.Open(AF

43、X_DB_USE_DEFAULT_TYPE)){AfxMessageBox("數(shù)據(jù)表打開錯(cuò)誤!");return;}m_rsReaderDataSet.m_strFilter = "READER_ID='" + m_strReaderID;m_rsReaderDataSet.m_strFilter = m_rsReaderDataSet.m_strFilte

44、r + "'";m_rsReaderDataSet.Requery();,if (!m_rsReaderDataSet.IsEOF()){if (m_rsReaderDataSet.m_FLAG_BORROW == "Y"){mSqlStr = "SELECT * FROM BORROW WHERE READER_ID= '" + m

45、_strReaderID;mSqlStr = mSqlStr + "'"; if (!m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,mSqlStr)){m_rsReaderDataSet.Close();AfxMessageBox("數(shù)據(jù)表打開錯(cuò)誤!");return; 

46、} // Add some code to determine the num of book which this reader borrowed.m_bCanBorrow = TRUE;m_rsDataSet.Close();}}m_rsReaderDataSet.Close(); if (!m_bCanBorrow){AfxMessageBox("

47、;讀者不能借書!");return;},mSqlStr = "SELECT * FROM BOOK WHERE BOOK_ID='" + m_strBookID;mSqlStr = mSqlStr + "'"; if(!m_rsBookDataSet.Open(AFX_DB_USE_DEFAULT_TYPE, mSqlStr)){A

48、fxMessageBox("數(shù)據(jù)表打開錯(cuò)誤!");return ;}if (!m_rsBookDataSet.IsEOF()){if (m_rsBookDataSet.m_FLAG_BORROW == "Y"){m_bCanLendOut = TRUE;}else{AfxMessageBox("此書不外借! ");

49、m_rsBookDataSet.Close();return;}}else{AfxMessageBox("無此書!");m_rsBookDataSet.Close();return;}m_rsBookDataSet.Close();,CString m_strUserID;m_strUserID = theApp.m_strUserName ;&#

50、160;COleDateTime m_CurrentTime=COleDateTime::GetCurrentTime();CString strTime;int y=m_CurrentTime.GetYear();int m=m_CurrentTime.GetMonth();int d=m_CurrentTime.GetDay();strTime.Format("%d-%d-%d",y,m,

51、d);mSqlStr = "INSERT INTO BORROW (READER_ID, BOOK_ID,BORROW_DATE, B_CLERK_ID) VALUES('";mSqlStr = mSqlStr + m_strReaderID;mSqlStr = mSqlStr + "','";mSqlStr = mSqlStr + m_strBookID;

52、mSqlStr = mSqlStr + "','";mSqlStr = mSqlStr + strTime;mSqlStr = mSqlStr +"','";mSqlStr = mSqlStr + m_strUserID;mSqlStr = mSqlStr + "')";CDatabase mDB;if (

53、!mDB.Open(_T("Library"))){AfxMessageBox("無法打開數(shù)據(jù)庫!");return;},try{mDB.ExecuteSQL(mSqlStr);} catch(CDBException e){AfxMessageBox("執(zhí)行錯(cuò)!");return;} 

54、0;mDB.Close();AfxMessageBox("操作成功!");},還書服務(wù)模塊(1)模塊的功能還書模塊主要完成還書工作,首先檢查此次行為是否超期還書,若是,則鎖定讀者然后辦理還書業(yè)務(wù)。被鎖定的讀者需與管理員協(xié)商后,方可解鎖繼續(xù)借書。(2)界面設(shè)計(jì)設(shè)計(jì)的界面如圖所示:,對話框?qū)傩栽O(shè)置:IDD_DIALOG_RETURN為IDD_DIALOG_RETURN添加CReturnDlg類其中

55、主要控件的屬性、功能及成員變量如圖所示。,(3)添加CBorrowSet類與書籍信息表連接(4)代碼編寫:①功能函數(shù):把一些常用的功能封裝為成員函數(shù)。·QryBorrow——根據(jù)輸入的書籍條目,自動(dòng)查詢借此書的借閱信息,計(jì)算是否超期等。·Insert_History——書的借還還應(yīng)做記錄,以備以后查用·SetTxtNull——清空編輯框。·setTxtDisable——使編輯框處于只讀

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論