版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
頁課程設(shè)計報告課程名稱:面向?qū)ο蟪绦蛟O(shè)計C++設(shè)計題目:圖書管理系統(tǒng)專業(yè):計算機科學(xué)與技術(shù)姓名:學(xué)號:指導(dǎo)教師:李曉虹2015年12月30日目錄一、系統(tǒng)背景 31.1摘要 31.2背景和目的 31.3關(guān)鍵字 3二、操作分析 32.1關(guān)于使用者 4三、需求分析 63.1產(chǎn)品透視圖 63.2產(chǎn)品功能 63.3流程 7四、界面設(shè)計 84.1軟件圖標(biāo) 84.2主界面 94.3借閱用戶界面 94.4圖書管理員界面 104.5借還登記人員界面 10五、系統(tǒng)具體功能的實現(xiàn) 115.1數(shù)據(jù)源配置 115.2導(dǎo)入ADO庫文件 155.3連接數(shù)據(jù)庫 165.4主界面和注冊功能實現(xiàn) 185.5登錄功能實現(xiàn) 245.6借閱用戶功能實現(xiàn)功能實現(xiàn) 275.7圖書管理員功能實現(xiàn) 375.8登記人員功能實現(xiàn) 44六、結(jié)束語 446.1心得體會 44一、系統(tǒng)背景【摘要】隨著信息技術(shù)的發(fā)展,對于數(shù)據(jù)庫的應(yīng)用日益深入到人們的生活,本組的數(shù)據(jù)庫項目是關(guān)于建立圖書管理系統(tǒng)。對圖書管理系統(tǒng)功能的擴展將友好化所有操作界面,使使用者更加輕松掌握借閱、管理、查詢圖書等操作?!颈尘凹澳康摹可硖幱谛畔⒏咚侔l(fā)展的時代,信息資源當(dāng)之無愧是世界最寶貴的資源之一。與此同時,信息作為一種虛擬資源,數(shù)量繁多且冗雜,資源類型繁多。熱愛書物者學(xué)生,教育者,繁忙的上班族居多,圖書管理系統(tǒng)將龐大的資源進行系統(tǒng)化的分類,動態(tài)地操作信息資源的流動。圖書管理系統(tǒng)使人們的生活更加的便捷,高效?!娟P(guān)鍵字】使用者;需求分析;設(shè)計界面;C++;MFC;SQLserver;二、操作分析2.1、關(guān)于使用者將圖書管理系統(tǒng)分為了四類,分別為:一般用戶、借閱讀者、借閱還書辦理人員、圖書管理人員。一般用戶指不需經(jīng)過注冊和登錄但可以使用圖書管理系統(tǒng)給該身份提供的基本查詢和瀏覽功能的用戶,借閱讀者即是需要注冊和登錄后才能進行圖書借閱等功能的用戶,借閱還書辦理人員即是為借閱者提供服務(wù)的人員,包括借閱用戶借閱和歸還書刊登記的操作及相關(guān)信息查詢。圖書管理員是對圖書基本信息、借閱用戶信息管理,分類等操作的人員。因此界面的操作上應(yīng)該包含這四類的使用者。圖書管理系統(tǒng)的打開界面(如圖2-1),點擊“用戶登錄”。進入登錄界面圖2-1用戶登錄界面(如圖2-2)圖2-2用戶可以看到關(guān)于登錄人員的分類,隨即進行接下來的操作。對于沒有借閱過的新用戶,點擊借閱用戶注冊按鈕,彈出注冊界面:經(jīng)過調(diào)試,該界面是用戶友好界面,方便使用者的操作和注冊。三、關(guān)于需求的分析3.1系統(tǒng)功能已注冊用戶登錄功能;新用戶注冊功能;圖書基本信息檢索功能;已注冊用戶自身基本信息和借閱信息查詢及書刊續(xù)借功能;圖書管理員查詢與修改借閱用戶基本信息和借閱信息功能,圖書信息更新功能。3.2系統(tǒng)E-R圖(如圖3-2)圖3-23.3功能流程前面我們組確定了對圖書管理系統(tǒng)的使用對象的定位,需求分析是根據(jù)適用對象而定的,要求操作界面友好,操作方便,便于使用者進行登錄,注冊,圖書查詢,圖書借閱的操作一體化,流程清楚明了,便于理解與使用。下圖1是關(guān)于一般用戶,借閱者,圖書借閱管理員及圖書管理員操作流程。3.4功能流程圖(如圖3-4)圖3-4上圖是圖書管理系統(tǒng)的建模過程,下面是該系統(tǒng)的使用者對向?qū)ο到y(tǒng)的使用需求:圖書基本情況的錄入、修改、刪除等基本操作。實現(xiàn)借書功能。實現(xiàn)還書功能。能方便的對圖書進行查詢。續(xù)借。借還情況登記。對實驗的要求:圖書編號可參考國家統(tǒng)一的圖書編碼方法,再完成基本功能模塊的情況下,盡量使系統(tǒng)能具有通用性。從上述陳訴中可以發(fā)現(xiàn)以下元素:使用對象:一般用戶借閱者圖書管理員借還登記人員基本用例:1.注冊:新用戶賬號注冊2.登錄:老用戶的系統(tǒng)登錄3.圖書查詢:對需要搜索圖書的查詢4.圖書借閱:已注冊用戶對圖書的相關(guān)借閱5.圖書數(shù)據(jù)更新:圖書管理員對新圖書數(shù)據(jù)的添加6.圖書歸還:已借閱圖書的歸還四、設(shè)計界面軟件的界面是用戶與計算機進行信息數(shù)據(jù)交流的媒介,一個軟件設(shè)計界面的人性化,友好與否將決定該軟件的受歡迎度。所以在軟件的界面設(shè)計方面做了很多次實驗。軟件圖標(biāo)(如圖4-1):圖4-1軟件登錄主界面設(shè)計(如圖4-2)圖4-2借閱用戶界面(如圖4-3)圖4-3圖書管理員界面(如圖4-4)圖4-4借閱登記人員界面(如圖4-5)圖4-5軟件產(chǎn)品的美觀與否,與本組設(shè)計的圖書管理系統(tǒng)受歡迎程度息息相關(guān)!五、模塊實現(xiàn)C++和數(shù)據(jù)庫的操作本系統(tǒng)采用VC++MFC創(chuàng)建應(yīng)用程序框架,使用ADO實現(xiàn)應(yīng)用程序?qū)?shù)據(jù)庫的連接和操作,SQLserver2005作為數(shù)據(jù)庫驅(qū)動器。其中ADO對數(shù)據(jù)庫的連接和操作步驟如下:5.1在本機上配置ODBC數(shù)據(jù)源由于ADO是微軟推出的數(shù)據(jù)庫接口新標(biāo)準,到現(xiàn)在為止已經(jīng)成為最通用最流行和操作性很好的一個數(shù)據(jù)庫接口標(biāo)準。首先仍然需要在服務(wù)器上配置數(shù)據(jù)源,本系統(tǒng)以本機作為服務(wù)器配置數(shù)據(jù)源。操作如下:在開始\控制面板\管理工具\ODBC數(shù)據(jù)源,之后操作(如圖5-1)圖5-1點擊添加,運行(如圖5-2)圖5-2選擇需要添加的數(shù)據(jù)源驅(qū)動程序,本系統(tǒng)為SQLserver。選擇好驅(qū)動器后點擊完成(如圖5-3)圖5-3自己任意填寫一個數(shù)據(jù)源名稱,選擇好服務(wù)器,該服務(wù)器名與登錄SQLserver時使用的服務(wù)器名一致即可。然后點擊下一步(如圖5-4)圖5-4根據(jù)提示選好登錄方式和信息以后點擊下一步(如圖5-5)圖5-5選擇需要連接的數(shù)據(jù)庫點擊下一步(如圖5-6)圖5-6點擊完成后如下圖,點擊測試連接,若成功(如圖5-7)圖5-7以上邊配置好了數(shù)據(jù)源。下面進行數(shù)據(jù)源與程序的連接1、利用windows系統(tǒng)自帶的ADO庫文件實現(xiàn)應(yīng)用程序與數(shù)據(jù)源的連接通常首先可在C:\ProgramFiles\CommonFiles\System\ado目錄下找到msado15.dll(不同安裝目錄可能路徑不一樣,操作系統(tǒng)版本的不同可能相應(yīng)的msado15.dll文件版本不同),找到后復(fù)制粘貼到自建的應(yīng)用程序目錄下,和debug路徑相同。本系統(tǒng)是基于對話框的程序,因此可在FileView的頭文件里找到stdfax.h文件,將ADO用如下代碼導(dǎo)入到程序(鍵入到stdfax.h里):#ifdefined(ADO2_OLD)#pragmamessage("UsingADO2TLB")#import<msado15.tlb>no_namespacerename("EOF","adoEOF")#else#pragmamessage("UsingLatestADO")#import"msado15.dll"no_namespacerename("EOF","adoEOF")#endif(如圖5-7)圖5-7ADO庫導(dǎo)入后便可利用ADO庫里提供的接口開始進行鏈接和操作數(shù)據(jù)庫,具體代碼如下:_ConnectionPtrPConnection;//定義指向數(shù)據(jù)庫的指針(對象)_RecordsetPtrPRecordset;//定義指向結(jié)果集的指針(對象) ::CoInitialize(NULL);//COM接口初始化 try { UpdateData();//初始化和刷新程序窗口數(shù)據(jù) PConnection.CreateInstance("ADODB.Connection"); PConnection->Mode=adModeReadWrite;//數(shù)據(jù)庫打開模式設(shè)置 PConnection->ConnectionString=_T("DataSource=KAY-PC;Provider=SQLOLEDB.1;InitialCatalog=指定數(shù)據(jù)庫名");//設(shè)置連接字符串 HRESULThr1=PConnection->Open(_T(""),_T("sa"),_T("qwe123"),adAsyncConnect);//PConnection指向數(shù)據(jù)庫對象 AfxMessageBox("請稍后!"); if(SUCCEEDED(hr1))//測試連接是否成功 { AfxMessageBox("連接數(shù)據(jù)庫成功!"); return; } } catch(_com_error&e)//捕捉錯誤信息 { AfxMessageBox(e.ErrorMessage()); return; }操作結(jié)果集的代碼如下:try{ PRecordset.CreateInstance("ADODB.Recordset"); CStringresult; result.Format("SQL語句");//將SQL 語句用一個字符串表示//打開記錄集,PRecordset指針指向結(jié)果集PRecordset->Open((_bstr_t)result,PConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);//打開結(jié)果集 if((PRecordset->BOF)&&(PRecordset->adoEOF))//表中無記錄 { AfxMessageBox("無查詢結(jié)果!"); if(PRecordset!=NULL) PRecordset->Close();//關(guān)閉結(jié)果集PConnection->Close();//關(guān)閉數(shù)據(jù)庫連接 return; } else {//對結(jié)果集的操作if(PRecordset!=NULL) PRecordset->Close();//關(guān)閉結(jié)果集PConnection->Close();//關(guān)閉數(shù)據(jù)庫連接return; }} catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; }5.2數(shù)據(jù)庫設(shè)計5.2.1讀者信息表(如表5.1)表管理員登錄表(如表5.2)表借還人員登記表(如表5.3)表借閱信息表(如表5.4)表圖書信息表(如表5.5)表5.5六、詳細設(shè)計6.1主界面(如圖6-1)圖6-1主要代碼如下:書刊檢索:voidCBMSDlg::Ongosearch(){ //TODO:Addyourcontrolnotificationhandlercodehere //刪除列定義 for(inti=0;i<10;i++) { m_datalist.DeleteColumn(0); }m_datalist.DeleteAllItems();//清空列表內(nèi)容 m_datalist.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES); m_datalist.InsertColumn(0,"書刊號",LVCFMT_LEFT,95,0); m_datalist.InsertColumn(1,"書名",LVCFMT_LEFT,95,1); m_datalist.InsertColumn(2,"作者",LVCFMT_LEFT,95,2); m_datalist.InsertColumn(3,"出版社",LVCFMT_LEFT,95,3); m_datalist.InsertColumn(4,"出版年月",LVCFMT_LEFT,95,4); m_datalist.InsertColumn(5,"總藏數(shù)”,LVCFMT_LEFT,95,5); m_datalist.InsertColumn(6,"可借數(shù)”,LVCFMT_LEFT,95,6);//查找 //TODO:Addextravalidationhere //AfxOleInit(); _ConnectionPtrPConnection; _RecordsetPtrPRecordset; ::CoInitialize(NULL); try { UpdateData();if(m_search.GetLength()==0) { AfxMessageBox("請輸入書刊號!"); return; } ::CoInitialize(NULL);//接口初始化 PConnection.CreateInstance("ADODB.Connection"); PConnection->Mode=adModeReadWrite; //連接數(shù)據(jù)庫 PConnection->ConnectionString=_T("DataSource=KAY-PC;Provider=SQLOLEDB.1;InitialCatalog=BMSDATABASE"); //PConnection指向數(shù)據(jù)庫對象 HRESULThr1=PConnection->Open(_T(""),_T("sa"),_T("qwe123"),adAsyncConnect); AfxMessageBox("正在查詢!"); if(SUCCEEDED(hr1)) { //AfxMessageBox("連接數(shù)據(jù)庫成功!"); //return; } } catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; } try{ PRecordset.CreateInstance("ADODB.Recordset"); _bstr_tbstrSQL; CStringresult; result.Format("select*frombooks_basic_informationwherebook_no='%s'",m_search);//從編輯框獲取值m_name及對應(yīng)的sql語句//打開記錄集,PRecordset指針指向結(jié)果集PRecordset->Open((_bstr_t)result,PConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); if((PRecordset->BOF)&&(PRecordset->adoEOF))//表中無記錄 { AfxMessageBox("無檢索結(jié)果!"); if(PRecordset!=NULL) PRecordset->Close();PConnection->Close(); return; } else { while(!PRecordset->adoEOF) { m_datalist.InsertItem(0,""); m_datalist.SetItemText(0,0,(char*)(_bstr_t)PRecordset->GetCollect("book_no")); m_datalist.SetItemText(0,1,(char*)(_bstr_t)PRecordset->GetCollect("book_name")); m_datalist.SetItemText(0,2,(char*)(_bstr_t)PRecordset->GetCollect("writer")); m_datalist.SetItemText(0,3,(char*)(_bstr_t)PRecordset->GetCollect("ISBN")); m_datalist.SetItemText(0,4,(char*)(_bstr_t)PRecordset->GetCollect("pressdate")); m_datalist.SetItemText(0,5,(char*)(_bstr_t)PRecordset->GetCollect("sum_num")); m_datalist.SetItemText(0,6,(char*)(_bstr_t)PRecordset->GetCollect("remain")); PRecordset->MoveNext(); } if(PRecordset!=NULL) PRecordset->Close();PConnection->Close(); return; }} catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; } }注冊:voidCBMSDlg::Oncheckin()//界面跳轉(zhuǎn)函數(shù){ //TODO:Addyourcontrolnotificationhandlercodehere Readercheckin*pDlg=newReadercheckin;pDlg->Create(IDD_readercheckin,this);pDlg->ShowWindow(SW_SHOW); }//將注冊信息保存到數(shù)據(jù)庫voidReadercheckin::OnOK(){ //TODO:Addextravalidationhere //CDialog::OnOK(); try { ::CoInitialize(NULL);//接口初始化 UpdateData();//數(shù)據(jù)更新 if(m_name.GetLength()==0||m_password.GetLength()==0) { AfxMessageBox("用戶名或密碼不能為空!"); return; } _bstr_tbstrSQL; CStringresult; _ConnectionPtrPConnection; _RecordsetPtrPRecordset; PConnection.CreateInstance(_uuidof(Connection));//創(chuàng)建實例 PRecordset.CreateInstance(_uuidof(Recordset)); //::CoInitialize(NULL);//接口初始化 PConnection->Mode=adModeUnknown; //連接數(shù)據(jù)庫 PConnection->ConnectionString=_T("DataSource=KAY-PC;Provider=SQLOLEDB.1;InitialCatalog=BMSDATABASE"); //PConnection指向數(shù)據(jù)庫對象 PConnection->Open(_T(""),_T("sa"),_T("qwe123"),adAsyncConnect); AfxMessageBox("注冊成功!"); //打開記錄集,PRecordset指針指向結(jié)果集//HRESULThr=PRecordset->Open(bstrSQL,PConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); //從編輯框獲取值m_name及對應(yīng)的sql語句 result.Format("insertintouser_account(Username,Password)values('%s','%s')",m_name,m_password); //執(zhí)行sql語句 HRESULThr=PConnection->Execute((_bstr_t)result,NULL,adCmdText); if(SUCCEEDED(hr)) { //AfxMessageBox("注冊成功!"); if(PConnection->State)//如果連接數(shù)據(jù)庫有效PConnection->Close();//關(guān)閉數(shù)據(jù)庫PConnection=NULL;//指針值為空 ::CoUninitialize(); DestroyWindow(); return; } } catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); ::CoUninitialize(); return; }}登錄界面(如圖6-2)圖6-2實現(xiàn)代碼:voidReaderlogin::OnOK()//登錄函數(shù){ //TODO:Addextravalidationhere //CDialog::OnOK(); ::CoInitialize(NULL);////接口初始化 _ConnectionPtrPConnection; _RecordsetPtrPRecordset; try { UpdateData();if(m_sno.GetLength()==0||m_password.GetLength()==0) { AfxMessageBox("用戶名或密碼不能為空!"); ShowWindow(SW_HIDE); return; } PConnection.CreateInstance("ADODB.Connection"); PConnection->Mode=adModeReadWrite; //連接數(shù)據(jù)庫 PConnection->ConnectionString=_T("DataSource=KAY-PC;Provider=SQLOLEDB.1;InitialCatalog=BMSDATABASE"); //PConnection指向數(shù)據(jù)庫對象 HRESULThr1=PConnection->Open(_T(""),_T("sa"),_T("qwe123"),adAsyncConnect); AfxMessageBox("正在驗證身份信息!");//關(guān)鍵作用 } catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); ::CoUninitialize();//關(guān)閉 return; }try{ PRecordset.CreateInstance("ADODB.Recordset"); _bstr_tbstrSQL; CStringresult; result.Format("select*fromuser_accountwhereUsername='%s'andPassword='%s'",m_sno,m_password); //從編輯框獲取值m_name及對應(yīng)的sql語句//打開記錄集,PRecordset指針指向結(jié)果集PRecordset->Open(_bstr_t(result),PConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); if((PRecordset->BOF)&&(PRecordset->adoEOF))//表中無記錄 { AfxMessageBox("用戶名或密碼錯誤或該用戶不存在!"); ::CoUninitialize();//關(guān)閉 return; } else { if(PConnection->State)//如果連接數(shù)據(jù)庫有效PConnection->Close();//關(guān)閉數(shù)據(jù)庫PConnection=NULL;//指針值為空 ::CoUninitialize();//關(guān)閉 //DestroyWindow(); ShowWindow(SW_HIDE); Readermain*pDlg=newReadermain;//建立非模態(tài)對話框pDlg->Create(IDD_readermain,this);pDlg->ShowWindow(SW_SHOW);return; }}catch(_com_error&e){ AfxMessageBox(e.ErrorMessage()); ::CoUninitialize();//關(guān)閉 return;}}借閱用戶界面(如圖6-3)圖6-3 實現(xiàn)代碼:voidReadermain::Onbooksearch()//查詢書刊信息{ //TODO:Addyourcontrolnotificationhandlercodehere //建顯示表 //CListCtrl::DeleteColumn(); for(inti=0;i<10;i++) { m_list.DeleteColumn(0); } m_list.DeleteAllItems();//清空列表內(nèi)容 m_list.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES); m_list.InsertColumn(0,"書刊號",LVCFMT_LEFT,95,0); m_list.InsertColumn(1,"書名",LVCFMT_LEFT,95,1); m_list.InsertColumn(2,"作者",LVCFMT_LEFT,95,2); m_list.InsertColumn(3,"出版社",LVCFMT_LEFT,95,3); m_list.InsertColumn(4,"出版年月",LVCFMT_LEFT,95,4); m_list.InsertColumn(5,"總藏數(shù)",LVCFMT_LEFT,95,5); m_list.InsertColumn(6,"可借數(shù)",LVCFMT_LEFT,95,6);//查找 //TODO:Addextravalidationhere //AfxOleInit(); _ConnectionPtrPConnection; _RecordsetPtrPRecordset; ::CoInitialize(NULL); try { UpdateData();if(m_booksearch.GetLength()==0) { AfxMessageBox("請輸入書刊號!"); return; } ::CoInitialize(NULL);//接口初始化 PConnection.CreateInstance("ADODB.Connection"); PConnection->Mode=adModeReadWrite; //連接數(shù)據(jù)庫 PConnection->ConnectionString=_T("DataSource=KAY-PC;Provider=SQLOLEDB.1;InitialCatalog=BMSDATABASE"); //PConnection指向數(shù)據(jù)庫對象 HRESULThr1=PConnection->Open(_T(""),_T("sa"),_T("qwe123"),adAsyncConnect); AfxMessageBox("正在查詢!"); if(SUCCEEDED(hr1)) { //AfxMessageBox("連接數(shù)據(jù)庫成功!"); //return; } } catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; } try{ PRecordset.CreateInstance("ADODB.Recordset"); _bstr_tbstrSQL; CStringresult; result.Format("select*frombooks_basic_informationwherebook_no='%s'",m_booksearch);//從編輯框獲取值m_name及對應(yīng)的sql語句//打開記錄集,PRecordset指針指向結(jié)果集PRecordset->Open((_bstr_t)result,PConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); if((PRecordset->BOF)&&(PRecordset->adoEOF))//表中無記錄 { AfxMessageBox("無檢索結(jié)果!"); if(PRecordset!=NULL) PRecordset->Close();PConnection->Close(); return; } else { while(!PRecordset->adoEOF) { m_list.InsertItem(0,""); m_list.SetItemText(0,0,(char*)(_bstr_t)PRecordset->GetCollect("book_no")); m_list.SetItemText(0,1,(char*)(_bstr_t)PRecordset->GetCollect("book_name")); m_list.SetItemText(0,2,(char*)(_bstr_t)PRecordset->GetCollect("writer")); m_list.SetItemText(0,3,(char*)(_bstr_t)PRecordset->GetCollect("ISBN")); m_list.SetItemText(0,4,(char*)(_bstr_t)PRecordset->GetCollect("pressdate")); m_list.SetItemText(0,5,(char*)(_bstr_t)PRecordset->GetCollect("sum_num")); m_list.SetItemText(0,6,(char*)(_bstr_t)PRecordset->GetCollect("remain")); PRecordset->MoveNext(); } if(PRecordset!=NULL) PRecordset->Close();PConnection->Close(); return; }} catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; } }voidReadermain::Onborrowkeep()//保存續(xù)借操作{ //TODO:Addextravalidationhere //AfxOleInit(); _ConnectionPtrPConnection; _RecordsetPtrPRecordset; _RecordsetPtrpr; ::CoInitialize(NULL); try { UpdateData(); ::CoInitialize(NULL);//接口初始化 PConnection.CreateInstance("ADODB.Connection"); PConnection->Mode=adModeReadWrite; //連接數(shù)據(jù)庫 PConnection->ConnectionString=_T("DataSource=KAY-PC;Provider=SQLOLEDB.1;InitialCatalog=BMSDATABASE"); //PConnection指向數(shù)據(jù)庫對象 HRESULThr1=PConnection->Open(_T(""),_T("sa"),_T("qwe123"),adAsyncConnect); AfxMessageBox("確定續(xù)借?"); } catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; } try{ PRecordset.CreateInstance("ADODB.Recordset"); pr.CreateInstance("ADODB.Recordset"); _bstr_tbstrSQL; CStringresult; CStringitem; CStringitem1; CStringitem2; CStringitem3; CStringitem4; CStringitem5; CStringitem6;//清除修改前數(shù)據(jù)庫相關(guān)內(nèi)容 result.Format("deletefromborrow_informationwhereuser_num='%s'",m_sno); HRESULThr1=pr->Open((_bstr_t)result,PConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);//執(zhí)行SQL語句 //AfxMessageBox("續(xù)借成功!"); //將表格數(shù)據(jù)插入到數(shù)據(jù)庫操作for(inti=0;i<row;i++) {item1=m_list.GetItemText(i,0); item2=m_list.GetItemText(i,1); item3=m_list.GetItemText(i,2); item4=m_list.GetItemText(i,3); item5=m_list.GetItemText(i,4); item6=m_list.GetItemText(i,5); item.Format("insertintoborrow_information(book_no,book_name,borrow_date,return_date,outofdate,user_num,renew)values('%s','%s','%s','%s','%s','%s','%s')",item1,item2,item3,item4,item5,m_sno,item6);//SQL語句 PRecordset->Open((_bstr_t)item,PConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);//執(zhí)行SQL語句 }AfxMessageBox("續(xù)借成功!");return;} catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; } }voidReadermain::Onborrowinformation()//查詢借閱信息{ //TODO:Addyourcontrolnotificationhandlercodehere //建顯示表 for(inti=0;i<10;i++) { m_list.DeleteColumn(0); } m_list.DeleteAllItems();//清空列表內(nèi)容 m_list.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES); m_list.InsertColumn(0,"書刊號",LVCFMT_LEFT,95,0); m_list.InsertColumn(1,"書名",LVCFMT_LEFT,95,1); m_list.InsertColumn(2,"借閱日期",LVCFMT_LEFT,95,2); m_list.InsertColumn(3,"歸還日期",LVCFMT_LEFT,95,3); m_list.InsertColumn(4,"距離歸還天數(shù)",LVCFMT_LEFT,95,4); m_list.InsertColumn(5,"續(xù)借否",LVCFMT_LEFT,95,5);//查找 //TODO:Addextravalidationhere //AfxOleInit(); _ConnectionPtrPConnection; _RecordsetPtrPRecordset; ::CoInitialize(NULL); try { UpdateData(); ::CoInitialize(NULL);//接口初始化 PConnection.CreateInstance("ADODB.Connection"); PConnection->Mode=adModeReadWrite; //連接數(shù)據(jù)庫 PConnection->ConnectionString=_T("DataSource=KAY-PC;Provider=SQLOLEDB.1;InitialCatalog=BMSDATABASE"); //PConnection指向數(shù)據(jù)庫對象 HRESULThr1=PConnection->Open(_T(""),_T("sa"),_T("qwe123"),adAsyncConnect); AfxMessageBox("正在查詢!"); } catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; } try{ PRecordset.CreateInstance("ADODB.Recordset"); _bstr_tbstrSQL; CStringresult; result.Format("select*fromborrow_informationwhereuser_num='%s'",m_sno);//從編輯框獲取值m_name及對應(yīng)的sql語句//打開記錄集,PRecordset指針指向結(jié)果集 PRecordset->Open((_bstr_t)result,PConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); if((PRecordset->BOF)&&(PRecordset->adoEOF))//表中無記錄 { AfxMessageBox("無檢索結(jié)果!"); if(PRecordset!=NULL) PRecordset->Close();PConnection->Close(); return; } else { //獲取結(jié)果集的行數(shù) row=0; while(!PRecordset->adoEOF) { m_list.InsertItem(0,""); m_list.SetItemText(0,0,(char*)(_bstr_t)PRecordset->GetCollect("book_no")); m_list.SetItemText(0,1,(char*)(_bstr_t)PRecordset->GetCollect("book_name")); m_list.SetItemText(0,2,(char*)(_bstr_t)PRecordset->GetCollect("borrow_date")); m_list.SetItemText(0,3,(char*)(_bstr_t)PRecordset->GetCollect("return_date")); m_list.SetItemText(0,4,(char*)(_bstr_t)PRecordset->GetCollect("outofdate")); m_list.SetItemText(0,5,(char*)(_bstr_t)PRecordset->GetCollect("renew")); m_list.SetEditColomn(5,TRUE);//允許第5列可直接編輯row=row+1;//行計數(shù) PRecordset->MoveNext(); } if(PRecordset!=NULL) PRecordset->Close();PConnection->Close(); return; }} catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; }}管理員界面(如圖6-4)圖6-4主要代碼://以查詢和修改借閱者個人信息為例,其余功能代碼只需修改參數(shù)voidManagermain::OnMbutton1(){ //TODO:Addyourcontrolnotificationhandlercodehere //TODO:Addyourcontrolnotificationhandlercodehere //TODO:Addyourcontrolnotificationhandlercodehere //建顯示表 for(inti=0;i<10;i++) { m_managerlist.DeleteColumn(0); } m_managerlist.DeleteAllItems();//清空列表內(nèi)容 m_managerlist.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES); m_managerlist.InsertColumn(0,"學(xué)號",LVCFMT_LEFT,95,0); m_managerlist.InsertColumn(1,"姓名",LVCFMT_LEFT,95,1); m_managerlist.InsertColumn(2,"性別",LVCFMT_LEFT,95,2); m_managerlist.InsertColumn(3,"學(xué)院",LVCFMT_LEFT,95,3); m_managerlist.InsertColumn(4,"年級",LVCFMT_LEFT,95,4); m_managerlist.InsertColumn(5,"專業(yè)",LVCFMT_LEFT,95,5);//查找 //TODO:Addextravalidationhere //AfxOleInit(); _ConnectionPtrPConnection; _RecordsetPtrPRecordset; ::CoInitialize(NULL); try { UpdateData(); ::CoInitialize(NULL);//接口初始化 PConnection.CreateInstance("ADODB.Connection"); PConnection->Mode=adModeReadWrite; //連接數(shù)據(jù)庫 PConnection->ConnectionString=_T("DataSource=KAY-PC;Provider=SQLOLEDB.1;InitialCatalog=BMSDATABASE"); //PConnection指向數(shù)據(jù)庫對象 HRESULThr1=PConnection->Open(_T(""),_T("sa"),_T("qwe123"),adAsyncConnect); AfxMessageBox("正在查詢!"); if(SUCCEEDED(hr1)) { //AfxMessageBox("連接數(shù)據(jù)庫成功!"); //return; } } catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; } try{ PRecordset.CreateInstance("ADODB.Recordset"); _bstr_tbstrSQL; CStringresult; result.Format("select*fromuser_informationwhereuser_sno='%s'",m_editsno);//從編輯框獲取值m_name及對應(yīng)的sql語句//打開記錄集,PRecordset指針指向結(jié)果集PRecordset->Open((_bstr_t)result,PConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText); if((PRecordset->BOF)&&(PRecordset->adoEOF))//表中無記錄 { AfxMessageBox("無查詢結(jié)果!"); if(PRecordset!=NULL) PRecordset->Close();PConnection->Close(); return; } else { while(!PRecordset->adoEOF) { m_managerlist.InsertItem(0,""); m_managerlist.SetItemText(0,0,(char*)(_bstr_t)PRecordset->GetCollect("user_sno")); m_managerlist.SetItemText(0,1,(char*)(_bstr_t)PRecordset->GetCollect("user_name")); m_managerlist.SetItemText(0,2,(char*)(_bstr_t)PRecordset->GetCollect("user_sex")); m_managerlist.SetItemText(0,3,(char*)(_bstr_t)PRecordset->GetCollect("user_college")); m_managerlist.SetItemText(0,4,(char*)(_bstr_t)PRecordset->GetCollect("user_year")); m_managerlist.SetItemText(0,5,(char*)(_bstr_t)PRecordset->GetCollect("user_major")); m_managerlist.SetEditColomn(0,TRUE);//允許第0列可直接編輯m_managerlist.SetEditColomn(1,TRUE);//允許第1列可直接編輯m_managerlist.SetEditColomn(2,TRUE);//允許第2列可直接編輯 m_managerlist.SetEditColomn(3,TRUE);//允許第0列可直接編輯m_managerlist.SetEditColomn(4,TRUE);//允許第1列可直接編輯m_managerlist.SetEditColomn(5,TRUE);//允許第2列可直接編輯 PRecordset->MoveNext(); } if(PRecordset!=NULL) PRecordset->Close();PConnection->Close(); return; }} catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; } }添加和刪除功能代碼:voidManagermain::Ondeleteandaddbook()//增加和刪除借閱者記錄{ //TODO:Addyourcontrolnotificationhandlercodehere Del_Add_reader*pDlg=newDel_Add_reader;pDlg->Create(IDD_Del_Add_reader,this);pDlg->ShowWindow(SW_SHOW); }voidDel_Add_reader::OnDelborrow()//刪除借閱記錄{ //TODO:Addyourcontrolnotificationhandlercodehere _ConnectionPtrPConnection; _RecordsetPtrPRecordset; ::CoInitialize(NULL); CStringresult; try { UpdateData(); ::CoInitialize(NULL);//接口初始化 PConnection.CreateInstance("ADODB.Connection"); PRecordset.CreateInstance("ADODB.Recordset"); PConnection->Mode=adModeReadWrite; //連接數(shù)據(jù)庫 PConnection->ConnectionString=_T("DataSource=KAY-PC;Provider=SQLOLEDB.1;InitialCatalog=BMSDATABASE"); //PConnection指向數(shù)據(jù)庫對象 PConnection->Open(_T(""),_T("sa"),_T("qwe123"),adAsyncConnect); AfxMessageBox("正在刪除!"); result.Format("deletefromborrow_informationwherebook_no='%s'anduser_num='%s'",m_book_no,m_no); HRESULThr1=PRecordset->Open((_bstr_t)result,PConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);//執(zhí)行SQL語句if(SUCCEEDED(hr1))AfxMessageBox("刪除成功!"); DestroyWindow(); } catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; } }voidDel_Add_reader::OnAddborrow()//添加借閱記錄{ //TODO:Addyourcontrolnotificationhandlercodehere _ConnectionPtrPConnection; _RecordsetPtrPRecordset; ::CoInitialize(NULL); CStringresult; try { UpdateData(); ::CoInitialize(NULL);//接口初始化 PConnection.CreateInstance("ADODB.Connection"); PRecordset.CreateInstance("ADODB.Recordset"); PConnection->Mode=adModeReadWrite; //連接數(shù)據(jù)庫 PConnection->ConnectionString=_T("DataSource=KAY-PC;Provider=SQLOLEDB.1;InitialCatalog=BMSDATABASE"); //PConnection指向數(shù)據(jù)庫對象 PConnection->Open(_T(""),_T("sa"),_T("qwe123"),adAsyncConnect); AfxMessageBox("正在添加!"); result.Format("insertintoborrow_information(book_no,book_name,borrow_date,return_date,outofdate,user_num,renew)values('%s','%s','%s','%s','%s','%s','%s')",m_book_no,m_book_name,m_borrow_date,m_return_date,m_outofdate,m_no,m_renew); HRESULThr1=PRecordset->Open((_bstr_t)result,PConnection.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);//執(zhí)行SQL語句if(SUCCEEDED(hr1))AfxMessageBox("添加成功!"); DestroyWindow(); } catch(_com_error&e) { AfxMessageBox(e.ErrorMessage()); return; }}借閱登記人員界面(如圖6-5)圖6-5其功能代碼與前面操作基本相同六、總結(jié)1、關(guān)于系統(tǒng)。本身是一個很普通的系統(tǒng),但是學(xué)到的卻不少,讓自己進一步的了解C++面向?qū)ο缶幊桃矊φZ言進一步熟悉。2、關(guān)于遇到的問題,由于此前沒有做過相對完整的項目,這次課程設(shè)計的過程中遇到了不少問題,甚至剛開始還不知道怎么上手做,但是借助圖書館和網(wǎng)絡(luò)上的資料,大家建言獻策,還是把問題一步一步解決了。3、關(guān)于學(xué)習(xí)本身,從接到課程設(shè)計要求到最終做出項目,這中間是一個漫長的探索過程,我的體會是,面對新知識要積極,面對問題要堅持?;贑8051F單片機直流電動機反饋控制系統(tǒng)的設(shè)計與研究基于單片機的嵌入式Web服務(wù)器的研究MOTOROLA單片機MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統(tǒng)的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機控制的二級倒立擺系統(tǒng)的研究基于增強型51系列單片機的TCP/IP協(xié)議棧的實現(xiàn)基于單片機的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機的交流伺服電機運動控制系統(tǒng)研究與開發(fā)基于單片機的泵管內(nèi)壁硬度測試儀的研制基于單片機的自動找平控制系統(tǒng)研究基于C8051F040單片機的嵌入式系統(tǒng)開發(fā)基于單片機的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機實現(xiàn)一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設(shè)計基于單片機控制的高速快走絲電火花線切割機床短循環(huán)走絲方式研究基于單片機的機電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機的智能手機充電器基于單片機的實時內(nèi)核設(shè)計及其應(yīng)用研究基于單片機的遠程抄表系統(tǒng)的設(shè)計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制\t"_blank
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年大蒜精油原料供應(yīng)鏈金融合作協(xié)議3篇
- 2024年度跨境電商預(yù)付款擔(dān)保合同范本3篇
- 2024年標(biāo)準樁基施工協(xié)議模板版B版
- 2024年度食品行業(yè)員工聘用合同(含食品安全責(zé)任)3篇
- 2024年單位福利房產(chǎn)權(quán)轉(zhuǎn)讓及后續(xù)管理合同3篇
- 2024雙方科技研發(fā)項目融資擔(dān)保服務(wù)協(xié)議3篇
- 2024年度科技創(chuàng)新項目招標(biāo)代理合作協(xié)議3篇
- 2024年度金融機構(gòu)資產(chǎn)配置委托理財協(xié)議3篇
- 2024宅基地轉(zhuǎn)讓與土地資源儲備及開發(fā)利用合同3篇
- 2024年度智慧社區(qū)運營人力外包合同范本2篇
- 模擬集成電路設(shè)計智慧樹知到期末考試答案章節(jié)答案2024年廣東工業(yè)大學(xué)
- 2024年江蘇省安全員A證試題題庫
- 2024年全國高考物理電學(xué)實驗真題(附答案)
- 污泥處置服務(wù)保障措施
- 2024中國雄安集團有限公司招聘筆試參考題庫附帶答案詳解
- 預(yù)防性維護課件
- 貴州省黔東南州2023-2024學(xué)年九年級上學(xué)期期末道德與法治試題
- 感動中國人物錢七虎
- 咨詢心理學(xué)專題題庫
- 物業(yè)小區(qū)物業(yè)服務(wù)費三方監(jiān)管實施方案
- 機械原理課程設(shè)計-高位自卸汽車的設(shè)計
評論
0/150
提交評論