員工管理_員工培訓(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ù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

湖南科技大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告二九級計(jì)三班學(xué) 號:XX姓 名:賀 雙 鳳指導(dǎo)老師:劉 毅 志時(shí) 間:2012.02.202012.03.02努力了的才叫夢想,不努力的就是空想!如果你一直空想的話,無論看多少正能量語錄,也趕不走滿滿的負(fù)能量!你還是原地踏步的你,一直在看別人進(jìn)步。1 系統(tǒng)需求分析1.1系統(tǒng)功能分析員工培訓(xùn)系統(tǒng)需要實(shí)現(xiàn)的主要功能包括:l 企業(yè)總體培訓(xùn)課程的設(shè)置和安排。l 允許員工根據(jù)自己的情況選擇合適的課程和上課時(shí)間。l 對選課結(jié)果進(jìn)行統(tǒng)計(jì)報(bào)表。允許員工對最后選課結(jié)果的查詢。l 培訓(xùn)考核成績的輸入和查詢。l 員工培訓(xùn)效果的綜合報(bào)表。l 員工個(gè)人信息的修改。圖1、員工培訓(xùn)管理系統(tǒng)功能模塊圖1.2系統(tǒng)功能模塊設(shè)計(jì)(劃分)本系統(tǒng)涉及到員工和培訓(xùn)管理部門之間的交流,因此需要根據(jù)用戶的不同分成兩大功能模塊。這兩個(gè)模塊的功能和使用的權(quán)限完全不同。本系統(tǒng)功能模塊如圖1所示。1.3與其它系統(tǒng)的關(guān)系圖2、培訓(xùn)管理數(shù)據(jù)流程圖員工培訓(xùn)系統(tǒng)可以為員工素質(zhì)技能的評價(jià)提供可靠的依據(jù),是職務(wù)評定的一個(gè)參考信息源。系統(tǒng)本身需要用到人事管理系統(tǒng)中的員工基本信息和部門信息等輔助資料,這些數(shù)據(jù)可以通過數(shù)據(jù)庫直接讀取。1.4數(shù)據(jù)流程圖員工培訓(xùn)管理系統(tǒng)的數(shù)據(jù)流程如圖2所示。2 數(shù)據(jù)庫設(shè)計(jì)2.1數(shù)據(jù)庫需求分析根據(jù)系統(tǒng)數(shù)據(jù)流程圖,我們可以列出以下系統(tǒng)所需的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):l 課程設(shè)置:編號、名稱、簡介、所用教材、上課地點(diǎn)、人數(shù)、上課時(shí)間l 選課結(jié)果:記錄編號、員工、課程、考核成績、評價(jià)、考核日期。所需的外部數(shù)據(jù)支持:l 人員信息:員工號、密碼、權(quán)限、姓名、部門、當(dāng)前狀態(tài)等。l 部門設(shè)置:部門編號、名稱等。2.2數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)圖3是本系統(tǒng)所需數(shù)據(jù)的E-R模型圖。圖3、培訓(xùn)管理E-R圖2.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)根據(jù)E-R圖和數(shù)據(jù)庫需求分析,培訓(xùn)管理系統(tǒng)需要?jiǎng)?chuàng)建2個(gè)主要的數(shù)據(jù)表:課程設(shè)置表和培訓(xùn)安排表。對應(yīng)這兩個(gè)表中的個(gè)別代碼字段,又需要?jiǎng)?chuàng)建2個(gè)代碼表:課程狀態(tài)代碼表和考核評價(jià)代碼表。這4個(gè)數(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上課地點(diǎn)number課程上限人數(shù)classtime開課時(shí)間state狀態(tài)(外部關(guān)鍵字course_state)exam_date表2 training_plan培訓(xùn)安排表字段名數(shù)據(jù)類型是否可空說明tpid編號person員工(外部關(guān)鍵字person)course課程score成績appraisement評價(jià)(外部關(guān)鍵字appraisement)表3 course_state課程狀態(tài)代碼表字段名數(shù)據(jù)類型是否可空說明cscode狀態(tài)代碼description描述表4 apprisement考核評價(jià)代碼表字段名數(shù)據(jù)類型是否可空說明code評價(jià)代碼description描述表5 person員工個(gè)人信息表字段名數(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)代碼和評價(jià)代碼,如表7至表8所示。表7 課程狀態(tài)代碼代碼說明0選課中1進(jìn)行中2已結(jié)束表8 考核評價(jià)代碼代碼說明0未考核1不及格2及格3良好4優(yōu)秀(以下各部分請?jiān)O(shè)計(jì)者完成)。3 各功能模塊的設(shè)計(jì)與實(shí)現(xiàn)3.1功能說明本管理系統(tǒng)主要分為兩大部分:培訓(xùn)管理應(yīng)用程序和學(xué)員選課應(yīng)用程序。培訓(xùn)管理應(yīng)用程序主要用于培訓(xùn)中心的管理人員對培訓(xùn)課程和培訓(xùn)情況進(jìn)行維護(hù)。此應(yīng)用程序主要包括四項(xiàng)功能:課程設(shè)置、選課結(jié)果查詢修改、成績輸入、培訓(xùn)成績統(tǒng)計(jì)報(bào)表。另外,系統(tǒng)需要有登錄窗口(用于權(quán)限認(rèn)證)和導(dǎo)航窗口(用于連接各項(xiàng)功能)。學(xué)員選課應(yīng)用程序包括個(gè)人信息修改、選課和成績查詢?nèi)?xiàng)功能。(一)培訓(xùn)管理管理應(yīng)用程序功能說明(二)學(xué)員選課應(yīng)用程序功能說明3.2用戶界面設(shè)計(jì)完成數(shù)據(jù)庫創(chuàng)建和功能說明以后,我們可以進(jìn)行下一步工作,既設(shè)計(jì)用戶界面。1、培訓(xùn)管理應(yīng)用程序登錄窗體的創(chuàng)建2、培訓(xùn)管理應(yīng)用程序主窗體的創(chuàng)建3、課程設(shè)置窗體的創(chuàng)建4、選課結(jié)果查詢窗體的創(chuàng)建5、學(xué)員名單報(bào)表窗體的創(chuàng)建6、考核評定結(jié)果窗體的創(chuàng)建7、培訓(xùn)統(tǒng)計(jì)窗體的創(chuàng)建8、培訓(xùn)成績報(bào)表窗體的創(chuàng)建9、學(xué)員選課客戶端界面的創(chuàng)建3.3各功能模塊的實(shí)現(xiàn)1、培訓(xùn)管理應(yīng)用程序數(shù)據(jù)模塊的創(chuàng)建2、培訓(xùn)管理應(yīng)用程序登錄程序的實(shí)現(xiàn)3、課程設(shè)置模塊的實(shí)現(xiàn)4、選課結(jié)果查詢的實(shí)現(xiàn)5、學(xué)員名單報(bào)表的實(shí)現(xiàn)6、考核評定結(jié)果的實(shí)現(xiàn)7、培訓(xùn)統(tǒng)計(jì)的實(shí)現(xiàn)8、培訓(xùn)成績報(bào)表的實(shí)現(xiàn)9、學(xué)員選課客戶端應(yīng)用程序的創(chuàng)建4 系統(tǒng)實(shí)現(xiàn)本實(shí)驗(yàn)由三個(gè)人共同完成,我負(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實(shí)現(xiàn)方法通過兩個(gè)ado控件與數(shù)據(jù)庫進(jìn)行連接,兩個(gè)datagrid控件分別顯示課程表和登陸用戶已選擇的課程。3個(gè)button按鈕對應(yīng)查詢課程表、選擇課程和刪除課程。4.1.2遇到的主要問題及相關(guān)解決方法1)因?yàn)樵跀?shù)據(jù)庫中建立course表的時(shí)候用的是英文,故在查詢的時(shí)候表顯示的也是英文,這給用戶帶來了極大的不便,使系統(tǒng)的友好性降低,為了解決這個(gè)問題,我使用了sql重命名語句,對用戶已選擇的課程表,使用了語句:select 課程號=training_plan.cid,成績=score,考核評價(jià)=apprisement.description from training_plan,apprisement where training_plan.personid=+personid+and apprisement.appcode=training_plan.appcode;在course表中使用了語句:select 課程號=cid,課程名=cname,老師編號=personid,課程簡介=intro,所用教材=book,上課地點(diǎn)=classroom,課程上限人數(shù)=number,開課時(shí)間=classtime,狀態(tài)=cscode,考試時(shí)間=exam_date;這個(gè)問題同樣在選擇查詢字段的時(shí)候也出現(xiàn)了,combo控件備選查詢字段要用到中文,而數(shù)據(jù)庫中的字段名是英文,所以要進(jìn)行中英文的轉(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實(shí)現(xiàn)方法通過一個(gè)ado控件與數(shù)據(jù)庫進(jìn)行連接,一個(gè)datagrid控件顯示課程表信息。10個(gè)edit控件對應(yīng)課程表的10個(gè)字段。4個(gè)button按鈕對應(yīng)“查詢”、“更新”、“刪除”和“添加”。在測試的時(shí)候,老師給我提出了有用的建議,要我增加一個(gè)“清零”按鈕,故在后來增加了一個(gè)“清零”按鈕。4.2.4遇到的主要問題及相關(guān)解決方法1)在寫查詢函數(shù)的時(shí)候,發(fā)現(xiàn)這次與以前要實(shí)現(xiàn)的功能有所差異。以前都是對單個(gè)字段進(jìn)行查詢,很容易編碼?,F(xiàn)在要對單個(gè)或多個(gè)字段進(jìn)行查詢,比如要查詢同時(shí)滿足上課地點(diǎn)為10,課程號為1,老師編號為5的單元組,這樣實(shí)現(xiàn)起來就難度加大了。因?yàn)椴樵兊淖侄尉哂胁豢深A(yù)知性。為了解決這個(gè)問題,我引入了一個(gè)標(biāo)記變量ok,成功解決了這個(gè)問題。值得一提的是當(dāng)查詢字段全部為空的時(shí)候,點(diǎn)擊“查詢”按鈕,課程表應(yīng)該顯示全部的課程信息。不然的話,只能在初次進(jìn)入該模塊時(shí),能看到全部課程信息。當(dāng)完成某個(gè)操作的時(shí)候,就無法看到全部課程的信息了。在測試的時(shí)候,老師建議我對某些字段(如課程名)加入模糊查詢功能,我覺得這個(gè)建議非常好,很方便,實(shí)現(xiàn)起來也不是很復(fù)雜,引入通配符*即可。2)更新一定要通過課程編號,不然無法得到要更新的元組,如果沒有輸入課程編號,應(yīng)該給出錯(cuò)誤提示。課程表的狀態(tài)字段,只能是0.,1,2三個(gè)數(shù)字中的一個(gè),如果不是,要給出錯(cuò)誤提示。(其實(shí)這里通過combo控件實(shí)現(xiàn)起來更方便)3)剛開始寫刪除函數(shù)的時(shí)候,只考慮到了不存在該課程時(shí),不能刪除,給出提示。后來發(fā)現(xiàn)了一個(gè)很隱蔽的問題,就是如果有學(xué)生選了這門課,則不能隨便刪除。如一定要?jiǎng)h除,必須先對培訓(xùn)計(jì)劃表training_plan表進(jìn)行處理。4)添加函數(shù)要考慮幾個(gè)問題。第一,檢測該課程是否已在course表存在,如存在,則不能添加。第二,檢測輸入的任課老師是否存在,如果在person表中沒有該任課老師,則給出錯(cuò)誤提示。第三,狀態(tài)字段的內(nèi)容是否是0,1,2三個(gè)數(shù)字中的一個(gè),如不是,給出錯(cuò)誤提示。第四,要考慮哪些字段可以為空,哪些字段不能為空,不為空的地方,如輸入為空,要給出相關(guān)提示。4.2.3本模塊的部分界面截圖5心得體會(huì)第一,由于是第一次進(jìn)行數(shù)據(jù)庫開發(fā),并且vc使用了MFC,且工作量不小。所以前兩天我們遇到了不少的麻煩?;诖耍覀儾]有忙于進(jìn)行項(xiàng)目開發(fā),而是找尋相關(guān)書籍資料認(rèn)真了解數(shù)據(jù)庫詳細(xì)開發(fā)流程,參照課程設(shè)計(jì)指導(dǎo)書的前兩章,先做單模塊的功能開發(fā),實(shí)現(xiàn)“插入”,“刪除”,“查詢”,“添加”,并且讀懂提供的代碼。從這里,我知道了一個(gè)拿到一個(gè)項(xiàng)目,并且是陌生的,以前沒有做過類似的,一定不要急于動(dòng)手,事先要做好需求分析,邏輯設(shè)計(jì),概念設(shè)計(jì),否則只會(huì)事倍功半。第二,要學(xué)會(huì)團(tuán)隊(duì)合作。相比以前做的課程設(shè)計(jì),這個(gè)項(xiàng)目無論從難度上,還是工作量上都大很多。故這時(shí),團(tuán)隊(duì)合作就顯得非常重要了。一個(gè)人是無法在短時(shí)間內(nèi)完成這樣一個(gè)項(xiàng)目的。在分工的時(shí)候,一定要明確各自的任務(wù),定義好相關(guān)的接口。第三,要對工程文件及時(shí)進(jìn)行正確清楚有層次的備份,最好是每次修復(fù)的bug,都有相關(guān)的日志文件進(jìn)行記錄。由于沒有大型項(xiàng)目開發(fā)的經(jīng)驗(yàn),我們雖然對工程文件進(jìn)行了備份,但是沒有層次,工程命名也沒有按項(xiàng)目開發(fā)的進(jìn)度命名,沒有日志文件,加上分工合作,常常是這個(gè)bug在這個(gè)工程進(jìn)行了修復(fù),另一個(gè)bug在竟然是在令一個(gè)版本進(jìn)行修復(fù)。搞得很亂。開發(fā)前期,我們在這點(diǎn)上吃了不少苦果。幸好及時(shí)意識到了錯(cuò)誤,果斷進(jìn)行了改正。以后,進(jìn)公司了,項(xiàng)目會(huì)大很多,動(dòng)則幾十萬行代碼,從事開發(fā)的團(tuán)隊(duì)成員也很多,這時(shí)候,對工程文件進(jìn)行正確清楚有層次的備份,對bug修復(fù)進(jìn)行記錄就變得很重要了。6源代碼由于整個(gè)項(xiàng)目的源代碼比較多,所以在此只附上我寫的兩個(gè)模塊的源代碼。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,上課地點(diǎn)=classroom,課程上限人數(shù)=number,開課時(shí)間=classtime,狀態(tài)=cscode,考試時(shí)間=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=上課地點(diǎn))tmpStr2=classroom;elseif(tmpStr1=課程上限人數(shù))tmpStr2=number;elseif(tmpStr1=開課時(shí)間)tmpStr2=classtime;elseif(tmpStr1=狀態(tài))tmpStr2=cscode;elseif(tmpStr1=考核日期)tmpStr2=exam_date;elseif(tmpStr1=)strSQL = select 課程號=cid,課程名=cname,老師編號=personid,課程簡介=intro,所用教材=book,上課地點(diǎn)=classroom,課程上限人數(shù)=number,開課時(shí)間=classtime,狀態(tài)=cscode,考試時(shí)間=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()來捕獲錯(cuò)誤信息/因?yàn)樗袝r(shí)會(huì)經(jīng)常出現(xiàn)一些想不到的錯(cuò)誤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,確定要?jiǎng)h除這門課嗎?,提示,MB_OKCANCEL)=IDOK )/AfxMessageBox(MBOK);UpdateData(TRUE);_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;:CoInitialize(NULL);/在ADO操作中建議語句中要常用trycatch()來捕獲錯(cuò)誤信息/因?yàn)樗袝r(shí)會(huì)經(jīng)常出現(xiàn)一些想不到的錯(cuò)誤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,考核評價(jià)=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(上課地點(diǎn));m_combo1_FieldName.AddString(課程上限人數(shù));m_combo1_FieldName.AddString(開課時(shí)間);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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論