freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)庫課程設(shè)計人事管理系統(tǒng)-在線瀏覽

2025-05-30 06:51本頁面
  

【正文】 口,子框架窗口可包含文檔類和相關(guān)的視圖,如果使用文檔類,MDI文檔模板類CMultiDocTemplate將為文檔類和視圖之間提供方便的聯(lián)系,可簡化編程的工作量。MDI界面可以方便地在各個子窗口之間切換。在這里,用AppWizard生成程序框架,且手工加入數(shù)據(jù)庫支持。其余均采用默認(rèn)配置。由于子框架類CChildFrame中自動創(chuàng)建CChildView類,而此類并非所需,因此在程序中將不用CChildFrame和CChildView類,而創(chuàng)建自己的子框架和視圖。本程序數(shù)據(jù)庫的操作是通過MFC的ODBC類實現(xiàn)的。因本程序只需要連接一個數(shù)據(jù)庫,所以定義了一個CDatabase型的全局變量db,一次性的打開和關(guān)閉數(shù)據(jù)庫,方便程序的編寫。在菜單編輯器中打開的設(shè)計窗口如圖36所示。因本例中沒有用默認(rèn)的子框架,所以將IDR_TESTTYPE菜單刪去,同時重新編輯IDR_MAINFRAME菜單,菜單屬性設(shè)置如表311所示。S系統(tǒng)連接IDID_SYSTEM_CONNECTCaptionamp。D斷開連接\tF3Prompt斷開當(dāng)前連接分割線選中SEPARATOR屬性退出IDID_APP_EXITCaptionamp。M人事管理增加新員工IDID_MANAGE_ADDCaptionamp。C人事變動Prompt記錄員工的職位變動查詢修改IDID_MANAGER_SEARCHCaptionamp。W窗口重疊排列IDID_WINDOW_CASCADECaptionamp。H水平平鋪Prompt水平排列窗口垂直平鋪IDID_WINDOW_TILE_VERTCaptionamp。M最小化所有窗口Prompt將所有窗口最小化幫助Captionamp。A關(guān)于…\tF1Prompt本程序的說明其中,“退出”、“重疊排序”、“水平平鋪”、“垂直平鋪”和“關(guān)于”菜單項用了系統(tǒng)的標(biāo)準(zhǔn)ID,其功能已由MFC實現(xiàn),無需另外編程。本程序創(chuàng)建的工具條如圖37所示,其中工具條各按鈕的ID分別對應(yīng)相應(yīng)的菜單項,按從左到右的次序?qū)?yīng)的菜單項ID如表312所示。首先用增加一個資源ID:ID_INDICATOR_LOGIN,添加此ID至其列表,程序如下:Static UNIT indicators[]={ID_SEPARATOR, //status line indicatorID_INDICATOR_LOGIN, //登錄狀態(tài)ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,}。CTheChildFrame *m_pAdd,*m_pChange,*m_pSearch。 //登陸狀態(tài)BOOL m_bltemAdd,m_blItemChange,m_bltemSearch。 // 根據(jù)登錄狀態(tài)改變菜單項和工具欄相應(yīng)按鈕狀態(tài)}void CMainFrame::OnUpdateSystemDisconnect(CCmdUI* pCmdUI) { pCmdUIEnable(m_bLogin)。 // 根據(jù)m_bItemAdd改變菜單項和工具欄相應(yīng)按鈕狀態(tài)}void CMainFrame::OnUpdateManagerSearch(CCmdUI* pCmdUI) { pCmdUIEnable(m_bItemSearch)。 }CMainFrame類的構(gòu)造函數(shù)中需要初始化一些變量。 // 缺省未登錄 m_bItemAdd=FALSE。 // 人事變動功能缺省為不可用 m_bItemSearch=FALSE。 // 初始化為空}各菜單的Command事件處理代碼如下:void CMainFrame::OnSystemConnect() { CLoginDlg dlg。 // 已登錄 m_bItemAdd=TRUE。 // 開放人事變動功能 m_bItemSearch=TRUE。 }}void CMainFrame::OnSystemDisconnect() { ()。 if(m_pChange) m_pChangeDestroyWindow()。 m_bLogin=FALSE。 // 禁止增加新員工功能 m_bItemChange=FALSE。 // 禁止查詢修改功能 // 改變狀態(tài)欄 (1, 尚未登錄數(shù)據(jù)庫!請按F2登錄)。 // 根據(jù)登錄狀態(tài)改變菜單項和工具欄相應(yīng)按鈕狀態(tài)}void CMainFrame::OnUpdateSystemDisconnect(CCmdUI* pCmdUI) { pCmdUIEnable(m_bLogin)。 // 根據(jù)m_bItemAdd改變菜單項和工具欄相應(yīng)按鈕狀態(tài)}void CMainFrame::OnUpdateManagerSearch(CCmdUI* pCmdUI) { pCmdUIEnable(m_bItemSearch)。 // 根據(jù)m_bItemChange改變菜單項和工具欄相應(yīng)按鈕狀態(tài)}void CMainFrame::OnManageAdd() { // 創(chuàng)建新子框架和視 m_pAdd = new CTheChildFrame()。 =RUNTIME_CLASS(CAddView)。context )) return。 m_bItemAdd=FALSE。 CCreateContext context。 if(!m_pChangeLoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_PREFIXTITLE ,this, amp。 m_pChangeInitialUpdateFrame(NULL,TRUE)。 // 禁止人事變動功能}void CMainFrame::OnManagerSearch() { // 創(chuàng)建新子框架和視 m_pSearch = new CTheChildFrame()。 =RUNTIME_CLASS(CSearchView)。context )) return。 m_bItemSearch=FALSE。 if(m_pChange) m_pChangeShowWindow(SW_MINIMIZE)。}在程序結(jié)束時需關(guān)閉數(shù)據(jù)庫,因此需處理CMAinFrame的M_DESTROY消息。 if(()) ()。窗體創(chuàng)建后,在其上添加所需控件,最后的布局如圖38所示。主要控件類型、ID和對應(yīng)的成員變量及說明如表313所示。每次增加新成員時需要先做一些初始化工作,如設(shè)置自動生成員工號和密碼等,喲個ClassView加入初始化函數(shù)Init(),代碼如下:void CAddView::Init(){ // 清空成員變量 m_strID = _T()。 m_strName = _T()。 m_strDepartment = _T()。 m_strJob = _T()。 m_strEdulevel = _T()。 m_strSpecialty = _T()。 m_strTel = _T()。 m_strMemo = _T()。 int counter。db)。P39。 (COUNTER_VALUE, str)。counter)。 (P%05d, counter)。 // 自動產(chǎn)生員工號 m_strPasswd=str。 UpdateData(FALSE)。 // 使框架窗口大小與視圖匹配 GetParentFrame()RecalcLayout()。 GetParentFrame()SetWindowText(增加新員工)。db)。 // 設(shè)置部門下拉框所取的值為DEPARTMENT表中的值 (CRecordset::forwardOnly, select NAME from DEPARTMENT)。 (str)。 } ()。 while(!()) { (DESCRIPTION, str)。 ()。 // 設(shè)置受教育水平下拉框所取的值為EDU_LEVEL表中的值 (CRecordset::forwardOnly, select DESCRIPTION from EDU_LEVEL)。 (str)。 } ()。 // 調(diào)用初始化函數(shù)}“增加”按鈕的COMMAND消息處理如下,其中完成的記錄的添加。 int counter。db)。 // 更新數(shù)據(jù) if(()) // 姓名為空則返回 { AfxMessageBox(姓名不能為空!)。 }// 累加員工編號計數(shù)器 (CRecordset::forwardOnly, select COUNTER_VALUE from COUNTER where ID=39。)。 sscanf(str, %d, amp。 // 獲取計數(shù)值 ()。 // 計數(shù)值加1 (%d, counter)。P39。 // 執(zhí)行// 增加員工個人信息記錄 CString strPasswd,strSex,strDepID,strJobID,strEduID。 // 缺省值 // 加密密碼 strPasswd=CCrypt::Encrypt(m_strPasswd, 123)。 else strSex=F。 + m_strDepartment +39。 (ID, strDepID)。 // 得到職務(wù)代碼 (CRecordset::forwardOnly, select CODE from JOB where DESCRIPTION=39。)。 ()。 + m_strEdulevel +39。 (CODE, strEduID)。 // 寫SQL語句 strSQL=insert into PERSON(ID,PASSWD,NAME,SEX,\ BIRTHDAY,DEPARTMENT,JOB,EDU_LEVEL,SPECIALTY,\ ADDRESS,TEL,EMAIL,REMARK) \ values(39。,39。,39。,39。,39。,39。,39。,39。,39。,39。,39。,39。,39。)。 // 執(zhí)行// 獲取人事變動記錄號并累加 (CRecordset::forwardOnly, select COUNTER_VALUE from COUNTER where ID=39。)。 sscanf(str, %d, amp。 // 獲取計數(shù)值 ()。 //計數(shù)值加1 (%d, counter)。C39。 // 執(zhí)行// 追加人事變動記錄 (%d,counter)。 CString strNow=(%Y%m%d %H:%M:%S)。 // ID + m_strID + 39。 // PERSON + 0 + 39。 // CHANGE 加入公司代碼 + strNow + 39。 // RECORD_TIME + 加入公司39。 // DESCRIPTION (strSQL)。}窗口關(guān)閉時,需要恢復(fù)菜單項和工具條按鈕狀態(tài)并清空相應(yīng)的子框架窗口指針。 ((CMainFrame*)AfxGetMainWnd())m_bItemAdd=TRUE。 // 清空窗口指針} 人事變動視類的創(chuàng)建首先加入一個新的窗體資源,同樣在Insert Resource對話框中選擇Dialog的IDD_FORMVIEW項。創(chuàng)建好資源后,為窗體加入一個由CFormView類繼承的CChangeView封裝此窗體資源,然后用Class Wizard為所需控件加入成員變量。 圖39 人事變動輸入窗體 表114 人事變動窗體控制列表控制類型 ID 成員變量 說明Edit BoxIDC_CHANGE_EDT_IDm_strID員工號Radio ButtonIDC_CHANGE_RADIO_JOB無職務(wù)變更Radio ButtonIDC_CHANGE_RADIO_FIRE無辭職退休DateTime PickerIDC_CHANGE_DATETIMEPICKERm_Time時間Edit BoxIDC_CHANGE_EDT_NAMEm_strName姓名Combo BoxIDC_CHANGE_CMB_DEPARTMENTm_cDepartment部門Combo BoxIDC_CHANGE_CMB_JOBm_cJob職務(wù)Edit BoxIDC_CHANGE_EDT_DESCRIPTIONm_strDescription具體描述ButtonIDC_CHANGE_BTN_CHANGE無 “修改”按鈕CChangeView中需要加入如下語句包含主框架窗口類:include 同樣,本類也需要加入以下語句引用全局變量db。初始化函數(shù)代碼如下:void CChangeView::Init(){ // 初始化成員變量
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1