版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、湖南科技大學計算機科學與工程學院數(shù)據(jù)庫課程設計報告二九級計三班學 號:09050103XX姓 名:賀 雙 鳳指導老師:劉 毅 志時 間:2012.02.202012.03.0252 / 521 系統(tǒng)需求分析1.1系統(tǒng)效用分析員工培訓系統(tǒng)需要實現(xiàn)的主要效用包括:l 企業(yè)總體培訓課程的設置和安排。l 允許員工根據(jù)自己的情況選擇合適的課程和上課時間。l 對選課結果進行統(tǒng)計報表。允許員工對最后選課結果的查詢。l 培訓考核成績的輸入和查詢。l 員工培訓效果的綜合報表。l 員工個人信息的修改。圖1、員工培訓管理系統(tǒng)效用模塊圖1.2系統(tǒng)效用模塊設計(劃分)本系統(tǒng)涉及到員工和培訓管理部門之間的交流,因此需要根
2、據(jù)用戶的不同分成兩大效用模塊。這兩個模塊的效用和使用的權限完全不同。本系統(tǒng)效用模塊如圖1所示。1.3與其它系統(tǒng)的關系圖2、培訓管理數(shù)據(jù)流程圖員工培訓系統(tǒng)可以為員工素質(zhì)技能的評價提供可靠的依據(jù),是職務評定的一個參考信息源。系統(tǒng)本身需要用到人事管理系統(tǒng)中的員工基本信息和部門信息等輔助資料,這些數(shù)據(jù)可以通過數(shù)據(jù)庫直接讀取。1.4數(shù)據(jù)流程圖員工培訓管理系統(tǒng)的數(shù)據(jù)流程如圖2所示。2 數(shù)據(jù)庫設計2.1數(shù)據(jù)庫需求分析根據(jù)系統(tǒng)數(shù)據(jù)流程圖,我們可以列出以下系統(tǒng)所需的數(shù)據(jù)項和數(shù)據(jù)結構:l 課程設置:編號、名稱、簡介、所用教材、上課地點、人數(shù)、上課時間l 選課結果:記錄編號、員工、課程、考核成績、評價、考核日期。所
3、需的外部數(shù)據(jù)支持:l 人員信息:員工號、密碼、權限、姓名、部門、當前狀態(tài)等。l 部門設置:部門編號、名稱等。2.2數(shù)據(jù)庫概念結構設計圖3是本系統(tǒng)所需數(shù)據(jù)的E-R模型圖。圖3、培訓管理E-R圖2.3數(shù)據(jù)庫邏輯結構設計根據(jù)E-R圖和數(shù)據(jù)庫需求分析,培訓管理系統(tǒng)需要創(chuàng)建2個主要的數(shù)據(jù)表:課程設置表和培訓安排表。對應這兩個表中的個別代碼字段,又需要創(chuàng)建2個代碼表:課程狀態(tài)代碼表和考核評價代碼表。這4個數(shù)據(jù)表的結構如表1至表4所示。員工信息和部門信息作為外部數(shù)據(jù)支持可以使用人事管理系統(tǒng)中建立的數(shù)據(jù)表,如表5和表6所示。表1 course課程設置表字段名數(shù)據(jù)類型是否可空說明csid課程編號name課程名t
4、eacher任課教師(外部關鍵字person)intro課程簡介book所用教材classroom上課地點number課程上限人數(shù)classtime開課時間state狀態(tài)(外部關鍵字course_state)exam_date表2 training_plan培訓安排表字段名數(shù)據(jù)類型是否可空說明tpid編號person員工(外部關鍵字person)course課程score成績appraisement評價(外部關鍵字appraisement)表3 course_state課程狀態(tài)代碼表字段名數(shù)據(jù)類型是否可空說明cscode狀態(tài)代碼description描述表4 apprisement考核評價代碼
5、表字段名數(shù)據(jù)類型是否可空說明code評價代碼description描述表5 person員工個人信息表字段名數(shù)據(jù)類型是否可空說明id員工號(主關鍵字)passwd密碼authority用戶權限name姓名sex性別birthday生日department所在部門job職務edu_level受教育程度speciaty專業(yè)技能address家庭住址tel聯(lián)系電話email電子信箱state當前狀態(tài)(T-員工,F-非員工)remark備注表6 department部門信息表字段名數(shù)據(jù)類型是否可空說明depid部門編號name部門名稱manager部門經(jīng)理intro簡介2.4數(shù)據(jù)庫的建立2.4.1數(shù)據(jù)
6、庫的建立2.4.2初始數(shù)據(jù)的輸入本系統(tǒng)中,初始數(shù)據(jù)包括課程狀態(tài)代碼和評價代碼,如表7至表8所示。表7 課程狀態(tài)代碼代碼說明0選課中1進行中2已結束表8 考核評價代碼代碼說明0未考核1不及格2及格3良好4優(yōu)秀(以下各部分請設計者完成)。3 各效用模塊的設計與實現(xiàn)3.1效用說明本管理系統(tǒng)主要分為兩大部分:培訓管理應用程序和學員選課應用程序。培訓管理應用程序主要用于培訓中心的管理人員對培訓課程和培訓情況進行維護。此應用程序主要包括四項效用:課程設置、選課結果查詢修改、成績輸入、培訓成績統(tǒng)計報表。另外,系統(tǒng)需要有登錄窗口(用于權限認證)和導航窗口(用于連接各項效用)。學員選課應用程序包括個人信息修改、
7、選課和成績查詢?nèi)椥в谩#ㄒ唬┡嘤柟芾砉芾響贸绦蛐в谜f明(二)學員選課應用程序效用說明3.2用戶界面設計完成數(shù)據(jù)庫創(chuàng)建和效用說明以后,我們可以進行下一步工作,既設計用戶界面。1、培訓管理應用程序登錄窗體的創(chuàng)建2、培訓管理應用程序主窗體的創(chuàng)建3、課程設置窗體的創(chuàng)建4、選課結果查詢窗體的創(chuàng)建5、學員名單報表窗體的創(chuàng)建6、考核評定結果窗體的創(chuàng)建7、培訓統(tǒng)計窗體的創(chuàng)建8、培訓成績報表窗體的創(chuàng)建9、學員選課客戶端界面的創(chuàng)建3.3各效用模塊的實現(xiàn)1、培訓管理應用程序數(shù)據(jù)模塊的創(chuàng)建2、培訓管理應用程序登錄程序的實現(xiàn)3、課程設置模塊的實現(xiàn)4、選課結果查詢的實現(xiàn)5、學員名單報表的實現(xiàn)6、考核評定結果的實現(xiàn)7、
8、培訓統(tǒng)計的實現(xiàn)8、培訓成績報表的實現(xiàn)9、學員選課客戶端應用程序的創(chuàng)建4 系統(tǒng)實現(xiàn)本實驗由三個人配合完成,我負責“選擇培訓課程模塊”和“課程設置模塊”。阮柳春同學負責“登陸模塊”、“用戶信息修改模塊”、和“培訓成績管理模塊”。王相同學負責“考核成績查詢模塊”和“選課結果管理模塊”4.1選課培訓課程模塊4.1.1具體效用分析1)能查詢課程表2)能選擇課程3)能刪除選擇的課程4.1.2實現(xiàn)方法通過兩個ado控件與數(shù)據(jù)庫進行連接,兩個datagrid控件分別顯示課程表和登陸用戶已選擇的課程。3個button按鈕對應查詢課程表、選擇課程和刪除課程。4.1.2遇到的主要問題及相關解決方法1)因為在數(shù)據(jù)庫中
9、建立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
10、;在course表中使用了語句:select 課程號=cid,課程名=cname,老師編號=personid,課程簡介=intro,所用教材=book,上課地點=classroom,課程上限人數(shù)=number,開課時間=classtime,狀態(tài)=cscode,考試時間=exam_date;這個問題同樣在選擇查詢字段的時候也出現(xiàn)了,combo控件備選查詢字段要用到中文,而數(shù)據(jù)庫中的字段名是英文,所以要進行中英文的轉換。剛開始用switch語句,由于switch語句不支持csting型,改用ifelse語句。2)選課函數(shù)的編碼要考慮多種情況。第一,如果登錄用戶已選擇這門課,則不能再選。第二,課程已
11、經(jīng)開始或結束則不能選。第三,該課上限人數(shù)已到,則選課失敗。3)退選課程函數(shù)要考慮課程是否已經(jīng)開始或結束,如果已經(jīng)開始或結束,則不能退選。4.1.3本模塊的部分界面截圖4.2設置課程模塊4.2.1具體效用分析1)能查詢課程表2)能刪除某門課程3)能更新某門課程4)能添加某門課程4.2.3實現(xiàn)方法通過一個ado控件與數(shù)據(jù)庫進行連接,一個datagrid控件顯示課程表信息。10個edit控件對應課程表的10個字段。4個button按鈕對應“查詢”、“更新”、“刪除”和“添加”。在測試的時候,老師給我提出了有用的建議,要我增加一個“清零”按鈕,故在后來增加了一個“清零”按鈕。4.2.4遇到的主要問題及
12、相關解決方法1)在寫查詢函數(shù)的時候,發(fā)現(xiàn)這次與以前要實現(xiàn)的效用有所差異。以前都是對單個字段進行查詢,很容易編碼?,F(xiàn)在要對單個或多個字段進行查詢,比如要查詢同時滿足上課地點為10,課程號為1,老師編號為5的單元組,這樣實現(xiàn)起來就難度加大了。因為查詢的字段具有不可預知性。為了解決這個問題,我引入了一個標記變量ok,成功解決了這個問題。值得一提的是當查詢字段全部為空的時候,點擊“查詢”按鈕,課程表應該顯示全部的課程信息。不然的話,只能在初次進入該模塊時,能看到全部課程信息。當完成某個操作的時候,就無法看到全部課程的信息了。在測試的時候,老師建議我對某些字段(如課程名)加入模糊查詢效用,我覺得這個建議
13、非常好,很方便,實現(xiàn)起來也不是很復雜,引入通配符*即可。2)更新一定要通過課程編號,不然無法得到要更新的元組,如果沒有輸入課程編號,應該給出錯誤提示。課程表的狀態(tài)字段,只能是0.,1,2三個數(shù)字中的一個,如果不是,要給出錯誤提示。(其實這里通過combo控件實現(xiàn)起來更方便)3)剛開始寫刪除函數(shù)的時候,只考慮到了不存在該課程時,不能刪除,給出提示。后來發(fā)現(xiàn)了一個很隱蔽的問題,就是如果有學生選了這門課,則不能隨便刪除。如一定要刪除,必須先對培訓計劃表training_plan表進行處理。4)添加函數(shù)要考慮幾個問題。第一,檢測該課程是否已在course表存在,如存在,則不能添加。第二,檢測輸入的任課
14、老師是否存在,如果在person表中沒有該任課老師,則給出錯誤提示。第三,狀態(tài)字段的內(nèi)容是否是0,1,2三個數(shù)字中的一個,如不是,給出錯誤提示。第四,要考慮哪些字段可以為空,哪些字段不能為空,不為空的地方,如輸入為空,要給出相關提示。4.2.3本模塊的部分界面截圖5心得體會第一,由于是第一次進行數(shù)據(jù)庫開發(fā),并且vc使用了MFC,且工作量不小。所以前兩天我們遇到了不少的麻煩?;诖?我們并沒有忙于進行項目開發(fā),而是找尋相關書籍資料認真了解數(shù)據(jù)庫詳細開發(fā)流程,參照課程設計指導書的前兩章,先做單模塊的效用開發(fā),實現(xiàn)“插入”,“刪除”,“查詢”,“添加”,并且讀懂提供的代碼。從這里,我知道了一個拿到一
15、個項目,并且是陌生的,以前沒有做過類似的,一定不要急于動手,事先要做好需求分析,邏輯設計,概念設計,否則只會事倍功半。第二,要學會團隊合作。相比以前做的課程設計,這個項目無論從難度上,還是工作量上都大很多。故這時,團隊合作就顯得非常重要了。一個人是無法在短時間內(nèi)完成這樣一個項目的。在分工的時候,一定要明確各自的任務,定義好相關的接口。第三,要對工程文件及時進行正確清楚有層次的備份,最好是每次修復的bug,都有相關的日志文件進行記錄。由于沒有大型項目開發(fā)的經(jīng)驗,我們雖然對工程文件進行了備份,但是沒有層次,工程命名也沒有按項目開發(fā)的進度命名,沒有日志文件,加上分工合作,常常是這個bug在這個工程進
16、行了修復,另一個bug在竟然是在令一個版本進行修復。搞得很亂。開發(fā)前期,我們在這點上吃了不少苦果。幸好及時意識到了錯誤,果斷進行了改正。以后,進公司了,項目會大很多,動則幾十萬行代碼,從事開發(fā)的團隊成員也很多,這時候,對工程文件進行正確清楚有層次的備份,對bug修復進行記錄就變得很重要了。6源代碼由于整個項目的源代碼比較多,所以在此只附上我寫的兩個模塊的源代碼。6.1選課模塊源代碼/ DailogForSelectCourse.cpp : implementation "stdafx.h"#include "員工培訓管理系統(tǒng).h"#include &qu
17、ot;DailogForSelectCourse.h"#include "DailogFor_Confirm_sel_course.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_ char THIS_FILE = _FILE_;#endif/ DailogForSelectCourse dialogDailogForSelectCourse:DailogForSelectCourse(CString _peronid,CString Link,CWnd* pParent /*=NULL*/): CDialog(Da
18、ilogForSelectCourse: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.AddStri
19、ng(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_Fiel
20、dName.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, ID
21、C_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, O
22、nKillfocusCombo1)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: Ad
23、d 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
24、(tmpStr1="課程號")tmpStr2="cid"elseif (tmpStr1="課程名") tmpStr2="cname"elseif(tmpStr1="任課老師")tmpStr2="personid"elseif(tmpStr1="課程簡介")tmpStr2="intro"elseif(tmpStr1="所用教材")tmpStr2="book"elseif(tmpStr1="
25、上課地點")tmpStr2="classroom"elseif(tmpStr1="課程上限人數(shù)")tmpStr2="number"elseif(tmpStr1="開課時間")tmpStr2="classtime"elseif(tmpStr1="狀態(tài)")tmpStr2="cscode"elseif(tmpStr1="考核日期")tmpStr2="exam_date"elseif(tmpStr1="&
26、quot;)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("查詢字段有誤,請確認");return ; strS
27、QL += 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(&q
28、uot;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(
29、"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
30、(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.A
31、llocSysString();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 = &
32、quot;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_pReco
33、rdset->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+" &
34、quot;+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_pCon
35、nection->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-
36、>MoveNext();/AfxMessageBox(pa);if( str != "0" )AfxMessageBox("課程已經(jīng)開始或結束,不能選課");m_pRecordset->Close();m_pConnection->Close();return ;str = "SELECT * FROM course"m_pRecordset = m_pConnection->Execute(str.AllocSysString(),NULL,adCmdText);UpdateData(TRUE);OK=0;w
37、hile( !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&g
38、t;=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 = s
39、trAdd + "'-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(); AfxMessa
40、geBox("成功選課");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;_R
41、ecordsetPtr 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->Stat
42、e = 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
43、);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("課
44、程已經(jīng)開始或結束,不能刪除!");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
45、,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 tr
46、aining_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("課程名")
47、;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_FieldN
48、ame.AddString("狀態(tài)");m_combo1_FieldName.AddString("考核日期");return TRUE;6.2設置課程模塊/ DailogForMGcourse.cpp : implementation #include "stdafx.h"#include "員工培訓管理系統(tǒng).h"#include "DailogForMGcourse.h"#include "Columns.h"#include "Column.h"#i
49、nclude "DailogForMGResultC.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_ char THIS_FILE = _FILE_;#endif/ DailogForMGcourse dialogDailogForMGcourse:DailogForMGcourse(CString Name,CString Link,CWnd* pParent /*=NULL*/): CDialog(DailogForMGcourse:IDD, pParent)userName = Name;LinkSql = Link;
50、/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("&q
51、uot;);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,
52、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
53、, 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, On
54、DEL)ON_BN_CLICKED(IDC_BUTTON2, OnUPDATE)ON_BN_CLICKED(IDC_BUTTON5, OnClear)/AFX_MSG_MAPEND_MESSAGE_MAP()/ DailogForMGcourse message handlersvoid DailogForMGcourse:OnButton1() / TODO: Add your control notification handler code hereint ok=0;UpdateData(TRUE);CString tmpStr, strSQL = "SELECT 課程號=ci
55、d,課程名=cname,老師編號=personid,課程簡介=intro,所用教材=book,上課地點=classroom,課程上限人數(shù)=number,開課時間=classtime,狀態(tài)=cscode,考試時間=exam_date FROM course WHERE "if(m_Edit1_cid!="")strSQL += "cid='"+m_Edit1_cid+"'"ok=1;if(m_Edit2_cname!="")if(ok=1)strSQL += "and cname='"+m_Edit2_cname+"'"elsestrSQL += "cname='"+m_Edit2_cname+"'"ok=1;if(m_Edit3_personid!="")if(ok=1)str
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025股份代持合同協(xié)議書范本標準版
- 2025建筑安裝工程拆遷房屋合同模板
- 2024年果樹種植基地建設與運營合同
- 2024事業(yè)單位員工終止聘用合同及離職手續(xù)及工作交接及安置協(xié)議3篇
- 2024年版加工承攬合同:服裝制造商與品牌商之間的服裝生產(chǎn)與質(zhì)量要求
- 2024年度中小企業(yè)知識產(chǎn)權融資合同3篇
- 虛擬現(xiàn)實中石化施工合同
- 廣場環(huán)?;顒幼赓U合同
- 工業(yè)煙囪維修施工合同
- 影視行業(yè)招投標風險與防控
- 建筑防雷與接地-等電位連接
- 四川音樂學院附屬中等音樂學校輔導員招聘考試真題2023
- 2024行政法與行政訴訟法論述題
- 國際貨運代理業(yè)現(xiàn)狀及發(fā)展對策分析-以KX公司為例
- 施工現(xiàn)場安全文明施工管理處罰細則
- 重慶洪崖洞旅游營銷策劃
- 消費者調(diào)查訪談提綱模板
- 山東建筑大學混凝土結構原理期末考試復習題
- 消化道腫瘤的診斷和治療
- 護理病例報告范文5篇
- 班主任基本功大賽:模擬情景題及參考答案匯編(小學組)
評論
0/150
提交評論