【正文】
6. ADOStore。5. ADOQuery組件ADOQuery組件為ADO數(shù)據(jù)存儲(chǔ)提供發(fā)布SQL的方法,使用ADOQuery組件訪(fǎng)問(wèn)應(yīng)用SQL語(yǔ)句的數(shù)據(jù)存儲(chǔ)中的一個(gè)或多個(gè)數(shù)據(jù)表。使用ADOTable組件可利用ADO訪(fǎng)問(wèn)單個(gè)數(shù)據(jù)表中的數(shù)據(jù),它提供了直接訪(fǎng)問(wèn)數(shù)據(jù)表中每條記錄和字段的方法。在使用ADODataSet組件訪(fǎng)問(wèn)數(shù)據(jù)前需要建立它與數(shù)據(jù)庫(kù)的的關(guān)聯(lián),建立這種關(guān)聯(lián)可以通過(guò)設(shè)置ADODataSet組件的ConnectionString屬性或者通過(guò)設(shè)置Connection屬性。3. ADODataSet組件ADODataSet組件是最常用的ADO數(shù)據(jù)集組件,使用該組件可以從ADO數(shù)據(jù)庫(kù)讀取1個(gè)或多個(gè)數(shù)據(jù)表。ADOCommand組件主要用于SQL的數(shù)據(jù)定義或執(zhí)行一個(gè)不帶返回結(jié)果集的存儲(chǔ)過(guò)程。兩者的不同在于,使用ADOConnection來(lái)連接,可以使多個(gè)ADO組件共享這一連接,以便集中控制,進(jìn)行事務(wù)處理;而直接使用ADO組件連接比較簡(jiǎn)捷、方便。使用ADO訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),必須先與其連接。下面對(duì)ADO組件的功能和作用分別做以介紹:1. ADOConnection組件ADOConnection組件的主要作用是建立與數(shù)據(jù)庫(kù)的連接。還有3個(gè)兼容組件ADOTable,ADOQuery和ADOStoreProc,可以用它們將BDE的應(yīng)用程序移植到ADO中。ADO組件編寫(xiě)的程序,可脫離Borland的BDE,而原有的數(shù)據(jù)顯示/編輯組件可直接使用ADO組件,這是ADO程序的一大優(yōu)點(diǎn)。這是因?yàn)锳DO組件是微軟公司面向各種數(shù)據(jù)的高層接口,這種層次接口被稱(chēng)為OLE DB。只有完成數(shù)據(jù)庫(kù)鏈接后,才可以進(jìn)行窗體界面的設(shè)計(jì)和程序代碼的編寫(xiě)。 數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)方式在前臺(tái)應(yīng)用程序的開(kāi)發(fā)當(dāng)中,首先應(yīng)該確定選用哪種方式訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。在多層體系結(jié)構(gòu)方面,Delphi提供MIDAS(Multitier Distributed Application Service Suite,多層分布式應(yīng)用程序服務(wù)包)技術(shù),其中利用了當(dāng)前大多數(shù)分布計(jì)算標(biāo)準(zhǔn),如:DCOM,Sockets,HTTP,SOAP(Simple Object Access Protocol,簡(jiǎn)單對(duì)象訪(fǎng)問(wèn)協(xié)議)、CORBA和MTS/COM+,這使得它不但用于建立通常的應(yīng)用系統(tǒng),也適于建立電子商務(wù)應(yīng)用系統(tǒng)。6. 良好的分布式應(yīng)用開(kāi)發(fā)支持Delphi支持多種分布式應(yīng)用模式的開(kāi)發(fā),從簡(jiǎn)單的消息通信程序到龐大的多層次應(yīng)用。5. 強(qiáng)大的數(shù)據(jù)庫(kù)開(kāi)發(fā)功能Delphi提供了一整套數(shù)據(jù)庫(kù)解決方案,包括建立數(shù)據(jù)庫(kù)、連接數(shù)據(jù)庫(kù)、SQL操作、保存、編輯和顯示數(shù)據(jù)集等功能的組件或工具。Delphi是完全面向?qū)ο蟮?,它使用面?duì)象的Pascal(Object Pascal)作為程序設(shè)計(jì)語(yǔ)言,提供了1個(gè)具有真正OOP擴(kuò)展的可視化編程環(huán)境,使得可視化編程與面向?qū)ο蟮拈_(kāi)發(fā)框架緊密地結(jié)合起來(lái)。3. 面向?qū)ο筇匦悦嫦驅(qū)ο蟪绦蛟O(shè)計(jì)OOP(ObjectOriented Programming)是Delphi誕生的基礎(chǔ)。這些組件是進(jìn)行各種程序開(kāi)發(fā)的有力工具。它有1個(gè)建立于面向?qū)ο罂蚣芙Y(jié)構(gòu)之上的窗體設(shè)計(jì)器,當(dāng)在窗體中操作組件時(shí),其后臺(tái)自動(dòng)為其生成代碼。Delphi 7是Windows系統(tǒng)下的可視化集成開(kāi)發(fā)工具,提供了強(qiáng)大的可視化VCL功能,使程序員能夠快速、高效地開(kāi)發(fā)出Windows系統(tǒng)下的應(yīng)用程序,特別是在數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)方面,Delphi與其他開(kāi)發(fā)工具相比更是勝出一籌。90分以上39。808939。707939。606939。不及格39。平均分39。最低分39。最高分39。該存儲(chǔ)過(guò)程主要實(shí)現(xiàn)對(duì)成績(jī)的統(tǒng)計(jì),能夠通過(guò)程序代碼實(shí)現(xiàn)每門(mén)課程成績(jī)的最高分、最低分、平均分以及各分?jǐn)?shù)段學(xué)生人數(shù)的統(tǒng)計(jì)。因此,使用觸發(fā)器保證了數(shù)據(jù)的一致性。刪除觸發(fā)器的代碼如下:CREATE TRIGGER [DeleteSelectnum] ON [dbo].[courseselect] FOR DELETE ASDeclare courseno varchar(6)Select courseno= courseno from deletedupdate course set selectnum=selectnum1 where courseno=courseno 通過(guò)以上的程序代碼,可以保證在學(xué)生退選某門(mén)課程后,選課人數(shù)的總數(shù)也會(huì)在原來(lái)數(shù)量的基礎(chǔ)上自動(dòng)地減一。通過(guò)編寫(xiě)觸發(fā)器中的代碼,就可以控制選課人數(shù)的變化,并把數(shù)據(jù)記錄到相應(yīng)的數(shù)據(jù)表中。管理員表是的depart與院系表中的depart建立了關(guān)聯(lián),院系表是主表,管理員表為從表。班級(jí)表中的specialty與專(zhuān)業(yè)表中的specialty建立了關(guān)聯(lián),其中專(zhuān)業(yè)表是主表,班級(jí)表是從表。學(xué)生表中的specialty與專(zhuān)業(yè)表中的specialty建立了關(guān)聯(lián),專(zhuān)業(yè)表是主表,學(xué)生表是從表。教材表中的bookno與課程表中bookno建立了關(guān)聯(lián),其中教材表是主表,課程表是從表。課程表中的courseno與選課表中的courseno建立了關(guān)聯(lián),課程表是主表,選課表是從表。班級(jí)表中的teacherno與教師表中的teacherno建立了關(guān)聯(lián),教師表是主表,班級(jí)表是從表。班級(jí)表是主表,學(xué)生表是從表。 學(xué)期表(term)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空主/外鍵自動(dòng)編號(hào)含義termnovarchar30否 是學(xué)期crntchar1是設(shè)置默認(rèn)學(xué)期 管理員表(admin)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空主/外鍵自動(dòng)編號(hào)含義loginvarchar20否是登錄名passwordvarchar20是密碼namevarchar30是姓名sexchar2是性別departchar10是外院系 學(xué)生表(student)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空主/外鍵自動(dòng)編號(hào)含義studentnochar7否是學(xué)號(hào)namechar10是學(xué)生姓名sexchar2是性別birthdaydatetime8是出生日期enteryearint4是入學(xué)年份classnochar4是外班級(jí)passwordvarchar20是密碼 統(tǒng)計(jì)表(Tongji)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空主/外鍵自動(dòng)編號(hào)含義namenvarchar20否是統(tǒng)計(jì)項(xiàng)目名稱(chēng)numnumeric9是統(tǒng)計(jì)數(shù)值 課程表(course)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空主/外鍵自動(dòng)編號(hào)含義coursenochar6否是課程編號(hào)namevarchar50是課程名稱(chēng)teachernochar4是外任課教師編號(hào)creditint4是學(xué)分selectnumint4是選課人數(shù) 班級(jí)表(class)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空主/外鍵自動(dòng)編號(hào)含義classnochar4否是班級(jí)編號(hào)typevarchar10是學(xué)歷類(lèi)別enteryearint4是入學(xué)年份teachernochar4是外教師編號(hào)specialtychar10是外專(zhuān)業(yè) 選課表(courseselect)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空主/外鍵自動(dòng)編號(hào)含義studentnochar7否是學(xué)號(hào)coursenochar6否是課程編號(hào)termnovarchar30否是學(xué)期scoreint4是成績(jī) 教師表(teacher)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空主/外鍵自動(dòng)編號(hào)含義teachernochar4否是教師編號(hào)namevarchar50是教師姓名sexchar2是性別birthdaydatetime8是出生日期departchar10是外所在院系degreevarchar10是職稱(chēng)passwordvarchar20是密碼 教材表(book)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空主/外鍵自動(dòng)編號(hào)含義booknochar13否是教材編號(hào)booknamevarchar30否教材名稱(chēng)publish_panyvarchar50否出版社authornvarchar8是作者pricenumeric9是價(jià)格 專(zhuān)業(yè)表(specialty)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空主/外鍵自動(dòng)編號(hào)含義specialtychar10否是專(zhuān)業(yè)編號(hào)specialty_namenvarchar20是專(zhuān)業(yè)名稱(chēng)departchar10是外院系編號(hào) 院系表(department)列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空主/外鍵自動(dòng)編號(hào)含義departchar10否是院系編號(hào)depart_namenvarchar20否院系名稱(chēng)depart_headernvarchar8否院系負(fù)責(zé)人teacher_numsmallint2是教師數(shù)量在完成數(shù)據(jù)庫(kù)中各個(gè)表結(jié)構(gòu)的創(chuàng)建之后,還要畫(huà)出數(shù)據(jù)庫(kù)中表之間的關(guān)系。 創(chuàng)建數(shù)據(jù)表根據(jù)邏輯設(shè)計(jì)中轉(zhuǎn)換后的關(guān)系模型以及對(duì)關(guān)系模型進(jìn)行的優(yōu)化,可以在已經(jīng)創(chuàng)建好的數(shù)據(jù)庫(kù)上創(chuàng)建數(shù)據(jù)表。在輸入名稱(chēng)后,單擊“確定”按鈕,關(guān)閉此對(duì)話(huà)框,教務(wù)管理信息系統(tǒng)的數(shù)據(jù)庫(kù)就建立好了。然后在新建數(shù)據(jù)庫(kù)對(duì)話(huà)窗口中“名稱(chēng)”一欄輸入要建立數(shù)據(jù)庫(kù)的名字,教務(wù)管理信息系統(tǒng)數(shù)據(jù)庫(kù)的名稱(chēng)為“college”。 創(chuàng)建數(shù)據(jù)庫(kù)既然選擇用SQL Server 2000作為后臺(tái)數(shù)據(jù)庫(kù),我們就可以在SQL Server 2000上創(chuàng)建數(shù)據(jù)庫(kù)。 5. 數(shù)據(jù)倉(cāng)庫(kù)SQL Server 2000中包括析取和分析匯總數(shù)據(jù)以進(jìn)行聯(lián)機(jī)分析處理 (OLAP) 的工具。SQL Server 2000還支持基于標(biāo)準(zhǔn)的、與 Windows DNA 集成的程序設(shè)計(jì)模型,使 SQL Server 數(shù)據(jù)庫(kù)和數(shù)據(jù)倉(cāng)庫(kù)的使用成為生成強(qiáng)大的可伸縮系統(tǒng)的無(wú)縫部分。可將一組數(shù)據(jù)復(fù)制到多個(gè)移動(dòng)的脫機(jī)用戶(hù),使這些用戶(hù)自主地工作,然后將他們所做的修改合并后發(fā)給服務(wù)器。SQL Server 2000 分布式查詢(xún)可以引用來(lái)自不同數(shù)據(jù)源的數(shù)據(jù),就好像這些數(shù)據(jù)是 SQL Server 2000 數(shù)據(jù)庫(kù)的一部分,同時(shí)分布式事務(wù)支持充分保護(hù)任何分布式數(shù)據(jù)更新的完整性。 3. 企業(yè)級(jí)數(shù)據(jù)庫(kù)功能SQL Server 2000 關(guān)系數(shù)據(jù)庫(kù)引擎支持當(dāng)今苛刻的數(shù)據(jù)處理環(huán)境所需的功能。2. 可伸縮性和可用性同一個(gè)數(shù)據(jù)庫(kù)引擎可以在不同的平臺(tái)上使用,從運(yùn)行 Microsoft Windows 98 的便攜式電腦,到運(yùn)行 Microsoft Windows 2000 數(shù)據(jù)中心版的大型多處理器服務(wù)器。它還具有構(gòu)成最大的 Web 站點(diǎn)的數(shù)據(jù)存儲(chǔ)組件所需的可伸縮性、可用性和安全功能。它還具有分布式數(shù)據(jù)庫(kù)和數(shù)據(jù)倉(cāng)庫(kù)功能,能進(jìn)行分布式事務(wù)處理和聯(lián)機(jī)分析處理,支持客戶(hù)機(jī)/服務(wù)器的系統(tǒng)結(jié)構(gòu),是目前廣為使用的數(shù)據(jù)庫(kù)管理系統(tǒng)。本系統(tǒng)在開(kāi)發(fā)的過(guò)程中,采用的后臺(tái)數(shù)據(jù)庫(kù)是SQL Server 2000。系統(tǒng)實(shí)施的根本目的,是為用戶(hù)提供一個(gè)能夠?qū)嶋H運(yùn)行的系統(tǒng),并保證該系統(tǒng)的穩(wěn)定和高效。教師、學(xué)生可以通過(guò)密碼修改來(lái)實(shí)現(xiàn)對(duì)原來(lái)密碼的修改,重新設(shè)置新密碼。系統(tǒng)維護(hù)主要是實(shí)現(xiàn)教務(wù)工作當(dāng)中的數(shù)據(jù)備份。在此之后,教師就可以通過(guò)系統(tǒng)提供的統(tǒng)計(jì)功能統(tǒng)計(jì)出每門(mén)課程的最高分、最低分、平均分以及各個(gè)分?jǐn)?shù)段的人數(shù)等信息。在每個(gè)學(xué)期的期末,教師都要對(duì)所任教課程的成績(jī)進(jìn)行登記和修改。在課程設(shè)置完畢后,學(xué)生就可以根據(jù)開(kāi)設(shè)課程的情況在選課管理中進(jìn)行選擇。4. 課程管理模塊課程管理模塊分為課程設(shè)置、選課管理、成績(jī)管理。在對(duì)班級(jí)信息進(jìn)行刪除時(shí),需要對(duì)操作用戶(hù)進(jìn)行提示,讓用戶(hù)確認(rèn)是否要將該班級(jí)的學(xué)生信息刪除。3. 班級(jí)信息管理模塊系統(tǒng)管理員除了管理教師和學(xué)生信息外,還可以通過(guò)此模塊來(lái)管理學(xué)校的班級(jí)信息。同樣也是對(duì)全院的學(xué)生信息進(jìn)行添加、刪除、修改、查詢(xún)等基本操作。另外,在模塊中還可以看到教師所任教課程和所管理的班級(jí)等信息。具體的教師信息有教師的編號(hào),該編號(hào)由4位組成,第一位代表教師所在院系,其他三位代表教師在院系內(nèi)的編號(hào)。本系統(tǒng)按照系統(tǒng)的功能劃分分為:教師信息、學(xué)生信息、班級(jí)管理、課程管理、系統(tǒng)管理等。因?yàn)樽儎?dòng)往往只涉及少數(shù)幾個(gè)模塊,所以模塊化能夠提高系統(tǒng)的可修改性。在教務(wù)管理信息系統(tǒng)的基礎(chǔ)信息管理子系統(tǒng)中,采用了模塊化的設(shè)計(jì)原理,它不僅可以使系統(tǒng)結(jié)構(gòu)清晰,而且容易設(shè)計(jì)、也容易閱讀和理解。 系統(tǒng)模塊設(shè)計(jì)根據(jù)需求分析,本系統(tǒng)結(jié)構(gòu)采用流行的C/S(客戶(hù)機(jī)/服務(wù)器)結(jié)構(gòu)模式,該模式的主要特點(diǎn)是:系統(tǒng)的管理人員以及使用者在客戶(hù)端對(duì)服務(wù)器端的數(shù)據(jù)庫(kù)進(jìn)行各種操作,操作的結(jié)果又由服務(wù)器端的數(shù)據(jù)庫(kù)發(fā)送給客戶(hù)端顯示出來(lái);客戶(hù)端和數(shù)據(jù)庫(kù)服務(wù)器可以在同一臺(tái)計(jì)算機(jī)上安裝,也可