項(xiàng)目10學(xué)生成績(jī)數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)課件_第1頁(yè)
項(xiàng)目10學(xué)生成績(jī)數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)課件_第2頁(yè)
項(xiàng)目10學(xué)生成績(jī)數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)課件_第3頁(yè)
項(xiàng)目10學(xué)生成績(jī)數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)課件_第4頁(yè)
項(xiàng)目10學(xué)生成績(jī)數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)課件_第5頁(yè)
已閱讀5頁(yè),還剩81頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

項(xiàng)目10學(xué)生成績(jī)數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)項(xiàng)目10學(xué)生成績(jī)數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)是在數(shù)據(jù)庫(kù)管理系統(tǒng)的支持下運(yùn)行的計(jì)算機(jī)應(yīng)用軟件。前已述及,開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)不僅要進(jìn)行數(shù)據(jù)庫(kù)的設(shè)計(jì),而且還要進(jìn)行應(yīng)用程序的設(shè)計(jì),這也是前面項(xiàng)目7中提到的系統(tǒng)實(shí)施階段的主要任務(wù)。為了使讀者對(duì)在不同的開(kāi)發(fā)環(huán)境下進(jìn)行數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)編程有個(gè)較為全面的認(rèn)識(shí),本項(xiàng)目選擇了VisualC++、JSP和ASP.NET三種不同的開(kāi)發(fā)環(huán)境來(lái)介紹數(shù)據(jù)庫(kù)應(yīng)用程序的開(kāi)發(fā)方法。新課導(dǎo)入

:數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)是在數(shù)據(jù)庫(kù)管理系統(tǒng)的支持下運(yùn)行的計(jì)算機(jī)應(yīng)用軟件任務(wù)描述:按照開(kāi)發(fā)的基本過(guò)程和內(nèi)容,將項(xiàng)目分解成以下幾個(gè)任務(wù):任務(wù)10.1確定學(xué)生成績(jī)管理系統(tǒng)的體系結(jié)構(gòu)及其前臺(tái)開(kāi)發(fā)工具任務(wù)10.2確定系統(tǒng)的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)(包括連接技術(shù)和數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象)任務(wù)10.3使用VisualC++開(kāi)發(fā)學(xué)生成績(jī)管理系統(tǒng)任務(wù)10.4使用JSP開(kāi)發(fā)學(xué)生成績(jī)管理系統(tǒng)任務(wù)10.5使用ASP.NET開(kāi)發(fā)學(xué)生成績(jī)管理系統(tǒng)任務(wù)描述:按照開(kāi)發(fā)的基本過(guò)程和內(nèi)容,將項(xiàng)目分解成教學(xué)目標(biāo):

知識(shí)目標(biāo):(1)掌握3種不同的數(shù)據(jù)庫(kù)系統(tǒng)體系結(jié)構(gòu)及其適用場(chǎng)合;了解常用的數(shù)據(jù)庫(kù)連接技術(shù),以及ODBC、JDBC和OLEDB三種接口的技術(shù)要點(diǎn);(2)掌握數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象ADO和ADO.NET的結(jié)構(gòu)及其主要對(duì)象;(3)了解常用的應(yīng)用程序開(kāi)發(fā)工具VisualC++、JSP及ASP.NET的編程特點(diǎn)及其主要的編程技術(shù)。技能目標(biāo):(1)會(huì)使用常用的數(shù)據(jù)庫(kù)連接技術(shù),能進(jìn)行ODBC、JDBC和OLEDB三種接口的使用;(2)能夠使用數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象ADO和ADO.NET進(jìn)行SQLServer數(shù)據(jù)操作。教學(xué)目標(biāo):知識(shí)目標(biāo):

應(yīng)用程序設(shè)計(jì)的一個(gè)關(guān)鍵要素是系統(tǒng)的體系結(jié)構(gòu),體系結(jié)構(gòu)決定了應(yīng)用程序的各個(gè)部分如何進(jìn)行交互,同時(shí)也決定了每個(gè)部分實(shí)現(xiàn)的功能。隨著信息系統(tǒng)的大型化、復(fù)雜化、分布式的發(fā)展趨勢(shì)和變化特點(diǎn),其體系結(jié)構(gòu)也發(fā)生了很大的變化,從以往基于局域網(wǎng)的客戶/服務(wù)器(Client/Server,簡(jiǎn)稱C/S)結(jié)構(gòu)到已廣泛使用的基于Web的瀏覽器/服務(wù)器(Browser/Server,簡(jiǎn)稱B/S)結(jié)構(gòu),再到目前正得到迅速應(yīng)用的基于.NET技術(shù)的分布式計(jì)算框架。1.C/S結(jié)構(gòu)2.B/S結(jié)構(gòu)3..NET框架結(jié)構(gòu)知識(shí)點(diǎn)1:目前常用的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)體系結(jié)構(gòu)

應(yīng)用程序設(shè)計(jì)的一個(gè)關(guān)鍵要素是系統(tǒng)的體系結(jié)構(gòu),體C/S結(jié)構(gòu)

數(shù)據(jù)庫(kù)服務(wù)器客戶機(jī)客戶機(jī)計(jì)算機(jī)網(wǎng)絡(luò)圖10-1C/S結(jié)構(gòu)模型C/S結(jié)構(gòu)數(shù)據(jù)庫(kù)服務(wù)器客戶機(jī)客戶機(jī)計(jì)算機(jī)網(wǎng)絡(luò)圖10-1CB/S結(jié)構(gòu)

Web服務(wù)器數(shù)據(jù)庫(kù)服務(wù)器瀏覽器瀏覽器計(jì)算機(jī)網(wǎng)絡(luò)圖10-2B/S結(jié)構(gòu)模型B/S結(jié)構(gòu)Web服務(wù)器數(shù)據(jù)庫(kù)服務(wù)器瀏覽器瀏覽器計(jì)算機(jī)網(wǎng)絡(luò)圖.NET框架結(jié)構(gòu)

用戶應(yīng)用表示層數(shù)據(jù)庫(kù)平臺(tái)通用語(yǔ)言運(yùn)行時(shí)(CLR)通信協(xié)議(XML、SOAP、UDDI等開(kāi)放標(biāo)準(zhǔn))Web服務(wù)器瀏覽器組件庫(kù)WinForms圖10-3基于.NET的應(yīng)用程序架構(gòu).NET框架結(jié)構(gòu)用戶應(yīng)用表示層數(shù)據(jù)庫(kù)平臺(tái)通用語(yǔ)言運(yùn)行時(shí)(C任務(wù)1:確定學(xué)生成績(jī)管理系統(tǒng)的體系結(jié)構(gòu)【任務(wù)描述】試根據(jù)項(xiàng)目7所描述的應(yīng)用需求確定學(xué)生成績(jī)管理系統(tǒng)的體系結(jié)構(gòu),并選擇合適的前臺(tái)開(kāi)發(fā)工具?!救蝿?wù)實(shí)現(xiàn)】根據(jù)項(xiàng)目7所描述的應(yīng)用需求,現(xiàn)要建立一個(gè)基于校園網(wǎng)絡(luò)應(yīng)用平臺(tái)的、面向?qū)W校教務(wù)部門(mén)以及各系部教學(xué)管理科室等層次用戶的學(xué)生成績(jī)管理系統(tǒng),所以本系統(tǒng)應(yīng)在學(xué)校校園網(wǎng)的基礎(chǔ)上建立。為了使讀者能體會(huì)到不同系統(tǒng)體系結(jié)構(gòu)的差別,這里假設(shè)有兩種不同結(jié)構(gòu)的校園網(wǎng),一種為僅能在學(xué)校內(nèi)部使用的局域網(wǎng),用戶需在客戶機(jī)上訪問(wèn)學(xué)生成績(jī)管理系統(tǒng);另一種為與外界連通的Internet網(wǎng)絡(luò),用戶只需在客戶機(jī)上安裝一個(gè)通用的瀏覽器軟件即可訪問(wèn)校園網(wǎng)。這樣,前者情況下學(xué)生成績(jī)管理系統(tǒng)可以選擇C/S體系結(jié)構(gòu),后者情況下則可以使用B/S體系結(jié)構(gòu)或.NET框架結(jié)構(gòu)。另外,在系統(tǒng)開(kāi)發(fā)工具的選擇上,C/S架構(gòu)使用VisualC++前臺(tái)開(kāi)發(fā)環(huán)境;B/S架構(gòu)使用JSP腳本環(huán)境進(jìn)行開(kāi)發(fā);而.NET框架結(jié)構(gòu)則使用ASP.NET開(kāi)發(fā)環(huán)境。它們的后臺(tái)數(shù)據(jù)庫(kù)均建立在SQL-Server2000之上。任務(wù)1:確定學(xué)生成績(jī)管理系統(tǒng)的體系結(jié)構(gòu)【任務(wù)描述】試根據(jù)項(xiàng)在實(shí)際開(kāi)發(fā)中,為了使應(yīng)用程序能夠操作數(shù)據(jù)庫(kù)中的數(shù)據(jù),必須建立一個(gè)與數(shù)據(jù)庫(kù)管理系統(tǒng)的訪問(wèn)機(jī)制,以實(shí)現(xiàn)應(yīng)用程序和數(shù)據(jù)庫(kù)之間的互相通信。目前實(shí)現(xiàn)這種通信的方式主要有兩種:數(shù)據(jù)庫(kù)API(ApplicationProgramInterface,稱為“應(yīng)用程序接口”)和數(shù)據(jù)訪問(wèn)對(duì)象接口。數(shù)據(jù)庫(kù)API(數(shù)據(jù)庫(kù)連接技術(shù)):1.ODBC2.OLEDB3.JDBC知識(shí)點(diǎn)2:數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)在實(shí)際開(kāi)發(fā)中,為了使應(yīng)用程序能夠操作數(shù)據(jù)庫(kù)中的數(shù)據(jù),必須建1、ODBC

ODBC是開(kāi)放式數(shù)據(jù)庫(kù)連接(OpenDatabaseConnectivity)的英文縮寫(xiě)。它是微軟公司為了便于用戶在Windows系統(tǒng)下開(kāi)發(fā)應(yīng)用系統(tǒng)而制定的一種開(kāi)放式的、標(biāo)準(zhǔn)化的應(yīng)用程序接口。

2、OLEDBOLEDB建立在Microsoft的COM(組件對(duì)象模型,其商業(yè)概念的稱謂為ActiveX)基礎(chǔ)上,它包括一組COM組件程序,組件與組件之間或者組件與客戶程序之間通過(guò)標(biāo)準(zhǔn)的COM接口進(jìn)行通訊,COM接口封裝了各種數(shù)據(jù)系統(tǒng)的訪問(wèn)操作,為數(shù)據(jù)使用者(即應(yīng)用程序)和數(shù)據(jù)提供者建立了標(biāo)準(zhǔn)。OLEDB模型主要包括以下一些COM接口對(duì)象:(1)數(shù)據(jù)源(DataSource)對(duì)象(2)會(huì)話(Session)對(duì)象(3)命令(Command)對(duì)象(4)行集(RowSet)對(duì)象3、JDBCJDBCAPI提供兩種主要接口:一是面向開(kāi)發(fā)人員的java.sql程序包,使得java程序員能夠進(jìn)行數(shù)據(jù)庫(kù)連接,執(zhí)行SQL查詢,并得到結(jié)果集,java.sql程序包提供了6個(gè)類和18個(gè)接口;二是面向底層數(shù)據(jù)庫(kù)廠商的JDBCDrivers,它提供了4種類型的數(shù)據(jù)庫(kù)驅(qū)動(dòng)方式:JDBC-ODBCBridge、JDBC-NativeAPIBridge、JDBC-middleware和PureJDBCDriver。1、ODBCADO的數(shù)據(jù)存取結(jié)構(gòu)

ODBC應(yīng)用程序接口OLEDBADO非SQLDATASQLDATA圖10-4在Web環(huán)境下ADO的數(shù)據(jù)存取結(jié)構(gòu)ADO的數(shù)據(jù)存取結(jié)構(gòu)ODBC應(yīng)用程序接口OLEDBADOADO中的對(duì)象和集合

Connection對(duì)象

Command對(duì)象

Recordset對(duì)象

Parameters對(duì)象及Parameters集合

Fields對(duì)象及Fields集合

Property對(duì)象及Property集合

Errors對(duì)象及Errors集合

ADO中的對(duì)象和集合Connection對(duì)象ADO.NETDataSet組件

DataSet包含一個(gè)或多個(gè)DataTable對(duì)象的集合,這些對(duì)象由行、列、主鍵、外鍵、約束及其數(shù)據(jù)的關(guān)系信息組成,由此你可以把DataSet想象成內(nèi)存中的數(shù)據(jù)庫(kù),不管數(shù)據(jù)來(lái)源于一個(gè)關(guān)系型的數(shù)據(jù)庫(kù),還是來(lái)源于一個(gè)XML文檔,都可以用一個(gè)統(tǒng)一的編程模型來(lái)創(chuàng)建和使用它,從而提高了程序的交互性和可擴(kuò)展性,尤其適合于分布式的應(yīng)用場(chǎng)合。ADO.NETDataSet組件DataSet.NET數(shù)據(jù)提供程序

Connection對(duì)象提供與數(shù)據(jù)源的連接。Command對(duì)象使用戶能夠訪問(wèn)用于返回?cái)?shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲(chǔ)過(guò)程以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫(kù)命令。DataReader對(duì)象從數(shù)據(jù)源中提供高性能的數(shù)據(jù)流。DataAdapter對(duì)象用于從數(shù)據(jù)源中檢索數(shù)據(jù),并填充DataSet中的表,并且會(huì)將對(duì)DataSet作出的更改返回?cái)?shù)據(jù)源,從而起到連接DataSet對(duì)象和數(shù)據(jù)源的橋梁作用。.NET數(shù)據(jù)提供程序Connection對(duì)象提供.NET數(shù)據(jù)提供程序Connection事務(wù)Command參數(shù)DataReaderDataAdapterSelectCommandInsertCommandUpdateCommandDeleteCommandDataSetDataTableCollectionDataTableDataRowCollectionDataColumnCollectionDataRowCollectionDataColumnCollectionXML數(shù)據(jù)庫(kù)圖10-5ADO.NET的數(shù)據(jù)存取結(jié)構(gòu).NET數(shù)據(jù)提供程序Connection事務(wù)Command參任務(wù)2:確定系統(tǒng)的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)【任務(wù)描述】試根據(jù)開(kāi)發(fā)學(xué)生成績(jī)管理系統(tǒng)不同的體系結(jié)構(gòu)及其采用的前臺(tái)軟件開(kāi)發(fā)工具,確定系統(tǒng)的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)?!救蝿?wù)實(shí)現(xiàn)】在本任務(wù)中用戶可根據(jù)不同的系統(tǒng)體系結(jié)構(gòu)和前臺(tái)軟件開(kāi)發(fā)工具,選擇合適的數(shù)據(jù)對(duì)象接口或API應(yīng)用程序接口訪問(wèn)SQLServer數(shù)據(jù)庫(kù)。針對(duì)任務(wù)10.1所采用的3種系統(tǒng)體系結(jié)構(gòu)及其開(kāi)發(fā)工具可作如下選擇:當(dāng)采用VisualC++進(jìn)行C/S結(jié)構(gòu)的系統(tǒng)開(kāi)發(fā)時(shí),可利用ODBC、OLEDB連接技術(shù)或ADO數(shù)據(jù)訪問(wèn)對(duì)象來(lái)訪問(wèn)SQLServer數(shù)據(jù)庫(kù);當(dāng)采用JSP進(jìn)行B/S結(jié)構(gòu)的系統(tǒng)開(kāi)發(fā)時(shí),則利用JDBC連接技術(shù);當(dāng)采用ASP.NET進(jìn)行.NET結(jié)構(gòu)的系統(tǒng)開(kāi)發(fā)時(shí),則采用OLEDB、ADO.NET作為數(shù)據(jù)庫(kù)的連接和訪問(wèn)技術(shù)。任務(wù)2:確定系統(tǒng)的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)【任務(wù)描述】試根據(jù)開(kāi)發(fā)學(xué)生成1、VisualC++6.0的編程特點(diǎn)2、VisualC++的應(yīng)用程序開(kāi)發(fā)界面3、VisualC++中的應(yīng)用程序窗口4、VisualC++中的資源5、事件驅(qū)動(dòng)代碼6、Microsoft基本類庫(kù)(MFC)7、VisualC++應(yīng)用程序的開(kāi)發(fā)步驟知識(shí)點(diǎn)3:VisualC++編程知識(shí)1、VisualC++6.0的編程特點(diǎn)知識(shí)點(diǎn)3:VisuVisualC++6.0訪問(wèn)數(shù)據(jù)庫(kù)的技術(shù)(1)ODBC(OpenDataBaseConnectivity(2)MFCODBC(MicrosoftFoundationClassODBC(3)ADO(ActiveXDataObject)2.在VisualC++6.0中利用MFCODBC與數(shù)據(jù)庫(kù)連接(1)在應(yīng)用程序中連接數(shù)據(jù)源(2)在應(yīng)用程序中斷開(kāi)與數(shù)據(jù)源的連接3.在VisualC++6.0中操作記錄集知識(shí)點(diǎn)4:在VisualC++中訪問(wèn)SQLServerVisualC++6.0訪問(wèn)數(shù)據(jù)庫(kù)的技術(shù)知識(shí)點(diǎn)4:在Vi(1)紀(jì)錄集的概念(2)記錄集的打開(kāi)(3)記錄集的更新(4)記錄集的滾動(dòng)(5)記錄集的定位(6)記錄集的排序(7)記錄集的事務(wù)處理(8)記錄集的關(guān)閉(1)紀(jì)錄集的概念1.配置ODBC數(shù)據(jù)源【任務(wù)描述】為數(shù)據(jù)庫(kù)“StudentScore”建立一個(gè)名為“Score_ODBC”的系統(tǒng)DSN?!救蝿?wù)實(shí)現(xiàn)】(1)在Windows2003的控制面板中,雙擊“管理工具”中的“數(shù)據(jù)源(ODBC)”圖標(biāo),打開(kāi)“ODBC數(shù)據(jù)源管理器”對(duì)話框,在其中選擇“系統(tǒng)DSN”選項(xiàng)卡,如圖10-17所示。(2)在“系統(tǒng)DSN”選項(xiàng)卡中,單擊“添加”按鈕,打開(kāi)如圖10-18所示的“創(chuàng)建新數(shù)據(jù)源”對(duì)話框,在該對(duì)話框中選擇新建數(shù)據(jù)源要用的驅(qū)動(dòng)程序SQLServer,單擊“完成”按鈕。(3)在打開(kāi)的如圖10-19所示的“創(chuàng)建數(shù)據(jù)源向?qū)А睂?duì)話框中,輸入數(shù)據(jù)源名、說(shuō)明信息和連接的SQLServer數(shù)據(jù)庫(kù)服務(wù)器,單擊“下一步”按鈕。任務(wù)3:使用VisualC++開(kāi)發(fā)學(xué)生成績(jī)管理系統(tǒng)1.配置ODBC數(shù)據(jù)源任務(wù)3:使用VisualC++開(kāi)2.學(xué)生成績(jī)管理系統(tǒng)中的“登錄”功能模塊的設(shè)計(jì)【任務(wù)描述】使用VisualC++6.0開(kāi)發(fā)學(xué)生成績(jī)管理系統(tǒng)中的“登錄”功能模塊,要求實(shí)現(xiàn)不同級(jí)別的用戶能根據(jù)各自的用戶名和口令進(jìn)入系統(tǒng),其界面如圖10-24所示。圖10-24學(xué)生成績(jī)管理系統(tǒng)“登陸”功能界面2.學(xué)生成績(jī)管理系統(tǒng)中的“登錄”功能模塊的設(shè)計(jì)(1)主窗體設(shè)計(jì),其主要屬性如表10-1所示。屬性設(shè)置值IDIDD_DIALOG_LOGINCaption用戶登錄(1)主窗體設(shè)計(jì),其主要屬性如表10-1所示。屬性設(shè)置值ID(2)添加框架控件和其中的文本框控件、組合框控件、標(biāo)簽控件等,各控件屬性的設(shè)置如表10-2所示。

元素名屬性設(shè)置值組框IDIDC_STATICCaption用戶登錄靜態(tài)文本(共2個(gè))IDIDC_STATICCaption用戶名、密碼編輯框(共2個(gè))IDIDC_EDIT_USER、IDC_EDIT_PASS按鈕(共2個(gè))IDIDOK、IDCANCELCaption登錄、退出(2)添加框架控件和其中的文本框控件、組合框控件、標(biāo)簽控件等(3)編寫(xiě)事件過(guò)程程序代碼。voidCLoginDlg::OnOK(){//TODO:AddextravalidationhereBOOLbLogin=false;CStringstrUser,strPass;GetDlgItem(IDC_EDIT_USER)->GetWindowText(strUser);GetDlgItem(IDC_EDIT_PASS)->GetWindowText(strPass);if(OpenDB()){//執(zhí)行SELECT語(yǔ)句 CRecordsetrsUser(&m_db); rsUser.Open(CRecordset::forwardOnly,"selectUsers_Name,PasswordfromUsers"); CStringstrResult;項(xiàng)目10學(xué)生成績(jī)數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)課件 while(!rsUser.IsEOF()){rsUser.GetFieldValue("Users_Name",strResult); if(strResult==strUser){rsUser.GetFieldValue("Password",strResult); if(strResult=strPass) bLogin=true; } rsUser.MoveNext(); } if(!bLogin){this->MessageBox("用戶名或者密碼不正確","錯(cuò)誤",MB_OK+MB_ICONERROR); return; } CloseDB(); } else{ AfxMessageBox("無(wú)法打開(kāi)數(shù)據(jù)庫(kù)"); } CDialog::OnOK();} while(!rsUser.IsEOF()){3.學(xué)生成績(jī)管理系統(tǒng)中的“學(xué)生基本信息管理”功能的設(shè)計(jì)【任務(wù)描述】使用VisualC++6.0開(kāi)發(fā)學(xué)生成績(jī)管理系統(tǒng)中的“學(xué)生基本信息管理”功能模塊,要求實(shí)現(xiàn)學(xué)生基本信息的顯示、添加、修改和刪除4個(gè)功能,其界面如圖10-26所示。

圖10-26“課程信息錄入與維護(hù)”功能界面3.學(xué)生成績(jī)管理系統(tǒng)中的“學(xué)生基本信息管理”功能表10-3主窗體的主要屬性(1)主窗體設(shè)計(jì),其主要屬性如表10-3所示。屬性設(shè)置值IDIDD_DIALOG_STUDENT_INFOCaption學(xué)生基本信息維護(hù)表10-3主窗體的主要屬性(1)主窗體設(shè)計(jì),其主要屬性如(2)添加組框、靜態(tài)文本、編輯框、按鈕等元素,各元素屬性的設(shè)置如表10-4所示。

表10-4Adodc1控件的主要屬性元素名屬性設(shè)置值MFCgridctrlIDIDC_GRIDCTRLCaptionCustom1按鈕(共4個(gè))IDIDC_BTN_INSERT、IDC_BTN_DELETE、IDC_BTN_MODIFY、IDCANCELCaption添加、刪除、登錄、退出(2)添加組框、靜態(tài)文本、編輯框、按鈕等元素,各元素屬性的設(shè)(3)編寫(xiě)事件過(guò)程程序代碼。初始化:voidCStudentInfoDlg::RefreshDB(){if(OpenDB()){ CRecordsetrs(&m_db); rs.Open(CRecordset::forwardOnly,"Select*frombStudent"); introw_all=0; while(!rs.IsEOF()){ row_all++; rs.MoveNext(); } rs.Close();//清空Grid m_GridCtrl.DeleteAllItems(); m_GridCtrl.SetEditable(false);//設(shè)置Grid的屬性 m_GridCtrl.SetRowCount(row_all+1); m_GridCtrl.SetColumnCount(5); m_GridCtrl.SetFixedRowCount(1); m_GridCtrl.SetFixedColumnCount(1); m_GridCtrl.SetRowResize(FALSE);//加標(biāo)題行row=0 introw=0; GV_ITEMItem;項(xiàng)目10學(xué)生成績(jī)數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)課件

Item.row=row; Item.mask=GVIF_TEXT|GVIF_FORMAT; Item.nFormat=DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS; Item.col=0; Item.szText.Format("序號(hào)"); m_GridCtrl.SetItem(&Item); Item.col=1; Item.szText.Format("學(xué)號(hào)"); m_GridCtrl.SetItem(&Item); Item.col=2; Item.szText.Format("姓名"); m_GridCtrl.SetItem(&Item); Item.col=3; Item.szText.Format("性別"); m_GridCtrl.SetItem(&Item); Item.col=4; Item.szText.Format("出生日期"); m_GridCtrl.SetItem(&Item); Item.col=5; Item.szText.Format("班級(jí)"); m_GridCtrl.SetItem(&Item); if(row_all>0){ rs.Open(CRecordset::forwardOnly,"Select*frombStudent");//加內(nèi)容 while(!rs.IsEOF()){ row++;//獲取字段值 CStringstr_Stud_Name,str_Stud_Id,str_Stud_Sex,str_Birth,str_Class_Id; rs.GetFieldValue("Stud_Id",str_Stud_Id); rs.GetFieldValue("Stud_Name",str_Stud_Name); rs.GetFieldValue("Stud_Sex",str_Stud_Sex); rs.GetFieldValue("Birth",str_Birth); rs.GetFieldValue("Class_Id",str_Class_Id); //把當(dāng)前記錄加入到Grid中 GV_ITEMItem; Item.row=row; Item.mask=GVIF_TEXT|GVIF_FORMAT; Item.nFormat=DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS; Item.row=row;

//所在班級(jí) Item.col=5; Item.szText.Format(str_Class_Id); m_GridCtrl.SetItem(&Item); rs.MoveNext(); } rs.Close(); } m_GridCtrl.AutoSize(); } else{ AfxMessageBox("打開(kāi)數(shù)據(jù)庫(kù)錯(cuò)誤!"); } CloseDB();}添加功能:voidCStudentInfoDlg::OnBtnInsert(){m_dlgDetail->SetWindowText("添加學(xué)生信息"); m_dlgDetail->ReadyToInsert(); m_dlgDetail->ShowWindow(SW_SHOW);} //所在班級(jí)刪除功能:voidCStudentInfoDlg::OnBtnDelete(){introw=m_GridCtrl.GetSelectedCellRange().GetMinRow();CStringsID=m_GridCtrl.GetItemText(row,1);CStringsName=m_GridCtrl.GetItemText(row,2);if(IDYES=MessageBox("確實(shí)要?jiǎng)h除"+sID+""+sName+"嗎?","刪除確認(rèn)",MB_YESNO)){ if(OpenDB()){ CStringsql="DeletefrombStudentwhereStud_Id='"+sID+"'"; m_db.ExecuteSQL(sql); } CloseDB(); } RefreshDB();}刪除功能:修改功能:voidCStudentInfoDlg::OnBtnModify(){m_dlgDetail->SetWindowText("修改學(xué)生信息");introw=m_GridCtrl.GetSelectedCellRange().GetMinRow();CStringsID=m_GridCtrl.GetItemText(row,1);if(sID.IsEmpty()){ AfxMessageBox("請(qǐng)選擇需要修改的記錄!"); return;}m_dlgDetail->ReadyToModify(sID);m_dlgDetail->ShowWindow(SW_SHOW);RefreshDB();}修改功能:4.學(xué)生成績(jī)管理系統(tǒng)中的“課程信息管理”功能的設(shè)計(jì)【任務(wù)描述】使用VisualC++6.0開(kāi)發(fā)學(xué)生成績(jī)管理系統(tǒng)中的“課程基本信息管理”功能模塊,要求實(shí)現(xiàn)課程基本信息的顯示、添加、修改和刪除4個(gè)功能,其界面如圖10-29所示。

圖10-29“課程信息錄入與維護(hù)”功能界面4.學(xué)生成績(jī)管理系統(tǒng)中的“課程信息管理”功能表10-7主窗體的主要屬性(1)主窗體設(shè)計(jì),其主要屬性如表10-7所示。屬性設(shè)置值IDIDD_DIALOG_COURSE_INFOCaption課程信息維護(hù)表10-7主窗體的主要屬性(1)主窗體設(shè)計(jì),其主要屬性如(2)添加組框、靜態(tài)文本、編輯框、按鈕等元素,各元素屬性的設(shè)置如表10-8所示。

表10-8各元素的屬性設(shè)置

元素名屬性設(shè)置值MFCgridctrlIDIDC_GRIDCTRL2CaptionCustom1編輯框(共5個(gè))IDIDC_EDT_STU_ID、IDC_EDIT_CID、IDC_EDIT_CNAME、IDC_EDIT_CTYPE、IDC_EDIT_CHOUR按鈕(共2個(gè))IDIDC_BTN_INSERT2、IDC_BTN_DELETE2、IDC_BTN_MODIFY2、IDCANCELCaption添加、刪除、登錄、退出(2)添加組框、靜態(tài)文本、編輯框、按鈕等元素,各元素屬性的設(shè)(3)編寫(xiě)事件過(guò)程程序代碼。初始化:voidCCourseInfoDlg::RefreshDB(){if(OpenDB()){CRecordsetrs(&m_db); rs.Open(CRecordset::forwardOnly,"Select*frombCourse"); introw_all=0; while(!rs.IsEOF()){ row_all++; rs.MoveNext();} rs.Close(); //清空Grid m_GridCtrl.DeleteAllItems(); m_GridCtrl.SetEditable(false); //設(shè)置Grid的屬性 m_GridCtrl.SetRowCount(row_all+1); m_GridCtrl.SetColumnCount(5); m_GridCtrl.SetFixedRowCount(1);項(xiàng)目10學(xué)生成績(jī)數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)課件

m_GridCtrl.SetFixedColumnCount(1); m_GridCtrl.SetRowResize(FALSE); //加標(biāo)題行row=0 introw=0; GV_ITEMItem; Item.row=row; Item.mask=GVIF_TEXT|GVIF_FORMAT; Item.nFormat=DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS; Item.col=0; Item.szText.Format("序號(hào)"); m_GridCtrl.SetItem(&Item); Item.col=1; Item.szText.Format("課程代碼");m_GridCtrl.SetItem(&Item); Item.col=2; Item.szText.Format("課程名稱"); m_GridCtrl.SetItem(&Item); Item.col=3; Item.szText.Format("課程類別"); m_GridCtrl.SetItem(&Item); Item.col=4; Item.szText.Format("課程學(xué)時(shí)"); m_GridCtrl.SetItem(&Item); m_GridCtrl.SetFixedColumnCoun

if(row_all>0){ rs.Open(CRecordset::forwardOnly,"Select*frombCourse"); //加內(nèi)容 while(!rs.IsEOF()){ row++; //獲取字段值 CStringstr_Course_Id,str_Course_Name,str_Course_Type,str_Hours; rs.GetFieldValue("Course_Id",str_Course_Id); rs.GetFieldValue("Course_Name",str_Course_Name); rs.GetFieldValue("Course_Type",str_Course_Type); rs.GetFieldValue("Hours",str_Hours); //把當(dāng)前記錄加入到Grid中 GV_ITEMItem; Item.row=row; Item.mask=GVIF_TEXT|GVIF_FORMAT; Item.nFormat=DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS; if(row_all>0){刪除功能:voidCCourseInfoDlg::OnBtnDelete2(){ introw=m_GridCtrl.GetSelectedCellRange().GetMinRow(); CStringsID=m_GridCtrl.GetItemText(row,1); CStringsName=m_GridCtrl.GetItemText(row,2);if(IDYES==MessageBox("確實(shí)要?jiǎng)h除"+sID+""+sName+"嗎?","刪除確認(rèn)",MB_YESNO)){ if(OpenDB()){ CStringsql="DeletefrombCoursewhereCourse_Id='"+sID+"'"; m_db.ExecuteSQL(sql); } CloseDB(); } RefreshDB(); }刪除功能:修改功能:voidCCourseInfoDlg::OnBtnModify2(){ CStringstr; GetDlgItem(IDC_BTN_MODIFY2)->GetWindowText(str); if(str=="修改"){ introw=m_GridCtrl.GetSelectedCellRange().GetMinRow(); GetDlgItem(IDC_BTN_MODIFY2)->SetWindowText("確定"); m_strCID=m_GridCtrl.GetItemText(row,1); GetDlgItem(IDC_EDIT_CID)->EnableWindow(true); GetDlgItem(IDC_EDIT_CID_OLD)->SetWindowText(m_strCID); m_strCName=m_GridCtrl.GetItemText(row,2); GetDlgItem(IDC_EDIT_CNAME)->EnableWindow(true); m_strCType=m_GridCtrl.GetItemText(row,3); GetDlgItem(IDC_EDIT_CTYPE)->EnableWindow(true); m_strHours=m_GridCtrl.GetItemText(row,4); GetDlgItem(IDC_EDIT_CHOUR)->EnableWindow(true); GetDlgItem(IDC_BTN_DELETE2)->EnableWindow(false); GetDlgItem(IDC_BTN_INSERT2)->EnableWindow(false); GetDlgItem(IDC_GRIDCTRL2)->EnableWindow(false); UpdateData(FALSE); }修改功能:elseif(str=="確定"){ if(OpenDB()){ CStringstrCID_old; GetDlgItem(IDC_EDIT_CID_OLD)->GetWindowText(strCID_old); CStringsql="DeletefrombCoursewhereCourse_Id='"+strCID_old+"'"; m_db.ExecuteSQL(sql); UpdateData(); sql="insertintobCourse(Course_Id,Course_Name,Course_Type,Hours)values('";sql+=m_strCID+"','";sql+=m_strCName+"','"; sql+=m_strCType+"',";sql+=m_strHours+")"; m_db.ExecuteSQL(sql); } else{ AfxMessageBox("打開(kāi)數(shù)據(jù)庫(kù)錯(cuò)誤!"); } CloseDB(); RefreshDB(); GetDlgItem(IDC_BTN_MODIFY2)->SetWindowText("修改"); GetDlgItem(IDC_EDIT_CID)->SetWindowText(""); GetDlgItem(IDC_EDIT_CID)->EnableWindow(false); GetDlgItem(IDC_EDIT_CNAME)->SetWindowText(""); GetDlgItem(IDC_EDIT_CNAME)->EnableWindow(false); GetDlgItem(IDC_EDIT_CTYPE)->SetWindowText(""); GetDlgItem(IDC_EDIT_CTYPE)->EnableWindow(false); GetDlgItem(IDC_EDIT_CHOUR)->SetWindowText(""); GetDlgItem(IDC_EDIT_CHOUR)->EnableWindow(false); GetDlgItem(IDC_BTN_DELETE2)->EnableWindow(true); GetDlgItem(IDC_BTN_INSERT2)->EnableWindow(true); GetDlgItem(IDC_GRIDCTRL2)->EnableWindow(true); }}elseif(str=="確定"){

返回結(jié)果發(fā)出請(qǐng)求JSP程序(.jsp)Servlet(.java)Java字節(jié)碼(.class)HTML(.htm)客戶端JSP是一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn),在傳統(tǒng)的網(wǎng)頁(yè)HTML文件(*.htm、*.html)中加入Java程序片段和JSP標(biāo)記(tag),就構(gòu)成了JSP網(wǎng)頁(yè)(*.jsp)。其中,程序片段可以操作數(shù)據(jù)庫(kù)、重新定向網(wǎng)頁(yè)等,它們構(gòu)成了建立動(dòng)態(tài)網(wǎng)頁(yè)所需要的功能。其具體的工作原理如圖10-31所示。由上述JSP的工作原理可知,運(yùn)行*.jsp文件需要服務(wù)器端的支持,即提供腳本編程環(huán)境,而能夠提供這種編程環(huán)境的Web服務(wù)器可以是SUN的Tomcat或WebLogic,也可以是Linux平臺(tái)上的Web服務(wù)器—Apache。目前最常用的是Tomcat和WebLogic。知識(shí)點(diǎn)4:JSP程序設(shè)計(jì)返回結(jié)果發(fā)出請(qǐng)求JSP程序(.jsp)Serv知識(shí)點(diǎn)5:在JSP中訪問(wèn)SQLServer

1、JSP與數(shù)據(jù)庫(kù)的連接(1)使用JDBC-ODBC橋(2)使用JDBC通過(guò)網(wǎng)絡(luò)的純Java驅(qū)動(dòng)程序知識(shí)點(diǎn)5:在JSP中訪問(wèn)SQLServer1、JSP與數(shù)JSP與SQL結(jié)合操作數(shù)據(jù)庫(kù)2、在JSP網(wǎng)頁(yè)中執(zhí)行SQL語(yǔ)句(1)執(zhí)行查詢數(shù)據(jù)的SQL語(yǔ)句ResultSet對(duì)象變量=Statement對(duì)象變量.executeQuery(SQL語(yǔ)句)(2)執(zhí)行修改數(shù)據(jù)的SQL語(yǔ)句Statement對(duì)象變量.ExecuteUpdate(SQL語(yǔ)句)3、SQL數(shù)據(jù)集的處理下面列出了所創(chuàng)建的ResultSet類的方法:①booleanabsolute(introw)throwSQLException:移動(dòng)記錄指針到指定記錄②voidbeforeFirst()throwSQLException:移動(dòng)記錄指針到第一條記錄之前③voidafterLast()throwSQLException:移動(dòng)記錄指針到最后一條記錄之后JSP與SQL結(jié)合操作數(shù)據(jù)庫(kù)2、在JSP網(wǎng)頁(yè)中執(zhí)行SQL語(yǔ)④booleanfirst()throwSQLException:移動(dòng)記錄指針到第一條記錄⑤booleanlast()throwSQLException:移動(dòng)記錄指針到最后一條記錄⑥booleannext()throwSQLException:移動(dòng)記錄指針到下一條記錄⑦booleanprevious()throwSQLException:移動(dòng)記錄指針到上一條記錄⑧voiddeleteRow()throwsSQLException:刪除記錄指針指向的記錄⑨voidmoveToInsertRow()throwsSQLException:移動(dòng)記錄指針以增加一條記錄⑩voidmoveToCurrentRow()throwsSQLException:移動(dòng)記錄指針到被記憶的記錄④booleanfirst()throwSQLExce4、JSP訪問(wèn)Web數(shù)據(jù)庫(kù)的主要步驟①指定想要連接的數(shù)據(jù)庫(kù),注冊(cè)(裝載)一個(gè)驅(qū)動(dòng)如:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();②建立和數(shù)據(jù)庫(kù)的連接如:Connectionconn=DriverManager.getConnection(url,"sa","888");其中url="jdbc:microsoft:sqlserver://localhost.1433;DatabaseName=StudentScore";③創(chuàng)建statement這個(gè)SQL語(yǔ)句的執(zhí)行容器如:Statementstmt=conn.createStatement();④創(chuàng)建數(shù)據(jù)集對(duì)象ResultSet,進(jìn)行數(shù)據(jù)操作如:ResultSetrs=stmt.executeQuery(“SELECTX,Y,ZFROMTablexyz”);⑤使用ResultSet對(duì)象所提供的方法和屬性完成對(duì)SQL數(shù)據(jù)集的處理⑥斷開(kāi)與數(shù)據(jù)庫(kù)的連接即用close()方法關(guān)閉數(shù)據(jù)集對(duì)象,關(guān)閉執(zhí)行容器,斷開(kāi)與數(shù)據(jù)庫(kù)的連接。4、JSP訪問(wèn)Web數(shù)據(jù)庫(kù)的主要步驟任務(wù)4:使用JSP開(kāi)發(fā)學(xué)生成績(jī)管理系統(tǒng)【任務(wù)描述】使用JSP設(shè)計(jì)并實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)中的“學(xué)生成績(jī)管理”功能模塊,要求實(shí)現(xiàn)成績(jī)列表顯示、成績(jī)信息添加、成績(jī)信息修改和成績(jī)信息刪除4個(gè)功能。【任務(wù)實(shí)現(xiàn)】(1)在Tomcat安裝目錄的webapps目錄下面新建一個(gè)文件夾,起名為“xscjgl”(2)設(shè)置站點(diǎn)

圖10-37(a)“站點(diǎn)設(shè)置”對(duì)話框-本地信息圖10-37(b)“站點(diǎn)設(shè)置”對(duì)話框-測(cè)試服務(wù)器任務(wù)4:使用JSP開(kāi)發(fā)學(xué)生成績(jī)管理系統(tǒng)【任務(wù)描述】使用JSP(3)建立“學(xué)生成績(jī)管理”網(wǎng)頁(yè)

1)成績(jī)列表顯示頁(yè)面的設(shè)計(jì)

①新建一動(dòng)態(tài)網(wǎng)頁(yè)。選擇菜單【文件︱新建…】,在彈出的【新建文檔】對(duì)話框中選擇“動(dòng)態(tài)頁(yè)”和“JSP”,如圖10-38所示。

圖10-38“新建文檔”對(duì)話框②選擇菜單【文件︱保存】,將新建的動(dòng)態(tài)網(wǎng)頁(yè)保存為scoremanage.jsp,并設(shè)計(jì)網(wǎng)頁(yè)上靜態(tài)顯示的內(nèi)容(3)建立“學(xué)生成績(jī)管理”網(wǎng)頁(yè)

1)成績(jī)列③在頁(yè)面中插入如下關(guān)鍵代碼:importjava.sql.*

; Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=studentscore";Stringuser="sa";Stringpassword="123";Connectionconn=DriverManager.getConnection(url,user,password);Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery("select*frombScore");while(rs.next()){ out.print("<tralign='center'>"); out.print("<tdwidth='70'height='34'>"+rs.getString(2)+"</td>"); out.print("<tdwidth='70'height='34'>"+rs.getString(3)+"</td>"); out.print("<tdwidth='60'height='34'>"+rs.getString(4)+"</td>"); out.print("<tdwidth='60'height='34'>"+rs.getString(5)+"</td>"); out.print("<tdwidth='60'height='34'>"+rs.getString(6)+"</td>"); out.print("<tdwidth='90'height='34'>"+rs.getString(7)+"</td>"); out.print("<tdwidth='50'height='34'><ahref='scoreupdate.jsp?id="+rs.getString(1)+"'target='main'>修改</a></td>"); out.print("<tdwidth='50'height='34'><ahref='scoredelete.jsp?id="+rs.getString(1)+"'>刪除</a></td>");}rs.close();stmt.close();conn.close();③在頁(yè)面中插入如下關(guān)鍵代碼:2)成績(jī)信息添加頁(yè)面的設(shè)計(jì)①新建一動(dòng)態(tài)網(wǎng)頁(yè),保存為scoreinsert.jsp,并設(shè)計(jì)網(wǎng)頁(yè)上靜態(tài)顯示的內(nèi)容,如圖10-40所示。其中,表單設(shè)置名稱為myform,動(dòng)作為“dealscoreinsert.jsp”,方法為POST。圖10-40設(shè)置好的“成績(jī)信息添加頁(yè)面”2)成績(jī)信息添加頁(yè)面的設(shè)計(jì)②再新建一動(dòng)態(tài)網(wǎng)頁(yè),保存為dealscoreinsert.jsp,用于將學(xué)生成績(jī)添加到StudentScore數(shù)據(jù)庫(kù)的bScore表中。頁(yè)面的關(guān)鍵代碼為:importjava.sql.*

; Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=studentscore";Stringuser="sa";Stringpassword="123";Connectionconn=DriverManager.getConnection(url,user,password);Statementstmt=conn.createStatement();Stringsql="insertintobScore(Stud_Id,Course_Id,Term,Score,Credit,Makeup)values('"+stud_id+"','"+course_id+"','"+term+"','"+score+"','"+credit+"','"+makeup+"')";stmt.executeUpdate(sql);stmt.close(); conn.close();response.sendRedirect("scoremanage.jsp");②再新建一動(dòng)態(tài)網(wǎng)頁(yè),保存為dealscoreinsert.j3)成績(jī)信息修改頁(yè)面的設(shè)計(jì)①新建一動(dòng)態(tài)網(wǎng)頁(yè),保存為scoreupdate.jsp,并設(shè)計(jì)網(wǎng)頁(yè)上靜態(tài)顯示的內(nèi)容,如圖10-41所示。其中,表單設(shè)置名稱為myform,動(dòng)作為“dealscoreupdate.jsp”,方法為POST。

圖10-41設(shè)置好的“成績(jī)信息修改頁(yè)面”3)成績(jī)信息修改頁(yè)面的設(shè)計(jì)②再新建一動(dòng)態(tài)網(wǎng)頁(yè),保存為dealscoreupdate.jsp,用于將學(xué)生成績(jī)添加到StudentScore數(shù)據(jù)庫(kù)的bScore表中。頁(yè)面的關(guān)鍵代碼為:importjava.sql.*

;Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=studentscore";Stringuser="sa";Stringpassword="123";Connectionconn=DriverManager.getConnection(url,user,password);Statementstmt=conn.createStatement();Stringsql="updatebScoresetTerm='"+term+"',Score='"+score+"',Credit='"+credit+"',Makeup='"+makeup+"'whereStud_Cod='"+stud_cod+"'"; stmt.executeUpdate(sql);stmt.close(); conn.close(); response.sendRedirect("scoremanage.jsp");②再新建一動(dòng)態(tài)網(wǎng)頁(yè),保存為dealscoreupdate.j4)成績(jī)信息刪除頁(yè)面的設(shè)計(jì)新建一動(dòng)態(tài)網(wǎng)頁(yè),保存為scoredelete.jsp,用于刪除學(xué)生成績(jī)記錄。頁(yè)面的關(guān)鍵代碼為:importjava.sql.*

;Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=studentscore"; Stringuser="sa"; Stringpassword="123"; Connectionconn=DriverManager.getConnection(url,user,password); Statementstmt=conn.createStatement(); Stringsql="deletefrombScorewhereStud_Cod="+stud_cod; stmt.executeUpdate(sql); stmt.close(); conn.close(); response.sendRedirect("scoremanage.jsp");4)成績(jī)信息刪除頁(yè)面的設(shè)計(jì)(4)測(cè)試運(yùn)行①啟動(dòng)Tomcat。②打開(kāi)瀏覽器,輸入地址http://localhost:8080/xscjgl/default.html(注:地址中的localhost也可為或你的計(jì)算機(jī)在局域網(wǎng)中的IP地址,default.html為系統(tǒng)首頁(yè)文件),即可顯示成績(jī)管理界面,如圖10-42所示。圖10-42“學(xué)生成績(jī)管理”功能效果圖(4)測(cè)試運(yùn)行知識(shí)點(diǎn)6:

ASP.NET編程知識(shí)10.3.1ASP.NET與數(shù)據(jù)庫(kù)的連接10.3.2ASP.NET與SQL結(jié)合操作數(shù)據(jù)庫(kù)10.3.3ASP.NET的數(shù)據(jù)綁定技術(shù)10.3.4使用ASP.NET開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序?qū)嵗R(shí)點(diǎn)6:ASP.NET編程知識(shí)10.3.1ASP.N1、ASP.NET的運(yùn)行機(jī)制

當(dāng)用戶通過(guò)瀏覽器發(fā)出一個(gè)對(duì)*.aspx文件的請(qǐng)求時(shí)(HTTP:Request),Web服務(wù)器響應(yīng)該HTTP請(qǐng)求,調(diào)用ASP.NET引擎(aspnet_isapi.dll),將其解析成源程序代碼,由CLR編譯器編譯為一致的IL格式,再由JIT編譯器編譯成機(jī)器代碼,并將其當(dāng)成“類(DLL文件)”來(lái)處理,此后,當(dāng)再有對(duì)此頁(yè)面的請(qǐng)求時(shí),由于ASPX頁(yè)面已經(jīng)被編譯過(guò),所以,CLR會(huì)直接執(zhí)行編譯過(guò)的代碼,最后由Web服務(wù)器生成標(biāo)準(zhǔn)的HTML頁(yè)面?zhèn)魉徒o客戶瀏覽器(HTTP:Response)。

知識(shí)點(diǎn)6:

ASP.NET編程知識(shí)1、ASP.NET的運(yùn)行機(jī)制知識(shí)點(diǎn)6:ASP.NET編程2、ASP.NET的網(wǎng)頁(yè)架構(gòu)及編程特點(diǎn)基本上有下列幾類文件:

①ASP.NET文件(*.aspx)。②強(qiáng)化后的Global.asax文件,新增為16種事件過(guò)程。③包含文件(*.inc或*.aspx)或“CodeBehind”文件。④應(yīng)用程序配置(web.config)文件,可讓W(xué)eb開(kāi)發(fā)者一次指定整個(gè)Web應(yīng)用程序的配置,節(jié)省一個(gè)個(gè)設(shè)置的時(shí)間。⑤位于Web應(yīng)用程序目錄下的Pagelet(*.ascx可重復(fù)使用的自定義控件)與WebService(*.asmx可被調(diào)用的遠(yuǎn)程組件程序邏輯)。

2、ASP.NET的網(wǎng)頁(yè)架構(gòu)及編程特點(diǎn)知識(shí)點(diǎn)6:在ASP.NET中訪問(wèn)SQLServer

1、ASP.NET與數(shù)據(jù)庫(kù)的連接(1)使用ADO.NETManagedProvider(2)使用SQLManagedProvider

知識(shí)點(diǎn)6:在ASP.NET中訪問(wèn)SQLServer1、2、ASP.NET與SQL結(jié)合操作數(shù)據(jù)庫(kù)(1)Command對(duì)象的使用

ASP.NET通過(guò)ADO.NET的連接對(duì)象實(shí)現(xiàn)了同數(shù)據(jù)庫(kù)的連接后,就可使用Command對(duì)象來(lái)執(zhí)行SQL命令,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,并在瀏覽器上動(dòng)態(tài)地查詢、修改、刪除和插入數(shù)據(jù)庫(kù)的記錄信息。Command對(duì)象、SQL語(yǔ)言及數(shù)據(jù)庫(kù)之間的三角關(guān)系如圖10-44所示:Command對(duì)象SQL語(yǔ)言數(shù)據(jù)庫(kù)2、ASP.NET與SQL結(jié)合操作數(shù)據(jù)庫(kù)Command對(duì)象S(2)DataReader對(duì)象的使用DataReader對(duì)象用于從數(shù)據(jù)源中讀取只進(jìn)且只讀的數(shù)據(jù)流,使用DataReader每次在內(nèi)存中始終只有一行,所以能提高應(yīng)用程序的性能并減少系統(tǒng)開(kāi)銷,適合在檢索大量數(shù)據(jù)時(shí)使用。它有兩種:一是SQLServer專用的SqlDataReader,另一種則是通用型的OleDbDataReader。(3)DataSet對(duì)象的使用①創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接;②請(qǐng)求一個(gè)記錄集合;③把記錄集合暫存到DataSet;④如果需要,返回第②步(DataSet可以容納多個(gè)數(shù)據(jù)集合);⑤關(guān)閉數(shù)據(jù)庫(kù)連接;⑥在DataSet上作所需要的操作。(2)DataReader對(duì)象的使用(3)DataSet對(duì)象的使用例如:DimsqltextAsStringDimobjDAAsSqlDataAdapterDimobjDSAsDataSetsqltext="select*frombMajor"objDA=NewSqlDataAdapter'通過(guò)sqlDataAdapter變量創(chuàng)建sqlCommand對(duì)象objDA.SelectCommand=NewSqlCommand(sqltext,objConn)'將數(shù)據(jù)從數(shù)據(jù)源中取出,填充數(shù)據(jù)集objDS=NewDataSetobjDA.Fill(objDS,"bMajor")(3)DataSet對(duì)象的使用知識(shí)點(diǎn)7:

ASP.NET的數(shù)據(jù)綁定技術(shù)在ASP.NET中,我們可以將Dataset對(duì)象和DataGrid控件相結(jié)合以產(chǎn)生表格樣式的效果,由于Dataset可存儲(chǔ)一個(gè)以上的數(shù)據(jù)表內(nèi)容,所以若想將DataGrid控件綁定到內(nèi)存中的Dataset時(shí),須指定DataSource屬性結(jié)合至Dataset中的哪一個(gè)數(shù)據(jù)表及其所對(duì)應(yīng)數(shù)據(jù)表的屬性,然后再用DataGrid控件的DataBind()方法進(jìn)行真正的綁定,如下代碼所示:Grid1.DataSource=objDS.Tables(“bMajor”).DefaultViewGrid1.DataBind()…<asp:DataGridid=”Grid1”runat=”Server”…/>知識(shí)點(diǎn)7:ASP.NET的數(shù)據(jù)綁定技術(shù)在ASP.NET中,任務(wù)5:使用ASP.NET開(kāi)發(fā)學(xué)生成績(jī)管理系統(tǒng)【任務(wù)描述】在VisualStudio.NET2005中使用ASP.NET技術(shù)設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)中的“專業(yè)信息瀏覽與維護(hù)”功能模塊,要求實(shí)現(xiàn)專業(yè)信息的顯示、修改和刪除功能?!救蝿?wù)分析】要實(shí)現(xiàn)本任務(wù)的功能,在ASP.NET中只需創(chuàng)建兩個(gè)文件:一個(gè)是用于顯示信息的頁(yè)面文件,其中包含一個(gè)能以表格顯示信息的數(shù)據(jù)綁定控件;另一個(gè)是用于事件處理的代碼隱藏文件,主要包含數(shù)據(jù)綁定、修改和刪除的功能代碼?!救蝿?wù)實(shí)現(xiàn)】(1)在C:\Inetput\wwwroot\下面新建一個(gè)文件夾,起名為“xscjgl”(2)生成新的解決方案任務(wù)5:使用ASP.NET開(kāi)發(fā)學(xué)生成績(jī)管理系統(tǒng)【任務(wù)描述】在

打開(kāi)VS.NET,選擇菜單【文件︱新建︱空白解決方案…】,在彈出的“新建項(xiàng)目”對(duì)話框中選擇VisualBasic項(xiàng)目,模板選擇ASP.NETWeb應(yīng)用程序,在位置文本框中輸入“http://localhost/xscjgl”,單擊“確定”按鈕,如圖10-45所示。

圖10-45“新建項(xiàng)目”對(duì)話框打開(kāi)VS.NET,選擇菜單【文件︱新建︱空白圖10-46“添加新項(xiàng)”對(duì)話框(3)數(shù)據(jù)顯示界面的設(shè)計(jì)。①在解決方案資源管理器中右擊xscjgl,從彈出的快捷菜單中選擇【添加︱添加新項(xiàng)…】命令,打開(kāi)“添加新項(xiàng)”對(duì)話框。在其中選擇“Web窗體”模板,名稱文本框中輸入“Major_list.aspx”,單擊“打開(kāi)”按鈕,如圖10-46所示。圖10-46“添加新項(xiàng)”對(duì)話框(3)數(shù)據(jù)顯示界面的設(shè)計(jì)。②右擊Major_list.aspx文件,從彈出的快捷菜單中選擇【打開(kāi)】命令,打開(kāi)該文件

下面將通過(guò)在此頁(yè)面中添加一個(gè)能以表格顯示信息的數(shù)據(jù)綁定控件來(lái)建立用戶界面。由于DataGrid不但可以表格形式顯示數(shù)據(jù)庫(kù)中的數(shù)據(jù),而且還支持?jǐn)?shù)據(jù)項(xiàng)的選擇、排序、分頁(yè)和修改,所以,“專業(yè)信息瀏覽與維護(hù)”功能界面就用它來(lái)實(shí)現(xiàn)。其具體代碼如下:<HTML><HEAD><title>專業(yè)信息瀏覽與維護(hù)</title></HEAD><bodybgcolor="#e6e4c4"link="#0000cc"vlink="#999999"alink="#ff0000"topmargin="0"><br><divalign="center"><TABLEcellSpacing="1"cellPadding="4"width="465"bgColor="#416327"height="136"><TRvAlign="top"bgColor="#e6e4c4"><TDwidth="460"height="10"bgcolor="#6d8e4d"></TD></TR><TRvAlign="top"bgColor="#e6e4c4">項(xiàng)目10學(xué)生成績(jī)數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)課件<TDwidth="460"height="18"><divalign="center"><fontsize="1"color="#0000ff"><b>--專業(yè)信息瀏覽與維護(hù)--</b></font></div></TD></TR><TRvAlign="top"bgColor="#e6e4c4"><TDwidth="460"height="15"><FormRunat="Server"ID="Form1"><TABLEborder="1"cellpadding="0"cellspacing="0"width="100%"bordercolorlight="#6d8e4d"bordercolordark="#e6e4c4"><TR><TD><asp:Labelid="lblShow"runat="server"/><p><ASP:DataGridid="MajorDataGrid"runat="server"HorizontalAlign="Center"Width="500"BackColor="#e6e4c4"BorderColor="#416327"ShowFooter="false"CellPadding="2"CellSpacing="0"Font-Name="隸書(shū)"Font-Size="12px"HeaderStyle-BackColor="#6D8E4D"HeaderStyle-ForeColor="#FFFFFF"HeaderStyle-Font-Bold="True"HeaderStyle-HorizontalAlign="Center"ItemStyle-BackColor="#e6e4c4"ItemStyle-Font-Name="宋體"ItemStyle-HorizontalAlign="Center"ItemStyle-VerticalAlign="Middle"<TDwidth="460"height="18">AutoGenerateColumns="False"OnEditCommand="Major_ECmd"OnUpdateCommand="Major_UCmd"OnCancelCommand="Major_CCmd"DataKeyField="Major_Id"OnDeleteCommand="Major_Delete"><Columns><ASP:BoundColumnHeaderText="專業(yè)代號(hào)"DataField="Major_Id"ReadOnly="True"/><ASP:BoundColumnHeaderText="專業(yè)名稱"DataField="Major_Name"/><ASP:BoundColumnHeaderText="系部代號(hào)"DataField="Depart_Id"ReadOnly="True"/><ASP:BoundColumnHeaderText="系部名稱"DataField="Depart_Name"ReadOnly="True"/><ASP:EditCommandColumnHeaderText="操作"ButtonType="PushButton"EditText="修改專業(yè)名稱"UpdateText="更新"CancelText="放棄"/><ASP:ButtonColumnHeaderText="DEL"ButtonType="PushButton"Text="刪除"CommandName="Delete"/>AutoGenerateColumns="False"On</Columns></ASP:DataGrid></p></TD></TR></TABLE></Form></TD></TR><TRbgColor="#e6e4c4"><TDwidth="460"height="4"bgcolor="#6d8e4d"></TD></TR></TABLE><br><palign=“center”><b><fontsize=“1”color=“#ff0000”>注意:1、修改操作只能修改專業(yè)名稱,如其他項(xiàng)錯(cuò)誤,則需將該專業(yè)刪除;</font></b></p><p><b><fontcolor="#ff0000">2、如果該專業(yè)下已有班級(jí)則不能刪除!</font></b></p><divalign="center"><p><fontsize="1">(注:每完成一次刪除操作請(qǐng)進(jìn)行頁(yè)面的刷新,以顯示最新數(shù)據(jù))</font></p></div></div></body></HTML></Columns>(4)用于事件處理的代碼隱藏文件的設(shè)計(jì)在解決方案資源管理器中右擊Major_list.aspx.vb文件,從彈出的快捷菜單中選擇【查看代碼】命令,打開(kāi)該文件,在其中輸入如下代碼。ImportsSystemImportsSystem.ConfigurationImportsSystem.DataImportsSystem.Data.sqlclientPublicClassMajor_listInheritsSystem.Web.UI.PageDimobjConnAsSqlConnection=NewSqlConnection("DataSource=localhost;UserID=sa;Password=;InitialCatalog=StudentScore")DimsqltextAsStringDimobjDAAsSqlDataAdapterDimobjDSAsDataSet(4)用于事件處理的代碼隱藏文件的設(shè)計(jì)'初始化頁(yè)的用戶代碼

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論