員工管理_員工培訓(xùn)管理系統(tǒng)_第1頁
員工管理_員工培訓(xùn)管理系統(tǒng)_第2頁
員工管理_員工培訓(xùn)管理系統(tǒng)_第3頁
員工管理_員工培訓(xùn)管理系統(tǒng)_第4頁
員工管理_員工培訓(xùn)管理系統(tǒng)_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

湖南科技大學(xué)計算機科學(xué)與工程學(xué)院數(shù)據(jù)庫課程設(shè)計報告二九級計三班學(xué) 號:XX姓 名:賀 雙 鳳指導(dǎo)老師:劉 毅 志時 間:2012.02.202012.03.02努力了的才叫夢想,不努力的就是空想!如果你一直空想的話,無論看多少正能量語錄,也趕不走滿滿的負(fù)能量!你還是原地踏步的你,一直在看別人進步。1 系統(tǒng)需求分析1.1系統(tǒng)功能分析員工培訓(xùn)系統(tǒng)需要實現(xiàn)的主要功能包括:l 企業(yè)總體培訓(xùn)課程的設(shè)置和安排。l 允許員工根據(jù)自己的情況選擇合適的課程和上課時間。l 對選課結(jié)果進行統(tǒng)計報表。允許員工對最后選課結(jié)果的查詢。l 培訓(xùn)考核成績的輸入和查詢。l 員工培訓(xùn)效果的綜合報表。l 員工個人信息的修改。圖1、員工培訓(xùn)管理系統(tǒng)功能模塊圖1.2系統(tǒng)功能模塊設(shè)計(劃分)本系統(tǒng)涉及到員工和培訓(xùn)管理部門之間的交流,因此需要根據(jù)用戶的不同分成兩大功能模塊。這兩個模塊的功能和使用的權(quán)限完全不同。本系統(tǒng)功能模塊如圖1所示。1.3與其它系統(tǒng)的關(guān)系圖2、培訓(xùn)管理數(shù)據(jù)流程圖員工培訓(xùn)系統(tǒng)可以為員工素質(zhì)技能的評價提供可靠的依據(jù),是職務(wù)評定的一個參考信息源。系統(tǒng)本身需要用到人事管理系統(tǒng)中的員工基本信息和部門信息等輔助資料,這些數(shù)據(jù)可以通過數(shù)據(jù)庫直接讀取。1.4數(shù)據(jù)流程圖員工培訓(xùn)管理系統(tǒng)的數(shù)據(jù)流程如圖2所示。2 數(shù)據(jù)庫設(shè)計2.1數(shù)據(jù)庫需求分析根據(jù)系統(tǒng)數(shù)據(jù)流程圖,我們可以列出以下系統(tǒng)所需的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):l 課程設(shè)置:編號、名稱、簡介、所用教材、上課地點、人數(shù)、上課時間l 選課結(jié)果:記錄編號、員工、課程、考核成績、評價、考核日期。所需的外部數(shù)據(jù)支持:l 人員信息:員工號、密碼、權(quán)限、姓名、部門、當(dāng)前狀態(tài)等。l 部門設(shè)置:部門編號、名稱等。2.2數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計圖3是本系統(tǒng)所需數(shù)據(jù)的E-R模型圖。圖3、培訓(xùn)管理E-R圖2.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計根據(jù)E-R圖和數(shù)據(jù)庫需求分析,培訓(xùn)管理系統(tǒng)需要創(chuàng)建2個主要的數(shù)據(jù)表:課程設(shè)置表和培訓(xùn)安排表。對應(yīng)這兩個表中的個別代碼字段,又需要創(chuàng)建2個代碼表:課程狀態(tài)代碼表和考核評價代碼表。這4個數(shù)據(jù)表的結(jié)構(gòu)如表1至表4所示。員工信息和部門信息作為外部數(shù)據(jù)支持可以使用人事管理系統(tǒng)中建立的數(shù)據(jù)表,如表5和表6所示。表1 course課程設(shè)置表字段名數(shù)據(jù)類型是否可空說明csid課程編號name課程名teacher任課教師(外部關(guān)鍵字person)intro課程簡介book所用教材classroom上課地點number課程上限人數(shù)classtime開課時間state狀態(tài)(外部關(guān)鍵字course_state)exam_date表2 training_plan培訓(xùn)安排表字段名數(shù)據(jù)類型是否可空說明tpid編號person員工(外部關(guān)鍵字person)course課程score成績appraisement評價(外部關(guān)鍵字appraisement)表3 course_state課程狀態(tài)代碼表字段名數(shù)據(jù)類型是否可空說明cscode狀態(tài)代碼description描述表4 apprisement考核評價代碼表字段名數(shù)據(jù)類型是否可空說明code評價代碼description描述表5 person員工個人信息表字段名數(shù)據(jù)類型是否可空說明id員工號(主關(guān)鍵字)passwd密碼authority用戶權(quán)限name姓名sex性別birthday生日department所在部門job職務(wù)edu_level受教育程度speciaty專業(yè)技能address家庭住址tel聯(lián)系電話email電子信箱state當(dāng)前狀態(tài)(T-員工,F(xiàn)-非員工)remark備注表6 department部門信息表字段名數(shù)據(jù)類型是否可空說明depid部門編號name部門名稱manager部門經(jīng)理intro簡介2.4數(shù)據(jù)庫的建立2.4.1數(shù)據(jù)庫的建立2.4.2初始數(shù)據(jù)的輸入本系統(tǒng)中,初始數(shù)據(jù)包括課程狀態(tài)代碼和評價代碼,如表7至表8所示。表7 課程狀態(tài)代碼代碼說明0選課中1進行中2已結(jié)束表8 考核評價代碼代碼說明0未考核1不及格2及格3良好4優(yōu)秀(以下各部分請設(shè)計者完成)。3 各功能模塊的設(shè)計與實現(xiàn)3.1功能說明本管理系統(tǒng)主要分為兩大部分:培訓(xùn)管理應(yīng)用程序和學(xué)員選課應(yīng)用程序。培訓(xùn)管理應(yīng)用程序主要用于培訓(xùn)中心的管理人員對培訓(xùn)課程和培訓(xùn)情況進行維護。此應(yīng)用程序主要包括四項功能:課程設(shè)置、選課結(jié)果查詢修改、成績輸入、培訓(xùn)成績統(tǒng)計報表。另外,系統(tǒng)需要有登錄窗口(用于權(quán)限認(rèn)證)和導(dǎo)航窗口(用于連接各項功能)。學(xué)員選課應(yīng)用程序包括個人信息修改、選課和成績查詢?nèi)椆δ堋#ㄒ唬┡嘤?xùn)管理管理應(yīng)用程序功能說明(二)學(xué)員選課應(yīng)用程序功能說明3.2用戶界面設(shè)計完成數(shù)據(jù)庫創(chuàng)建和功能說明以后,我們可以進行下一步工作,既設(shè)計用戶界面。1、培訓(xùn)管理應(yīng)用程序登錄窗體的創(chuàng)建2、培訓(xùn)管理應(yīng)用程序主窗體的創(chuàng)建3、課程設(shè)置窗體的創(chuàng)建4、選課結(jié)果查詢窗體的創(chuàng)建5、學(xué)員名單報表窗體的創(chuàng)建6、考核評定結(jié)果窗體的創(chuàng)建7、培訓(xùn)統(tǒng)計窗體的創(chuàng)建8、培訓(xùn)成績報表窗體的創(chuàng)建9、學(xué)員選課客戶端界面的創(chuàng)建3.3各功能模塊的實現(xiàn)1、培訓(xùn)管理應(yīng)用程序數(shù)據(jù)模塊的創(chuàng)建2、培訓(xùn)管理應(yīng)用程序登錄程序的實現(xiàn)3、課程設(shè)置模塊的實現(xiàn)4、選課結(jié)果查詢的實現(xiàn)5、學(xué)員名單報表的實現(xiàn)6、考核評定結(jié)果的實現(xiàn)7、培訓(xùn)統(tǒng)計的實現(xiàn)8、培訓(xùn)成績報表的實現(xiàn)9、學(xué)員選課客戶端應(yīng)用程序的創(chuàng)建4 系統(tǒng)實現(xiàn)本實驗由三個人共同完成,我負(fù)責(zé)“選擇培訓(xùn)課程模塊”和“課程設(shè)置模塊”。阮柳春同學(xué)負(fù)責(zé)“登陸模塊”、“用戶信息修改模塊”、和“培訓(xùn)成績管理模塊”。王相同學(xué)負(fù)責(zé)“考核成績查詢模塊”和“選課結(jié)果管理模塊”4.1選課培訓(xùn)課程模塊4.1.1具體功能分析1)能查詢課程表2)能選擇課程3)能刪除選擇的課程4.1.2實現(xiàn)方法通過兩個ado控件與數(shù)據(jù)庫進行連接,兩個datagrid控件分別顯示課程表和登陸用戶已選擇的課程。3個button按鈕對應(yīng)查詢課程表、選擇課程和刪除課程。4.1.2遇到的主要問題及相關(guān)解決方法1)因為在數(shù)據(jù)庫中建立course表的時候用的是英文,故在查詢的時候表顯示的也是英文,這給用戶帶來了極大的不便,使系統(tǒng)的友好性降低,為了解決這個問題,我使用了sql重命名語句,對用戶已選擇的課程表,使用了語句:select 課程號=training_plan.cid,成績=score,考核評價=apprisement.description from training_plan,apprisement where training_plan.personid=+personid+and apprisement.appcode=training_plan.appcode;在course表中使用了語句:select 課程號=cid,課程名=cname,老師編號=personid,課程簡介=intro,所用教材=book,上課地點=classroom,課程上限人數(shù)=number,開課時間=classtime,狀態(tài)=cscode,考試時間=exam_date;這個問題同樣在選擇查詢字段的時候也出現(xiàn)了,combo控件備選查詢字段要用到中文,而數(shù)據(jù)庫中的字段名是英文,所以要進行中英文的轉(zhuǎn)換。剛開始用switch語句,由于switch語句不支持csting型,改用ifelse語句。2)選課函數(shù)的編碼要考慮多種情況。第一,如果登錄用戶已選擇這門課,則不能再選。第二,課程已經(jīng)開始或結(jié)束則不能選。第三,該課上限人數(shù)已到,則選課失敗。3)退選課程函數(shù)要考慮課程是否已經(jīng)開始或結(jié)束,如果已經(jīng)開始或結(jié)束,則不能退選。4.1.3本模塊的部分界面截圖4.2設(shè)置課程模塊4.2.1具體功能分析1)能查詢課程表2)能刪除某門課程3)能更新某門課程4)能添加某門課程4.2.3實現(xiàn)方法通過一個ado控件與數(shù)據(jù)庫進行連接,一個datagrid控件顯示課程表信息。10個edit控件對應(yīng)課程表的10個字段。4個button按鈕對應(yīng)“查詢”、“更新”、“刪除”和“添加”。在測試的時候,老師給我提出了有用的建議,要我增加一個“清零”按鈕,故在后來增加了一個“清零”按鈕。4.2.4遇到的主要問題及相關(guān)解決方法1)在寫查詢函數(shù)的時候,發(fā)現(xiàn)這次與以前要實現(xiàn)的功能有所差異。以前都是對單個字段進行查詢,很容易編碼?,F(xiàn)在要對單個或多個字段進行查詢,比如要查詢同時滿足上課地點為10,課程號為1,老師編號為5的單元組,這樣實現(xiàn)起來就難度加大了。因為查詢的字段具有不可預(yù)知性。為了解決這個問題,我引入了一個標(biāo)記變量ok,成功解決了這個問題。值得一提的是當(dāng)查詢字段全部為空的時候,點擊“查詢”按鈕,課程表應(yīng)該顯示全部的課程信息。不然的話,只能在初次進入該模塊時,能看到全部課程信息。當(dāng)完成某個操作的時候,就無法看到全部課程的信息了。在測試的時候,老師建議我對某些字段(如課程名)加入模糊查詢功能,我覺得這個建議非常好,很方便,實現(xiàn)起來也不是很復(fù)雜,引入通配符*即可。2)更新一定要通過課程編號,不然無法得到要更新的元組,如果沒有輸入課程編號,應(yīng)該給出錯誤提示。課程表的狀態(tài)字段,只能是0.,1,2三個數(shù)字中的一個,如果不是,要給出錯誤提示。(其實這里通過combo控件實現(xiàn)起來更方便)3)剛開始寫刪除函數(shù)的時候,只考慮到了不存在該課程時,不能刪除,給出提示。后來發(fā)現(xiàn)了一個很隱蔽的問題,就是如果有學(xué)生選了這門課,則不能隨便刪除。如一定要刪除,必須先對培訓(xùn)計劃表training_plan表進行處理。4)添加函數(shù)要考慮幾個問題。第一,檢測該課程是否已在course表存在,如存在,則不能添加。第二,檢測輸入的任課老師是否存在,如果在person表中沒有該任課老師,則給出錯誤提示。第三,狀態(tài)字段的內(nèi)容是否是0,1,2三個數(shù)字中的一個,如不是,給出錯誤提示。第四,要考慮哪些字段可以為空,哪些字段不能為空,不為空的地方,如輸入為空,要給出相關(guān)提示。4.2.3本模塊的部分界面截圖5心得體會第一,由于是第一次進行數(shù)據(jù)庫開發(fā),并且vc使用了MFC,且工作量不小。所以前兩天我們遇到了不少的麻煩?;诖?,我們并沒有忙于進行項目開發(fā),而是找尋相關(guān)書籍資料認(rèn)真了解數(shù)據(jù)庫詳細(xì)開發(fā)流程,參照課程設(shè)計指導(dǎo)書的前兩章,先做單模塊的功能開發(fā),實現(xiàn)“插入”,“刪除”,“查詢”,“添加”,并且讀懂提供的代碼。從這里,我知道了一個拿到一個項目,并且是陌生的,以前沒有做過類似的,一定不要急于動手,事先要做好需求分析,邏輯設(shè)計,概念設(shè)計,否則只會事倍功半。第二,要學(xué)會團隊合作。相比以前做的課程設(shè)計,這個項目無論從難度上,還是工作量上都大很多。故這時,團隊合作就顯得非常重要了。一個人是無法在短時間內(nèi)完成這樣一個項目的。在分工的時候,一定要明確各自的任務(wù),定義好相關(guān)的接口。第三,要對工程文件及時進行正確清楚有層次的備份,最好是每次修復(fù)的bug,都有相關(guān)的日志文件進行記錄。由于沒有大型項目開發(fā)的經(jīng)驗,我們雖然對工程文件進行了備份,但是沒有層次,工程命名也沒有按項目開發(fā)的進度命名,沒有日志文件,加上分工合作,常常是這個bug在這個工程進行了修復(fù),另一個bug在竟然是在令一個版本進行修復(fù)。搞得很亂。開發(fā)前期,我們在這點上吃了不少苦果。幸好及時意識到了錯誤,果斷進行了改正。以后,進公司了,項目會大很多,動則幾十萬行代碼,從事開發(fā)的團隊成員也很多,這時候,對工程文件進行正確清楚有層次的備份,對bug修復(fù)進行記錄就變得很重要了。6源代碼由于整個項目的源代碼比較多,所以在此只附上我寫的兩個模塊的源代碼。6.1選課模塊源代碼/ DailogForSelectCourse.cpp : implementation file#include stdafx.h#include 員工培訓(xùn)管理系統(tǒng).h#include DailogForSelectCourse.h#include DailogFor_Confirm_sel_course.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ DailogForSelectCourse dialogDailogForSelectCourse:DailogForSelectCourse(CString _peronid,CString Link,CWnd* pParent /*=NULL*/): CDialog(DailogForSelectCourse:IDD, pParent)personid=_peronid;LinkSql = Link;/AFX_DATA_INIT(DailogForSelectCourse)m_Edit1_FieldValue = _T();m_Edit2_cidValue = _T();m_Edit3_cidValue = _T();/AFX_DATA_INIT/ void DailogForSelectCourse:OnInitDialog()/ / m_combo1_FieldName.AddString(cid);/ m_combo1_FieldName.AddString(cname);/ m_combo1_FieldName.AddString(personid);/ m_combo1_FieldName.AddString(intro);/ m_combo1_FieldName.AddString(book);/ m_combo1_FieldName.AddString(classroom);/ m_combo1_FieldName.AddString(number);/ m_combo1_FieldName.AddString(classtime);/ m_combo1_FieldName.AddString(cscode);/ void DailogForSelectCourse:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(DailogForSelectCourse)DDX_Control(pDX, IDC_COMBO1, m_combo1_FieldName);DDX_Text(pDX, IDC_EDIT1, m_Edit1_FieldValue);DDX_Control(pDX, IDC_ADODC1, m_Adodc1);DDX_Text(pDX, IDC_EDIT2, m_Edit2_cidValue);DDX_Text(pDX, IDC_EDIT3, m_Edit3_cidValue);DDX_Control(pDX, IDC_ADODC2, m_Adodc2);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(DailogForSelectCourse, CDialog)/AFX_MSG_MAP(DailogForSelectCourse)ON_BN_CLICKED(IDC_OK, OnOk)ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_CBN_KILLFOCUS(IDC_COMBO1, OnKillfocusCombo1)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_BUTTON3, OnButtonDEL)/AFX_MSG_MAPEND_MESSAGE_MAP()/ DailogForSelectCourse message handlersvoid DailogForSelectCourse:OnOk() / TODO: Add your control notification handler code herevoid DailogForSelectCourse:OnButton1() / TODO: Add your control notification handler code hereUpdateData(TRUE);CString tmpStr1, tmpStr2,strSQL = select 課程號=cid,課程名=cname,老師編號=personid,課程簡介=intro,所用教材=book,上課地點=classroom,課程上限人數(shù)=number,開課時間=classtime,狀態(tài)=cscode,考試時間=exam_date from course WHERE ; m_combo1_FieldName.GetWindowText(tmpStr1);if(tmpStr1=課程號)tmpStr2=cid;elseif (tmpStr1=課程名) tmpStr2=cname;elseif(tmpStr1=任課老師)tmpStr2=personid;elseif(tmpStr1=課程簡介)tmpStr2=intro;elseif(tmpStr1=所用教材)tmpStr2=book;elseif(tmpStr1=上課地點)tmpStr2=classroom;elseif(tmpStr1=課程上限人數(shù))tmpStr2=number;elseif(tmpStr1=開課時間)tmpStr2=classtime;elseif(tmpStr1=狀態(tài))tmpStr2=cscode;elseif(tmpStr1=考核日期)tmpStr2=exam_date;elseif(tmpStr1=)strSQL = select 課程號=cid,課程名=cname,老師編號=personid,課程簡介=intro,所用教材=book,上課地點=classroom,課程上限人數(shù)=number,開課時間=classtime,狀態(tài)=cscode,考試時間=exam_date from course;m_Adodc1.SetRecordSource(strSQL); m_Adodc1.Refresh();UpdateData(FALSE);return;elseAfxMessageBox(查詢字段有誤,請確認(rèn));return ; strSQL += tmpStr2+ = ;strSQL += +m_Edit1_FieldValue+; m_Adodc1.SetRecordSource(strSQL); m_Adodc1.Refresh();UpdateData(FALSE);void DailogForSelectCourse:OnKillfocusCombo1() / TODO: Add your control notification handler code here/ m_combo1_FieldName.AddString(cid);/ m_combo1_FieldName.AddString(cname);/ m_combo1_FieldName.AddString(intro);/ m_combo1_FieldName.AddString(book);/ m_combo1_FieldName.AddString(classroom);/ m_combo1_FieldName.AddString(number);/ m_combo1_FieldName.AddString(classtime);/ m_combo1_FieldName.AddString(state);void DailogForSelectCourse:OnButton2() / TODO: Add your control notification handler code here/ DailogFor_Confirm_sel_course* dlg = new DailogFor_Confirm_sel_course(personid,m_Edit2_cidValue);/ dlg-DoModal();if( :MessageBox(NULL,確定選這門課嗎?,提示,MB_OKCANCEL)=IDOK )/AfxMessageBox(MBOK);UpdateData(TRUE);_ConnectionPtr m_pConnection;:CoInitialize(NULL);/在ADO操作中建議語句中要常用trycatch()來捕獲錯誤信息/因為它有時會經(jīng)常出現(xiàn)一些想不到的錯誤try m_pConnection.CreateInstance(ADODB.Connection);_bstr_t strConn=LinkSql.AllocSysString();m_pConnection-Open(strConn,adModeUnknown); /if(m_pConnection-State = adStateOpen) MessageBox(成功連接數(shù)據(jù)庫);catch (_com_error e):CoUninitialize();AfxMessageBox(e.ErrorMessage();return;int cnt=0,sum;_RecordsetPtr m_pRecordset;CString str;str = SELECT * FROM training_plan;_variant_t pcid,ppersonid,authority,cscode;m_pRecordset.CreateInstance(ADODB.Recordset);int OK=0;m_pRecordset = m_pConnection-Execute(str.AllocSysString(),NULL,adCmdText);UpdateData(TRUE);CString pa;while( !m_pRecordset-adoEOF )pcid = m_pRecordset-GetCollect(cid);ppersonid = m_pRecordset-GetCollect(personid);CString tmp1 = (LPCSTR)(_bstr_t)pcid;CString tmp2 = (LPCSTR)(_bstr_t)ppersonid;if( strcmp(m_Edit2_cidValue,tmp1)=0&strcmp(tmp2,personid)=0 )OK=1;break;/AfxMessageBox(m_Edit2_cidValue+ +tmp1+ +tmp2+ +personid);if( strcmp(m_Edit2_cidValue,tmp1)=0 ) cnt+;m_pRecordset-MoveNext();if( OK )AfxMessageBox(已選修了該課程!);m_pRecordset-Close();m_pConnection-Close();return ;CString _cid;str = SELECT * FROM course;m_pRecordset = m_pConnection-Execute(str.AllocSysString(),NULL,adCmdText);UpdateData(TRUE);OK=0;while( !m_pRecordset-adoEOF )_cid=str = (LPCSTR)(_bstr_t)m_pRecordset-GetCollect(cid);if(m_Edit2_cidValue=_cid)str = (LPCSTR)(_bstr_t)m_pRecordset-GetCollect(cscode);break;m_pRecordset-MoveNext();/AfxMessageBox(pa);if( str != 0 )AfxMessageBox(課程已經(jīng)開始或結(jié)束,不能選課);m_pRecordset-Close();m_pConnection-Close();return ;str = SELECT * FROM course;m_pRecordset = m_pConnection-Execute(str.AllocSysString(),NULL,adCmdText);UpdateData(TRUE);OK=0;while( !m_pRecordset-adoEOF )CString tmp2 = (LPCSTR)(_bstr_t)m_pRecordset-GetCollect(cid);CString tmp1 = (LPCSTR)(_bstr_t)pcid;if( strcmp(tmp1,tmp2)=0 )pa=(LPCSTR)(_bstr_t)m_pRecordset-GetCollect(number);OK=1;break;m_pRecordset-MoveNext();sum=atoi(pa);if( cnt=sum )AfxMessageBox(該課已滿人!);m_pRecordset-Close();m_pConnection-Close();return ;_variant_t ra; _bstr_t strAdd = INSERT INTO training_plan VALUES(;strAdd = strAdd + personid + ,;strAdd = strAdd + m_Edit2_cidValue + ,;strAdd = strAdd + -1, + 0);/AfxMessageBox(strAdd);m_pConnection-Execute(strAdd,&ra,adCmdText);/m_Adodc2.SetRecordSource(SELECT * FROM training_plan); m_Adodc2.Refresh();UpdateData(FALSE);m_pRecordset-Close();m_pConnection-Close(); AfxMessageBox(成功選課);void DailogForSelectCourse:OnButtonDEL() / TODO: Add your control notification handler code hereCString tmp=personid;if( :MessageBox(NULL,確定要刪除這門課嗎?,提示,MB_OKCANCEL)=IDOK )/AfxMessageBox(MBOK);UpdateData(TRUE);_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;:CoInitialize(NULL);/在ADO操作中建議語句中要常用trycatch()來捕獲錯誤信息/因為它有時會經(jīng)常出現(xiàn)一些想不到的錯誤try m_pConnection.CreateInstance(ADODB.Connection);_bstr_t strConn=LinkSql.AllocSysString();m_pConnection-Open(strConn,adModeUnknown); /if(m_pConnection-State = adStateOpen) MessageBox(成功連接數(shù)據(jù)庫);catch (_com_error e):CoUninitialize();AfxMessageBox(e.ErrorMessage();return;CString str,_cid;int ok=0;_variant_t cscode;str = SELECT * FROM course;m_pRecordset = m_pConnection-Execute(str.AllocSysString(),NULL,adCmdText);UpdateData(TRUE);while( !m_pRecordset-adoEOF )_cid = (LPCSTR)(_bstr_t)m_pRecordset-GetCollect(cid);if(m_Edit3_cidValue=_cid)str = (LPCSTR)(_bstr_t)m_pRecordset-GetCollect(cscode);break;m_pRecordset-MoveNext();/AfxMessageBox(pa);if( str != 0 )AfxMessageBox(課程已經(jīng)開始或結(jié)束,不能刪除!);m_pRecordset-Close();m_pConnection-Close();return ;/以下刪除數(shù)據(jù)_variant_t ra; _bstr_t strAdd = DELETE FROM Training_plan where personid =+tmp;strAdd = strAdd + AND cid = +m_Edit3_cidValue;/AfxMessageBox(strAdd);m_pConnection-Execute(strAdd,&ra,adCmdText);m_pConnection-Close(); m_Adodc2.Refresh(); UpdateData(FALSE);AfxMessageBox(成功刪除);BOOL DailogForSelectCourse:OnInitDialog()CDialog:OnInitDialog();CString strAdd=select 課程號=training_plan.cid,成績=score,考核評價=apprisement.description from training_plan,apprisement where training_plan.personid=+personid+and apprisement.appcode=training_plan.appcode;m_Adodc2.SetRecordSource(strAdd); m_Adodc2.Refresh(); m_combo1_FieldName.SetWindowText(請選擇);m_combo1_FieldName.AddString(課程號);m_combo1_FieldName.AddString(課程名);m_combo1_FieldName.AddString(任課老師);m_combo1_FieldName.AddString(課程簡介);m_combo1_FieldName.AddString(所用教材);m_combo1_FieldName.AddString(上課地點);m_combo1_FieldName.AddString(課程上限人數(shù));m_combo1_FieldName.AddString(開課時間);m_combo1_FieldName.AddString(狀態(tài));m_combo1_FieldName.AddString(考核日期);return TRUE;6.2設(shè)置課程模塊/ DailogForMGcourse.cpp : implementation file/#include stdafx.h#include 員工培訓(xùn)管理系統(tǒng).h#include DailogForMGcourse.h#include Columns.h#include Column.h#include DailogForMGResultC.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ DailogForMGcourse dialogDailogForMGcourse:DailogForMGcourse(CString Name,CString Link,CWnd* pParent /*=NULL*/): CDialog(DailogForMGcourse:IDD, pParent)userName = Name;LinkSql = Link;/AFX_DATA_INIT(DailogForMGcourse)m_Edit1_cid = _T();m_Edit2_cname = _T();m_Edit3_personid = _T();m_Edit5_book = _T();m_Edit6_classroom = _T();m_Edit8_classtime = _T();m_Edit4_intro = _T();m_Edit7_number = _T();m_Edit9_cscode = _T();m_Edit10_exam_date = _T();/AFX_DATA_INITvoid DailogForMGcourse:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(DailogForMGcourse)DDX_Control(pDX, IDC_ADODC1, m_adodc1);DDX_Text(pDX, IDC_EDIT1, m_Edit1_cid);DDX_Text(pDX, IDC_EDIT2, m_Edit2_cname);DDX_Text(pDX, IDC_EDIT3, m_Edit3_personid);DDX_Text(pDX, IDC_EDIT5, m_Edit5_book);DDX_Text(pDX, IDC_EDIT6, m_Edit6_classroom);DDX_Text(pDX, IDC_EDIT8, m_Edit8_classtime);DDX_Text(pDX, IDC_EDIT4, m_Edit4_intro);DDX_Text(pDX, IDC_EDIT7, m_Edit7_number);DDX_Text(pDX, IDC_EDIT9, m_Edit9_cscode);DDX_Text(pDX, IDC_EDIT10, m_Edit10_exam_date);DDX_Control(pDX, IDC_DATAGRID1, m_datagrid1);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(DailogForMGcourse, CDialog)/AFX_MSG_MAP(DailogForMGcourse)ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON4, OnInsert)ON_BN_CLICKED(IDC_BUTTON3, OnDEL)ON_BN_CLICKED(IDC_BUTTON2, OnUPDATE)ON_BN_CLICKED(IDC_BUTTON5, OnClear)/AFX_MSG_MAPEND_MESSAGE_MAP()/ DailogForMGcourse message handlersvoid

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論