2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  數(shù)據(jù)庫課程設(shè)計(jì)報(bào)告</b></p><p><b>  二○○九級計(jì)三班</b></p><p><b>  學(xué) 號: </b></p><p><b>  姓 名: </b></p><p><b> 

2、 指導(dǎo)老師: </b></p><p>  時(shí) 間:2012.02.20—2012.03.02</p><p><b>  1 系統(tǒng)需求分析</b></p><p><b>  1.1系統(tǒng)功能分析</b></p><p>  員工培訓(xùn)系統(tǒng)需要實(shí)現(xiàn)的主要功能包括:</p>

3、<p>  企業(yè)總體培訓(xùn)課程的設(shè)置和安排。</p><p>  允許員工根據(jù)自己的情況選擇合適的課程和上課時(shí)間。</p><p>  對選課結(jié)果進(jìn)行統(tǒng)計(jì)報(bào)表。允許員工對最后選課結(jié)果的查詢。</p><p>  培訓(xùn)考核成績的輸入和查詢。</p><p>  員工培訓(xùn)效果的綜合報(bào)表。</p><p>  員

4、工個(gè)人信息的修改。</p><p>  1.2系統(tǒng)功能模塊設(shè)計(jì)(劃分)</p><p>  本系統(tǒng)涉及到員工和培訓(xùn)管理部門之間的交流,因此需要根據(jù)用戶的不同分成兩大功能模塊。這兩個(gè)模塊的功能和使用的權(quán)限完全不同。本系統(tǒng)功能模塊如圖1所示。</p><p>  1.3與其它系統(tǒng)的關(guān)系</p><p>  員工培訓(xùn)系統(tǒng)可以為員工素質(zhì)技能的評價(jià)提供

5、可靠的依據(jù),是職務(wù)評定的一個(gè)參考信息源。系統(tǒng)本身需要用到人事管理系統(tǒng)中的員工基本信息和部門信息等輔助資料,這些數(shù)據(jù)可以通過數(shù)據(jù)庫直接讀取。</p><p><b>  1.4數(shù)據(jù)流程圖</b></p><p>  員工培訓(xùn)管理系統(tǒng)的數(shù)據(jù)流程如圖2所示。</p><p><b>  2 數(shù)據(jù)庫設(shè)計(jì)</b></p>

6、<p>  2.1數(shù)據(jù)庫需求分析</p><p>  根據(jù)系統(tǒng)數(shù)據(jù)流程圖,我們可以列出以下系統(tǒng)所需的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):</p><p>  課程設(shè)置:編號、名稱、簡介、所用教材、上課地點(diǎn)、人數(shù)、上課時(shí)間</p><p>  選課結(jié)果:記錄編號、員工、課程、考核成績、評價(jià)、考核日期。</p><p>  所需的外部數(shù)據(jù)支持:<

7、;/p><p>  人員信息:員工號、密碼、權(quán)限、姓名、部門、當(dāng)前狀態(tài)等。</p><p>  部門設(shè)置:部門編號、名稱等。</p><p>  2.2數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)</p><p>  圖3是本系統(tǒng)所需數(shù)據(jù)的E-R模型圖。</p><p>  2.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)</p><p>  根據(jù)

8、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所示。</p><p>  表2 training_plan培訓(xùn)安排表</p><p>  表3

9、course_state課程狀態(tài)代碼表</p><p>  表4 apprisement考核評價(jià)代碼表</p><p>  表5 person員工個(gè)人信息表</p><p>  表6 department部門信息表</p><p><b>  2.4數(shù)據(jù)庫的建立</b></p><p>  

10、2.4.1數(shù)據(jù)庫的建立</p><p>  2.4.2初始數(shù)據(jù)的輸入</p><p>  本系統(tǒng)中,初始數(shù)據(jù)包括課程狀態(tài)代碼和評價(jià)代碼,如表7至表8所示。</p><p>  表7 課程狀態(tài)代碼</p><p>  表8 考核評價(jià)代碼</p><p> ?。ㄒ韵赂鞑糠终?jiān)O(shè)計(jì)者完成)。</p><

11、p>  3 各功能模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  3.1功能說明</b></p><p>  本管理系統(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)

12、證)和導(dǎo)航窗口(用于連接各項(xiàng)功能)。學(xué)員選課應(yīng)用程序包括個(gè)人信息修改、選課和成績查詢?nèi)?xiàng)功能。</p><p>  (一)培訓(xùn)管理管理應(yīng)用程序功能說明</p><p> ?。ǘW(xué)員選課應(yīng)用程序功能說明</p><p><b>  3.2用戶界面設(shè)計(jì)</b></p><p>  完成數(shù)據(jù)庫創(chuàng)建和功能說明以后,我們可以進(jìn)行

13、下一步工作,既設(shè)計(jì)用戶界面。</p><p>  1、培訓(xùn)管理應(yīng)用程序登錄窗體的創(chuàng)建</p><p>  2、培訓(xùn)管理應(yīng)用程序主窗體的創(chuàng)建</p><p>  3、課程設(shè)置窗體的創(chuàng)建</p><p>  4、選課結(jié)果查詢窗體的創(chuàng)建</p><p>  5、學(xué)員名單報(bào)表窗體的創(chuàng)建</p><p>

14、  6、考核評定結(jié)果窗體的創(chuàng)建</p><p>  7、培訓(xùn)統(tǒng)計(jì)窗體的創(chuàng)建</p><p>  8、培訓(xùn)成績報(bào)表窗體的創(chuàng)建</p><p>  9、學(xué)員選課客戶端界面的創(chuàng)建</p><p>  3.3各功能模塊的實(shí)現(xiàn)</p><p>  1、培訓(xùn)管理應(yīng)用程序數(shù)據(jù)模塊的創(chuàng)建</p><p>  2

15、、培訓(xùn)管理應(yīng)用程序登錄程序的實(shí)現(xiàn)</p><p>  3、課程設(shè)置模塊的實(shí)現(xiàn)</p><p>  4、選課結(jié)果查詢的實(shí)現(xiàn)</p><p>  5、學(xué)員名單報(bào)表的實(shí)現(xiàn)</p><p>  6、考核評定結(jié)果的實(shí)現(xiàn)</p><p><b>  7、培訓(xùn)統(tǒng)計(jì)的實(shí)現(xiàn)</b></p><p

16、>  8、培訓(xùn)成績報(bào)表的實(shí)現(xiàn)</p><p>  9、學(xué)員選課客戶端應(yīng)用程序的創(chuàng)建</p><p><b>  4 系統(tǒng)實(shí)現(xiàn)</b></p><p>  4.1選課培訓(xùn)課程模塊</p><p>  4.1.1具體功能分析</p><p><b>  1)能查詢課程表</b&g

17、t;</p><p><b>  2)能選擇課程</b></p><p>  3)能刪除選擇的課程</p><p><b>  4.1.2實(shí)現(xiàn)方法</b></p><p>  通過兩個(gè)ado控件與數(shù)據(jù)庫進(jìn)行連接,兩個(gè)datagrid控件分別顯示課程表和登陸用戶已選擇的課程。3個(gè)button按鈕對應(yīng)查

18、詢課程表、選擇課程和刪除課程。</p><p>  4.1.2遇到的主要問題及相關(guān)解決方法</p><p>  1)因?yàn)樵跀?shù)據(jù)庫中建立course表的時(shí)候用的是英文,故在查詢的時(shí)候表顯示的也是英文,這給用戶帶來了極大的不便,使系統(tǒng)的友好性降低,為了解決這個(gè)問題,我使用了sql重命名語句,對用戶已選擇的課程表,使用了語句:select 課程號=training_plan.cid,成績=sco

19、re,考核評價(jià)=apprisement.description from training_plan,apprisement where training_plan.personid='"+personid+"'and apprisement.appcode=training_plan.appcode;在course表中使用了語句:select 課程號=cid,課程名=cname,老師編號=perso

20、nid,課程簡介=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)換</p><p>  2)選課函數(shù)的編碼要考慮多種情況。第一,如果登錄用戶已選擇這門課,則不能再選。

21、第二,課程已經(jīng)開始或結(jié)束則不能選。第三,該課上限人數(shù)已到,則選課失敗。</p><p>  3)退選課程函數(shù)要考慮課程是否已經(jīng)開始或結(jié)束,如果已經(jīng)開始或結(jié)束,則不能退選。</p><p>  4.1.3本模塊的部分界面截圖</p><p><b>  4.2設(shè)置課程模塊</b></p><p>  4.2.1具體功能分析

22、</p><p><b>  1)能查詢課程表</b></p><p><b>  2)能刪除某門課程</b></p><p><b>  3)能更新某門課程</b></p><p><b>  4)能添加某門課程</b></p><p

23、><b>  4.2.3實(shí)現(xiàn)方法</b></p><p>  通過一個(gè)ado控件與數(shù)據(jù)庫進(jìn)行連接,一個(gè)datagrid控件顯示課程表信息。10個(gè)edit控件對應(yīng)課程表的10個(gè)字段。4個(gè)button按鈕對應(yīng)“查詢”、“更新”、“刪除”和“添加”。在測試的時(shí)候,老師給我提出了有用的建議,要我增加一個(gè)“清零”按鈕,故在后來增加了一個(gè)“清零”按鈕。</p><p>  

24、4.2.4遇到的主要問題及相關(guān)解決方法</p><p>  1)在寫查詢函數(shù)的時(shí)候,發(fā)現(xiàn)這次與以前要實(shí)現(xiàn)的功能有所差異。以前都是對單個(gè)字段進(jìn)行查詢,很容易編碼。現(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í)候

25、,點(diǎn)擊“查詢”按鈕,課程表應(yīng)該顯示全部的課程信息。不然的話,只能在初次進(jìn)入該模塊時(shí),能看到全部課程信息。當(dāng)完成某個(gè)操作的時(shí)候,就無法看到全部課程的信息了。在測試的時(shí)候,老師建議我對某些字段(如課程名)加入模糊查詢功能,我覺得這個(gè)建議非常好,很方便,實(shí)現(xiàn)起來也不是很復(fù)雜,引入通配符*即可。</p><p>  2)更新一定要通過課程編號,不然無法得到要更新的元組,如果沒有輸入課程編號,應(yīng)該給出錯(cuò)誤提示。課程表的狀態(tài)

26、字段,只能是0.,1,2三個(gè)數(shù)字中的一個(gè),如果不是,要給出錯(cuò)誤提示。(其實(shí)這里通過combo控件實(shí)現(xiàn)起來更方便)</p><p>  3)剛開始寫刪除函數(shù)的時(shí)候,只考慮到了不存在該課程時(shí),不能刪除,給出提示。后來發(fā)現(xiàn)了一個(gè)很隱蔽的問題,就是如果有學(xué)生選了這門課,則不能隨便刪除。如一定要?jiǎng)h除,必須先對培訓(xùn)計(jì)劃表training_plan表進(jìn)行處理。</p><p>  4)添加函數(shù)要考慮幾個(gè)

27、問題。第一,檢測該課程是否已在course表存在,如存在,則不能添加。第二,檢測輸入的任課老師是否存在,如果在person表中沒有該任課老師,則給出錯(cuò)誤提示。第三,狀態(tài)字段的內(nèi)容是否是0,1,2三個(gè)數(shù)字中的一個(gè),如不是,給出錯(cuò)誤提示。第四,要考慮哪些字段可以為空,哪些字段不能為空,不為空的地方,如輸入為空,要給出相關(guān)提示。</p><p>  4.2.3本模塊的部分界面截圖</p><p>

28、;<b>  5.心得體會(huì)</b></p><p>  第一,由于是第一次進(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)目,并且

29、是陌生的,以前沒有做過類似的,一定不要急于動(dòng)手,事先要做好需求分析,邏輯設(shè)計(jì),概念設(shè)計(jì),否則只會(huì)事倍功半。</p><p>  第二,要學(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)的接口。</p><p>  第三,要對工程文件及時(shí)進(jìn)

30、行正確清楚有層次的備份,最好是每次修復(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ì)成

31、員也很多,這時(shí)候,對工程文件進(jìn)行正確清楚有層次的備份,對bug修復(fù)進(jìn)行記錄就變得很重要了。</p><p><b>  6.源代碼</b></p><p>  由于整個(gè)項(xiàng)目的源代碼比較多,所以在此只附上我寫的兩個(gè)模塊的源代碼。</p><p>  6.1選課模塊源代碼</p><p>  // DailogForSele

32、ctCourse.cpp : implementation file</p><p>  #include "stdafx.h"</p><p>  #include "員工培訓(xùn)管理系統(tǒng).h"</p><p>  #include "DailogForSelectCourse.h"</p>&

33、lt;p>  #include "DailogFor_Confirm_sel_course.h"</p><p>  #ifdef _DEBUG</p><p>  #define new DEBUG_NEW</p><p>  #undef THIS_FILE</p><p>  static char THIS_

34、FILE[] = __FILE__;</p><p><b>  #endif</b></p><p>  /////////////////////////////////////////////////////////////////////////////</p><p>  // DailogForSelectCourse dialog

35、</p><p>  DailogForSelectCourse::DailogForSelectCourse(CString _peronid,CString Link,CWnd* pParent </p><p>  /*=NULL*/)</p><p>  : CDialog(DailogForSelectCourse::IDD, pParent)</

36、p><p><b>  {</b></p><p>  personid=_peronid;</p><p>  LinkSql = Link;</p><p>  //{{AFX_DATA_INIT(DailogForSelectCourse)</p><p>  m_Edit1_FieldValu

37、e = _T("");</p><p>  m_Edit2_cidValue = _T("");</p><p>  m_Edit3_cidValue = _T("");</p><p>  //}}AFX_DATA_INIT</p><p><b>  }</b&g

38、t;</p><p>  // void DailogForSelectCourse::OnInitDialog()</p><p><b>  // {</b></p><p>  // m_combo1_FieldName.AddString(cid);</p><p>  // m_combo1_FieldNa

39、me.AddString(cname);</p><p>  // m_combo1_FieldName.AddString(personid);</p><p>  // m_combo1_FieldName.AddString(intro);</p><p>  // m_combo1_FieldName.AddString(book);</p>

40、;<p>  // m_combo1_FieldName.AddString(classroom);</p><p>  // m_combo1_FieldName.AddString(number);</p><p>  // m_combo1_FieldName.AddString(classtime);</p><p>  // m_co

41、mbo1_FieldName.AddString(cscode);</p><p><b>  // }</b></p><p>  void DailogForSelectCourse::DoDataExchange(CDataExchange* pDX)</p><p><b>  {</b></p>&

42、lt;p>  CDialog::DoDataExchange(pDX);</p><p>  //{{AFX_DATA_MAP(DailogForSelectCourse)</p><p>  DDX_Control(pDX, IDC_COMBO1, m_combo1_FieldName);</p><p>  DDX_Text(pDX, IDC_EDIT1,

43、 m_Edit1_FieldValue);</p><p>  DDX_Control(pDX, IDC_ADODC1, m_Adodc1);</p><p>  DDX_Text(pDX, IDC_EDIT2, m_Edit2_cidValue);</p><p>  DDX_Text(pDX, IDC_EDIT3, m_Edit3_cidValue);</

44、p><p>  DDX_Control(pDX, IDC_ADODC2, m_Adodc2);</p><p>  //}}AFX_DATA_MAP</p><p><b>  }</b></p><p>  BEGIN_MESSAGE_MAP(DailogForSelectCourse, CDialog)</p>

45、;<p>  //{{AFX_MSG_MAP(DailogForSelectCourse)</p><p>  ON_BN_CLICKED(IDC_OK, OnOk)</p><p>  ON_BN_CLICKED(IDC_BUTTON1, OnButton1)</p><p>  ON_CBN_KILLFOCUS(IDC_COMBO1, OnKill

46、focusCombo1)</p><p>  ON_BN_CLICKED(IDC_BUTTON2, OnButton2)</p><p>  ON_BN_CLICKED(IDC_BUTTON3, OnButtonDEL)</p><p>  //}}AFX_MSG_MAP</p><p>  END_MESSAGE_MAP()</p&g

47、t;<p>  /////////////////////////////////////////////////////////////////////////////</p><p>  // DailogForSelectCourse message handlers</p><p>  void DailogForSelectCourse::OnOk() </p

48、><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p><b>  }</b></p><p>  void DailogForSelectCourse::OnButton1(

49、) </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  UpdateData(TRUE);</p><p>  CString tmpStr1, tmpStr2,strSQL =

50、 "select 課程號=cid,課程名=cname,老師編號</p><p>  =personid,課程簡介=intro,所用教材=book,上課地點(diǎn)=classroom,課程上限人數(shù)=number,開課時(shí)間</p><p>  =classtime,狀態(tài)=cscode,考試時(shí)間=exam_date from course WHERE ";</p>

51、<p>  m_combo1_FieldName.GetWindowText(tmpStr1);</p><p>  if(tmpStr1=="課程號")</p><p>  tmpStr2="cid";</p><p><b>  else</b></p><p> 

52、 if (tmpStr1=="課程名")</p><p>  tmpStr2="cname";</p><p><b>  else</b></p><p>  if(tmpStr1=="任課老師")</p><p>  tmpStr2="person

53、id";</p><p><b>  else</b></p><p>  if(tmpStr1=="課程簡介")</p><p>  tmpStr2="intro";</p><p><b>  else</b></p><p&

54、gt;  if(tmpStr1=="所用教材")</p><p>  tmpStr2="book";</p><p><b>  else</b></p><p>  if(tmpStr1=="上課地點(diǎn)")</p><p>  tmpStr2="cla

55、ssroom";</p><p><b>  else</b></p><p>  if(tmpStr1=="課程上限人數(shù)")</p><p>  tmpStr2="number";</p><p><b>  else</b></p>

56、<p>  if(tmpStr1=="開課時(shí)間")</p><p>  tmpStr2="classtime";</p><p><b>  else</b></p><p>  if(tmpStr1=="狀態(tài)")</p><p>  tmpStr2

57、="cscode";</p><p><b>  else</b></p><p>  if(tmpStr1=="考核日</p><p><b>  期")</b></p><p>  tmpStr2="exam_date";</p

58、><p><b>  else</b></p><p><b>  if</b></p><p>  (tmpStr1=="")</p><p><b>  {</b></p><p>  strSQL = "select 課

59、程號=cid,課程名=cname,老師編號=personid,課程簡介=intro,所用教材=book,上</p><p>  課地點(diǎn)=classroom,課程上限人數(shù)=number,開課時(shí)間=classtime,狀態(tài)=cscode,考試時(shí)間=exam_date from </p><p><b>  course";</b></p>&l

60、t;p>  m_Adodc1.SetRecordSource(strSQL); </p><p>  m_Adodc1.Refresh();</p><p>  UpdateData(FALSE);</p><p><b>  return;</b></p><p><b>  }</b>

61、;</p><p><b>  else</b></p><p><b>  {</b></p><p>  AfxMessageBox("查詢字段有誤,請確認(rèn)");</p><p><b>  return ;</b></p><p&g

62、t;<b>  }</b></p><p>  strSQL += tmpStr2+" = ";</p><p>  strSQL += "'"+m_Edit1_FieldValue+"'"; </p><p>  m_Adodc1.SetRecordSource(s

63、trSQL); </p><p>  m_Adodc1.Refresh();</p><p>  UpdateData(FALSE);</p><p><b>  }</b></p><p>  void DailogForSelectCourse::OnKillfocusCombo1() </p>

64、<p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  // m_combo1_FieldName.AddString("cid");</p><p>  // m_combo1_

65、FieldName.AddString("cname");</p><p>  // m_combo1_FieldName.AddString("intro");</p><p>  // m_combo1_FieldName.AddString("book");</p><p>  // m_com

66、bo1_FieldName.AddString("classroom");</p><p>  // m_combo1_FieldName.AddString("number");</p><p>  // m_combo1_FieldName.AddString("classtime");</p><p&

67、gt;  // m_combo1_FieldName.AddString("state");</p><p><b>  }</b></p><p>  void DailogForSelectCourse::OnButton2() </p><p><b>  {</b></p>&l

68、t;p>  // TODO: Add your control notification handler code here</p><p>  // DailogFor_Confirm_sel_course* dlg = new DailogFor_Confirm_sel_course</p><p>  (personid,m_Edit2_cidValue);</p&g

69、t;<p>  // dlg->DoModal();</p><p>  if( ::MessageBox(NULL,"確定選這門課嗎?","提示",MB_OKCANCEL)==IDOK ){</p><p>  //AfxMessageBox("MBOK");</p><p>  

70、UpdateData(TRUE);</p><p>  _ConnectionPtr m_pConnection;</p><p>  ::CoInitialize(NULL);</p><p>  //在ADO操作中建議語句中要常用try…catch()來捕獲錯(cuò)誤信息</p><p>  //因?yàn)樗袝r(shí)會(huì)經(jīng)常出現(xiàn)一些想不到的錯(cuò)誤</

71、p><p><b>  try </b></p><p><b>  {</b></p><p>  m_pConnection.CreateInstance("ADODB.Connection");</p><p>  _bstr_t strConn=LinkSql.Alloc

72、SysString();</p><p>  m_pConnection->Open(strConn,"","",adModeUnknown); </p><p>  //if(m_pConnection->State == adStateOpen) MessageBox("成功連接數(shù)據(jù)</p><p>

73、;<b>  庫");</b></p><p><b>  }</b></p><p>  catch (_com_error e)</p><p><b>  {</b></p><p>  ::CoUninitialize();</p><p&

74、gt;  AfxMessageBox(e.ErrorMessage());</p><p><b>  return;</b></p><p><b>  }</b></p><p>  int cnt=0,sum;</p><p>  _RecordsetPtr m_pRecordset;<

75、/p><p>  CString str;</p><p>  str = "SELECT * FROM training_plan";</p><p>  _variant_t pcid,ppersonid,authority,cscode;</p><p>  m_pRecordset.CreateInstance(&qu

76、ot;ADODB.Recordset");</p><p><b>  int OK=0;</b></p><p>  m_pRecordset = m_pConnection->Execute(str.AllocSysString(),NULL,adCmdText);</p><p>  UpdateData(TRUE);&l

77、t;/p><p>  CString pa;</p><p>  while( !m_pRecordset->adoEOF )</p><p><b>  {</b></p><p>  pcid = m_pRecordset->GetCollect("cid");</p>&l

78、t;p>  ppersonid = m_pRecordset->GetCollect("personid");</p><p>  CString tmp1 = (LPCSTR)(_bstr_t)pcid;</p><p>  CString tmp2 = (LPCSTR)(_bstr_t)ppersonid;</p><p>  i

79、f( strcmp(m_Edit2_cidValue,tmp1)==0&&strcmp(tmp2,personid)==0 ){</p><p><b>  OK=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p>

80、<p>  //AfxMessageBox(m_Edit2_cidValue+" "+tmp1+" "+tmp2+" "+personid);</p><p>  if( strcmp(m_Edit2_cidValue,tmp1)==0 ) cnt++;</p><p>  m_pRecordset->Mo

81、veNext();</p><p><b>  }</b></p><p><b>  if( OK ){</b></p><p>  AfxMessageBox("已選修了該課程!");</p><p>  m_pRecordset->Close();</p>

82、<p>  m_pConnection->Close();</p><p><b>  return ;</b></p><p><b>  }</b></p><p>  CString _cid;</p><p>  str = "SELECT * FROM cou

83、rse";</p><p>  m_pRecordset = m_pConnection->Execute(str.AllocSysString(),NULL,adCmdText);</p><p>  UpdateData(TRUE);</p><p><b>  OK=0;</b></p><p> 

84、 while( !m_pRecordset->adoEOF )</p><p><b>  {</b></p><p>  _cid=str = (LPCSTR)(_bstr_t)m_pRecordset->GetCollect("cid");</p><p>  if(m_Edit2_cidValue==_ci

85、d)</p><p><b>  {</b></p><p>  str = (LPCSTR)(_bstr_t)m_pRecordset->GetCollect("cscode");</p><p><b>  break;</b></p><p><b>  }

86、</b></p><p>  m_pRecordset->MoveNext();</p><p><b>  }</b></p><p>  //AfxMessageBox(pa);</p><p>  if( str != "0" ){</p><p>

87、  AfxMessageBox("課程已經(jīng)開始或結(jié)束,不能選課");</p><p>  m_pRecordset->Close();</p><p>  m_pConnection->Close();</p><p><b>  return ;</b></p><p><b>

88、;  }</b></p><p>  str = "SELECT * FROM course";</p><p>  m_pRecordset = m_pConnection->Execute(str.AllocSysString(),NULL,adCmdText);</p><p>  UpdateData(TRUE);<

89、;/p><p><b>  OK=0;</b></p><p>  while( !m_pRecordset->adoEOF )</p><p><b>  {</b></p><p>  CString tmp2 = (LPCSTR)(_bstr_t)m_pRecordset->GetCo

90、llect("cid");</p><p>  CString tmp1 = (LPCSTR)(_bstr_t)pcid;</p><p>  if( strcmp(tmp1,tmp2)==0 )</p><p><b>  {</b></p><p>  pa=(LPCSTR)(_bstr_t)m_

91、pRecordset->GetCollect("number");</p><p><b>  OK=1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  m_pRecordset-

92、>MoveNext();</p><p><b>  }</b></p><p>  sum=atoi(pa);</p><p>  if( cnt>=sum ){</p><p>  AfxMessageBox("該課已滿人!");</p><p>  m_pRe

93、cordset->Close();</p><p>  m_pConnection->Close();</p><p><b>  return ;</b></p><p><b>  }</b></p><p>  _variant_t ra; </p><p>

94、;  _bstr_t strAdd = "INSERT INTO training_plan VALUES('";</p><p>  strAdd = strAdd + personid + "','";</p><p>  strAdd = strAdd + m_Edit2_cidValue + "',&

95、quot;;</p><p>  strAdd = strAdd + "'-1'," + "'0')";</p><p>  //AfxMessageBox(strAdd);</p><p>  m_pConnection->Execute(strAdd,&ra,adCmdText

96、);</p><p>  //m_Adodc2.SetRecordSource("SELECT * FROM training_plan"); </p><p>  m_Adodc2.Refresh();</p><p>  UpdateData(FALSE);</p><p>  m_pRecordset->

97、;Close();</p><p>  m_pConnection->Close(); </p><p>  AfxMessageBox("成功選課");</p><p><b>  }</b></p><p><b>  }</b></p><p>

98、;  void DailogForSelectCourse::OnButtonDEL() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  CString tmp=personid;</p>

99、;<p>  if( ::MessageBox(NULL,"確定要?jiǎng)h除這門課嗎?","提示",MB_OKCANCEL)==IDOK ){</p><p>  //AfxMessageBox("MBOK");</p><p>  UpdateData(TRUE);</p><p>  _Con

100、nectionPtr m_pConnection;</p><p>  _RecordsetPtr m_pRecordset;</p><p>  ::CoInitialize(NULL);</p><p>  //在ADO操作中建議語句中要常用try…catch()來捕獲錯(cuò)誤信息</p><p>  //因?yàn)樗袝r(shí)會(huì)經(jīng)常出現(xiàn)一些想不到的錯(cuò)誤

101、</p><p><b>  try </b></p><p><b>  {</b></p><p>  m_pConnection.CreateInstance("ADODB.Connection");</p><p>  _bstr_t strConn=LinkSql

102、.AllocSysString();</p><p>  m_pConnection->Open(strConn,"","",adModeUnknown); </p><p>  //if(m_pConnection->State == adStateOpen) MessageBox("成功連接數(shù)據(jù)</p>&l

103、t;p><b>  庫");</b></p><p><b>  }</b></p><p>  catch (_com_error e)</p><p><b>  {</b></p><p>  ::CoUninitialize();</p>

104、<p>  AfxMessageBox(e.ErrorMessage());</p><p><b>  return;</b></p><p><b>  }</b></p><p>  CString str,_cid;</p><p><b>  int ok=0;<

105、/b></p><p>  _variant_t cscode;</p><p>  str = "SELECT * FROM course";</p><p>  m_pRecordset = m_pConnection->Execute(str.AllocSysString(),NULL,adCmdText);</p>

106、<p>  UpdateData(TRUE);</p><p>  while( !m_pRecordset->adoEOF )</p><p><b>  {</b></p><p>  _cid = (LPCSTR)(_bstr_t)m_pRecordset->GetCollect("cid")

107、;</p><p>  if(m_Edit3_cidValue==_cid)</p><p><b>  {</b></p><p>  str = (LPCSTR)(_bstr_t)m_pRecordset->GetCollect("cscode");</p><p><b>  b

108、reak;</b></p><p><b>  }</b></p><p>  m_pRecordset->MoveNext();</p><p><b>  }</b></p><p>  //AfxMessageBox(pa);</p><p>  

109、if( str != "0" ){</p><p>  AfxMessageBox("課程已經(jīng)開始或結(jié)束,不能刪除!");</p><p>  m_pRecordset->Close();</p><p>  m_pConnection->Close();</p><p><b>

110、  return ;</b></p><p><b>  }</b></p><p><b>  //以下刪除數(shù)據(jù)</b></p><p>  _variant_t ra; </p><p>  _bstr_t strAdd = "DELETE FROM Training_pl

111、an where personid ="+tmp;</p><p>  strAdd = strAdd + "AND cid =" +m_Edit3_cidValue;</p><p>  //AfxMessageBox(strAdd);</p><p>  m_pConnection->Execute(strAdd,&

112、ra,adCmdText);</p><p>  m_pConnection->Close(); </p><p>  m_Adodc2.Refresh(); </p><p>  UpdateData(FALSE);</p><p>  AfxMessageBox("成功刪除");</p>&l

113、t;p><b>  }</b></p><p><b>  }</b></p><p>  BOOL DailogForSelectCourse::OnInitDialog()</p><p><b>  {</b></p><p>  CDialog::OnInitDi

114、alog();</p><p>  CString strAdd="select 課程號=training_plan.cid,成績=score,考核評價(jià)</p><p>  =apprisement.description from training_plan,apprisement where </p><p>  training_plan.per

115、sonid='"+personid+"'and apprisement.appcode=training_plan.appcode;";</p><p>  m_Adodc2.SetRecordSource(strAdd); </p><p>  m_Adodc2.Refresh(); </p><p>  m_

116、combo1_FieldName.SetWindowText("請選擇");</p><p>  m_combo1_FieldName.AddString("課程號");</p><p>  m_combo1_FieldName.AddString("課程名");</p><p>  m_combo1_Fi

117、eldName.AddString("任課老師");</p><p>  m_combo1_FieldName.AddString("課程簡介");</p><p>  m_combo1_FieldName.AddString("所用教材");</p><p>  m_combo1_FieldName.Ad

118、dString("上課地點(diǎn)");</p><p>  m_combo1_FieldName.AddString("課程上限人數(shù)");</p><p>  m_combo1_FieldName.AddString("開課時(shí)間");</p><p>  m_combo1_FieldName.AddString(

119、"狀態(tài)");</p><p>  m_combo1_FieldName.AddString("考核日期");</p><p>  return TRUE;</p><p><b>  }</b></p><p><b>  6.2設(shè)置課程模塊</b></

120、p><p>  // DailogForMGcourse.cpp : implementation file</p><p><b>  //</b></p><p>  #include "stdafx.h"</p><p>  #include "員工培訓(xùn)管理系統(tǒng).h"</p

121、><p>  #include "DailogForMGcourse.h"</p><p>  #include "Columns.h"</p><p>  #include "Column.h"</p><p>  #include "DailogForMGResultC.h

122、"</p><p>  #ifdef _DEBUG</p><p>  #define new DEBUG_NEW</p><p>  #undef THIS_FILE</p><p>  static char THIS_FILE[] = __FILE__;</p><p><b>  #endi

123、f</b></p><p>  /////////////////////////////////////////////////////////////////////////////</p><p>  // DailogForMGcourse dialog</p><p>  DailogForMGcourse::DailogForMGcourse

124、(CString Name,CString Link,CWnd* pParent /*=NULL*/)</p><p>  : CDialog(DailogForMGcourse::IDD, pParent)</p><p><b>  {</b></p><p>  userName = Name;</p><p> 

125、 LinkSql = Link;</p><p>  //{{AFX_DATA_INIT(DailogForMGcourse)</p><p>  m_Edit1_cid = _T("");</p><p>  m_Edit2_cname = _T("");</p><p>  m_Edit3_pers

126、onid = _T("");</p><p>  m_Edit5_book = _T("");</p><p>  m_Edit6_classroom = _T("");</p><p>  m_Edit8_classtime = _T("");</p><p>

127、  m_Edit4_intro = _T("");</p><p>  m_Edit7_number = _T("");</p><p>  m_Edit9_cscode = _T("");</p><p>  m_Edit10_exam_date = _T("");</p>

128、<p>  //}}AFX_DATA_INIT</p><p><b>  }</b></p><p>  void DailogForMGcourse::DoDataExchange(CDataExchange* pDX)</p><p><b>  {</b></p><p>  

129、CDialog::DoDataExchange(pDX);</p><p>  //{{AFX_DATA_MAP(DailogForMGcourse)</p><p>  DDX_Control(pDX, IDC_ADODC1, m_adodc1);</p><p>  DDX_Text(pDX, IDC_EDIT1, m_Edit1_cid);</p>

130、<p>  DDX_Text(pDX, IDC_EDIT2, m_Edit2_cname);</p><p>  DDX_Text(pDX, IDC_EDIT3, m_Edit3_personid);</p><p>  DDX_Text(pDX, IDC_EDIT5, m_Edit5_book);</p><p>  DDX_Text(pDX, ID

131、C_EDIT6, m_Edit6_classroom);</p><p>  DDX_Text(pDX, IDC_EDIT8, m_Edit8_classtime);</p><p>  DDX_Text(pDX, IDC_EDIT4, m_Edit4_intro);</p><p>  DDX_Text(pDX, IDC_EDIT7, m_Edit7_number

132、);</p><p>  DDX_Text(pDX, IDC_EDIT9, m_Edit9_cscode);</p><p>  DDX_Text(pDX, IDC_EDIT10, m_Edit10_exam_date);</p><p>  DDX_Control(pDX, IDC_DATAGRID1, m_datagrid1);</p><p

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論