




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
在這個例字中我還是米用了自己更為熟悉的ODBC。程序的實現有兩個關鍵地方:一、ODBC兩個類的運用。二、LISTCONTROL控件的使用。程序的視圖用CRecordView類,具體配置可以參考源程序。程序的實現主要在視圖文件中完成,實現的功能有:增加記錄、刪除記錄、修改記錄、排序記錄、查尋記錄,并且在控件表格中直觀的顯示。本程序采用的是AECESS數據庫,當然也可采用。RACLE等其它數據庫。整個程序的界面簡潔、直觀(見下圖)。i數學■東芹勇莉剛紅旦海林毅海風H李王陳襤郝王王劉王80SOi數學■東芹勇莉剛紅旦海林毅海風H李王陳襤郝王王劉王80SO90SQ70□0909080SO909080TO707085SB下面介紹具體步驟:首先根據數據庫的內容確定表格的樣式,這里如下設計:在視圖頭文件中給ListControl控件加入Contrl變量m_ListCtrl。在實現文件的OnInitialUpdate()函數中加入如下語句://設表格表題和列的寬度m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);m_ListCtrl.InsertColumn(0,_T(〃學號〃),LVCFMT_IMAGE|LVCFMT_LEFT);m_ListCtrl.InsertColumn(1,_T(〃姓名〃));m_ListCtrl.InsertColumn(2,_T(〃數學〃));m_ListCtrl.InsertColumn(3,_T(〃英語〃));intj;for(j=0;j<4;j++)(m_ListCtrl.SetColumnWidth(j,90);}這樣列表題就設置好,同時設置列的寬度。還要特別注意的一點,要在ListControl控件的屬性頁Styles中設report屬性。因為程序一運行時,要求所有記錄都顯示出來所以接著增加了一個Show()函數,為了它的重用性,我對它進行了封裝。在后面的程序中大家可以看到它的好處。Show()函數如下:intCLhwyView::Show()(inti=0;m_pSet->MoveFirst();do(CStrings;s.Format(〃%d〃,m_pSet->m_column1);m_ListCtrl.InsertItem(i,s,0);m_ListCtrl.SetItemText(i,1,m_pSet->m_column2);s.Format(〃%d〃,m_pSet->m_column3);m_ListCtrl.SetItemText(i,2,s);s.Format(〃%d〃,m_pSet->m_column4);m_ListCtrl.SetItemText(i,3,s);i++;m_pSet->MoveNext();}while(!m_pSet->IsEOF());m_pSet->MoveFirst();returni;}這樣整個程序初始化的工作就基本完成。因為數據庫中域用的是漢字,所以記錄集中出現了奇怪的m_column變量。如果用的是英文,就不會出現這種不直觀的現象。這里m_column1對應數據庫中的學號,m_column2對應數據庫中的姓名,其它依次類推。在數據庫中我把姓名字段的數據類型設為文本,其余設為數字。而ListControl控件只顯示文本。所以在顯示以前把不是文本的變量都用Format()函數進行了文本格式化。為了實現程序的基本功能,在視圖上增加了五個按鈕,在視圖實現文件中對按鈕響應。五個函數如下://增加記錄voidCLhwyView::OnAdd()(//TODO:AddyourcontrolnotificationhandlercodehereCAddDialogdlg;if(dlg.DoModal()==IDOK)(if(dlg.m_Xuehao==0)(AfxMessageBox("學號不可為零!〃);}else(m_pSet->AddNew();m_pSet->m_column1=dlg.m_Xuehao;m_pSet->m_column2=dlg.m_strName;m_pSet->m_column3=dlg.m_Maths;m_pSet->m_column4=dlg.m_English;m_pSet->Update();m_pSet->Requery();m_pSet->MoveLast();CStrings;s.Format(〃%d〃,dlg.m_Xuehao);m_ListCtrl.InsertItem(0,s,0);m_ListCtrl.SetItemText(0,1,dlg.m_strName);s.Format(〃%d〃,dlg.m_Maths);m_ListCtrl.SetItemText(0,2,s);s.Format(〃%d〃,dlg.m_English);m_ListCtrl.SetItemText(0,3,s);}}m_pSet->MoveFirst();}〃刪除記錄voidCLhwyView::OnDelect()(//TODO:AddyourcontrolnotificationhandlercodehereCDeleteDialogdlg;if(dlg.DoModal()==IDOK)(if(dlg.m_Password!=1234)AfxMessageBox(〃你沒有權限刪除記錄!請重輸入密碼:〃);else(BOOLb=FALSE;m_pSet->MoveFirst();do(if(dlg.m_Xuehao!=m_pSet->m_column1)m_pSet->MoveNext();else(m_ListCtrl.DeleteAllItems();b=TRUE;m_pSet->Delete();m_pSet->Requery();this->Show();m_pSet->MoveFirst();break;}}while(!m_pSet->IsEOF());if(b==FALSE)AfxMessageBox(〃沒有此記錄〃);}}}〃查尋記錄voidCLhwyView::OnFind()(//TODO:AddyourcontrolnotificationhandlercodehereBOOLk=FALSE;CFindDialogdlg;if(dlg.DoModal()==IDOK)(m_pSet->MoveFirst();m_ListCtrl.DeleteAllItems();do(if(dlg.m_Maths!=m_pSet->m_column3)m_pSet->MoveNext();elsek=TRUE;CStrings;s.Format(〃%d〃,m_pSet->m_column1);m_ListCtrl.InsertItem(0,s);m_ListCtrl.SetItemText(0,1,m_pSet->m_column2);s.Format(〃%d〃,m_pSet->m_column3);m_ListCtrl.SetItemText(0,2,s);s.Format(〃%d〃,m_pSet->m_column3);m_ListCtrl.SetItemText(0,3,s);m_pSet->MoveNext();}}while(!m_pSet->IsEOF());if(k==FALSE)AfxMessageBox(〃沒有符和條件的記錄〃);}}〃修改記錄voidCLhwyView::OnEdit()(//TODO:AddyourcontrolnotificationhandlercodehereCEditDialogdlg;if(dlg.DoModal()==IDOK)(if(dlg.m_Password!=1234)AfxMessageBox(〃你沒有權限更改記錄!請重輸入密碼:〃);else(BOOLb=FALSE;m_pSet->MoveFirst();do(if(dlg.m_Xuehao!=m_pSet->m_column1)m_pSet->MoveNext();else(m_ListCtrl.DeleteAllItems();m_pSet->Edit();b=TRUE;m_pSet->m_column1=dlg.m_Xuehao;m_pSet->m_column2=dlg.m_strName;m_pSet->m_column3=dlg.m_Maths;m_pSet->m_column4=dlg.m_English;m_pSet->Update();m_pSet->Requery();this->Show();m_pSet->MoveFirst();break;}}while(!m_pSet->IsEOF());if(b==FALSE)AfxMessageBox(〃沒有此記錄〃);}}}〃取全部記錄voidCLhwyView::OnAll()(m_ListCtrl.DeleteAllItems();this->Show();}〃排序記錄voidCLhwyView::OnSort()(m_ListCtrl.DeleteAllItems();m_pSet->m_strSort="[學號]〃;m_pSet->Requery();this->Show();}因為在查尋記錄后,有時需要看所有記錄。所以增加了一個onAll()函數用來顯示所有記錄。在修改記錄和刪除記錄中設置密碼(1234)必需加以確認。這樣整個程序就大致完成。對程序的界面進行了美化,可以參考源程序。特別說明:在使用程序前請先使用控制面板中的ODBC配置工具注冊ODBC數據源,選擇MicrosoftAccessDriver,數據庫選擇源程序目錄lhwy下的student數據庫。程序中對應的代碼看ClhwySet.cpp如下程序行:CStringCLhwySet::GetDefaultConnect()( 〃注冊說明return_T(〃ODBC;DSN=not");//在注冊數據源庫時,數據源名取not。當然也可換名,} 〃但程序中的not也換成同樣的名CStringCLhwySet::GetDefaultSQL()(return_T("[fen]"); 〃表名,選fen表}假如您從方便用戶的角度考慮,可以采用在程序中動態(tài)創(chuàng)建數據源,請參考VC知識庫中的這篇文章《用VisualC++程序實現設置ODBC數據源》最后這個程序還可以有許多可以完善和增強功能的地方
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)年會慶典策劃方案
- 海底兩萬里解讀科幻之旅與冒險精神
- 小學生英語啟蒙繪本讀后感
- 《數學建模與實際問題解決:高中數學教學教案》
- 市政設施維護保養(yǎng)手冊
- 簡明工作流程教程與操作指南
- 企業(yè)員工滿意度調查分析報告
- 鄉(xiāng)村農田水系生態(tài)修復項目合作協議
- 公司聯合市場推廣協議
- 品牌授權合作協議細則內容
- JGJT46-2024《施工現場臨時用電安全技術標準》條文解讀
- 駕照體檢表完整版本
- 工程造價三級復核
- 皮膚性病學課件:濕疹皮炎
- 綠化養(yǎng)護重點難點分析及解決措施
- 一體化學工服務平臺、人事管理系統(tǒng)、科研管理系統(tǒng)建設方案
- 市場營銷學課后習題與答案
- 嚇數基礎知識共20
- 常暗之廂(7規(guī)則-簡體修正)
- 10kV變電所設備檢修內容與周期表
- 井控系統(tǒng)操作維護與保養(yǎng)規(guī)程
評論
0/150
提交評論