版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目10學(xué)生成績數(shù)據(jù)庫系統(tǒng)的開發(fā)項(xiàng)目10學(xué)生成績數(shù)據(jù)庫系統(tǒng)的開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng)是在數(shù)據(jù)庫管理系統(tǒng)的支持下運(yùn)行的計(jì)算機(jī)應(yīng)用軟件。前已述及,開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng)不僅要進(jìn)行數(shù)據(jù)庫的設(shè)計(jì),而且還要進(jìn)行應(yīng)用程序的設(shè)計(jì),這也是前面項(xiàng)目7中提到的系統(tǒng)實(shí)施階段的主要任務(wù)。為了使讀者對在不同的開發(fā)環(huán)境下進(jìn)行數(shù)據(jù)庫應(yīng)用系統(tǒng)編程有個(gè)較為全面的認(rèn)識,本項(xiàng)目選擇了VisualC++、JSP和ASP.NET三種不同的開發(fā)環(huán)境來介紹數(shù)據(jù)庫應(yīng)用程序的開發(fā)方法。新課導(dǎo)入
:數(shù)據(jù)庫應(yīng)用系統(tǒng)是在數(shù)據(jù)庫管理系統(tǒng)的支持下運(yùn)行的計(jì)算機(jī)應(yīng)用軟件任務(wù)描述:按照開發(fā)的基本過程和內(nèi)容,將項(xiàng)目分解成以下幾個(gè)任務(wù):任務(wù)10.1確定學(xué)生成績管理系統(tǒng)的體系結(jié)構(gòu)及其前臺開發(fā)工具任務(wù)10.2確定系統(tǒng)的數(shù)據(jù)庫訪問技術(shù)(包括連接技術(shù)和數(shù)據(jù)庫訪問對象)任務(wù)10.3使用VisualC++開發(fā)學(xué)生成績管理系統(tǒng)任務(wù)10.4使用JSP開發(fā)學(xué)生成績管理系統(tǒng)任務(wù)10.5使用ASP.NET開發(fā)學(xué)生成績管理系統(tǒng)任務(wù)描述:按照開發(fā)的基本過程和內(nèi)容,將項(xiàng)目分解成教學(xué)目標(biāo):
知識目標(biāo):(1)掌握3種不同的數(shù)據(jù)庫系統(tǒng)體系結(jié)構(gòu)及其適用場合;了解常用的數(shù)據(jù)庫連接技術(shù),以及ODBC、JDBC和OLEDB三種接口的技術(shù)要點(diǎn);(2)掌握數(shù)據(jù)庫訪問對象ADO和ADO.NET的結(jié)構(gòu)及其主要對象;(3)了解常用的應(yīng)用程序開發(fā)工具VisualC++、JSP及ASP.NET的編程特點(diǎn)及其主要的編程技術(shù)。技能目標(biāo):(1)會使用常用的數(shù)據(jù)庫連接技術(shù),能進(jìn)行ODBC、JDBC和OLEDB三種接口的使用;(2)能夠使用數(shù)據(jù)庫訪問對象ADO和ADO.NET進(jìn)行SQLServer數(shù)據(jù)操作。教學(xué)目標(biāo):知識目標(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ā)展趨勢和變化特點(diǎn),其體系結(jié)構(gòu)也發(fā)生了很大的變化,從以往基于局域網(wǎng)的客戶/服務(wù)器(Client/Server,簡稱C/S)結(jié)構(gòu)到已廣泛使用的基于Web的瀏覽器/服務(wù)器(Browser/Server,簡稱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)知識點(diǎn)1:目前常用的數(shù)據(jù)庫應(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ù)庫服務(wù)器客戶機(jī)客戶機(jī)計(jì)算機(jī)網(wǎng)絡(luò)圖10-1C/S結(jié)構(gòu)模型C/S結(jié)構(gòu)數(shù)據(jù)庫服務(wù)器客戶機(jī)客戶機(jī)計(jì)算機(jī)網(wǎng)絡(luò)圖10-1CB/S結(jié)構(gòu)
Web服務(wù)器數(shù)據(jù)庫服務(wù)器瀏覽器瀏覽器計(jì)算機(jī)網(wǎng)絡(luò)圖10-2B/S結(jié)構(gòu)模型B/S結(jié)構(gòu)Web服務(wù)器數(shù)據(jù)庫服務(wù)器瀏覽器瀏覽器計(jì)算機(jī)網(wǎng)絡(luò)圖.NET框架結(jié)構(gòu)
用戶應(yīng)用表示層數(shù)據(jù)庫平臺通用語言運(yùn)行時(shí)(CLR)通信協(xié)議(XML、SOAP、UDDI等開放標(biāo)準(zhǔn))Web服務(wù)器瀏覽器組件庫WinForms圖10-3基于.NET的應(yīng)用程序架構(gòu).NET框架結(jié)構(gòu)用戶應(yīng)用表示層數(shù)據(jù)庫平臺通用語言運(yùn)行時(shí)(C任務(wù)1:確定學(xué)生成績管理系統(tǒng)的體系結(jié)構(gòu)【任務(wù)描述】試根據(jù)項(xiàng)目7所描述的應(yīng)用需求確定學(xué)生成績管理系統(tǒng)的體系結(jié)構(gòu),并選擇合適的前臺開發(fā)工具。【任務(wù)實(shí)現(xiàn)】根據(jù)項(xiàng)目7所描述的應(yīng)用需求,現(xiàn)要建立一個(gè)基于校園網(wǎng)絡(luò)應(yīng)用平臺的、面向?qū)W校教務(wù)部門以及各系部教學(xué)管理科室等層次用戶的學(xué)生成績管理系統(tǒng),所以本系統(tǒng)應(yīng)在學(xué)校校園網(wǎng)的基礎(chǔ)上建立。為了使讀者能體會到不同系統(tǒng)體系結(jié)構(gòu)的差別,這里假設(shè)有兩種不同結(jié)構(gòu)的校園網(wǎng),一種為僅能在學(xué)校內(nèi)部使用的局域網(wǎng),用戶需在客戶機(jī)上訪問學(xué)生成績管理系統(tǒng);另一種為與外界連通的Internet網(wǎng)絡(luò),用戶只需在客戶機(jī)上安裝一個(gè)通用的瀏覽器軟件即可訪問校園網(wǎng)。這樣,前者情況下學(xué)生成績管理系統(tǒng)可以選擇C/S體系結(jié)構(gòu),后者情況下則可以使用B/S體系結(jié)構(gòu)或.NET框架結(jié)構(gòu)。另外,在系統(tǒng)開發(fā)工具的選擇上,C/S架構(gòu)使用VisualC++前臺開發(fā)環(huán)境;B/S架構(gòu)使用JSP腳本環(huán)境進(jìn)行開發(fā);而.NET框架結(jié)構(gòu)則使用ASP.NET開發(fā)環(huán)境。它們的后臺數(shù)據(jù)庫均建立在SQL-Server2000之上。任務(wù)1:確定學(xué)生成績管理系統(tǒng)的體系結(jié)構(gòu)【任務(wù)描述】試根據(jù)項(xiàng)在實(shí)際開發(fā)中,為了使應(yīng)用程序能夠操作數(shù)據(jù)庫中的數(shù)據(jù),必須建立一個(gè)與數(shù)據(jù)庫管理系統(tǒng)的訪問機(jī)制,以實(shí)現(xiàn)應(yīng)用程序和數(shù)據(jù)庫之間的互相通信。目前實(shí)現(xiàn)這種通信的方式主要有兩種:數(shù)據(jù)庫API(ApplicationProgramInterface,稱為“應(yīng)用程序接口”)和數(shù)據(jù)訪問對象接口。數(shù)據(jù)庫API(數(shù)據(jù)庫連接技術(shù)):1.ODBC2.OLEDB3.JDBC知識點(diǎn)2:數(shù)據(jù)庫訪問技術(shù)在實(shí)際開發(fā)中,為了使應(yīng)用程序能夠操作數(shù)據(jù)庫中的數(shù)據(jù),必須建1、ODBC
ODBC是開放式數(shù)據(jù)庫連接(OpenDatabaseConnectivity)的英文縮寫。它是微軟公司為了便于用戶在Windows系統(tǒng)下開發(fā)應(yīng)用系統(tǒng)而制定的一種開放式的、標(biāo)準(zhǔn)化的應(yīng)用程序接口。
2、OLEDBOLEDB建立在Microsoft的COM(組件對象模型,其商業(yè)概念的稱謂為ActiveX)基礎(chǔ)上,它包括一組COM組件程序,組件與組件之間或者組件與客戶程序之間通過標(biāo)準(zhǔn)的COM接口進(jìn)行通訊,COM接口封裝了各種數(shù)據(jù)系統(tǒng)的訪問操作,為數(shù)據(jù)使用者(即應(yīng)用程序)和數(shù)據(jù)提供者建立了標(biāo)準(zhǔn)。OLEDB模型主要包括以下一些COM接口對象:(1)數(shù)據(jù)源(DataSource)對象(2)會話(Session)對象(3)命令(Command)對象(4)行集(RowSet)對象3、JDBCJDBCAPI提供兩種主要接口:一是面向開發(fā)人員的java.sql程序包,使得java程序員能夠進(jìn)行數(shù)據(jù)庫連接,執(zhí)行SQL查詢,并得到結(jié)果集,java.sql程序包提供了6個(gè)類和18個(gè)接口;二是面向底層數(shù)據(jù)庫廠商的JDBCDrivers,它提供了4種類型的數(shù)據(jù)庫驅(qū)動方式: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中的對象和集合
Connection對象
Command對象
Recordset對象
Parameters對象及Parameters集合
Fields對象及Fields集合
Property對象及Property集合
Errors對象及Errors集合
ADO中的對象和集合Connection對象ADO.NETDataSet組件
DataSet包含一個(gè)或多個(gè)DataTable對象的集合,這些對象由行、列、主鍵、外鍵、約束及其數(shù)據(jù)的關(guān)系信息組成,由此你可以把DataSet想象成內(nèi)存中的數(shù)據(jù)庫,不管數(shù)據(jù)來源于一個(gè)關(guān)系型的數(shù)據(jù)庫,還是來源于一個(gè)XML文檔,都可以用一個(gè)統(tǒng)一的編程模型來創(chuàng)建和使用它,從而提高了程序的交互性和可擴(kuò)展性,尤其適合于分布式的應(yīng)用場合。ADO.NETDataSet組件DataSet.NET數(shù)據(jù)提供程序
Connection對象提供與數(shù)據(jù)源的連接。Command對象使用戶能夠訪問用于返回?cái)?shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲過程以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫命令。DataReader對象從數(shù)據(jù)源中提供高性能的數(shù)據(jù)流。DataAdapter對象用于從數(shù)據(jù)源中檢索數(shù)據(jù),并填充DataSet中的表,并且會將對DataSet作出的更改返回?cái)?shù)據(jù)源,從而起到連接DataSet對象和數(shù)據(jù)源的橋梁作用。.NET數(shù)據(jù)提供程序Connection對象提供.NET數(shù)據(jù)提供程序Connection事務(wù)Command參數(shù)DataReaderDataAdapterSelectCommandInsertCommandUpdateCommandDeleteCommandDataSetDataTableCollectionDataTableDataRowCollectionDataColumnCollectionDataRowCollectionDataColumnCollectionXML數(shù)據(jù)庫圖10-5ADO.NET的數(shù)據(jù)存取結(jié)構(gòu).NET數(shù)據(jù)提供程序Connection事務(wù)Command參任務(wù)2:確定系統(tǒng)的數(shù)據(jù)庫訪問技術(shù)【任務(wù)描述】試根據(jù)開發(fā)學(xué)生成績管理系統(tǒng)不同的體系結(jié)構(gòu)及其采用的前臺軟件開發(fā)工具,確定系統(tǒng)的數(shù)據(jù)庫訪問技術(shù)?!救蝿?wù)實(shí)現(xiàn)】在本任務(wù)中用戶可根據(jù)不同的系統(tǒng)體系結(jié)構(gòu)和前臺軟件開發(fā)工具,選擇合適的數(shù)據(jù)對象接口或API應(yīng)用程序接口訪問SQLServer數(shù)據(jù)庫。針對任務(wù)10.1所采用的3種系統(tǒng)體系結(jié)構(gòu)及其開發(fā)工具可作如下選擇:當(dāng)采用VisualC++進(jìn)行C/S結(jié)構(gòu)的系統(tǒng)開發(fā)時(shí),可利用ODBC、OLEDB連接技術(shù)或ADO數(shù)據(jù)訪問對象來訪問SQLServer數(shù)據(jù)庫;當(dāng)采用JSP進(jìn)行B/S結(jié)構(gòu)的系統(tǒng)開發(fā)時(shí),則利用JDBC連接技術(shù);當(dāng)采用ASP.NET進(jìn)行.NET結(jié)構(gòu)的系統(tǒng)開發(fā)時(shí),則采用OLEDB、ADO.NET作為數(shù)據(jù)庫的連接和訪問技術(shù)。任務(wù)2:確定系統(tǒng)的數(shù)據(jù)庫訪問技術(shù)【任務(wù)描述】試根據(jù)開發(fā)學(xué)生成1、VisualC++6.0的編程特點(diǎn)2、VisualC++的應(yīng)用程序開發(fā)界面3、VisualC++中的應(yīng)用程序窗口4、VisualC++中的資源5、事件驅(qū)動代碼6、Microsoft基本類庫(MFC)7、VisualC++應(yīng)用程序的開發(fā)步驟知識點(diǎn)3:VisualC++編程知識1、VisualC++6.0的編程特點(diǎn)知識點(diǎn)3:VisuVisualC++6.0訪問數(shù)據(jù)庫的技術(shù)(1)ODBC(OpenDataBaseConnectivity(2)MFCODBC(MicrosoftFoundationClassODBC(3)ADO(ActiveXDataObject)2.在VisualC++6.0中利用MFCODBC與數(shù)據(jù)庫連接(1)在應(yīng)用程序中連接數(shù)據(jù)源(2)在應(yīng)用程序中斷開與數(shù)據(jù)源的連接3.在VisualC++6.0中操作記錄集知識點(diǎn)4:在VisualC++中訪問SQLServerVisualC++6.0訪問數(shù)據(jù)庫的技術(shù)知識點(diǎn)4:在Vi(1)紀(jì)錄集的概念(2)記錄集的打開(3)記錄集的更新(4)記錄集的滾動(5)記錄集的定位(6)記錄集的排序(7)記錄集的事務(wù)處理(8)記錄集的關(guān)閉(1)紀(jì)錄集的概念1.配置ODBC數(shù)據(jù)源【任務(wù)描述】為數(shù)據(jù)庫“StudentScore”建立一個(gè)名為“Score_ODBC”的系統(tǒng)DSN?!救蝿?wù)實(shí)現(xiàn)】(1)在Windows2003的控制面板中,雙擊“管理工具”中的“數(shù)據(jù)源(ODBC)”圖標(biāo),打開“ODBC數(shù)據(jù)源管理器”對話框,在其中選擇“系統(tǒng)DSN”選項(xiàng)卡,如圖10-17所示。(2)在“系統(tǒng)DSN”選項(xiàng)卡中,單擊“添加”按鈕,打開如圖10-18所示的“創(chuàng)建新數(shù)據(jù)源”對話框,在該對話框中選擇新建數(shù)據(jù)源要用的驅(qū)動程序SQLServer,單擊“完成”按鈕。(3)在打開的如圖10-19所示的“創(chuàng)建數(shù)據(jù)源向?qū)А睂υ捒蛑?,輸入?shù)據(jù)源名、說明信息和連接的SQLServer數(shù)據(jù)庫服務(wù)器,單擊“下一步”按鈕。任務(wù)3:使用VisualC++開發(fā)學(xué)生成績管理系統(tǒng)1.配置ODBC數(shù)據(jù)源任務(wù)3:使用VisualC++開2.學(xué)生成績管理系統(tǒng)中的“登錄”功能模塊的設(shè)計(jì)【任務(wù)描述】使用VisualC++6.0開發(fā)學(xué)生成績管理系統(tǒng)中的“登錄”功能模塊,要求實(shí)現(xiàn)不同級別的用戶能根據(jù)各自的用戶名和口令進(jìn)入系統(tǒng),其界面如圖10-24所示。圖10-24學(xué)生成績管理系統(tǒng)“登陸”功能界面2.學(xué)生成績管理系統(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)編寫事件過程程序代碼。voidCLoginDlg::OnOK(){//TODO:AddextravalidationhereBOOLbLogin=false;CStringstrUser,strPass;GetDlgItem(IDC_EDIT_USER)->GetWindowText(strUser);GetDlgItem(IDC_EDIT_PASS)->GetWindowText(strPass);if(OpenDB()){//執(zhí)行SELECT語句 CRecordsetrsUser(&m_db); rsUser.Open(CRecordset::forwardOnly,"selectUsers_Name,PasswordfromUsers"); CStringstrResult;項(xiàng)目10學(xué)生成績數(shù)據(jù)庫系統(tǒng)的開發(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("無法打開數(shù)據(jù)庫"); } CDialog::OnOK();} while(!rsUser.IsEOF()){3.學(xué)生成績管理系統(tǒng)中的“學(xué)生基本信息管理”功能的設(shè)計(jì)【任務(wù)描述】使用VisualC++6.0開發(fā)學(xué)生成績管理系統(tǒng)中的“學(xué)生基本信息管理”功能模塊,要求實(shí)現(xiàn)學(xué)生基本信息的顯示、添加、修改和刪除4個(gè)功能,其界面如圖10-26所示。
圖10-26“課程信息錄入與維護(hù)”功能界面3.學(xué)生成績管理系統(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)編寫事件過程程序代碼。初始化: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é)生成績數(shù)據(jù)庫系統(tǒng)的開發(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("序號"); m_GridCtrl.SetItem(&Item); Item.col=1; Item.szText.Format("學(xué)號"); 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("班級"); 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;
//所在班級 Item.col=5; Item.szText.Format(str_Class_Id); m_GridCtrl.SetItem(&Item); rs.MoveNext(); } rs.Close(); } m_GridCtrl.AutoSize(); } else{ AfxMessageBox("打開數(shù)據(jù)庫錯(cuò)誤!"); } CloseDB();}添加功能:voidCStudentInfoDlg::OnBtnInsert(){m_dlgDetail->SetWindowText("添加學(xué)生信息"); m_dlgDetail->ReadyToInsert(); m_dlgDetail->ShowWindow(SW_SHOW);} //所在班級刪除功能: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("請選擇需要修改的記錄!"); return;}m_dlgDetail->ReadyToModify(sID);m_dlgDetail->ShowWindow(SW_SHOW);RefreshDB();}修改功能:4.學(xué)生成績管理系統(tǒng)中的“課程信息管理”功能的設(shè)計(jì)【任務(wù)描述】使用VisualC++6.0開發(fā)學(xué)生成績管理系統(tǒng)中的“課程基本信息管理”功能模塊,要求實(shí)現(xiàn)課程基本信息的顯示、添加、修改和刪除4個(gè)功能,其界面如圖10-29所示。
圖10-29“課程信息錄入與維護(hù)”功能界面4.學(xué)生成績管理系統(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)編寫事件過程程序代碼。初始化: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é)生成績數(shù)據(jù)庫系統(tǒng)的開發(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("序號"); 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("打開數(shù)據(jù)庫錯(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ā)出請求JSP程序(.jsp)Servlet(.java)Java字節(jié)碼(.class)HTML(.htm)客戶端JSP是一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn),在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm、*.html)中加入Java程序片段和JSP標(biāo)記(tag),就構(gòu)成了JSP網(wǎng)頁(*.jsp)。其中,程序片段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,它們構(gòu)成了建立動態(tài)網(wǎng)頁所需要的功能。其具體的工作原理如圖10-31所示。由上述JSP的工作原理可知,運(yùn)行*.jsp文件需要服務(wù)器端的支持,即提供腳本編程環(huán)境,而能夠提供這種編程環(huán)境的Web服務(wù)器可以是SUN的Tomcat或WebLogic,也可以是Linux平臺上的Web服務(wù)器—Apache。目前最常用的是Tomcat和WebLogic。知識點(diǎn)4:JSP程序設(shè)計(jì)返回結(jié)果發(fā)出請求JSP程序(.jsp)Serv知識點(diǎn)5:在JSP中訪問SQLServer
1、JSP與數(shù)據(jù)庫的連接(1)使用JDBC-ODBC橋(2)使用JDBC通過網(wǎng)絡(luò)的純Java驅(qū)動程序知識點(diǎn)5:在JSP中訪問SQLServer1、JSP與數(shù)JSP與SQL結(jié)合操作數(shù)據(jù)庫2、在JSP網(wǎng)頁中執(zhí)行SQL語句(1)執(zhí)行查詢數(shù)據(jù)的SQL語句ResultSet對象變量=Statement對象變量.executeQuery(SQL語句)(2)執(zhí)行修改數(shù)據(jù)的SQL語句Statement對象變量.ExecuteUpdate(SQL語句)3、SQL數(shù)據(jù)集的處理下面列出了所創(chuàng)建的ResultSet類的方法:①booleanabsolute(introw)throwSQLException:移動記錄指針到指定記錄②voidbeforeFirst()throwSQLException:移動記錄指針到第一條記錄之前③voidafterLast()throwSQLException:移動記錄指針到最后一條記錄之后JSP與SQL結(jié)合操作數(shù)據(jù)庫2、在JSP網(wǎng)頁中執(zhí)行SQL語④booleanfirst()throwSQLException:移動記錄指針到第一條記錄⑤booleanlast()throwSQLException:移動記錄指針到最后一條記錄⑥booleannext()throwSQLException:移動記錄指針到下一條記錄⑦booleanprevious()throwSQLException:移動記錄指針到上一條記錄⑧voiddeleteRow()throwsSQLException:刪除記錄指針指向的記錄⑨voidmoveToInsertRow()throwsSQLException:移動記錄指針以增加一條記錄⑩voidmoveToCurrentRow()throwsSQLException:移動記錄指針到被記憶的記錄④booleanfirst()throwSQLExce4、JSP訪問Web數(shù)據(jù)庫的主要步驟①指定想要連接的數(shù)據(jù)庫,注冊(裝載)一個(gè)驅(qū)動如:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();②建立和數(shù)據(jù)庫的連接如:Connectionconn=DriverManager.getConnection(url,"sa","888");其中url="jdbc:microsoft:sqlserver://localhost.1433;DatabaseName=StudentScore";③創(chuàng)建statement這個(gè)SQL語句的執(zhí)行容器如:Statementstmt=conn.createStatement();④創(chuàng)建數(shù)據(jù)集對象ResultSet,進(jìn)行數(shù)據(jù)操作如:ResultSetrs=stmt.executeQuery(“SELECTX,Y,ZFROMTablexyz”);⑤使用ResultSet對象所提供的方法和屬性完成對SQL數(shù)據(jù)集的處理⑥斷開與數(shù)據(jù)庫的連接即用close()方法關(guān)閉數(shù)據(jù)集對象,關(guān)閉執(zhí)行容器,斷開與數(shù)據(jù)庫的連接。4、JSP訪問Web數(shù)據(jù)庫的主要步驟任務(wù)4:使用JSP開發(fā)學(xué)生成績管理系統(tǒng)【任務(wù)描述】使用JSP設(shè)計(jì)并實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)中的“學(xué)生成績管理”功能模塊,要求實(shí)現(xiàn)成績列表顯示、成績信息添加、成績信息修改和成績信息刪除4個(gè)功能?!救蝿?wù)實(shí)現(xiàn)】(1)在Tomcat安裝目錄的webapps目錄下面新建一個(gè)文件夾,起名為“xscjgl”(2)設(shè)置站點(diǎn)
圖10-37(a)“站點(diǎn)設(shè)置”對話框-本地信息圖10-37(b)“站點(diǎn)設(shè)置”對話框-測試服務(wù)器任務(wù)4:使用JSP開發(fā)學(xué)生成績管理系統(tǒng)【任務(wù)描述】使用JSP(3)建立“學(xué)生成績管理”網(wǎng)頁
1)成績列表顯示頁面的設(shè)計(jì)
①新建一動態(tài)網(wǎng)頁。選擇菜單【文件︱新建…】,在彈出的【新建文檔】對話框中選擇“動態(tài)頁”和“JSP”,如圖10-38所示。
圖10-38“新建文檔”對話框②選擇菜單【文件︱保存】,將新建的動態(tài)網(wǎng)頁保存為scoremanage.jsp,并設(shè)計(jì)網(wǎng)頁上靜態(tài)顯示的內(nèi)容(3)建立“學(xué)生成績管理”網(wǎng)頁
1)成績列③在頁面中插入如下關(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();③在頁面中插入如下關(guān)鍵代碼:2)成績信息添加頁面的設(shè)計(jì)①新建一動態(tài)網(wǎng)頁,保存為scoreinsert.jsp,并設(shè)計(jì)網(wǎng)頁上靜態(tài)顯示的內(nèi)容,如圖10-40所示。其中,表單設(shè)置名稱為myform,動作為“dealscoreinsert.jsp”,方法為POST。圖10-40設(shè)置好的“成績信息添加頁面”2)成績信息添加頁面的設(shè)計(jì)②再新建一動態(tài)網(wǎng)頁,保存為dealscoreinsert.jsp,用于將學(xué)生成績添加到StudentScore數(shù)據(jù)庫的bScore表中。頁面的關(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");②再新建一動態(tài)網(wǎng)頁,保存為dealscoreinsert.j3)成績信息修改頁面的設(shè)計(jì)①新建一動態(tài)網(wǎng)頁,保存為scoreupdate.jsp,并設(shè)計(jì)網(wǎng)頁上靜態(tài)顯示的內(nèi)容,如圖10-41所示。其中,表單設(shè)置名稱為myform,動作為“dealscoreupdate.jsp”,方法為POST。
圖10-41設(shè)置好的“成績信息修改頁面”3)成績信息修改頁面的設(shè)計(jì)②再新建一動態(tài)網(wǎng)頁,保存為dealscoreupdate.jsp,用于將學(xué)生成績添加到StudentScore數(shù)據(jù)庫的bScore表中。頁面的關(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");②再新建一動態(tài)網(wǎng)頁,保存為dealscoreupdate.j4)成績信息刪除頁面的設(shè)計(jì)新建一動態(tài)網(wǎng)頁,保存為scoredelete.jsp,用于刪除學(xué)生成績記錄。頁面的關(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)成績信息刪除頁面的設(shè)計(jì)(4)測試運(yùn)行①啟動Tomcat。②打開瀏覽器,輸入地址http://localhost:8080/xscjgl/default.html(注:地址中的localhost也可為或你的計(jì)算機(jī)在局域網(wǎng)中的IP地址,default.html為系統(tǒng)首頁文件),即可顯示成績管理界面,如圖10-42所示。圖10-42“學(xué)生成績管理”功能效果圖(4)測試運(yùn)行知識點(diǎn)6:
ASP.NET編程知識10.3.1ASP.NET與數(shù)據(jù)庫的連接10.3.2ASP.NET與SQL結(jié)合操作數(shù)據(jù)庫10.3.3ASP.NET的數(shù)據(jù)綁定技術(shù)10.3.4使用ASP.NET開發(fā)數(shù)據(jù)庫應(yīng)用程序?qū)嵗R點(diǎn)6:ASP.NET編程知識10.3.1ASP.N1、ASP.NET的運(yùn)行機(jī)制
當(dāng)用戶通過瀏覽器發(fā)出一個(gè)對*.aspx文件的請求時(shí)(HTTP:Request),Web服務(wù)器響應(yīng)該HTTP請求,調(diào)用ASP.NET引擎(aspnet_isapi.dll),將其解析成源程序代碼,由CLR編譯器編譯為一致的IL格式,再由JIT編譯器編譯成機(jī)器代碼,并將其當(dāng)成“類(DLL文件)”來處理,此后,當(dāng)再有對此頁面的請求時(shí),由于ASPX頁面已經(jīng)被編譯過,所以,CLR會直接執(zhí)行編譯過的代碼,最后由Web服務(wù)器生成標(biāo)準(zhǔn)的HTML頁面?zhèn)魉徒o客戶瀏覽器(HTTP:Response)。
知識點(diǎn)6:
ASP.NET編程知識1、ASP.NET的運(yùn)行機(jī)制知識點(diǎn)6:ASP.NET編程2、ASP.NET的網(wǎng)頁架構(gòu)及編程特點(diǎn)基本上有下列幾類文件:
①ASP.NET文件(*.aspx)。②強(qiáng)化后的Global.asax文件,新增為16種事件過程。③包含文件(*.inc或*.aspx)或“CodeBehind”文件。④應(yīng)用程序配置(web.config)文件,可讓W(xué)eb開發(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)頁架構(gòu)及編程特點(diǎn)知識點(diǎn)6:在ASP.NET中訪問SQLServer
1、ASP.NET與數(shù)據(jù)庫的連接(1)使用ADO.NETManagedProvider(2)使用SQLManagedProvider
知識點(diǎn)6:在ASP.NET中訪問SQLServer1、2、ASP.NET與SQL結(jié)合操作數(shù)據(jù)庫(1)Command對象的使用
ASP.NET通過ADO.NET的連接對象實(shí)現(xiàn)了同數(shù)據(jù)庫的連接后,就可使用Command對象來執(zhí)行SQL命令,從而實(shí)現(xiàn)對數(shù)據(jù)庫的操作,并在瀏覽器上動態(tài)地查詢、修改、刪除和插入數(shù)據(jù)庫的記錄信息。Command對象、SQL語言及數(shù)據(jù)庫之間的三角關(guān)系如圖10-44所示:Command對象SQL語言數(shù)據(jù)庫2、ASP.NET與SQL結(jié)合操作數(shù)據(jù)庫Command對象S(2)DataReader對象的使用DataReader對象用于從數(shù)據(jù)源中讀取只進(jìn)且只讀的數(shù)據(jù)流,使用DataReader每次在內(nèi)存中始終只有一行,所以能提高應(yīng)用程序的性能并減少系統(tǒng)開銷,適合在檢索大量數(shù)據(jù)時(shí)使用。它有兩種:一是SQLServer專用的SqlDataReader,另一種則是通用型的OleDbDataReader。(3)DataSet對象的使用①創(chuàng)建一個(gè)數(shù)據(jù)庫連接;②請求一個(gè)記錄集合;③把記錄集合暫存到DataSet;④如果需要,返回第②步(DataSet可以容納多個(gè)數(shù)據(jù)集合);⑤關(guān)閉數(shù)據(jù)庫連接;⑥在DataSet上作所需要的操作。(2)DataReader對象的使用(3)DataSet對象的使用例如:DimsqltextAsStringDimobjDAAsSqlDataAdapterDimobjDSAsDataSetsqltext="select*frombMajor"objDA=NewSqlDataAdapter'通過sqlDataAdapter變量創(chuàng)建sqlCommand對象objDA.SelectCommand=NewSqlCommand(sqltext,objConn)'將數(shù)據(jù)從數(shù)據(jù)源中取出,填充數(shù)據(jù)集objDS=NewDataSetobjDA.Fill(objDS,"bMajor")(3)DataSet對象的使用知識點(diǎn)7:
ASP.NET的數(shù)據(jù)綁定技術(shù)在ASP.NET中,我們可以將Dataset對象和DataGrid控件相結(jié)合以產(chǎn)生表格樣式的效果,由于Dataset可存儲一個(gè)以上的數(shù)據(jù)表內(nèi)容,所以若想將DataGrid控件綁定到內(nèi)存中的Dataset時(shí),須指定DataSource屬性結(jié)合至Dataset中的哪一個(gè)數(shù)據(jù)表及其所對應(yīng)數(shù)據(jù)表的屬性,然后再用DataGrid控件的DataBind()方法進(jìn)行真正的綁定,如下代碼所示:Grid1.DataSource=objDS.Tables(“bMajor”).DefaultViewGrid1.DataBind()…<asp:DataGridid=”Grid1”runat=”Server”…/>知識點(diǎn)7:ASP.NET的數(shù)據(jù)綁定技術(shù)在ASP.NET中,任務(wù)5:使用ASP.NET開發(fā)學(xué)生成績管理系統(tǒng)【任務(wù)描述】在VisualStudio.NET2005中使用ASP.NET技術(shù)設(shè)計(jì)學(xué)生成績管理系統(tǒng)中的“專業(yè)信息瀏覽與維護(hù)”功能模塊,要求實(shí)現(xiàn)專業(yè)信息的顯示、修改和刪除功能。【任務(wù)分析】要實(shí)現(xiàn)本任務(wù)的功能,在ASP.NET中只需創(chuàng)建兩個(gè)文件:一個(gè)是用于顯示信息的頁面文件,其中包含一個(gè)能以表格顯示信息的數(shù)據(jù)綁定控件;另一個(gè)是用于事件處理的代碼隱藏文件,主要包含數(shù)據(jù)綁定、修改和刪除的功能代碼?!救蝿?wù)實(shí)現(xiàn)】(1)在C:\Inetput\wwwroot\下面新建一個(gè)文件夾,起名為“xscjgl”(2)生成新的解決方案任務(wù)5:使用ASP.NET開發(fā)學(xué)生成績管理系統(tǒng)【任務(wù)描述】在
打開VS.NET,選擇菜單【文件︱新建︱空白解決方案…】,在彈出的“新建項(xiàng)目”對話框中選擇VisualBasic項(xiàng)目,模板選擇ASP.NETWeb應(yīng)用程序,在位置文本框中輸入“http://localhost/xscjgl”,單擊“確定”按鈕,如圖10-45所示。
圖10-45“新建項(xiàng)目”對話框打開VS.NET,選擇菜單【文件︱新建︱空白圖10-46“添加新項(xiàng)”對話框(3)數(shù)據(jù)顯示界面的設(shè)計(jì)。①在解決方案資源管理器中右擊xscjgl,從彈出的快捷菜單中選擇【添加︱添加新項(xiàng)…】命令,打開“添加新項(xiàng)”對話框。在其中選擇“Web窗體”模板,名稱文本框中輸入“Major_list.aspx”,單擊“打開”按鈕,如圖10-46所示。圖10-46“添加新項(xiàng)”對話框(3)數(shù)據(jù)顯示界面的設(shè)計(jì)。②右擊Major_list.aspx文件,從彈出的快捷菜單中選擇【打開】命令,打開該文件
下面將通過在此頁面中添加一個(gè)能以表格顯示信息的數(shù)據(jù)綁定控件來建立用戶界面。由于DataGrid不但可以表格形式顯示數(shù)據(jù)庫中的數(shù)據(jù),而且還支持?jǐn)?shù)據(jù)項(xiàng)的選擇、排序、分頁和修改,所以,“專業(yè)信息瀏覽與維護(hù)”功能界面就用它來實(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é)生成績數(shù)據(jù)庫系統(tǒng)的開發(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="隸書"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è)代號"DataField="Major_Id"ReadOnly="True"/><ASP:BoundColumnHeaderText="專業(yè)名稱"DataField="Major_Name"/><ASP:BoundColumnHeaderText="系部代號"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è)下已有班級則不能刪除!</font></b></p><divalign="center"><p><fontsize="1">(注:每完成一次刪除操作請進(jìn)行頁面的刷新,以顯示最新數(shù)據(jù))</font></p></div></div></body></HTML></Columns>(4)用于事件處理的代碼隱藏文件的設(shè)計(jì)在解決方案資源管理器中右擊Major_list.aspx.vb文件,從彈出的快捷菜單中選擇【查看代碼】命令,打開該文件,在其中輸入如下代碼。ImportsSystemImportsSystem.ConfigurationImportsSystem.DataImportsSystem.Data.sqlclientPublicClassMajor_listInheritsSystem.Web.UI.PageDimobjConnAsSqlConnection=NewSqlConnection("DataSource=localhost;UserID=sa;Password=;InitialCatalog=StudentScore")DimsqltextAsStringDimobjDAAsSqlDataAdapterDimobjDSAsDataSet(4)用于事件處理的代碼隱藏文件的設(shè)計(jì)'初始化頁的用戶代碼
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年中國陶瓷爐行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024年四層電路板項(xiàng)目可行性研究報(bào)告
- 2024至2030年中國菇形刀數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024廣告制作發(fā)布合同
- 2024規(guī)范汽車出租合同
- 門窗采購安裝合同
- 干冰采購合同
- 2024年抖音運(yùn)營商務(wù)合作模板協(xié)議版
- 2024私人借款協(xié)議模板版
- 2024年度職位職責(zé)詳細(xì)規(guī)定協(xié)議版
- 2022年WABCO防抱死系統(tǒng)
- 《過敏性休克》PPT課件(PPT 32頁)
- 高一數(shù)學(xué)練習(xí) 函數(shù)的概念
- 設(shè)備基礎(chǔ)預(yù)埋螺栓工藝
- 少先隊(duì)員輔導(dǎo)員ppt課件
- 抗菌藥物相關(guān)知識培訓(xùn)ppt課件
- 毛筆書法入門--ppt課件
- 涂布機(jī)培訓(xùn)資料
- 企業(yè)員工職業(yè)生涯規(guī)劃表模板
- 電子檔案管理系統(tǒng)需求
- 定制式活動義齒產(chǎn)品技術(shù)要求
評論
0/150
提交評論