版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 任務5 數(shù)據(jù)庫編程 一、綜合課程實習目的 1掌握模式Visual C+對于數(shù)據(jù)庫的操作。 2掌握常用控件的使用方法。 3熟悉數(shù)據(jù)庫操作語句(insert/delete/select)。 熟悉操作數(shù)據(jù)庫的對象。4二、綜合課程實習內(nèi)容 創(chuàng)建一個MFC應用程序TeacherMIS,進行教師數(shù)據(jù)的顯示。 三、綜合課程實習指導 1. 新建對話框工程,命名為TeacherMIS,刪除TeacherMIS對話框中除了“確定”按鈕的所有控件,對話框的字體為:宋體9號 2. 導入ADO:在stdafx.h文件中添加:#import c:program filescommon filessystemadomsa
2、do15.dll no_namespace rename(EOF,adoEOF) 3. 在工程項目類CTeacherMISApp中添加連接和記錄集變量: _RecordsetPtr m_pRec; _ConnectionPtr m_pConn; 4. 在CTeacherMISApp類的InitInstance函數(shù)中添加如下代碼: :CoInitialize(NULL); try m_pConn.CreateInstance(_uuidof(Connection);/創(chuàng)建連接對象 m_pConn-Open(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
3、db1.mdb,adModeUnknown);/連接數(shù)據(jù)庫 catch(_com_error e) !); 數(shù)據(jù)庫連接失敗晁?獥慳敧潂? return false; m_pRec.CreateInstance(_uuidof(Recordset); 5. 在CTeacherMISApp類中添加虛函數(shù)ExitInstance() 然后編輯代碼 int CTeacherMISApp:ExitInstance() / TODO: Add your specialized code here and/or call the base class if(m_pConn-State) m_pConn-Cl
4、ose(); m_pConnection= NULL; return CWinApp:ExitInstance(); 6. 在CTeacherMISApp類的頭文件中添加一個工程類對象: extern CTeacherMISApp theApp; 7. 在CTeacherMISDlg:OnOK()函數(shù)中要釋放連接對象和記錄集對象 void CTeacherMISDlg:OnOK() / TODO: Add extra validation here if(theApp.m_pConn-State) theApp.m_pRec-Close(); theApp.m_pRec.Release();
5、if(theApp.m_pConn-State) theApp.m_pConn-Close(); theApp.m_pConn.Release(); :CoUninitialize(); CDialog:OnOK(); 號9 8.添加一個“登陸”對話框:宋體對該對話框建立類向?qū)В⒃贏ppWizzard中添加兩個編輯框和“登陸”“取消”按鈕消息 ()消息:OnPain,()OnInitDialog以及 在OnPaint()函數(shù)中添加如下代碼: void CLoginDlg:OnPaint() CFont NewFont; NewFont.CreateFont(30,0,0,0,700,TRUE
6、,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY?啁呌偟呉?彆坓卉?楷體); dc.SetBkMode(TRANSPARENT); CFont *pOldFont=dc.SelectObject(&NewFont); dc.SetTextColor(RGB(0,0,255); 捤吮硥佴瑵?尬教職工信息管理系統(tǒng)); dc.SelectObject(pOldFont); 在“登陸”按鈕消息中添加如下代碼: void CLoginDlg:OnOK() / TODO: Add extra valid
7、ation here UpdateData(true); _variant_t v_strQuery,v_strCount; v_strQuery=select count(*) from LoginUser where User_Name=+m_strUserName+ and User_Psw=+m_strUserPsw+; /select count(*) as CountUser from LoginUser where User_Name=+m_strUserName+ and User_Psw=+m_strUserPsw+; theApp.m_pRec-CursorType=adO
8、penStatic; theApp.m_pRec-CursorLocation=adUseClient; theApp.m_pRec-Open(v_strQuery,theApp.m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); v_strQuery=theApp.m_pRec-GetCollect(Expr1000); CString strCount=(char*)_bstr_t(v_strQuery); if(strCount!=) 敍獳條?硯尨用戶名或密碼錯誤尡尬登陸失敗); theApp.m_pR
9、ec-Close(); theApp.m_pRec=NULL; return; CDialog:OnOK(); 在CTeacherMISApp的頭文件中加入:椣據(jù)畬敤尠潌楧?杬栮,然后在InitInstance9. 函數(shù)中加入代碼CLoginDlg類的對象并顯示: 10. CLoginDlg dlglogin; 11. int ret = dlglogin.DoModal(); 12. if(ret=IDCANCEL) 13. return FALSE; 14. 建立教職工基本信息對話框:(宋體9號) 15. 對話框的ID為:IDD_DIALOG_BASEINFO;標題為:教職工基本信息 添加
10、控件: 控 件 ID 號 Caption或Data 連接變量 列表控件 IDC_LIST1 m_BaseInfoList(CListCtrl) 分組框IDC_STATIC 查詢條件 靜態(tài)文本 IDC_STATIC 按照 組合框IDC_COMBO_SEARCHKEY Data屬性:職工號,姓名,部門,職稱,學歷 m_strSearchKey) (CString編輯框 IDC_EDIT_KEYVALUE m_strKeyValue (CString)命令按鈕 IDC_BUTTON_SEARCH 查詢 命令按鈕 IDC_BUTTON_ADD 添加 命令按鈕 IDC_BUTTON_MODIFY 修改
11、命令按鈕 IDC_BUTTON_DEL 刪除 然后對該對話框建立一個新類CBaseInfoDlg,其基類為CPropertyPage,繼承方式為Public,然后添加連接變量(上表)和消息函數(shù) Object IDs 消息Message 消息處理函數(shù) IDC_BUTTON_SEARCH按鈕BN_CLICKED OnButtonSearch() IDC_BUTTON_ADD 按鈕BN_CLICKED OnButtonAdd() IDC_BUTTON_MODIFY按鈕BN_CLICKED OnButtonModify() 按鈕IDC_BUTTON_DELBN_CLICKED OnButtonDel(
12、) 對話框CbaseInfoDlgWM_INITDIALOG OnInitDialog() 16. 將該CPropertyPage加入到建立工程時默認對話框CTeacherMISDlg中,在CTeacherMISDlg類中添加變量: CBaseInfoDlg m_BaseInfoPage; CPropertySheet m_Sheet; 然后在CTeacherMISDlg的OnInitDialog()函數(shù)中添加如下代碼: BOOL CTeacherMISDlg:OnInitDialog() m_Sheet.AddPage(&m_BaseInfoPage); m_Sheet.Create(thi
13、s,WS_CHILD|WS_VISIBLE,0); m_Sheet.ModifyStyleEx(0,WS_EX_CONTROLPARENT); m_Sheet.ModifyStyle(0,WS_TABSTOP); m_Sheet.SetWindowsPos(NULL,0,0,0,0,SWP_NOZORDER|SWP_NOSIZE|SWP_NOACTIVATE); return TRUE; / return TRUE unless you set the focus to a control 17. 初始化對話框: BOOL CBaseInfoDlg:OnInitDialog() CProper
14、tyPage:OnInitDialog(); / TODO: Add extra initialization here m_BaseInfoList.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS); m_BaseInfoList.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE|LVS_EX_HEADERDRAGDROP); m_BaseInfoList.SetTextColor(RGB(200,200,0); m_B
15、aseInfoList.SetBkColor(RGB(240,247,233); 彭慂敳湉潦楌瑳?獮牥?汯浵?職工編號); 彭慂敳湉潦楌瑳?獮牥?汯浵?職工姓名); 彭慂敳湉潦楌瑳?獮牥?汯浵?所在部門); 彭慂敳湉潦楌瑳?獮牥?汯浵?職工性別); 彭慂敳湉潦楌瑳?獮牥?汯浵?出生日期); 彭慂敳湉潦楌瑳?獮牥?汯浵?職稱); 彭慂敳湉潦楌瑳?獮牥?汯浵?學歷); ); 取得學歷時間彭慂敳湉潦楌瑳?獮牥?汯浵? 彭慂敳湉潦楌瑳?獮牥?汯浵?畢業(yè)學校); 彭慂敳湉潦楌瑳?獮牥?汯浵?開始工作時間); 彭慂敳湉潦楌瑳?獮牥?汯浵?尬黨員); RECT rectList; m_BaseInfoLis
16、t.GetWindowRect(&rectList); int width=(rectList.right-rectList.left)/11; for(int i=0;iState) theApp.m_pRec-Close(); theApp.m_pRec-Open(v_strSQL,theApp.m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); if(!theApp.m_pRec-BOF) theApp.m_pRec-MoveFirst(); while(!theApp.m_pRec-adoEOF) C
17、String strvalue; v_theValue=theApp.m_pRec-GetCollect(ID); strvalue=(char*)_bstr_t(v_theValue); /MessageBox(strvalue); m_BaseInfoList.InsertItem(i,strvalue); v_theValue=theApp.m_pRec-GetCollect(Name); strvalue=(char*)_bstr_t(v_theValue); m_BaseInfoList.SetItemText(i,1,strvalue); v_theValue=theApp.m_p
18、Rec-GetCollect(Depart); strvalue=(char*)_bstr_t(v_theValue); m_BaseInfoList.SetItemText(i,2,strvalue); v_theValue=theApp.m_pRec-GetCollect(Sex); strvalue=(char*)_bstr_t(v_theValue); m_BaseInfoList.SetItemText(i,3,strvalue); v_theValue=theApp.m_pRec-GetCollect(Birthday); strvalue=(char*)_bstr_t(v_the
19、Value); m_BaseInfoList.SetItemText(i,4,strvalue); v_theValue=theApp.m_pRec-GetCollect(Job); strvalue=(char*)_bstr_t(v_theValue); m_BaseInfoList.SetItemText(i,5,strvalue); v_theValue=theApp.m_pRec-GetCollect(Degree); strvalue=(char*)_bstr_t(v_theValue); m_BaseInfoList.SetItemText(i,6,strvalue); v_the
20、Value=theApp.m_pRec-GetCollect(GraduteDate); strvalue=(char*)_bstr_t(v_theValue); m_BaseInfoList.SetItemText(i,7,strvalue); v_theValue=theApp.m_pRec-GetCollect(School); strvalue=(char*)_bstr_t(v_theValue); m_BaseInfoList.SetItemText(i,8,strvalue); v_theValue=theApp.m_pRec-GetCollect(WorkDate); strva
21、lue=(char*)_bstr_t(v_theValue); m_BaseInfoList.SetItemText(i,9,strvalue); v_theValue=theApp.m_pRec-GetCollect(IsParty); strvalue=(char*)_bstr_t(v_theValue); m_BaseInfoList.SetItemText(i,10,strvalue); theApp.m_pRec-MoveNext(); catch(_com_error *e) AfxMessageBox(e-ErrorMessage(); 19. 添加一個“添加教師基本信息對話框”
22、:IDD_DIALOG_BASEINFOADD,Caption屬性 。CBaseInfoAddDlg為:添加教師基本信息;并建立類為: 同時建立該類控件的屬性和連接變量 控件名稱及需修改屬性 (其余默認)ID號 職工號編輯框 IDC_EDIT_ID CString 姓名編輯框 IDC_EDIT_NAME CString 部門組合框IDC_COMBO_DEPART CString 單選按鈕男;屬性:Tab、Group IDC_RADIO_NAN int 單選按鈕女;屬性:Tab IDC_RADIO_NV 出生日期組合框年:Data:從1960至2000 IDC_COMBO_BIRTHYEAR C
23、String 出生日期組合框月:Data:112 IDC_COMBO_BIRTHMONTH CString 出生日期組合框日:Data:131 IDC_COMBO_BIRTHDAY CString 職稱組合框:Data:助教,講師,副教授,教授 IDC_COMBO_JOB CString 學歷組合框:Data:中專,大專,本科,碩士,博士 IDC_COMBO_DEGREE CString 取得學歷時間組合框年:2000 至Data:從1960IDC_COMBO_GRADUATEYEAR CString 取得學歷時間組合框月:12 1Data:IDC_COMBO_GRADUATEMONTH CS
24、tring 取得學歷時間組合框日:31 :1DataIDC_COMBO_GRADUATEDAY CString 畢業(yè)學校編輯框IDC_EDIT_SCHOOL CString 開始工作時間組合框年:2000 至1960:從DataIDC_COMBO_WORKYEAR CString 連接變m_strIDm_strNamem_strDepartm_nSexm_strBirthYearm_strBirthMonthm_strBirthDaym_strJobm_strDegreem_strGraduateDaym_strGraduatMonthm_strGraduatYearm_strSchoolm_
25、strWorkYear 開始工作時間組合框月:12 Data:1IDC_COMBO_WORKMONTH CString 開始工作時間組合框日:31 Data:1IDC_COMBO_WORKDAY CString 黨員復選框 IDC_CHECK_PARTY BOOL m_strWorkMonthm_strWorkDaym_bParty 在該類中添加一個自定義的標識變量:int m_nDlgType, 然后針對“教職工基本信息管理(CPropertyPage)”對話框中的“添加”按鈕編寫代碼: #include BaseInfoAddDlg.h void CBaseInfoDlg:OnButton
26、Add() / TODO: Add your control notification handler code here CBaseInfoAddDlg BaseDlg; BaseDlg.m_nDlgType=0; if(IDOK!=BaseDlg.DoModal() return; RefreshList(); 敍獳條?硯尨添加成功!); 針對“添加教師基本信息對話框(CBaseInfoAddDlg)”增加 “確定”按鈕的代碼: void CBaseInfoAddDlg:OnOK() / TODO: Add extra validation here UpdateData(true); i
27、f(m_strID.IsEmpty() 敍獳條?硯尨職工號不能為空!); return; if(m_strName.IsEmpty() 敍獳條?硯尨姓名不能為空!); return; if(theApp.m_pRec-State) theApp.m_pRec-Close(); _variant_t v_sqlID; v_sqlID=select * from BaseInfo where ID=+m_strID+; theApp.m_pRec-CursorType = adOpenStatic; theApp.m_pRec-CursorLocation = adUseClient; theAp
28、p.m_pRec-Open(v_sqlID,theApp.m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); if(0=m_nDlgType) if(theApp.m_pRec-GetRecordCount()!=0) theApp.m_pRec-Close(); 敍獳條?硯尨同一職工已經(jīng)存在!); return; else theApp.m_pRec-Close(); CString sex,birth,graduate,work,party; if(m_nSex) 敳?女; else 敳?男; birth
29、=m_strBirthYear+-+m_strBirthMonth+-+m_strBirthDay; graduate=m_strGraduateYear+-+m_strGraduateMonth+-+m_strGraduateDay; work=m_strWorkYear+-+m_strWorkMonth+-+m_strWorkDay; if(m_bParty) 慰瑲?是; else 慰瑲?否; _variant_t v_insBaseInfo; CString str=insert into BaseInfo(ID,Name,Depart,Sex,Birthday,Job,Degree,G
30、raduateDate,School,WorkDate,IsParty) values(+m_strID+,+m_strName+,+m_strDepart+,+sex+,+birth+,+m_strJob+,+m_strDegree+,+graduate+,+m_strSchool+,+work+,+party+); v_insBaseInfo=str; if(theApp.m_pRec-Open(v_insBaseInfo,theApp.m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText) 敍獳條?硯尨添加記
31、錄成功!); m_strID=m_strName=m_strDepart=; UpdateData(false); else _variant_t v_strModifyRecord; CString strsex,strbirth,strgraduate,strwork,strparty; if(m_nSex) 瑳獲硥盡女; else 瑳獲硥盡男; strbirth=m_strBirthYear+-+m_strBirthMonth+-+m_strBirthDay; strgraduate=m_strGraduateYear+-+m_strGraduateMonth+-+m_strGradua
32、teDay; strwork=m_strWorkYear+-+m_strWorkMonth+-+m_strWorkDay; if(m_bParty) 瑳灲牡祴盡是; else 瑳灲牡祴盡否; _variant_t v_ModifyRecord; v_ModifyRecord=Update BaseInfo set Name=+m_strName+,Depart=+m_strDepart+,Sex=+strsex+, Birthday=+strbirth+,Job=+m_strJob+,Degree=+m_strDegree+,GraduateDate=+strgraduate+,WorkDat
33、e=+strwork+,IsParty=+strparty+ where ID like +m_strID+; if(theApp.m_pRec-State) theApp.m_pRec-Close(); if(theApp.m_pRec-Open(v_ModifyRecord,theApp.m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText) 敍獳條?硯尨修改記錄成功!); CDialog:OnOK(); 20. “教職工基本信息管理(CPropertyPage)”對話框中的“修改”按鈕,添加一個int類型 的
34、m_nDlgType變量,并添加一個CBaseInfoAddDlg:OnInitDialog() 成員函數(shù),再在該函數(shù)中添加如下代碼: BOOL CBaseInfoAddDlg:OnInitDialog( () CDialog:OnInitDialog(); / TODO: Add extra initialization here if(m_nDlgType=0) 敓坴湩潤呷硥?添加教師基本信息); GotoDlgCtrl(GetDlgItem(IDC_EDIT_ID); else if(m_nDlgType=1) 敓坴湩潤呷硥?修改教師基本信息); GetDlgItem(IDC_EDIT_
35、ID)-EnableWindow(false); GotoDlgCtrl(GetDlgItem(IDC_EDIT_NAME); return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE 21. “教職工基本信息管理(CPropertyPage)”對話框中的“修改”按鈕的代碼: void CBaseInfoDlg:OnButtonModify() / TODO: Add your control notification
36、handler code here int i=m_BaseInfoList.GetSelectionMark(); if(-1=i) 敍獳條?硯尨請選中一條記錄!); return; CBaseInfoAddDlg BaseDlg; BaseDlg.m_nDlgType=1; BaseDlg.m_strID=m_BaseInfoList.GetItemText(i,0);/MessageBox(BaseDlg.m_strID); BaseDlg.m_strName=m_BaseInfoList.GetItemText(i,1); BaseDlg.m_strDepart=m_BaseInfoL
37、ist.GetItemText(i,2); 晩洨?獡?普?獩?敇?整呭硥?男) BaseDlg.m_nSex=1; else BaseDlg.m_nSex=0; CString strBirth=m_BaseInfoList.GetItemText(i,4); BaseDlg.m_strBirthYear=strBirth.Left(4); BaseDlg.m_strBirthMonth=strBirth.Mid(5,2); BaseDlg.m_strBirthDay=strBirth.Right(2); BaseDlg.m_strJob=m_BaseInfoList.GetItemText(
38、i,5); BaseDlg.m_strDegree=m_BaseInfoList.GetItemText(i,6); CString strgradute=m_BaseInfoList.GetItemText(i,7); BaseDlg.m_strGraduateYear=strgradute.Left(4); BaseDlg.m_strGraduateMonth=strgradute.Mid(5,2); BaseDlg.m_strGraduateDay=strgradute.Right(2); BaseDlg.m_strSchool=m_BaseInfoList.GetItemText(i,8); CString strwork=m_BaseInfoList.GetItemText(i,9); BaseDlg.m_strWorkYear=strgradute.Left(4); BaseDlg.m_strWor
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教師職稱述職報告范文錦集8篇
- 買賣合同協(xié)議書集錦七篇
- 五星級網(wǎng)吧員工管理制度
- 培訓課件 -企業(yè)戰(zhàn)略性人力資源管理
- 酒店弱電系統(tǒng)設(shè)計方案(二)
- 佳作欣賞廣播稿3篇
- 飼料運輸合同
- 出租車間廠房合同
- 停車場出租合同范文
- 門面房租賃合同范文
- 大連市2024年數(shù)學四上期末統(tǒng)考試題含解析
- 《數(shù)據(jù)挖掘技術(shù)》教學大綱
- 靜療規(guī)范課件
- 部編版七年級下冊語文全冊表格教案樣本
- 國家開放大學《初級經(jīng)濟學》形考任務1-3參考答案
- 個人賬戶課程設(shè)計
- 分布式數(shù)據(jù)庫遷移風險評估與管理
- 2024屆高考英語作文復習專項 讀后續(xù)寫語料庫清單
- 父母帶孩子免責協(xié)議書范本
- 新勞動合同法全文(2024版)
- 垃圾填埋場項目經(jīng)濟效益和社會效益分析
評論
0/150
提交評論