版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 智能電子課表的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 摘 要:本系統(tǒng)主要是研究課表向智能化,多功能化等方面發(fā)展,更有效的,簡捷的為人們提供課表信息。通過按鈕響應(yīng)來實(shí)現(xiàn)對課表的查詢,增加,刪除等操作;力求達(dá)到功能簡捷,操作方便,并對將要干什么事,對時(shí)間進(jìn)行相應(yīng)的設(shè)置然后通過對計(jì)算機(jī)系統(tǒng)時(shí)間的捕獲來進(jìn)行智能電子提示等功能。</p><p> 關(guān)鍵詞:電子課表 ADO Ac
2、cess</p><p> Design and Implementation of intelligent electrical Timetable Arranging</p><p> Author: Liu Tianzhu</p><p> Tutor: Fu Zigang</p><p> (Oriental College
3、of Science and Technology, Hunan Agricultural University, Changsha 410128)</p><p> Abstract: This system is mainly studies the class schedule to the intellectualization,multi-purpose and so on aspects devel
4、op,is more effective,what is simple and direct is the people supplies the class schedule information。 Realizes through the button response to the class schedule inquiry,increases,deletes and so on operations; The follow
5、after function is simple and direct,the ease of operation,and to is going to do any matter,carries on the corresponding establishment to the time then throug</p><p> Key words: electrical Timetable ADO
6、 Access.</p><p><b> 前言</b></p><p> 二十一世紀(jì)是一個(gè)全球化、網(wǎng)絡(luò)化、信息化的知識經(jīng)濟(jì)時(shí)代,信息作為社會最主要的資源,一個(gè)國家、一個(gè)地區(qū)乃至一個(gè)學(xué)校,誰能把信息技術(shù)與教育真正結(jié)合起來,誰就能搶占教育信息化的制高點(diǎn),誰就能處于優(yōu)先發(fā)展的地位??茖W(xué)技術(shù)日新月異的進(jìn)步,讓人類生活發(fā)生了巨大的變化,計(jì)算機(jī)技術(shù)的飛速發(fā)展,使各行各業(yè)在
7、計(jì)算機(jī)技術(shù)應(yīng)用方面得到了廣泛的普及和使用。以計(jì)算機(jī)為代表的技術(shù),在各個(gè)領(lǐng)域的改革中發(fā)揮了巨大作用,尤其在教育領(lǐng)域的改革中發(fā)揮了重要作用,這既給學(xué)校教育教學(xué)和管理的現(xiàn)代化帶來可極大的機(jī)遇,也提出了嚴(yán)峻的挑戰(zhàn)。為了跟上信息時(shí)代的步伐,許多學(xué)校購置了計(jì)算機(jī),配備了相關(guān)的軟件,這當(dāng)然也離不開計(jì)算機(jī)的廣泛應(yīng)用與普及起來。電子課表的設(shè)計(jì)與實(shí)現(xiàn)也將人們從傳統(tǒng)的課表中解放出來,減少了人們因工作的繁忙而經(jīng)常記錯(cuò)上課時(shí)間與地點(diǎn)而造成出錯(cuò)的而造成失誤的概率,
8、這樣也就節(jié)省了更多的時(shí)間從事日常生活工作與學(xué)習(xí)。</p><p> 課表做為老師及學(xué)生們?nèi)粘I险n不可或缺的一分,隨著計(jì)算機(jī)的廣泛應(yīng)用與普及,很早人們便開始研究怎樣把課表實(shí)現(xiàn)程序化以及規(guī)范化等問題,隨即也產(chǎn)生了大量的關(guān)于課表編排等一系列的軟件,改變了傳統(tǒng)手寫或是課前通知這種繁瑣的模式問題,相對的來說,節(jié)省了大量課表的編排工作時(shí)間,不用為安排一節(jié)課而去考慮是否沖突等這類問題了,可以說現(xiàn)在的課表已經(jīng)趨近于半人半計(jì)算機(jī)
9、化了。但是由于應(yīng)對需求的不同問題,課表程序制作也不盡相同,課表的程序化問題也隨之產(chǎn)生,也就是應(yīng)對需求而產(chǎn)生的選擇問題。為了處理減輕相對應(yīng)的問題,電子課表也對相應(yīng)的問題進(jìn)行不同的程序編寫。相對應(yīng)的,課表編排問題解決了,而新的問題也隨之產(chǎn)生了,也是現(xiàn)在的學(xué)生很老師總會因?yàn)槭韬龃笠饣蚴且蚬ぷ靼才攀志o湊而造成的,比如說:忘記上課時(shí)間,而滿頭大汗的跑到教室;記錯(cuò)上課地點(diǎn),而在上課幾分鐘甚至十多分鐘后才匆匆忙忙趕到教室;因帶錯(cuò)上課因準(zhǔn)備的書籍或材
10、料,而不得不延誤使不能更好更有效率的進(jìn)行學(xué)習(xí)或指導(dǎo),等等一系列問題。為了更好的使課表的功能更加強(qiáng)大,減免學(xué)生以及老師由于學(xué)習(xí)工作忙等問題而出現(xiàn)的失誤問題,所以對課表的智能電子化的實(shí)現(xiàn)是迫在眉睫,而本系統(tǒng)即參照不同類</p><p> 要體現(xiàn)一個(gè)系統(tǒng)的更完美的性能,首先就必須對這一類的相同甚至相似的軟件系統(tǒng)進(jìn)行分析,學(xué)習(xí)其中的長處,屏蔽對方的不足之處,應(yīng)對當(dāng)前的需求,增加相對應(yīng)的更完美的功能,做到揚(yáng)長避短,它有的
11、我也必須有,它沒的我也要去實(shí)現(xiàn)。而對于現(xiàn)有的電子課表系統(tǒng),象網(wǎng)上一般找到的什么黑馬、昕友等一系列電子課表它們最主要的功能實(shí)現(xiàn)方面都是對于實(shí)現(xiàn)課表的編排問題而實(shí)現(xiàn)的程序軟件,對于實(shí)現(xiàn)課表的電子提示等功能問題只是稍微一帶而過,并未深究,實(shí)現(xiàn)的功能也是基本上大同小異,沒什么區(qū)別。直接點(diǎn)說,這類系統(tǒng)程序也就是關(guān)于智能課程編排的一系列系統(tǒng)程序,只是一些功能龐大的對課表進(jìn)行編排的系統(tǒng)軟件,功能實(shí)現(xiàn)并不應(yīng)對對現(xiàn)有課表電子化性能的需求,以及關(guān)于現(xiàn)在課表
12、的問題的研究與實(shí)現(xiàn),本系統(tǒng)是要在現(xiàn)有的程序基礎(chǔ)之上實(shí)現(xiàn)課表的電子提示等一系列問題處理。</p><p> 關(guān)于本程序的實(shí)現(xiàn)的文本組織問題,首先即是要對程序進(jìn)行需求分析,該怎么做的問題;然后對程序的設(shè)計(jì)框架,程序的運(yùn)行控制以及處理問題進(jìn)行詳細(xì)的語言組織,然后對程序的運(yùn)行環(huán)境和實(shí)現(xiàn)問題進(jìn)行概要的分析。怎樣做,怎樣實(shí)現(xiàn),怎樣處理等一系列問題進(jìn)行文本描敘,使使用者對程序一目了然,對程序的設(shè)計(jì)問題和使用問題都十分清楚。&
13、lt;/p><p><b> 開發(fā)工具簡介</b></p><p> 2.1 系統(tǒng)開發(fā)工具</p><p> Visual C++是功能最為強(qiáng)大可視化開發(fā)工具,它不僅支持傳統(tǒng)的軟件開發(fā)方法,更重要的是它能支持面向?qū)ο?、可視化的開發(fā)風(fēng)格。因此Visual C++又稱作是一個(gè)集成開發(fā)工具,它提供了軟件代碼自動生成和可視化的資源編輯功能。
14、60; Visual C++具有的優(yōu)點(diǎn):提供了面向?qū)ο蟮膽?yīng)用程序框架MFC(Microsoft Foundation Class),簡化了程序員的編程工作,提高了模塊的可重用性;提供了基于CASE技術(shù)的可視化軟件的自動生成和維護(hù)工具AppWizard、ClassWizard、Visual Studio、WizardBar等,實(shí)現(xiàn)了直觀、可視的程序設(shè)計(jì)風(fēng)格,方便地編和管理各種類,維護(hù)程序的源代碼;封裝了Windows的AP
15、I函數(shù)、USER、KERNEL、GDI函數(shù),簡化了編程時(shí)創(chuàng)建、維護(hù)窗口的許多復(fù)雜的工作[1]。</p><p> Visual C++中可用的數(shù)據(jù)訪問對象接口有四種:ODBC(Open Database Connectity,開發(fā)數(shù)據(jù)庫連接)、DAO(Data Access Objects,數(shù)據(jù)訪問對象)及OLE DB(OLE data Base,OLE數(shù)據(jù)庫), ADO(Active Data Object,
16、活動數(shù)據(jù)對象)。而本程序使用的就是ADO</p><p> ADO(Active Data Object,活動數(shù)據(jù)對象)實(shí)際上是一種基于COM(組件對象模型)的自動化接口(IDispatch)技術(shù),并以O(shè)LE DB(對象連接和鑲?cè)氲臄?shù)據(jù)庫)為基礎(chǔ),經(jīng)過OLE DB精心包裝后的數(shù)據(jù)庫訪問技術(shù),利用它可以快速的創(chuàng)建數(shù)據(jù)庫應(yīng)用程序。 ADO提供了一組非常簡單,將一般通用的數(shù)據(jù)訪問細(xì)節(jié)進(jìn)行封裝的對象。由于ODBC數(shù)據(jù)源
17、也提供了一般的OLE DB Privider,所以ADO不僅可以應(yīng)用自身的OLE DB Privider,而且還可以應(yīng)用所有的ODBC驅(qū)動程序。ADO類的定義是作為一種資源存儲在ADO DLL(msado15.dll)中,在其內(nèi)部稱為類型庫。類型庫描述了自治接口,以及C++使用的COM vtable接口。當(dāng)使用#import指令時(shí),在運(yùn)行時(shí)Visual C++需要從ADO DLL中讀取這個(gè)類型庫,并以此創(chuàng)建一組C++頭文件。在C++程序
18、代碼中調(diào)用的ADO類要在這些文件中定義[7]。</p><p> ADO所定義的三個(gè)核心對象分別是:Connection對象,Command對象,Recordset對象。Connection對象表示了到數(shù)據(jù)庫的連接,它管理應(yīng)用程序和數(shù)據(jù)庫之間的通信。 Recordset和Command對象都有一個(gè)ActiveConnection屬性,該屬性用來引用Connection對象。Command對象被用來處理重復(fù)執(zhí)行的
19、查詢,或處理需要檢查在存儲過程調(diào)用中的輸出或返回參數(shù)的值的查詢[3]。</p><p> Recordset對象被用來獲取數(shù)據(jù)。 Recordset對象存放查詢的結(jié)果,這些結(jié)果由數(shù)據(jù)的行(稱為記錄)和列(稱為字段)組成。每一列都存放在Recordset的Fields集合中的一個(gè)Field對象中。相對應(yīng)的即ADO庫包含三個(gè)智能指針:_ConnectionPtr、_CommandPtr和_RecordsetPtr。
20、</p><p> 1._ConnectionPtr通常被用來創(chuàng)建一個(gè)數(shù)據(jù)連接或執(zhí)行一條不返回任何結(jié)果的SQL語句,如一個(gè)存儲過程。</p><p> 2._CommandPtr返回一個(gè)記錄集。它提供了一種簡單的方法來執(zhí)行返回記錄集的存儲過程和SQL語句。在使用_CommandPtr接口時(shí),可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用連接串
21、。</p><p> 3._RecordsetPtr是一個(gè)記錄集對象。與以上兩種對象相比,它對記錄集提供了更多的控制功能,如記錄鎖定、游標(biāo)控制等[5]。</p><p> 2.2 數(shù)據(jù)庫開發(fā)工具</p><p> 數(shù)據(jù)庫:指一個(gè)關(guān)于某一特定主題或目標(biāo)的信息集合。利用數(shù)據(jù)庫,人們可以為自己建立起諸如地址簿、收支表、電力分配等各種各樣的信息集合并進(jìn)行有效和切實(shí)的
22、管理和安排。數(shù)據(jù)庫需要借助于數(shù)據(jù)庫管理系統(tǒng)(DBMS)才能發(fā)揮功能。 </p><p> 數(shù)據(jù)庫管理系統(tǒng):是指對數(shù)據(jù)庫信息進(jìn)行存儲、處理和管理的系統(tǒng)。如果在數(shù)據(jù)庫管理系統(tǒng)中,根據(jù)用戶定義的關(guān)系來存儲、處理和管理數(shù)據(jù)庫信息,這樣的數(shù)據(jù)庫管理系統(tǒng)稱為關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。Access實(shí)際上是一個(gè)基于關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫管理系統(tǒng)。 Access屬于Microsoft Office的套件。可以為各級別用戶查找、管理和
23、共享數(shù)據(jù)提供一種簡單的方法。在Windows操作系統(tǒng)中運(yùn)行。 Access的數(shù)據(jù)庫元素:字段和記錄。數(shù)據(jù)庫工作表分為行和列,行稱為記錄,列稱為字段[23]。 </p><p><b> 3 需求分析</b></p><p><b> 3.1 任務(wù)概述</b></p><p> 本系統(tǒng)的任務(wù)是要通過利用VC++編程
24、環(huán)境在MFC下建立工程進(jìn)行程序編寫來實(shí)現(xiàn),主要通過ADO操作ACCESS數(shù)據(jù)庫來實(shí)現(xiàn)課表的智能電子功能,在MFC的基本框架上來實(shí)現(xiàn)消息響應(yīng)函數(shù)之間相互連接和對常用控件的操作,對系統(tǒng)進(jìn)行初步設(shè)計(jì),完成初步模版后,進(jìn)一步對系統(tǒng)進(jìn)行修改,使功能更加完善,系統(tǒng)更趨近于完美。</p><p><b> 3.2 功能需求</b></p><p> 功能需求即是系統(tǒng)必須做什么
25、,本系統(tǒng)是要通過ADO操作ACCESS數(shù)據(jù)庫來實(shí)現(xiàn)對課表的添加,刪除,查詢以及智能的上課前提示等功能進(jìn)行設(shè)計(jì)。</p><p> 添加和刪除即是要通過對數(shù)據(jù)的選擇及輸入然后經(jīng)過程序?qū)崿F(xiàn)對ACCESS數(shù)據(jù)庫進(jìn)行修改,使課表信息進(jìn)行更新,避免因課表過時(shí)而引發(fā)錯(cuò)誤;查詢即是通過對數(shù)據(jù)的選擇輸入對ACCESS數(shù)據(jù)庫中的課表進(jìn)行查找,尋找用戶需要查找的課程信息,然后經(jīng)程序輸出相應(yīng)的報(bào)表信息,是用戶得到所需要的信息;上課前
26、提示,即是通過函數(shù)對系統(tǒng)時(shí)間的響應(yīng),制定在某個(gè)相應(yīng)的時(shí)間也就是上課前進(jìn)行時(shí)間提示,讓用戶明白還有多久就要上課了,該準(zhǔn)備什么,在什么地方上課等問題的處理,以避免用戶因其他工作而耽誤了上課時(shí)間,也不會因?yàn)橐粫r(shí)著急而忘記看上課地點(diǎn)或記錯(cuò)課程帶錯(cuò)書而引起的不必要的尷尬等問題。</p><p><b> 3.3 數(shù)據(jù)描述</b></p><p> 3.3.1 系統(tǒng)數(shù)據(jù)流
27、圖</p><p> 圖3-1系統(tǒng)模塊結(jié)構(gòu)</p><p> 圖3-2系統(tǒng)運(yùn)行模塊</p><p> 圖3-3系統(tǒng)E-R圖</p><p> 3.3.2 數(shù)據(jù)詞典</p><p> 1)Connection用于表示與數(shù)據(jù)源的連接,一級處理一些命令和事務(wù)。</p><p> ADO使
28、用Connection對象來表示對數(shù)據(jù)源的單獨(dú)連接。如果使用ADODB,這就是對OLE DB數(shù)據(jù)源的一種連接。如果你也在使用MSDASQL,這個(gè)OLE DB數(shù)據(jù)源可能也相當(dāng)于ODBC數(shù)據(jù)源。這種連接可能是一種數(shù)據(jù)庫服務(wù)的實(shí)際網(wǎng)絡(luò)連接,或者是一種對局域數(shù)據(jù)庫文件的連接[14]。</p><p> 表3-1 Connection屬性和方法的說明</p><p> 2)Command用于處
29、理傳送數(shù)據(jù)源的命令。</p><p> Command對象用于說明數(shù)據(jù)源所執(zhí)行的具體命令。Command對象用于跟蹤命令相關(guān)參數(shù)以及其他設(shè)置[16]。</p><p> 表3-2 Command屬性和方法的說明</p><p> 3)用于處理數(shù)據(jù)的表格集[19]。</p><p> 為用戶提供了大部分的與數(shù)據(jù)進(jìn)行交互的功能。它們被用于
30、以包含從數(shù)據(jù)源返回的一系列記錄。通過調(diào)用Open()方法直接打開一個(gè)記錄集,可通過與連接或命令對象有關(guān)的調(diào)用Execute()產(chǎn)生一個(gè)記錄集。</p><p> 表3-3 Recordset屬性和方法的說明</p><p> 4)Field用于表示記錄集中列的信息[29]。</p><p> 也可以實(shí)現(xiàn)以下方法:</p><p> A
31、ppendChunk:用于添加部分長數(shù)據(jù)對象到數(shù)據(jù)源。</p><p> GetChunk:用在更小、更易管理的部分獲取大的數(shù)據(jù)對象。</p><p> 表3-4Field屬性的說明</p><p> 5)Parameter用于對傳送給數(shù)據(jù)源的命令之間來回傳送數(shù)據(jù)[31]。</p><p> 在命令的Parameter集合中對每個(gè)Pa
32、ramete對象都有下列屬性。Paramete對象提供的唯一方法是AppendChunk(),它用于添加文本或二進(jìn)制參數(shù)值。</p><p> 表3-5 Paramete屬性的說明</p><p> 6)Property用于操作在ADO中使用的其他對象的詳細(xì)屬性[1]。</p><p> Connection、Command、Recordset和Field都
33、包含Propertise集合,該集合用于保存與對象有關(guān)的各個(gè)Property對象。</p><p> ropertise集合包含Count屬性,Count屬性給出集合中各個(gè)Property對象的樹目</p><p> Property對象比較簡單,沒提供任何方法。</p><p> 表3-6 Property屬性的說明</p><p>
34、; 7)Error于獲得可能發(fā)生的錯(cuò)誤的更詳細(xì)的信息[32]。</p><p> ADO的Connection對象包含一個(gè)Error集合,該集合包含的錯(cuò)誤對象給出了關(guān)于任何錯(cuò)誤的具體信息。Error集合包含一個(gè)Count屬性,給出當(dāng)前集合中Error象的數(shù)目。</p><p> Error對象也沒有提供任何方法。</p><p> 表3-7 Error屬性
35、的說明</p><p> 3.3.3 數(shù)據(jù)庫描述</p><p> 通過使用ACCESS數(shù)據(jù)庫新建用設(shè)計(jì)器設(shè)計(jì)一個(gè)數(shù)據(jù)庫的表,數(shù)據(jù)庫名Home.mdb,一共設(shè)計(jì)3個(gè)表,一個(gè)是主表是存放課程信息用的,表名叫:Budget。其中屬性包括:上課地點(diǎn)(DateA);課程名(Content);上課時(shí)間(Handler);上課星期(Type)</p><p><b&
36、gt; 、</b></p><p> 圖3-4 Budget 表</p><p> 第二個(gè)和第三數(shù)據(jù)庫表是存放時(shí)間信息用于導(dǎo)入程序的下拉列表框的上課時(shí)間與上課星期信息的表格。分別是Handler表,存放上課時(shí)間信息。Type表,用于存放上課星期信息。</p><p> 圖3-4 Handler表</p><p> 圖3-
37、4 Type 表</p><p><b> 4 系統(tǒng)設(shè)計(jì)</b></p><p><b> 4.1 總體設(shè)計(jì)</b></p><p> 本系統(tǒng)程序主要用到ADO編程。首先需要在VC++上創(chuàng)建一個(gè)標(biāo)準(zhǔn)的MFC AppWizard(exe)應(yīng)用程序,然后在使用ADO數(shù)據(jù)庫的InitInstance函數(shù)中初始化OLE/
38、COM庫(因?yàn)锳DO庫是一個(gè)COM DLL庫)。</p><p> BOOL CAdotestDlg::OnInitDialog()</p><p><b> {</b></p><p> ::CoInitialize(NULL); //初始化OLE/COM庫環(huán)境</p><p><b> ………….
39、</b></p><p><b> } </b></p><p> 當(dāng)然既然初始化了最后也應(yīng)該要釋放占用的COM資源。</p><p> ::CoUninitialize();//釋放程序占用的COM資源。</p><p> 還有一種直接的寫法,就是直接引用AfxOleInit();來初始化。<
40、/p><p> 因?yàn)槌绦蛞褂肁DO數(shù)據(jù)庫編程就必須在工程的stdafx.h頭文件中引用ADO的庫文件,因?yàn)橐粋€(gè)新的MFC工程是不包含ADO的庫文件的。只有引入了ADO的庫文件才能使編譯器正常的編譯[1]。</p><p> #import "C:\Program Files\common files\system\ado\msado15.dll" </p>
41、<p> no_namespace </p><p> rename("EOF","adoEOF")</p><p> ADO類的定義是作為一種資源存儲在ADO DLL(msado15.dll)中,在其內(nèi)部稱為類型庫。類型庫描述了自治接口,以及C++使用的COM vtable接口。當(dāng)使用#import指令時(shí),在運(yùn)行時(shí)Visual
42、C++需要從ADO DLL中讀取這個(gè)類型庫,并以此創(chuàng)建一組C++頭文件。在C++程序代碼中調(diào)用的ADO類要在這些文件中定義。 </p><p> 程序的第二行指示ADO對象不使用名稱空間。在有些應(yīng)用程序中,由于應(yīng)用程序中的對象與ADO中的對象之間可能會出現(xiàn)命名沖突,所以有必要使用名稱空間。如果要使用名稱空間,則可把第三行程序修改為: rename_namespace("AdoNS")。<
43、;/p><p> 第三行代碼將ADO中的EOF(文件結(jié)束)更名為adoEOF,以避免與定義了自己的EOF的其他庫沖突。</p><p> 在CAdotestDlg頭文件中定義兩個(gè)ADO智能指針類實(shí)例</p><p> class CAdotestDlg : public CDialog</p><p><b> {</b&
44、gt;</p><p> _ConnectionPtr m_pConnection;</p><p> _RecordsetPtr m_pRecordset;</p><p> 定義完了智能指針之后就可以在主程序中開始創(chuàng)建指針的實(shí)例了</p><p> m_pConnection.CreateInstance("ADODB.
45、Connection"); //初始化Connection指針</p><p> m_pRecordset.CreateInstance("ADODB.Recordset"); //初始化Recordset指針</p><p> 然后必須創(chuàng)建一個(gè)數(shù)據(jù)源使程序能夠和數(shù)據(jù)庫連接,創(chuàng)建一個(gè)ADOTest的數(shù)據(jù)源,然后便可以在程序中添加代碼,連接叫作ADO
46、Test的ODBC數(shù)據(jù)源</p><p> m_pConnection->Open("DSN=MyDBTest","","",0);就這樣,便搭建了一個(gè)ADO操作數(shù)據(jù)庫程序的住框架了,連接上數(shù)據(jù)庫了,我們便可以打開數(shù)據(jù)集</p><p> m_pRecordset->Open("select * from
47、 XXX",</p><p> (IDispatch*)m_pConnection,</p><p> adOpenDynamic, //動態(tài) </p><p> adLockOptimistic, //樂觀封鎖法 </p><p> adCmdText); //文本查詢語句</p><p> 其中
48、的select * from XXX中的XXX即為要打開的數(shù)據(jù)庫的表名[3]。</p><p> 4.2 模塊設(shè)計(jì)</p><p> 本系統(tǒng)程序的模塊,總的來說一共可以分為4大模塊,首先最主要的功能模塊就是查詢課表并在CList控件中顯示需要查詢的結(jié)果,主要功能是通過選擇所需要查詢的上課時(shí)間與星期然后通過智能指針來從數(shù)據(jù)庫中讀取出相應(yīng)的課程信息。此功能模塊位于IDD_TIMET
49、IP_DIALOG。</p><p> 圖4-1課表查詢模塊</p><p> 第2和第3個(gè)功能就是對課表的增加和刪除功能,通過響應(yīng)主模塊上的增加課程和刪除課程的按鈕響應(yīng)DOMODEL函數(shù)彈出對應(yīng)的模態(tài)對話框也就是添加刪除課程的的功能模塊分別響應(yīng)DIALOG1和DIALOG2個(gè)模塊</p><p> 圖4-2增加刪除功能按鈕</p><p&
50、gt; 圖4-3增加課程模塊</p><p> 圖4-4刪除課程模塊</p><p> 最后一個(gè)功能模塊就是電子時(shí)間提示模塊,此模塊一共分為3個(gè)部分,一個(gè)是往模塊的列表控件顯示模塊,另一個(gè)部分則是時(shí)間設(shè)置定制模塊,還有一個(gè)部分則是響應(yīng)GETSYSTEMTIME的系統(tǒng)時(shí)間提示模塊也位于TIMETIP_DIALOG主模塊上</p><p> 圖4-5時(shí)間顯示控件
51、模塊</p><p> 圖4-6時(shí)間設(shè)定模塊</p><p> 圖4-7時(shí)間提示模塊</p><p><b> 4.3 運(yùn)行設(shè)計(jì)</b></p><p> 4.3.1 運(yùn)行模塊的組合</p><p> 本系統(tǒng)多個(gè)DIALOG之間需要相互響應(yīng),通過主模塊對話框中的按鈕響應(yīng)函數(shù),來彈出子
52、模塊的對話框,在本程序,是使用的DOMODAL函數(shù)來響應(yīng)子模塊的對話框。當(dāng)然也就是一個(gè)模態(tài)對話框,也就是在使用子模塊的時(shí)候,主模塊對話框是得不到響應(yīng)的,也就是暫時(shí)無法對主模塊進(jìn)行任何操作。操作代碼舉主模塊響應(yīng)增加課程(IDC_BUTTON_ADD)為例[9]:</p><p> void CTimeTipDlg::OnButtonAdd() //增加的ADD按鈕響應(yīng)函數(shù)</p><p&
53、gt;<b> {</b></p><p> // TODO: Add your control notification handler code here</p><p> CDialog dlg(IDD_DIALOG1); //響應(yīng)子模塊的模態(tài)對話框</p><p> dlg.DoModal();</p>&l
54、t;p><b> }</b></p><p> 4.3.2 運(yùn)行控制</p><p> 運(yùn)行控制問題主要就是對上課時(shí)間進(jìn)行響應(yīng),通過ADO操作創(chuàng)建的ACCESS數(shù)據(jù)庫進(jìn)行輸入輸出上課信息進(jìn)行處理,以及對課表的查詢。在時(shí)間設(shè)置中對需要預(yù)定的時(shí)間進(jìn)行設(shè)置,然后使使用者在忘記時(shí)間的情況下彈出提示對話框,提示早前設(shè)定的需要進(jìn)行的工作,這就使用到了對系統(tǒng)時(shí)間的獲取
55、和調(diào)用,函數(shù):GetsystemTime,通過響應(yīng)此函數(shù)的方法對系統(tǒng)時(shí)間進(jìn)行獲取,當(dāng)然,程序所要響應(yīng)的消息還是需要使用者自己進(jìn)行設(shè)定,什么時(shí)間,干什么。為了使程序界面美觀點(diǎn),所以也對程序的運(yùn)行框架進(jìn)行了RGB處理和對DEBUG圖標(biāo)進(jìn)行了美化處理,還有就是添加處理WM_TIMER的消息處理函數(shù)OnTimer,添加代碼使程序運(yùn)行之后隱藏到桌面工具欄,以便于操作。但也存在著相應(yīng)的問題,這種方法的缺點(diǎn)是顯而易見的,使用定時(shí)器,使得程序的穩(wěn)定性似
56、乎打一個(gè)折扣;窗口是要先顯示出來的,那么效果就是窗口閃了一下消失。最直觀,又是最無奈的一個(gè)方法就是使用定時(shí)器。既然我們在對話框開始顯示之前不能用ShowWindow(SW_HIDE)將其隱藏,那就給一個(gè)時(shí)間讓它顯示,完了我們在隱藏它。</p><p> 圖4-8系統(tǒng)主模塊運(yùn)行界面</p><p><b> 4.4 出錯(cuò)處理</b></p><
57、p> 在設(shè)計(jì)系統(tǒng)的時(shí)候系統(tǒng)出現(xiàn)過幾次很嚴(yán)重的錯(cuò)誤,第一個(gè)居然是數(shù)據(jù)庫的搭建連不上去,后來經(jīng)過查詢與修改,發(fā)現(xiàn)原來是數(shù)據(jù)源的設(shè)置有問題,既然數(shù)據(jù)源設(shè)置會引起問題,所以就改變一種連接數(shù)據(jù)庫的語句,不經(jīng)過設(shè)置數(shù)據(jù)源直接用ADO操數(shù)據(jù)庫,使用一個(gè)TRY``CATH()函數(shù)來判斷</p><p> m_pConnection.CreateInstance(__uuidof(Connection));</p&
58、gt;<p> // 在ADO操作中建議語句中要常用try...catch()來捕獲錯(cuò)誤信息,</p><p> // 因?yàn)樗袝r(shí)會經(jīng)常出現(xiàn)一些想不到的錯(cuò)誤try </p><p><b> {</b></p><p> m_pConnection->Open("Provi
59、der=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\ADO.mdb",</p><p><b> "",</b></p><p><b> "",</b></p><p> adModeUnknown); // 連接ACCESS數(shù)
60、據(jù)庫的語句</p><p><b> }</b></p><p> catch(_com_error e)</p><p><b> {</b></p><p> AfxMessageBox("數(shù)據(jù)庫連接失敗!"); //此時(shí)就需要去確認(rèn)下數(shù)據(jù)庫是否存在的問題了<
61、/p><p><b> } </b></p><p> m_pRecordset.CreateInstance(__uuidof(Recordset)) [19]; </p><p> 另一個(gè)錯(cuò)誤就是在查詢數(shù)據(jù)庫的時(shí)候出現(xiàn)的,描敘為下:</p><p> 圖4-9 出錯(cuò)信息</p><p>
62、 這個(gè)應(yīng)用非常響應(yīng)RUNTIME而導(dǎo)致中斷,請聯(lián)系這個(gè)應(yīng)用提供的隊(duì)伍需求更多的信息這個(gè)問題的原因,經(jīng)過處理好象是因?yàn)锳CCESS數(shù)據(jù)庫版本不同所應(yīng)調(diào)用的打開語句也不相同所引起的原因。后經(jīng)過調(diào)試修改,解決了此問題。</p><p><b> 5 總結(jié)</b></p><p> 對數(shù)據(jù)庫和其他類似數(shù)據(jù)源而言,ADO是Microsoft最新的面向?qū)ο蟮慕涌?。ADO試
63、圖取代數(shù)據(jù)訪問對象DAO和遠(yuǎn)程數(shù)據(jù)對象RDO接口,提供更廣泛的特征數(shù)組以及更高程度的靈活性。</p><p> ADO基于通用對象模型(COM)它提供編程語言范圍內(nèi)利用的對象,包括Visual C++及Visual Basic,面向?qū)ο髴?yīng)用的VBA、Visual J++、VBScript應(yīng)用和Java Script應(yīng)用。</p><p> ADO僅提供了用于ADO的各種對象的定義,并沒
64、有提供具體工具,然而Microsoft確實(shí)包含了ADO工具,來訪問任何可用的OLE DB數(shù)據(jù)源,它為操作文件系統(tǒng)提供了一個(gè)OLE DB接口,OLE DB的ADO工具就是所謂的ADODB,ADODB也可以用為OLE DB訪問Microsoft OLE DB提供程序,它將對任一可用的數(shù)據(jù)源提供訪問。</p><p> 本程序通過使用ADO操作ACCESS數(shù)據(jù)庫進(jìn)行查詢,增加,刪除等功能制作一個(gè)基于MFC的智能電子課
65、表程序,雖然功能不是很完善,但使用方便簡捷,也不失為一個(gè)良好的應(yīng)用程序。而且最主要的是,使自己在編程中找到樂趣與興奮感。</p><p><b> 參考文獻(xiàn):</b></p><p> [1]李松,湯庸,徐海水,丁國芳.Visual C++ 6.0程序設(shè)計(jì)教程.北京:治金工業(yè)出版社,2001. </p><p> [2]何志丹
66、.Visual C++入門、進(jìn)階與運(yùn)用實(shí)例.北京:人民郵電出版社,2007. </p><p> [3]薩師煊.數(shù)據(jù)庫系統(tǒng)概論(第三版).北京:高等教育出版社,2005. </p><p> [4]孫鑫,余安平.VC++深入詳解.北京:電子工業(yè)出版社,2006. </p><p> [5]明日科技.Visual C++開發(fā)技術(shù)大全.北京:人民郵
67、電出版社,2004</p><p> [6](美)邁耶斯.More Effective C++(英文版).北京:機(jī)械工業(yè)出版社,2005</p><p> [7]黃維通.Visual C++面向?qū)ο笈c可視化程序設(shè)計(jì)(第2版).北京:清華大學(xué)出版社,2006 </p><p> [8]四維科技.Visual C++數(shù)據(jù)庫編程技術(shù)與實(shí)例.北京:人民郵電出版社,2
68、005 </p><p> [9](美)西蒙(Simon,D.),周瑜萍.VisualC++6編程寶典.北京:電子工業(yè)出版社,2004 </p><p> [10]求是科技.Visual C++ 6.0程序設(shè)計(jì)與開發(fā)技術(shù)大全.北京:人民郵電出版社,2005 </p><p> [11]李濤,劉凱奎,王永皎.Visual C++ + SQL
69、Server 數(shù)據(jù)庫開發(fā)與實(shí)例.北京:清華大學(xué)出版社,2007 </p><p> [12]求是科技.Visual C++數(shù)據(jù)庫通用模塊及典型系統(tǒng)開發(fā)案例導(dǎo)航.北京:人民郵電出版社,2006 </p><p> [13]崔瑩,王華軍,姚雪峰.Visual C++數(shù)據(jù)庫實(shí)用編程100例.北京:中國鐵道出版社,2007 </p><p> [14]
70、王育堅(jiān).Visual C++面向?qū)ο缶幊探坛蹋本呵迦A大學(xué)出版社,2007 </p><p> [15](美)帕羅賽斯.MFC Windows程序設(shè)計(jì)(第2版).北京:清華大學(xué)出版社,2004 </p><p> [16]姚領(lǐng)田.精通MFC程序設(shè)計(jì).北京:人民郵電出版社,2007 </p><p> [17]姚領(lǐng)田.MFC窗口程序設(shè)計(jì).北
71、京:水利水電出版社,2007 </p><p> [18](美)克羅恩克(Kroenke,D.M.).?dāng)?shù)據(jù)庫處理:基礎(chǔ)、設(shè)計(jì)與實(shí).北京:電子工業(yè)出版社,2007 </p><p> [19]王成春,蕭雅云.實(shí)戰(zhàn)Access 2003 VBA程序設(shè)計(jì)北京:中國鐵道出版社,2005 </p><p> [20]韓澤坤.Access行業(yè)數(shù)據(jù)庫開發(fā)范
72、例應(yīng)用.北京:中國青年出版社,2006 </p><p> [21]高守傳.Visual C++6.0開發(fā)指南.北京:人民郵電出版社,2005 </p><p> [22]明日科技.SQL Server 2000應(yīng)用與開發(fā)范例寶典.北京:人民郵電出版社,2006 </p><p> [23]王宇虹.Access 數(shù)據(jù)庫系統(tǒng)開發(fā)從基礎(chǔ)到實(shí)踐.北京:電子
73、工業(yè)出版社,2007</p><p> [24]劉凡馨.Access數(shù)據(jù)庫應(yīng)用教程.北京:清華大學(xué)出版社,2006 </p><p> [25]王晟,韓澤坤.Access數(shù)據(jù)庫開發(fā)經(jīng)典案例解析.北京:清華大學(xué)出版社,2007 </p><p> [26]吳權(quán)威,王緒益.Access 2003 中文版應(yīng)用基礎(chǔ)教程.北京:中國鐵道出版社,200
74、7 </p><p> [27]侯其鋒,李曉華,李莎.Visual C++數(shù)據(jù)庫通用模塊開發(fā)與系統(tǒng)移植.北京:清華大學(xué)出版社,2007 </p><p> [28]朱家義,張同光.Visual C++6.0實(shí)訓(xùn)教程.北京:機(jī)械工業(yè)出版社,2005 </p><p> [29]梁普選.Visual C++程序設(shè)計(jì)與實(shí)踐.北京:北方交通大學(xué)出版社,
75、2007 </p><p> [30]彭海河,李忠琪,姜志輝.Visual/ C++,NET實(shí)例入門.北京:海洋出版社,2007 </p><p> [31]臧桂鵬,肖佳放,顧松東.VisualC++網(wǎng)絡(luò)與數(shù)據(jù)庫編程百例.北京:中國電力出版社,2005 </p><p> [32]趙杰.?dāng)?shù)據(jù)庫原理與應(yīng)用(SQL Server).北京:人民郵電出版社,
76、2007 </p><p><b> 致 謝</b></p><p> 在論文和程序完成之際,我要特別感謝我的指導(dǎo)老師傅自鋼老師的熱情關(guān)懷和悉心指導(dǎo)。在我撰寫論文編寫程序的過程中,傅老師傾注了大量的心血和汗水,在百忙的上課時(shí)間中抽空出來為我指導(dǎo),無論是在論文的選題、構(gòu)思和資料的收集方面,還是在程序運(yùn)行調(diào)試,錯(cuò)誤檢索等方面我都得到了傅自鋼老師悉心細(xì)致的教
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文-智能調(diào)節(jié)儀表設(shè)計(jì)與實(shí)現(xiàn)
- android電子課表計(jì)算機(jī)畢業(yè)設(shè)計(jì)--基于android平臺的電子課表查詢設(shè)計(jì)與實(shí)現(xiàn)
- 電子商務(wù)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 畢業(yè)論文——電子論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文——電子論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文——電子論壇系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文(設(shè)計(jì))智能家居監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文—智能在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 安防智能電子畢業(yè)論文
- 電子商務(wù)網(wǎng)站畢業(yè)論文-電子商城的設(shè)計(jì)與實(shí)現(xiàn)的設(shè)計(jì)與實(shí)現(xiàn)
- 電子郵件收發(fā)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 畢業(yè)論文---電子商務(wù)網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)
- 電子郵件檢測軟件的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 電子商務(wù)網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 畢業(yè)論文---電子商務(wù)網(wǎng)站的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文語音電子溫度計(jì)設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文---電子體重秤測試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文語音電子溫度計(jì)設(shè)計(jì)與實(shí)現(xiàn)
- 智能電子計(jì)時(shí)器系統(tǒng)-畢業(yè)論文設(shè)計(jì)
- 電子商務(wù)網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)——畢業(yè)論文
評論
0/150
提交評論