C++ MFC人事管理系统
MFC:Microsoft Foundation Classes (微軟基礎類庫)
基本思路:
使用Microsoft Access建立數據庫,然后使用VS2015其進行連接與一些基本操作:
顯示、增加、刪除、排序、篩選
<文章最后會給出本工程文件壓縮包的下載地址>
************************************************************************************************************************************
?
?一:運行結果示范
1> 基本界面:
2> 增加記錄
3> 刪除記錄(直接刪除當前的數據,并移到下一個數據)
4>?排序(按照基本工資)
5> 篩選記錄(按照基本工資篩選)
?
?
?
二:具體操作步驟
1> 使用Microsoft Access建立基本數據庫
?
2> 為表格配置數據源(ODBC)
*?開放數據庫連接(Open Database Connectivity,ODBC)
控制面板 -> 管理工具(在系統與安全中,如果找不到直接在控制面板頁面搜索即可) -> 雙擊數據源 -> 點擊添加(如圖所示)
然后選擇剛剛創建的數據庫文件( .accdb )?,然后填上數據源名點擊確定
到此,已經完成了數據源的配置(已經做好了讓VS連接Access的準備)
?
3> 新建MFC程序
選擇單個文檔:
然后下一步直到以下界面:
然后點擊下一步,找到自己剛剛創建的數據庫文件:
然后會再跳出這個頁面,繼續選擇剛剛的數據庫文件,點擊確定:
在跳出一個警告框后,就會在你的數據庫文件同名目錄下新建一個數據源文件:
選擇數據庫中的表,即可完成這一步的配置:
然后直接點擊完成,后面的設置直接默認:(這里有一個安全問題的警告會后面在解決)
?
4> 窗體界面的打開與構建
使用VS主界面最右側的工具箱進行添加(如果沒有工具箱,視圖-> 工具箱打開)
設置成果圖:
?
5> 為每個編輯框綁定數據源
(將數據庫中的數據和編輯框中需要顯示的數據進行關聯,方便修改與顯示)
1.首先右鍵編輯框,對每個數據框進行改名:
2.全部改名完成后,使用代碼將二者進行綁定
代碼部分:
void C人事管理系統View::DoDataExchange(CDataExchange* pDX) {CRecordView::DoDataExchange(pDX);// 可以在此處插入 DDX_Field* 函數以將控件“連接”到數據庫字段,例如// DDX_FieldText(pDX, IDC_MYEDITBOX, m_pSet->m_szColumn1, m_pSet);// DDX_FieldCheck(pDX, IDC_MYCHECKBOX, m_pSet->m_bColumn2, m_pSet);// 有關詳細信息,請參閱 MSDN 和 ODBC 示例DDX_FieldText(pDX, IDC_EDIT_JL, m_pSet->column_JL, m_pSet);DDX_FieldText(pDX, IDC_EDIT_ZGBH, m_pSet->column_ZGBH, m_pSet);DDX_FieldText(pDX, IDC_EDIT_ZGNL, m_pSet->column_ZGNL, m_pSet);DDX_FieldText(pDX, IDC_EDIT_ZGXB, m_pSet->column_ZGXB, m_pSet);DDX_FieldText(pDX, IDC_EDIT_GZSJ, m_pSet->column_GZSJ, m_pSet);DDX_FieldText(pDX, IDC_EDIT_SZBM, m_pSet->column_SZBM, m_pSet);DDX_FieldText(pDX, IDC_EDIT_Salary, m_pSet->column_JBGZ, m_pSet);DDX_FieldText(pDX, IDC_EDIT_ZGXM, m_pSet->column_ZGXM, m_pSet);DDX_FieldText(pDX, IDC_EDIT_ZC, m_pSet->column_ZC, m_pSet); }綁定的時候,第二個參數是編輯框的ID,第三個參數是數據庫的表中的列名,列名默認為column1~n,可以在以下頭文件中修改:
代碼部分:
long column_ZGBH;CStringW column_ZGXM;CStringW column_ZGXB;CStringW column_SZBM;long column_ZGNL;CStringW column_GZSJ; //這里設置為時間總是一大堆bug,將時間類型改為CStringW類型也OKlong column_JBGZ;CStringW column_ZC;CStringW column_JL;3.修改錯誤部分,并初步運行顯示數據庫數據
雙擊該錯誤進行定位,然后將其注釋掉:
至此,已經可以初步顯示并進行修改了(修改后的數據會直接同步到數據庫中)?
?
?
六:實現記錄的增加
<本篇文章將使用彈出一個新的窗體的方式來實現數據庫中數據的增加,因為不使用這種方法,會產生各種各樣的Bug>
1.右鍵新建一個窗體并對其進行一系列操作
復制第一個窗體的空間到這里來:
為新建的窗體添加一個類:
?
2.打開ADD.h,添加公有數據成員:
代碼部分:
long column_ZGBH;CStringW column_ZGXM;CStringW column_ZGXB;CStringW column_SZBM;long column_ZGNL;CStringW column_GZSJ; //這里設置為時間總是一大堆bug,將時間類型改為CStringW類型也OKlong column_JBGZ;CStringW column_ZC;CStringW column_JL;再打開ADD.cpp文件(注意要在該文件中包含ADD.h頭文件)
代碼部分:
void ADD::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT_JL, column_JL);DDX_Text(pDX, IDC_EDIT_ZGBH, column_ZGBH);DDX_Text(pDX, IDC_EDIT_ZGNL, column_ZGNL);DDX_Text(pDX, IDC_EDIT_ZGXB, column_ZGXB);DDX_Text(pDX, IDC_EDIT_GZSJ, column_GZSJ); DDX_Text(pDX, IDC_EDIT_SZBM, column_SZBM);DDX_Text(pDX, IDC_EDIT_Salary, column_JBGZ);DDX_Text(pDX, IDC_EDIT_ZGXM, column_ZGXM);DDX_Text(pDX, IDC_EDIT_ZC, column_ZC);//下面的函數聲明只能對于數據庫元框架有效,對于額外定義的窗體,可以使用上面的方式//DDX_FieldText(pDX, IDC_EDIT_JL, m_pSet->column_JL, m_pSet);//DDX_FieldText(pDX, IDC_EDIT_ZGBH, m_pSet->column_ZGBH, m_pSet);//DDX_FieldText(pDX, IDC_EDIT_ZGNL, m_pSet->column_ZGNL, m_pSet);//DDX_FieldText(pDX, IDC_EDIT_ZGXB, m_pSet->column_ZGXB, m_pSet);//DDX_FieldText(pDX, IDC_EDIT_GZSJ, m_pSet->column_GZSJ, m_pSet);//DDX_FieldText(pDX, IDC_EDIT_SZBM, m_pSet->column_SZBM, m_pSet);//DDX_FieldText(pDX, IDC_EDIT_Salary, m_pSet->column_JBGZ, m_pSet);//DDX_FieldText(pDX, IDC_EDIT_ZGXM, m_pSet->column_ZGXM, m_pSet);//DDX_FieldText(pDX, IDC_EDIT_ZC, m_pSet->column_ZC, m_pSet); }3.雙擊主窗體的“增加記錄”Button進入相應單擊事件代碼區域:
代碼部分:
void C人事管理系統View::OnBnClickedButtonAdd() {// TODO: 在此添加控件通知處理程序代碼ADD add;if (add.DoModal() == IDOK){m_pSet->AddNew();m_pSet->column_GZSJ = add.column_GZSJ;m_pSet->column_ZGXM = add.column_ZGXM;m_pSet->column_ZGXB = add.column_ZGXB;m_pSet->column_ZGNL = add.column_ZGNL;m_pSet->column_JL = add.column_JL;m_pSet->column_ZC = add.column_ZC;m_pSet->column_JBGZ = add.column_JBGZ;m_pSet->column_SZBM = add.column_SZBM;m_pSet->column_ZGBH = add.column_ZGBH;//這兩個用來更新數據庫中顯示的內容并重新提取數據m_pSet->Update();m_pSet->Requery();//數據移動到最后一個m_pSet->MoveLast();//更新顯示視圖UpdateData(FALSE);} }到這里已經可以實現數據庫中的記錄的增加了(運行截圖就像文章開頭那樣)~
<到這里一路上一定會遇到各種各樣Bug,有的可能沒有解決,在文章最后會附上工程關鍵文件源碼下載地址,選擇使用>
?
?
七:實現記錄的刪除
void C人事管理系統View::OnBnClickedButtonDelete() {// TODO: 在此添加控件通知處理程序代碼m_pSet->Delete();m_pSet->MoveNext();if (m_pSet->IsEOF()){m_pSet->MoveLast();}if (m_pSet->IsEOF()){m_pSet->SetFieldNull(NULL);}UpdateData(FALSE);}?
?
八:實現記錄的篩選
1> 首先新建一個窗體,為添加相應的類,在新定義頭文件所對應的.cpp文件中進行編輯框與數據的綁定?
綁定代碼部分:
void SELECT::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT_SELECT, search_value); //選框與數據變量的綁定 }?
?
九:實現記錄的排序
雙擊主窗體的"排序記錄"Button:
void C人事管理系統View::OnBnClickedButtonSort() //按照基本工資排序 {// TODO: 在此添加控件通知處理程序代碼m_pSet->m_strSort = "基本工資";m_pSet->Requery();UpdateData(FALSE); }?
?
?
?
十:完整源碼(下載地址)
https://download.csdn.net/download/qq_42292831/10869046
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的C++ MFC人事管理系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记DL007:Moore-Penr
- 下一篇: select 和epoll模型区别