




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、湖南科技大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告二九級(jí)計(jì)三班學(xué) 號(hào):09050103XX姓 名:賀 雙 鳳指導(dǎo)老師:劉 毅 志時(shí) 間:2012.02.202012.03.0252 / 521 系統(tǒng)需求分析1.1系統(tǒng)效用分析員工培訓(xùn)系統(tǒng)需要實(shí)現(xiàn)的主要效用包括:l 企業(yè)總體培訓(xùn)課程的設(shè)置和安排。l 允許員工根據(jù)自己的情況選擇合適的課程和上課時(shí)間。l 對(duì)選課結(jié)果進(jìn)行統(tǒng)計(jì)報(bào)表。允許員工對(duì)最后選課結(jié)果的查詢(xún)。l 培訓(xùn)考核成績(jī)的輸入和查詢(xún)。l 員工培訓(xùn)效果的綜合報(bào)表。l 員工個(gè)人信息的修改。圖1、員工培訓(xùn)管理系統(tǒng)效用模塊圖1.2系統(tǒng)效用模塊設(shè)計(jì)(劃分)本系統(tǒng)涉及到員工和培訓(xùn)管理部門(mén)之間的交流,因此需要根
2、據(jù)用戶(hù)的不同分成兩大效用模塊。這兩個(gè)模塊的效用和使用的權(quán)限完全不同。本系統(tǒng)效用模塊如圖1所示。1.3與其它系統(tǒng)的關(guān)系圖2、培訓(xùn)管理數(shù)據(jù)流程圖員工培訓(xùn)系統(tǒng)可以為員工素質(zhì)技能的評(píng)價(jià)提供可靠的依據(jù),是職務(wù)評(píng)定的一個(gè)參考信息源。系統(tǒng)本身需要用到人事管理系統(tǒng)中的員工基本信息和部門(mén)信息等輔助資料,這些數(shù)據(jù)可以通過(guò)數(shù)據(jù)庫(kù)直接讀取。1.4數(shù)據(jù)流程圖員工培訓(xùn)管理系統(tǒng)的數(shù)據(jù)流程如圖2所示。2 數(shù)據(jù)庫(kù)設(shè)計(jì)2.1數(shù)據(jù)庫(kù)需求分析根據(jù)系統(tǒng)數(shù)據(jù)流程圖,我們可以列出以下系統(tǒng)所需的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):l 課程設(shè)置:編號(hào)、名稱(chēng)、簡(jiǎn)介、所用教材、上課地點(diǎn)、人數(shù)、上課時(shí)間l 選課結(jié)果:記錄編號(hào)、員工、課程、考核成績(jī)、評(píng)價(jià)、考核日期。所
3、需的外部數(shù)據(jù)支持:l 人員信息:?jiǎn)T工號(hào)、密碼、權(quán)限、姓名、部門(mén)、當(dāng)前狀態(tài)等。l 部門(mén)設(shè)置:部門(mén)編號(hào)、名稱(chēng)等。2.2數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)圖3是本系統(tǒng)所需數(shù)據(jù)的E-R模型圖。圖3、培訓(xùn)管理E-R圖2.3數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)根據(jù)E-R圖和數(shù)據(jù)庫(kù)需求分析,培訓(xùn)管理系統(tǒng)需要?jiǎng)?chuàng)建2個(gè)主要的數(shù)據(jù)表:課程設(shè)置表和培訓(xùn)安排表。對(duì)應(yīng)這兩個(gè)表中的個(gè)別代碼字段,又需要?jiǎng)?chuàng)建2個(gè)代碼表:課程狀態(tài)代碼表和考核評(píng)價(jià)代碼表。這4個(gè)數(shù)據(jù)表的結(jié)構(gòu)如表1至表4所示。員工信息和部門(mén)信息作為外部數(shù)據(jù)支持可以使用人事管理系統(tǒng)中建立的數(shù)據(jù)表,如表5和表6所示。表1 course課程設(shè)置表字段名數(shù)據(jù)類(lèi)型是否可空說(shuō)明csid課程編號(hào)name課程名t
4、eacher任課教師(外部關(guān)鍵字person)intro課程簡(jiǎn)介book所用教材classroom上課地點(diǎn)number課程上限人數(shù)classtime開(kāi)課時(shí)間state狀態(tài)(外部關(guān)鍵字course_state)exam_date表2 training_plan培訓(xùn)安排表字段名數(shù)據(jù)類(lèi)型是否可空說(shuō)明tpid編號(hào)person員工(外部關(guān)鍵字person)course課程score成績(jī)appraisement評(píng)價(jià)(外部關(guān)鍵字appraisement)表3 course_state課程狀態(tài)代碼表字段名數(shù)據(jù)類(lèi)型是否可空說(shuō)明cscode狀態(tài)代碼description描述表4 apprisement考核評(píng)價(jià)代碼
5、表字段名數(shù)據(jù)類(lèi)型是否可空說(shuō)明code評(píng)價(jià)代碼description描述表5 person員工個(gè)人信息表字段名數(shù)據(jù)類(lèi)型是否可空說(shuō)明id員工號(hào)(主關(guān)鍵字)passwd密碼authority用戶(hù)權(quán)限name姓名sex性別birthday生日department所在部門(mén)job職務(wù)edu_level受教育程度speciaty專(zhuān)業(yè)技能address家庭住址tel聯(lián)系電話(huà)email電子信箱state當(dāng)前狀態(tài)(T-員工,F-非員工)remark備注表6 department部門(mén)信息表字段名數(shù)據(jù)類(lèi)型是否可空說(shuō)明depid部門(mén)編號(hào)name部門(mén)名稱(chēng)manager部門(mén)經(jīng)理intro簡(jiǎn)介2.4數(shù)據(jù)庫(kù)的建立2.4.1數(shù)據(jù)
6、庫(kù)的建立2.4.2初始數(shù)據(jù)的輸入本系統(tǒng)中,初始數(shù)據(jù)包括課程狀態(tài)代碼和評(píng)價(jià)代碼,如表7至表8所示。表7 課程狀態(tài)代碼代碼說(shuō)明0選課中1進(jìn)行中2已結(jié)束表8 考核評(píng)價(jià)代碼代碼說(shuō)明0未考核1不及格2及格3良好4優(yōu)秀(以下各部分請(qǐng)?jiān)O(shè)計(jì)者完成)。3 各效用模塊的設(shè)計(jì)與實(shí)現(xiàn)3.1效用說(shuō)明本管理系統(tǒng)主要分為兩大部分:培訓(xùn)管理應(yīng)用程序和學(xué)員選課應(yīng)用程序。培訓(xùn)管理應(yīng)用程序主要用于培訓(xùn)中心的管理人員對(duì)培訓(xùn)課程和培訓(xùn)情況進(jìn)行維護(hù)。此應(yīng)用程序主要包括四項(xiàng)效用:課程設(shè)置、選課結(jié)果查詢(xún)修改、成績(jī)輸入、培訓(xùn)成績(jī)統(tǒng)計(jì)報(bào)表。另外,系統(tǒng)需要有登錄窗口(用于權(quán)限認(rèn)證)和導(dǎo)航窗口(用于連接各項(xiàng)效用)。學(xué)員選課應(yīng)用程序包括個(gè)人信息修改、
7、選課和成績(jī)查詢(xún)?nèi)?xiàng)效用。(一)培訓(xùn)管理管理應(yīng)用程序效用說(shuō)明(二)學(xué)員選課應(yīng)用程序效用說(shuō)明3.2用戶(hù)界面設(shè)計(jì)完成數(shù)據(jù)庫(kù)創(chuàng)建和效用說(shuō)明以后,我們可以進(jìn)行下一步工作,既設(shè)計(jì)用戶(hù)界面。1、培訓(xùn)管理應(yīng)用程序登錄窗體的創(chuàng)建2、培訓(xùn)管理應(yīng)用程序主窗體的創(chuàng)建3、課程設(shè)置窗體的創(chuàng)建4、選課結(jié)果查詢(xún)窗體的創(chuàng)建5、學(xué)員名單報(bào)表窗體的創(chuàng)建6、考核評(píng)定結(jié)果窗體的創(chuàng)建7、培訓(xùn)統(tǒng)計(jì)窗體的創(chuàng)建8、培訓(xùn)成績(jī)報(bào)表窗體的創(chuàng)建9、學(xué)員選課客戶(hù)端界面的創(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é)果查詢(xún)的實(shí)現(xiàn)5、學(xué)員名單報(bào)表的實(shí)現(xiàn)6、考核評(píng)定結(jié)果的實(shí)現(xiàn)7、
8、培訓(xùn)統(tǒng)計(jì)的實(shí)現(xiàn)8、培訓(xùn)成績(jī)報(bào)表的實(shí)現(xiàn)9、學(xué)員選課客戶(hù)端應(yīng)用程序的創(chuàng)建4 系統(tǒng)實(shí)現(xiàn)本實(shí)驗(yàn)由三個(gè)人配合完成,我負(fù)責(zé)“選擇培訓(xùn)課程模塊”和“課程設(shè)置模塊”。阮柳春同學(xué)負(fù)責(zé)“登陸模塊”、“用戶(hù)信息修改模塊”、和“培訓(xùn)成績(jī)管理模塊”。王相同學(xué)負(fù)責(zé)“考核成績(jī)查詢(xún)模塊”和“選課結(jié)果管理模塊”4.1選課培訓(xùn)課程模塊4.1.1具體效用分析1)能查詢(xún)課程表2)能選擇課程3)能刪除選擇的課程4.1.2實(shí)現(xiàn)方法通過(guò)兩個(gè)ado控件與數(shù)據(jù)庫(kù)進(jìn)行連接,兩個(gè)datagrid控件分別顯示課程表和登陸用戶(hù)已選擇的課程。3個(gè)button按鈕對(duì)應(yīng)查詢(xún)課程表、選擇課程和刪除課程。4.1.2遇到的主要問(wèn)題及相關(guān)解決方法1)因?yàn)樵跀?shù)據(jù)庫(kù)中
9、建立course表的時(shí)候用的是英文,故在查詢(xún)的時(shí)候表顯示的也是英文,這給用戶(hù)帶來(lái)了極大的不便,使系統(tǒng)的友好性降低,為了解決這個(gè)問(wèn)題,我使用了sql重命名語(yǔ)句,對(duì)用戶(hù)已選擇的課程表,使用了語(yǔ)句:select 課程號(hào)=training_plan.cid,成績(jī)=score,考核評(píng)價(jià)=apprisement.description from training_plan,apprisement where training_plan.personid='"+personid+"'and apprisement.appcode=training_plan.appcode
10、;在course表中使用了語(yǔ)句:select 課程號(hào)=cid,課程名=cname,老師編號(hào)=personid,課程簡(jiǎn)介=intro,所用教材=book,上課地點(diǎn)=classroom,課程上限人數(shù)=number,開(kāi)課時(shí)間=classtime,狀態(tài)=cscode,考試時(shí)間=exam_date;這個(gè)問(wèn)題同樣在選擇查詢(xún)字段的時(shí)候也出現(xiàn)了,combo控件備選查詢(xún)字段要用到中文,而數(shù)據(jù)庫(kù)中的字段名是英文,所以要進(jìn)行中英文的轉(zhuǎn)換。剛開(kāi)始用switch語(yǔ)句,由于switch語(yǔ)句不支持csting型,改用ifelse語(yǔ)句。2)選課函數(shù)的編碼要考慮多種情況。第一,如果登錄用戶(hù)已選擇這門(mén)課,則不能再選。第二,課程已
11、經(jīng)開(kāi)始或結(jié)束則不能選。第三,該課上限人數(shù)已到,則選課失敗。3)退選課程函數(shù)要考慮課程是否已經(jīng)開(kāi)始或結(jié)束,如果已經(jīng)開(kāi)始或結(jié)束,則不能退選。4.1.3本模塊的部分界面截圖4.2設(shè)置課程模塊4.2.1具體效用分析1)能查詢(xún)課程表2)能刪除某門(mén)課程3)能更新某門(mén)課程4)能添加某門(mén)課程4.2.3實(shí)現(xiàn)方法通過(guò)一個(gè)ado控件與數(shù)據(jù)庫(kù)進(jìn)行連接,一個(gè)datagrid控件顯示課程表信息。10個(gè)edit控件對(duì)應(yīng)課程表的10個(gè)字段。4個(gè)button按鈕對(duì)應(yīng)“查詢(xún)”、“更新”、“刪除”和“添加”。在測(cè)試的時(shí)候,老師給我提出了有用的建議,要我增加一個(gè)“清零”按鈕,故在后來(lái)增加了一個(gè)“清零”按鈕。4.2.4遇到的主要問(wèn)題及
12、相關(guān)解決方法1)在寫(xiě)查詢(xún)函數(shù)的時(shí)候,發(fā)現(xiàn)這次與以前要實(shí)現(xiàn)的效用有所差異。以前都是對(duì)單個(gè)字段進(jìn)行查詢(xún),很容易編碼。現(xiàn)在要對(duì)單個(gè)或多個(gè)字段進(jìn)行查詢(xún),比如要查詢(xún)同時(shí)滿(mǎn)足上課地點(diǎn)為10,課程號(hào)為1,老師編號(hào)為5的單元組,這樣實(shí)現(xiàn)起來(lái)就難度加大了。因?yàn)椴樵?xún)的字段具有不可預(yù)知性。為了解決這個(gè)問(wèn)題,我引入了一個(gè)標(biāo)記變量ok,成功解決了這個(gè)問(wèn)題。值得一提的是當(dāng)查詢(xún)字段全部為空的時(shí)候,點(diǎn)擊“查詢(xún)”按鈕,課程表應(yīng)該顯示全部的課程信息。不然的話(huà),只能在初次進(jìn)入該模塊時(shí),能看到全部課程信息。當(dāng)完成某個(gè)操作的時(shí)候,就無(wú)法看到全部課程的信息了。在測(cè)試的時(shí)候,老師建議我對(duì)某些字段(如課程名)加入模糊查詢(xún)效用,我覺(jué)得這個(gè)建議
13、非常好,很方便,實(shí)現(xiàn)起來(lái)也不是很復(fù)雜,引入通配符*即可。2)更新一定要通過(guò)課程編號(hào),不然無(wú)法得到要更新的元組,如果沒(méi)有輸入課程編號(hào),應(yīng)該給出錯(cuò)誤提示。課程表的狀態(tài)字段,只能是0.,1,2三個(gè)數(shù)字中的一個(gè),如果不是,要給出錯(cuò)誤提示。(其實(shí)這里通過(guò)combo控件實(shí)現(xiàn)起來(lái)更方便)3)剛開(kāi)始寫(xiě)刪除函數(shù)的時(shí)候,只考慮到了不存在該課程時(shí),不能刪除,給出提示。后來(lái)發(fā)現(xiàn)了一個(gè)很隱蔽的問(wèn)題,就是如果有學(xué)生選了這門(mén)課,則不能隨便刪除。如一定要?jiǎng)h除,必須先對(duì)培訓(xùn)計(jì)劃表training_plan表進(jìn)行處理。4)添加函數(shù)要考慮幾個(gè)問(wèn)題。第一,檢測(cè)該課程是否已在course表存在,如存在,則不能添加。第二,檢測(cè)輸入的任課
14、老師是否存在,如果在person表中沒(méi)有該任課老師,則給出錯(cuò)誤提示。第三,狀態(tài)字段的內(nèi)容是否是0,1,2三個(gè)數(shù)字中的一個(gè),如不是,給出錯(cuò)誤提示。第四,要考慮哪些字段可以為空,哪些字段不能為空,不為空的地方,如輸入為空,要給出相關(guān)提示。4.2.3本模塊的部分界面截圖5心得體會(huì)第一,由于是第一次進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā),并且vc使用了MFC,且工作量不小。所以前兩天我們遇到了不少的麻煩。基于此,我們并沒(méi)有忙于進(jìn)行項(xiàng)目開(kāi)發(fā),而是找尋相關(guān)書(shū)籍資料認(rèn)真了解數(shù)據(jù)庫(kù)詳細(xì)開(kāi)發(fā)流程,參照課程設(shè)計(jì)指導(dǎo)書(shū)的前兩章,先做單模塊的效用開(kāi)發(fā),實(shí)現(xiàn)“插入”,“刪除”,“查詢(xún)”,“添加”,并且讀懂提供的代碼。從這里,我知道了一個(gè)拿到一
15、個(gè)項(xiàng)目,并且是陌生的,以前沒(méi)有做過(guò)類(lèi)似的,一定不要急于動(dòng)手,事先要做好需求分析,邏輯設(shè)計(jì),概念設(shè)計(jì),否則只會(huì)事倍功半。第二,要學(xué)會(huì)團(tuán)隊(duì)合作。相比以前做的課程設(shè)計(jì),這個(gè)項(xiàng)目無(wú)論從難度上,還是工作量上都大很多。故這時(shí),團(tuán)隊(duì)合作就顯得非常重要了。一個(gè)人是無(wú)法在短時(shí)間內(nèi)完成這樣一個(gè)項(xiàng)目的。在分工的時(shí)候,一定要明確各自的任務(wù),定義好相關(guān)的接口。第三,要對(duì)工程文件及時(shí)進(jìn)行正確清楚有層次的備份,最好是每次修復(fù)的bug,都有相關(guān)的日志文件進(jìn)行記錄。由于沒(méi)有大型項(xiàng)目開(kāi)發(fā)的經(jīng)驗(yàn),我們雖然對(duì)工程文件進(jìn)行了備份,但是沒(méi)有層次,工程命名也沒(méi)有按項(xiàng)目開(kāi)發(fā)的進(jìn)度命名,沒(méi)有日志文件,加上分工合作,常常是這個(gè)bug在這個(gè)工程進(jìn)
16、行了修復(fù),另一個(gè)bug在竟然是在令一個(gè)版本進(jìn)行修復(fù)。搞得很亂。開(kāi)發(fā)前期,我們?cè)谶@點(diǎn)上吃了不少苦果。幸好及時(shí)意識(shí)到了錯(cuò)誤,果斷進(jìn)行了改正。以后,進(jìn)公司了,項(xiàng)目會(huì)大很多,動(dòng)則幾十萬(wàn)行代碼,從事開(kāi)發(fā)的團(tuán)隊(duì)成員也很多,這時(shí)候,對(duì)工程文件進(jìn)行正確清楚有層次的備份,對(duì)bug修復(fù)進(jìn)行記錄就變得很重要了。6源代碼由于整個(gè)項(xiàng)目的源代碼比較多,所以在此只附上我寫(xiě)的兩個(gè)模塊的源代碼。6.1選課模塊源代碼/ DailogForSelectCourse.cpp : implementation "stdafx.h"#include "員工培訓(xùn)管理系統(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 課程號(hào)=cid,課程名=cname,老師編號(hào)=personid,課程簡(jiǎn)介=intro,所用教材=book,上課地點(diǎn)=classroom,課程上限人數(shù)=number,開(kāi)課時(shí)間=classtime,狀態(tài)=cscode,考試時(shí)間=exam_date from course WHERE " m_combo1_FieldName.GetWindowText(tmpStr1);if
24、(tmpStr1="課程號(hào)")tmpStr2="cid"elseif (tmpStr1="課程名") tmpStr2="cname"elseif(tmpStr1="任課老師")tmpStr2="personid"elseif(tmpStr1="課程簡(jiǎn)介")tmpStr2="intro"elseif(tmpStr1="所用教材")tmpStr2="book"elseif(tmpStr1="
25、上課地點(diǎn)")tmpStr2="classroom"elseif(tmpStr1="課程上限人數(shù)")tmpStr2="number"elseif(tmpStr1="開(kāi)課時(shí)間")tmpStr2="classtime"elseif(tmpStr1="狀態(tài)")tmpStr2="cscode"elseif(tmpStr1="考核日期")tmpStr2="exam_date"elseif(tmpStr1="&
26、quot;)strSQL = "select 課程號(hào)=cid,課程名=cname,老師編號(hào)=personid,課程簡(jiǎn)介=intro,所用教材=book,上課地點(diǎn)=classroom,課程上限人數(shù)=number,開(kāi)課時(shí)間=classtime,狀態(tài)=cscode,考試時(shí)間=exam_date from course"m_Adodc1.SetRecordSource(strSQL); m_Adodc1.Refresh();UpdateData(FALSE);return;elseAfxMessageBox("查詢(xún)字段有誤,請(qǐng)確認(rèn)");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,"確定選這門(mén)課嗎?","提示",MB_OKCANCEL)=IDOK )/AfxMessageBox("MBOK");UpdateData(TRUE);_ConnectionPtr m_pConnection;:CoInitialize(NULL);/在ADO操作中建議語(yǔ)句中要常用trycatch()來(lái)捕獲錯(cuò)誤信息/因?yàn)樗袝r(shí)會(huì)經(jīng)常出現(xiàn)一些想不到的錯(cuò)誤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ù)庫(kù)");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)開(kāi)始或結(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;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ǎn)人!");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,"確定要?jiǎng)h除這門(mén)課嗎?","提示",MB_OKCANCEL)=IDOK )/AfxMessageBox("MBOK");UpdateData(TRUE);_ConnectionPtr m_pConnection;_R
41、ecordsetPtr m_pRecordset;:CoInitialize(NULL);/在ADO操作中建議語(yǔ)句中要常用trycatch()來(lái)捕獲錯(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->Stat
42、e = adStateOpen) MessageBox("成功連接數(shù)據(jù)庫(kù)");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)開(kāi)始或結(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
45、,adCmdText);m_pConnection->Close(); m_Adodc2.Refresh(); UpdateData(FALSE);AfxMessageBox("成功刪除");BOOL DailogForSelectCourse:OnInitDialog()CDialog:OnInitDialog();CString strAdd="select 課程號(hào)=training_plan.cid,成績(jī)=score,考核評(píng)價(jià)=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("請(qǐng)選擇");m_combo1_FieldName.AddString("課程號(hào)");m_combo1_FieldName.AddString("課程名")
47、;m_combo1_FieldName.AddString("任課老師");m_combo1_FieldName.AddString("課程簡(jiǎn)介");m_combo1_FieldName.AddString("所用教材");m_combo1_FieldName.AddString("上課地點(diǎn)");m_combo1_FieldName.AddString("課程上限人數(shù)");m_combo1_FieldName.AddString("開(kāi)課時(shí)間");m_combo1_FieldN
48、ame.AddString("狀態(tài)");m_combo1_FieldName.AddString("考核日期");return TRUE;6.2設(shè)置課程模塊/ DailogForMGcourse.cpp : implementation #include "stdafx.h"#include "員工培訓(xùn)管理系統(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 課程號(hào)=ci
55、d,課程名=cname,老師編號(hào)=personid,課程簡(jiǎn)介=intro,所用教材=book,上課地點(diǎn)=classroom,課程上限人數(shù)=number,開(kāi)課時(shí)間=classtime,狀態(tài)=cscode,考試時(shí)間=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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 風(fēng)景園林基礎(chǔ)考研資料試題及參考答案詳解【培優(yōu)a卷】
- (高清版)DB1302∕T 496-2019 日光溫室薄皮甜瓜水肥一體化生產(chǎn)技術(shù)規(guī)程
- 2024年山東華興機(jī)械集團(tuán)有限責(zé)任公司人員招聘筆試備考題庫(kù)及答案詳解(必刷)
- 2024年濱州新能源集團(tuán)有限責(zé)任公司及權(quán)屬公司公開(kāi)招聘工作人員遞補(bǔ)筆試備考題庫(kù)及參考答案詳解一套
- 2023國(guó)家能源投資集團(tuán)有限責(zé)任公司第一批社會(huì)招聘筆試備考題庫(kù)含答案詳解(模擬題)
- 2025年黑龍江省五常市輔警招聘考試試題題庫(kù)含答案詳解(奪分金卷)
- 2025年河北省定州市輔警招聘考試試題題庫(kù)含答案詳解(預(yù)熱題)
- 2025年O2O零售行業(yè)商業(yè)模式創(chuàng)新研究報(bào)告
- 2024年演出經(jīng)紀(jì)人之演出經(jīng)紀(jì)實(shí)務(wù)考試題庫(kù)附答案
- 全鏈條齒輪質(zhì)量管理
- 工程師職稱(chēng)評(píng)定表
- “部編本”初中語(yǔ)文綜合性學(xué)習(xí)編寫(xiě)體例及教學(xué)建議
- 納米陶瓷噴涂施工方案范本
- 原發(fā)性肝癌診療指南(2023年年版)要點(diǎn)
- 商砼混凝土攪拌站可研研究報(bào)告
- 銀行訴訟案件管理辦法
- 危險(xiǎn)性較大的分部分項(xiàng)工程專(zhuān)項(xiàng)施工方案編制指南
- 云南省昆明市成考專(zhuān)升本2023年醫(yī)學(xué)綜合真題及答案
- 氣管切開(kāi)非機(jī)械通氣患者氣道護(hù)理規(guī)范(2020年版指南解讀)
- 生物質(zhì)材料及應(yīng)用淀粉
- 尾礦庫(kù)各崗位安全操作規(guī)程安全作業(yè)指導(dǎo)書(shū)
評(píng)論
0/150
提交評(píng)論