版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄摘要·····························21.圖書管理系統(tǒng)概述················31.1圖書管理系統(tǒng)總體設(shè)計(jì)思想·····31.2總體設(shè)計(jì)流程圖···············42.圖書管理系統(tǒng)詳細(xì)設(shè)計(jì)·············52.1新建數(shù)據(jù)庫(SQLserver)········52.2創(chuàng)建數(shù)據(jù)源···················52.3C++中MFC應(yīng)用程序編程·····52.3.1建立基本對(duì)話框并與數(shù)據(jù)庫連接································52.3.2主要功能函數(shù)源代碼········73.課程設(shè)計(jì)總結(jié)和體會(huì)··············19摘要圖書館管理系統(tǒng)創(chuàng)建基于MFCAPPWizard[exe],利用SQLSERVE2000和MFCODBC進(jìn)行數(shù)據(jù)庫的連接,在可視化的界面上進(jìn)行用戶名、圖書及借書卡的查詢、添加、修改、刪除,對(duì)數(shù)據(jù)庫表內(nèi)的信息列表進(jìn)行操作。圖書館管理系統(tǒng)主要完成了用戶登錄功能、新建/刪除用戶功能、用戶管理功能,對(duì)數(shù)據(jù)庫內(nèi)圖書、借書卡和用戶信息進(jìn)行查詢、添加、刪除、修改功能。圖書館管理系統(tǒng)設(shè)計(jì)是有下列幾步完成的:首先對(duì)整體功能進(jìn)行分析,開始是用戶登錄,登陸成功后顯示主界面,其分為圖書資料、讀者資料、借書管理、還書管理和退出五個(gè)菜單;第二步是對(duì)五個(gè)菜單繼續(xù)劃分成具體的類進(jìn)行實(shí)現(xiàn);第三步是根據(jù)課程設(shè)計(jì)的要求在數(shù)據(jù)庫內(nèi)的建立具體的表,并且進(jìn)行連接,及對(duì)數(shù)據(jù)庫數(shù)據(jù)庫內(nèi)容的操作,與此同時(shí)完成界面的退出操作;第四步是對(duì)圖書館管理系統(tǒng)進(jìn)行的全面優(yōu)化,修改不足。關(guān)鍵詞:MFC,數(shù)據(jù)庫,圖書,管理1.圖書管理系統(tǒng)概述1.1圖書管理系統(tǒng)總體設(shè)計(jì)思想圖書館管理系統(tǒng)的功能為讀者提供借書、還書和查詢所需圖書及圖書、讀者卡的管理等功能。圖書館管理系統(tǒng)的功能模塊有:(1)登錄界面只有管理員才能使用全部功能,更好的保護(hù)圖書館內(nèi)的一些信息不被破壞。(2)讀者資料能實(shí)現(xiàn)對(duì)讀者的顯示、讀者信息增加、讀者查詢、讀者信息修改和讀者信息刪除功能。(3)圖書資料能實(shí)現(xiàn)對(duì)圖書顯示、圖書信息增加、圖書查詢、圖書信息修改和圖書信息刪除功能。(4)借書管理可與數(shù)據(jù)庫中的圖書信息表連接實(shí)現(xiàn)借書的功能。(5)還書管理可與數(shù)據(jù)庫中的圖書信息表連接實(shí)現(xiàn)還書的功能(6)退出退出程序,結(jié)束運(yùn)行。通過SQLserver建立一個(gè)圖書館管理系統(tǒng)的數(shù)據(jù)庫,在控制面板的管理工具上用手動(dòng)方式添加數(shù)據(jù)源進(jìn)行連接。而與數(shù)據(jù)表的連接采用記錄集的形式一一建立連接,可以進(jìn)行圖書資料和讀者資料的管理,圖書資料管理包括圖書信息增加、圖書查詢、圖書信息修改和圖書信息刪除四項(xiàng),讀者資料管理管理包括讀者信息增加、讀者查詢、讀者信息修改和讀者信息刪除。用ODBC語言將數(shù)據(jù)庫與C++連接起來,首先是登錄界面,只有管理員才可進(jìn)入。登陸成功后,管理員可在系統(tǒng)界面進(jìn)行讀者資料、圖書資料、借書管理、還書管理等功能,通過對(duì)話框的跳轉(zhuǎn)實(shí)現(xiàn)借書、還書、圖書新增、查詢等功能。在每個(gè)對(duì)話框都可實(shí)現(xiàn)新增、查詢、刪除、修改等功能順利的對(duì)圖書館進(jìn)行管理。程序分為多個(gè)小模塊,通過調(diào)用實(shí)現(xiàn)各種功能,增強(qiáng)了程序的可建設(shè)性。1.2總體設(shè)計(jì)流程圖程序開始程序開始登錄界面面還書管理借書管理讀者資料圖書資料借書確定增修刪查讀者顯示系統(tǒng)界面面增修刪查圖書顯示程序結(jié)束退出2.圖書管理系統(tǒng)詳細(xì)設(shè)計(jì)2.1新建數(shù)據(jù)庫(SQLserver)新建數(shù)據(jù)庫名為library,然后在數(shù)據(jù)庫下建立五個(gè)表,分別為BOOK、BORROW、CLERK、HISTORY、READER。其中,BOOK是存放圖書信息的,BORROW是存放借書信息的,CLERK是存放管理員信息的,READER是存放讀者信息的。然后設(shè)計(jì)各個(gè)表中的字段,并定義主鍵,然后輸入數(shù)據(jù)即可。2.2創(chuàng)建數(shù)據(jù)源此次課程設(shè)計(jì)用ODBC語言將數(shù)據(jù)庫與C++連接,在連接之前應(yīng)創(chuàng)建數(shù)據(jù)源。在控制面板上打開管理工具,可以找到數(shù)據(jù)源(ODBC),添加數(shù)據(jù)源,可以創(chuàng)建不同類型的數(shù)據(jù)庫,此次設(shè)計(jì)用到了SQLServer,便選擇其,打開SQLServer中的服務(wù)管理器可找到服務(wù)器的名稱,將默認(rèn)數(shù)據(jù)庫改為自己的數(shù)據(jù)庫。點(diǎn)下一步直至完成。這樣,數(shù)據(jù)源創(chuàng)建成功了。2.3C++中MFC應(yīng)用程序編程2.3.1建立基本對(duì)話框并與數(shù)據(jù)庫連接其步驟如下所示eq\o\ac(○,1)雙擊新建的對(duì)話框或建立類向?qū)?,如下圖:eq\o\ac(○,2)點(diǎn)擊OK,則如下圖所示:eq\o\ac(○,3)在所示對(duì)話框中輸入Name,然后Baseclass中選擇CRecordset,點(diǎn)擊OK,出現(xiàn)下圖:eq\o\ac(○,4)既連接數(shù)據(jù)源,注意選擇記錄集類型為Dynaset。點(diǎn)擊OK,出現(xiàn)下圖:eq\o\ac(○,5)選擇要連接的數(shù)據(jù)庫表(此例選擇dbo.BOOK),點(diǎn)擊OK,就完成了與數(shù)據(jù)庫表的連接。其他對(duì)話框同此例。2.3.2主要功能函數(shù)源代碼eq\o\ac(○,1)登錄函數(shù)voidCLoginDlg::OnConfirm()//登錄函數(shù){ //TODO:Addyourcontrolnotificationhandlercodehere CClerkDataSetmrsDataSet;/*聲明記錄集*/ CStringmSqlStr;UpdateData(TRUE);//將相應(yīng)控件上的值反應(yīng)到變量上 if(m_strName.IsEmpty())/*判斷用戶名信息是否為空*/ { AfxMessageBox("請(qǐng)正確輸入用戶名!"); return; }mSqlStr="SELECT*FROMCLERKWHERENAME='";//查詢數(shù)據(jù)庫中表CLERK中名字是輸入的 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(); } else { AfxMessageBox("登錄失敗,請(qǐng)重新輸入!"); return; } }登錄界面為登錄成功為eq\o\ac(○,2)圖書資料中的查詢函數(shù)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; } if(!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();}eq\o\ac(○,3)圖書資料中的修改函數(shù)voidCBookDlg::OnEdit(){ //TODO:Addyourcontrolnotificationhandlercodehere m_bEdit=TRUE; SetButtonState(); SetTextState(); CWnd*pWnd; pWnd=GetDlgItem(IDC_BOOKNAME); pWnd->SetFocus();}eq\o\ac(○,4)圖書資料中的刪除函數(shù)voidCBookDlg::OnDelete(){ //TODO:Addyourcontrolnotificationhandlercodehere m_rsDataSet.Delete(); DisplayRecord(); SetButtonState(); }eq\o\ac(○,5)圖書資料中的增加函數(shù)voidCBookDlg::OnNew(){ //TODO:Addyourcontrolnotificationhandlercodehere m_strBookID=""; m_strBookName=""; m_strAuthor=""; m_strPress=""; m_strFlag="Y"; UpdateData(FALSE); m_bEdit=TRUE; m_bAdd=TRUE; SetButtonState(); SetTextState(); CWnd*pWnd; pWnd=GetDlgItem(IDC_BOOKID); pWnd->SetFocus();}eq\o\ac(○,6)圖書資料中的保存函數(shù)voidCBookDlg::OnSave()//保存書籍{ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); if(m_strBookID.IsEmpty()||m_strBookName.IsEmpty()) { AfxMessageBox("請(qǐng)輸入相應(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();}圖書資料界面如下圖所示:讀者資料界面如下圖:讀者資料中的函數(shù)與圖書資料中的函數(shù)基本一致。eq\o\ac(○,7)借書函數(shù)voidCBorrowDlg::OnConfirm(){//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();if(!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;} m_bCanBorrow=TRUE; m_rsDataSet.Close(); } } m_rsReaderDataSet.Close();if(!m_bCanBorrow) { AfxMessageBox("讀者不能借書!"); return; }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();CStringm_strUserID; m_strUserID=theApp.m_strUserName;COleDateTimem_CurrentTime=COleDateTime::GetCurrentTime(); CStringstrTime; inty=m_CurrentTime.GetYear(); intm=m_CurrentTime.GetMonth(); intd=m_CurrentTime.GetDay(); strTime.Format("%d-%d-%d",y,m,d); mSqlStr="INSERTINTOBORROW(READER_ID,BOOK_ID,BORROW_DATE,B_CLERK_ID)VALUES('"; mSqlStr=mSqlStr+m_strReaderID; mSqlStr=mSqlStr+"','"; mSqlStr=mSqlStr+m_strBookID; mSqlStr=mSqlStr+"','"; mSqlStr=mSqlStr+strTime; mSqlStr=mSqlStr+"','"; mSqlStr=mSqlStr+m_strUserID; mSqlStr=mSqlStr+"')"; CDatabasemDB; if(!mDB.Open(_T("Library"))) { AfxMessageBox("無法打開數(shù)據(jù)庫!"); return; } try { mDB.ExecuteSQL(mSqlStr); }catch(CDBExceptione) { AfxMessageBox("執(zhí)行錯(cuò)!"); return; }mDB.Close(); AfxMessageBox("操作成功!");}voidCBorrowDlg::OnCancel(){ //TODO:Addyourcontrolnotificationhandlercodehere CDialog::OnCancel();}借書界面eq\o\ac(○,8)還書函數(shù)voidCReturnDlg::OnConfirm(){ intrs; CWnd*pWnd; CStringm_strtmp;rs=QryBorrow(); if(rs==1) { m_strtmp.Format("超期%d天,確認(rèn)還書?",m_Days); if(::MessageBox(this->m_hWnd,m_strtmp,"提示",MB_YESNO)==IDYES) { Insert_History(); Delete_Borrow(); SetTxtNull(); } else { return; } } elseif(rs==2) { if(::MessageBox(this->m_hWnd,"確認(rèn)還書?","提示",MB_YESNO)==IDYES) { Insert_History(); Delete_Borrow(); SetTxtNull(); } else { return; }} elseif(rs==0) { if(m_Book_ID=="") return; ::MessageBox(this->m_hWnd,"該書號(hào)信息不存在!","警告",MB_OK); } pWnd=GetDlgI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年玉林貨運(yùn)從業(yè)資格仿真考題
- 2024商標(biāo)轉(zhuǎn)讓及品牌升級(jí)合同:攜手共進(jìn)品牌升級(jí)之旅3篇
- 2024商混合同范本:商混混凝土生產(chǎn)與質(zhì)量控制合作協(xié)議3篇
- 2025廚房設(shè)備銷售合同版
- 商業(yè)綜合體電力施工合同范本
- 城市公園旁咖啡館租賃合同
- 城市綠化帶擴(kuò)建植樹合同
- 出入境文件公證辦理規(guī)范
- 智能家居維修員招聘合同模板
- 汽車研發(fā)中心施工協(xié)議
- 【道法廣角】成語故事會(huì):立木為信
- 《我們?nèi)タ春!烽喿x答案
- 智慧酒店無人酒店綜合服務(wù)解決方案
- 考研英語一新題型歷年真題(2005-2012)
- 健身房會(huì)籍顧問基礎(chǔ)培訓(xùn)資料
- 9脊柱與四肢、神經(jīng)系統(tǒng)檢查總結(jié)
- 秀場(chǎng)內(nèi)外-走進(jìn)服裝表演藝術(shù)智慧樹知到答案章節(jié)測(cè)試2023年武漢紡織大學(xué)
- 【高分復(fù)習(xí)筆記】王建《現(xiàn)代自然地理學(xué)》(第2版)筆記和課后習(xí)題詳解
- TSGD0012023年壓力管道安全技術(shù)監(jiān)察規(guī)程-工業(yè)管道(高清晰版)
- SMM英國建筑工程標(biāo)準(zhǔn)計(jì)量規(guī)則中文 全套
- 2023-2024學(xué)年浙江省富陽市小學(xué)數(shù)學(xué)四年級(jí)上冊(cè)期末通關(guān)題
評(píng)論
0/150
提交評(píng)論