部分軟件架構(gòu)基礎(chǔ)(第一章CS基礎(chǔ)).ppt_第1頁
部分軟件架構(gòu)基礎(chǔ)(第一章CS基礎(chǔ)).ppt_第2頁
部分軟件架構(gòu)基礎(chǔ)(第一章CS基礎(chǔ)).ppt_第3頁
部分軟件架構(gòu)基礎(chǔ)(第一章CS基礎(chǔ)).ppt_第4頁
部分軟件架構(gòu)基礎(chǔ)(第一章CS基礎(chǔ)).ppt_第5頁
已閱讀5頁,還剩88頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件技術(shù)基礎(chǔ)-PPT課件,1,軟件技術(shù)基礎(chǔ),重點:基于C/S的項目開發(fā),軟件技術(shù)基礎(chǔ)-PPT課件,2,課程要求,學(xué)習(xí)基于C#.NET的軟件開發(fā)基礎(chǔ)技術(shù) 以數(shù)據(jù)庫為底層(SQL Server 2005、Access 2003等) 以UML為項目描述 以C#為開發(fā)工具,軟件技術(shù)基礎(chǔ)-PPT課件,3,內(nèi)容安排,第一部分:C/S和B/S架構(gòu)基礎(chǔ) 第二部分:ADO.NET數(shù)據(jù)訪問基礎(chǔ) 第三部分: UML基礎(chǔ) 第四部分:基于C#的設(shè)計模式基礎(chǔ),軟件技術(shù)基礎(chǔ)-PPT課件,4,軟件技術(shù)基礎(chǔ)-PPT課件,5,第一部分 軟件結(jié)構(gòu)基礎(chǔ),一、C/S結(jié)構(gòu) 二、B/S結(jié)構(gòu) 三、實例講解,軟件技術(shù)基礎(chǔ)-PPT課件,6,第一

2、章 C/S結(jié)構(gòu)基礎(chǔ),1、C/S介紹 2、實例分析,軟件技術(shù)基礎(chǔ)-PPT課件,7,軟件結(jié)構(gòu)體系,隨著軟件開發(fā)技術(shù)不斷發(fā)展: 在界面技術(shù)上從上世紀(jì)DOS字符界面到Windows圖形界面(或圖形用戶界面GUI),直至Browser瀏覽器界面三個不同的發(fā)展時期。 在平臺體系結(jié)構(gòu)也從過去單用戶發(fā)展到今天的文件服務(wù)器(FS)體系、客戶機服務(wù)器(CS)體系和瀏覽器服務(wù)器(BS)體系。,軟件技術(shù)基礎(chǔ)-PPT課件,8,C/S和B/S是當(dāng)今世界軟件開發(fā)模式技術(shù)架構(gòu)的兩大主流技術(shù)。 C/S是美國 Borland公司最早研發(fā); B/S是美國微軟公司研發(fā)。 這兩種技術(shù)都有自己一定的市場份額和客戶群。都存在著各自的優(yōu)勢與

3、不足。,軟件技術(shù)基礎(chǔ)-PPT課件,9,一、C/S結(jié)構(gòu),C/S (Client/Server)結(jié)構(gòu),即大家熟知的客戶機和服務(wù)器結(jié)構(gòu)。它是一種軟件系統(tǒng)體系結(jié)構(gòu)。 通過C/S可以充分利用客戶機與服務(wù)器兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。,1.1、何為C/S結(jié)構(gòu),軟件技術(shù)基礎(chǔ)-PPT課件,10,目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu)。 傳統(tǒng)的CS體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應(yīng)用中無論是Client端還是Server端都還需要特定的硬件和軟件支持。,軟件技術(shù)基礎(chǔ)-PPT課件,1

4、1,由于沒能提供用戶真正期望的開放環(huán)境,C/S結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件, 加之產(chǎn)品的更新?lián)Q代十分快,已經(jīng)很難適應(yīng)百臺電腦以上局域網(wǎng)用戶同時使用。而且代價高, 效率低。 我院使用的HIS管理系統(tǒng)就是典型的CS體系結(jié)構(gòu)管理軟件。,軟件技術(shù)基礎(chǔ)-PPT課件,12,目前的軟件應(yīng)用系統(tǒng)正在向分布式的Web應(yīng)用發(fā)展。 Web和Client/Server 應(yīng)用都可以進行同樣的業(yè)務(wù)處理; 應(yīng)用不同的模塊共享邏輯組件; 因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴展出新的應(yīng)用系統(tǒng)。這也就是目前應(yīng)用系統(tǒng)的發(fā)展方向。,軟件技術(shù)基礎(chǔ)-PPT課件,

5、13,1.2 分層結(jié)構(gòu),C/S(Client/server,客戶端/服務(wù)器)技術(shù)從上世紀(jì)90年代初出現(xiàn)至今已經(jīng)相當(dāng)成熟,并得到了非常廣泛的應(yīng)用,其結(jié)構(gòu)經(jīng)歷了二層C/S、三層C/S的更迭。 二層C/S結(jié)構(gòu),也是最簡單的c/s體系結(jié)構(gòu)由兩部分組成: 即客戶應(yīng)用程序 數(shù)據(jù)庫服務(wù)器程序 二者可分別稱為前臺程序與后臺程序。,1.2.1 二層C/S結(jié)構(gòu),軟件技術(shù)基礎(chǔ)-PPT課件,14,運行數(shù)據(jù)庫服務(wù)器程序的機器,也稱為應(yīng)用服務(wù)器。 一旦服務(wù)器程序被啟動,就隨時等待響應(yīng)客戶程序發(fā)來的請求; 運行在用戶電腦上的客戶應(yīng)用程序,稱為客戶端。 當(dāng)需要對數(shù)據(jù)庫中的數(shù)據(jù)進行任何操作時,客戶程序就自動地尋找服務(wù)器程序,并

6、向其發(fā)出請求,服務(wù)器程序根據(jù)預(yù)定的規(guī)則作出應(yīng)答,送回結(jié)果,這樣應(yīng)用服務(wù)器運行數(shù)據(jù)負荷較輕。,軟件技術(shù)基礎(chǔ)-PPT課件,15,軟件技術(shù)基礎(chǔ)-PPT課件,16,傳統(tǒng)的二層C/S結(jié)構(gòu)存在以下幾個局限: 它是單一服務(wù)器且以局域網(wǎng)為中心的,所以難以擴展至大型企業(yè)廣域網(wǎng)或Internet; 受限于供應(yīng)商; 軟、硬件的組合及集成能力有限; 難以管理大量的客戶機。,軟件技術(shù)基礎(chǔ)-PPT課件,17,1.2.2 三層C/S結(jié)構(gòu),三層C/S結(jié)構(gòu)是將應(yīng)用功能分成表示層、功能層和數(shù)據(jù)層三部分。 其解決方案是:對這三層進行明確分割,并在邏輯上使其獨立。 原來的數(shù)據(jù)層作為DBMS已經(jīng)獨立出來,所以關(guān)鍵是要將表示層和功能層分

7、離成各自獨立的程序,并且還要使這兩層間的接口簡潔明了。,軟件技術(shù)基礎(chǔ)-PPT課件,18,數(shù)據(jù)層,數(shù)據(jù)層,數(shù)據(jù)層,功能層,表示層,服務(wù)器,功能層,表示層,功能層,表示層,服務(wù)器,客戶機,(1)數(shù)據(jù)層 與功能層 放在一個 服務(wù)器上,(2)數(shù)據(jù)層 與功能層 放在不同的 服務(wù)器上,(3)功能層與表示層 放在一個服務(wù)器上,圖1 三層C/S基本結(jié)構(gòu)類型,軟件技術(shù)基礎(chǔ)-PPT課件,19,一般情況是只將表示層配置在客戶機中,如圖1(1)或圖1(2)所示。 如果像圖1(3)所示的那樣連功能層也放在客戶機中,與二層C/S結(jié)構(gòu)相比,其程序的可維護性要好得多,但是其他問題并未得到解決??蛻魴C的負荷太重,其業(yè)務(wù)處理所需

8、的數(shù)據(jù)要從服務(wù)器傳給客戶機,所以系統(tǒng)的性能容易變壞。,軟件技術(shù)基礎(chǔ)-PPT課件,20,如果將功能層和數(shù)據(jù)層分別放在不同的服務(wù)器中(如圖1(2)所示),則服務(wù)器和服務(wù)器之間也要進行數(shù)據(jù)傳送。 但是,由于在這種形態(tài)中,三層是分別放在各自不同的硬件系統(tǒng)上的,所以靈活性很高,能夠適應(yīng)客戶機數(shù)目的增加和處理負荷的變動。 例如,在追加新業(yè)務(wù)處理時,可以相應(yīng)增加裝載功能層的服務(wù)器。 因此,系統(tǒng)規(guī)模越大這種形態(tài)的優(yōu)點就越顯著。,軟件技術(shù)基礎(chǔ)-PPT課件,21,值得注意的是:三層C/S結(jié)構(gòu)各層間的通信效率若不高,即使分配給各層的硬件能力很強,其作為整體來說也達不到所要求的性能。 此外,設(shè)計時必須慎重考慮三層間的

9、通信方法、通信頻度及數(shù)據(jù)量。這和提高各層的獨立性一樣是三層C/S結(jié)構(gòu)的關(guān)鍵問題。,軟件技術(shù)基礎(chǔ)-PPT課件,22,三層C/S的功能 1. 表示層 表示層是應(yīng)用的用戶接口部分,它擔(dān)負著用戶與應(yīng)用間的對話功能。 它用于檢查用戶從鍵盤等輸入的數(shù)據(jù) 顯示應(yīng)用輸出的數(shù)據(jù)。為使用戶能直觀地進行操作, 一般要使用圖形用戶接口(GUI) 。在變更用戶接口時,只需改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他兩層。,軟件技術(shù)基礎(chǔ)-PPT課件,23,圖形界面的結(jié)構(gòu)是不固定的,這便于以后能靈活地進行變更。例如,在一個窗口中不是放入幾個功能,而是按功能分割窗口,以便使每個窗口的功能簡潔單純。在這層的程序開發(fā)中主要是使用可視

10、化編程工具。,軟件技術(shù)基礎(chǔ)-PPT課件,24,2. 功能層 功能層相當(dāng)于應(yīng)用的本體,它是將具體的業(yè)務(wù)處理邏輯地編入程序中。 例如,在制作訂購合同的時要計算合同金額,按照定好的格式配置數(shù)據(jù)、打印訂購合同,而處理所需的數(shù)據(jù)則要從表示層或數(shù)據(jù)層取得。 表示層和功能層之間的數(shù)據(jù)交往要盡可能簡潔。例如,用戶檢索數(shù)據(jù)時,要設(shè)法將有關(guān)檢索要求的信息一次傳送給功能層(參見圖2),而由功能層處理過的檢索結(jié)果數(shù)據(jù)也一次傳送給表示層。,軟件技術(shù)基礎(chǔ)-PPT課件,25,在應(yīng)用設(shè)計中,,一定要避免“進行一次業(yè)務(wù)處理,在表示層和功能層間進行多幾次數(shù)據(jù)交換的笨拙設(shè)計。 通常,在功能層中包含有:確認用戶對應(yīng)用和數(shù)據(jù)庫存取權(quán)限

11、的功能以及記錄系統(tǒng)處理日志的功能。這層的程序多半是用可視化編程工具開發(fā)的,也有使用COBOL和C語言的。,軟件技術(shù)基礎(chǔ)-PPT課件,26,3. 數(shù)據(jù)層 數(shù)據(jù)層就是DBMS,負責(zé)管理對數(shù)據(jù)庫數(shù)據(jù)的讀寫。 DBMS必須能迅速執(zhí)行大量數(shù)據(jù)的更新和檢索。 現(xiàn)在的主流是關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。因此,一般從功能層傳送到數(shù)據(jù)層的要求大都使用SQL語言。,軟件技術(shù)基礎(chǔ)-PPT課件,27,1.2.3 何時應(yīng)用三層C/S,具有下述特點的應(yīng)用,應(yīng)考慮采用三層C/S。 1、應(yīng)用的服務(wù)或種類超過50個; 2、應(yīng)用是用不同語言編寫的; 3、兩個以上的異構(gòu)數(shù)據(jù)源,如2個不同的DBMS或1個DBMS和1個文件系統(tǒng);

12、 4、應(yīng)用的生命周期超過3年; 5、高工作負荷,例如每天超過5萬個事務(wù)處理或在同一系統(tǒng)訪問同一數(shù)據(jù)庫的并發(fā)用戶數(shù)超過300個; 6、有至關(guān)重要的應(yīng)用內(nèi)部通信,包括像電子數(shù)據(jù)交換(EDI)這類企業(yè)的內(nèi)部通信。,軟件技術(shù)基礎(chǔ)-PPT課件,28,1.3 C/S結(jié)構(gòu)的優(yōu)勢,1.由于客戶端實現(xiàn)與服務(wù)器的直接相連,沒有中間環(huán)節(jié),因此響應(yīng)速度快。 2.操作界面漂亮、形式多樣,可以充分滿足客戶自身的個性化要求。 3.C/S結(jié)構(gòu)的管理信息系統(tǒng)具有較強的事務(wù)處理能力,能實現(xiàn)復(fù)雜的業(yè)務(wù)流程。,軟件技術(shù)基礎(chǔ)-PPT課件,29,1.4 C/S結(jié)構(gòu)的缺點,1.需要專門的客戶端安裝程序,分布功能弱,針對點多面廣且不具備網(wǎng)絡(luò)

13、條件的用戶群體,不能夠?qū)崿F(xiàn)快速部署安裝和配置。 2.兼容性差,對于不同的開發(fā)工具,具有較大的局限性。若采用不同工具,需要重新改寫程序。 3.開發(fā)、維護成本較高,需要具有一定專業(yè)水準(zhǔn)的技術(shù)人員才能完成。,軟件技術(shù)基礎(chǔ)-PPT課件,30,二、基于C/S的選課管理系統(tǒng),SQL Server+C# 2008開發(fā)的,軟件技術(shù)基礎(chǔ)-PPT課件,31,C# 2008開發(fā)的前臺應(yīng)用程序,連接和操作數(shù)據(jù)庫。,SQL Server作為后臺進行數(shù)據(jù)管理。,軟件技術(shù)基礎(chǔ)-PPT課件,32,2.1 結(jié)構(gòu)分析,一個典型的二層C/S結(jié)構(gòu)的應(yīng)用: (服務(wù)器與客戶機合二為一) 服務(wù)器:數(shù)據(jù)層,以SQL Server為RDBMS

14、,管理數(shù)據(jù)庫College以及表student、course、sc。 客戶機:以C#為開發(fā)工具,將功能層與表示層集中到一個應(yīng)用上,對數(shù)據(jù)庫College進行連接、查詢、增刪改,并顯示結(jié)果。,軟件技術(shù)基礎(chǔ)-PPT課件,33,2.2 SQL Server 2005的連接字符串,SQL Server的連接字符串由“服務(wù)器身份驗證方式”決定: Windows身份驗證模式(集成驗證) SQL Server和Windows身份驗證模式(混合驗證模式),軟件技術(shù)基礎(chǔ)-PPT課件,34,2.2.1 Windows身份驗證,安裝SQL Server 2005時默認的驗證模式。 在安裝頁面,頁面進入到【身份驗證模

15、式】頁面,如圖 所示。,軟件技術(shù)基礎(chǔ)-PPT課件,35,Windows 身份驗證,也稱為Windows集成驗證模式。是指基于操作系統(tǒng)用戶名和密碼的一種安全認證方式。 即用戶以相應(yīng)的本機Windows 帳戶,或者域帳戶進行驗證。 混合驗證是指普通的SQL 用戶名密碼驗證和Windows 身份驗證全部都支持。,軟件技術(shù)基礎(chǔ)-PPT課件,36,連接字符串的形式: String consqlserver = Data Source=ServerName ;Initial Catalog=DBName ;Integrated Security=True; Integrated Security=True

16、:就是集成驗證的子句,軟件技術(shù)基礎(chǔ)-PPT課件,37,2.2.2 混合驗證,數(shù)據(jù)庫安裝完畢之后,可以通過數(shù)據(jù)庫服務(wù)實例的屬性來更改前期安裝時候的配置。,如何啟用SQL Server2005 的混合驗證方式,(1)使用Windows 集成方式連接到數(shù)據(jù)庫引擎,在【對象資源管理器】窗口中,右鍵擊數(shù)據(jù)庫引擎實例節(jié)點,在彈出的菜單中,單擊【屬性】命令,,軟件技術(shù)基礎(chǔ)-PPT課件,38,軟件技術(shù)基礎(chǔ)-PPT課件,39,軟件技術(shù)基礎(chǔ)-PPT課件,40,(2)在彈出的【服務(wù)器屬性】對話框中,在左側(cè)的【選擇頁】區(qū)域,選擇【安全性】節(jié)點,將右側(cè)的【服務(wù)器身份驗證】屬性,設(shè)置為【SQL Server 和Windo

17、ws 身份驗證模式】。 (3)單擊【確定】按鈕,完成模式的更換過程。完成之后,SQL server 會提示需要重啟引擎服務(wù),驗證模式的更改才會生效。 注意:混合驗證的sa 帳戶是SQL Server 中自帶的最高權(quán)限的一個帳戶,由于該帳戶的權(quán)限十分重要,所以在開發(fā)的時候,盡量避免使用該帳戶直接進行連接。,軟件技術(shù)基礎(chǔ)-PPT課件,41,(4)在【對象資源管理器】對話框中,選擇【安全性】【登錄名】【sa】節(jié)點,右擊,選擇【屬性】命令。,軟件技術(shù)基礎(chǔ)-PPT課件,42,(5)在彈出的【登錄屬性】對話框中,選擇左側(cè)的【選擇頁】節(jié)點,在右側(cè)的【SQL Server身份驗證】下,設(shè)定sa 用戶的登錄密碼

18、。 (6)再將節(jié)點切換到【狀態(tài)】,然后在右側(cè)的【登錄】選項中,選擇【啟用】篩選框。 (7)設(shè)定完畢之后,單擊【確定】按鈕,然后右擊服務(wù)實例節(jié)點,在彈出的菜單中,選擇【重新啟動】命令。,軟件技術(shù)基礎(chǔ)-PPT課件,43,軟件技術(shù)基礎(chǔ)-PPT課件,44,軟件技術(shù)基礎(chǔ)-PPT課件,45,軟件技術(shù)基礎(chǔ)-PPT課件,46,(8)重啟完畢之后,斷開數(shù)據(jù)庫連接,然后再次登錄的時候,就可以使用sa 用戶進行登錄了。 注意:之所以介紹使用sa 用戶進行登錄,是因為如果需要通過程序進行數(shù)據(jù)的訪問及操作,必須首先通過數(shù)據(jù)的連接字符串建立連接對象。,軟件技術(shù)基礎(chǔ)-PPT課件,47,使用混合驗證模式的連接字符串如下。 P

19、ersist Security Info=False;User ID=*;Password=*;Initial Catalog=DBName;Server=localhost,軟件技術(shù)基礎(chǔ)-PPT課件,48,2.3 代碼解析,1、建立SqlConnection對象; 2、指定SqlConnection對象的ConnectionString 屬性; 3、打開數(shù)據(jù)庫連接; 4、指定SQL語句; 5、建立SqlDataAdapter對象和DataSet對象myDataAdapter = new SqlDataAdapter(strCmd,conn); 6、填充DataSet; 7、給DataGrid

20、View指定數(shù)據(jù)源,軟件技術(shù)基礎(chǔ)-PPT課件,49,2.3.1 連接SQL Server數(shù)據(jù)庫,方法一: DataSet ds = new DataSet(); consqlserver = Data Source=ServerName ;Initial Catalog=DBName ;Integrated Security=True; sql = select * where ; SqlConnection con = new SqlConnection(consqlserver); SqlDataAdapter da = new SqlDataAdapter(sqltemp, con);

21、da.Fill(ds); if (ds.Tables0.Rows.Count 0) dataGridView1.DataSource = ds.Tables0; con.Close(); con.Dispose(); da.Dispose();,軟件技術(shù)基礎(chǔ)-PPT課件,50,方法二: SqlConnection conn = new SqlConnection(); conn.ConnectionString = data source =ServerName ;initial catalog = DBName; Integrated Security=True ; conn.Open();

22、 string strCmd = select * from course; DataSet myDataSet = new DataSet(); SqlDataAdapter myDataAdapter = new SqlDataAdapter(strCmd, conn); myDataAdapter.Fill(myDataSet, course); dataGridView1.DataSource = myDataSet.Tables0;,軟件技術(shù)基礎(chǔ)-PPT課件,51,2.3.2 其他連接字符串,SqlConnection conn = new SqlConnection(); 1、按S

23、QL Server的登錄名連接 conn.ConnectionString = data source =;initial catalog =; user id = sa;password = ; 2、遠程SQL Server數(shù)據(jù)庫連接 conn.ConnectionString = data source = ;initial catalog = DBName; Integrated Security=True ;,軟件技術(shù)基礎(chǔ)-PPT課件,52,3、以信任的方式用WINDOWS身份去登錄SQL SERVER服務(wù)器 conn = Data Source=(local);

24、Initial Catalog=DBName ;Integrated Security=SSPI;,軟件技術(shù)基礎(chǔ)-PPT課件,53,2.4 小結(jié),常用的SQLServer連接字符串(C#代碼): Server=(local);Integrated Security=SSPI;database= server=(local)IP;database=;Integrated Security=SSPI Data Source=localhost;Integrated Security=SSPI;Initial Catalog= Persist Security Info=False;Integrat

25、ed Security=SSPI;database=;server= uid=sa;pwd=;initial catalog=;data source=;Connect Timeout=900 Data Source=(local); Integrated security=SSPI;Initial Catalog= Data Source=(local);User Id=sa;Password=123;Initial Catalog= server=localhost;database=;user=sa;password=123,軟件技術(shù)基礎(chǔ)-PPT課件,54,第一次實驗課

26、:實驗內(nèi)容,基于雙層C/S的 學(xué)生選課管理系統(tǒng),軟件技術(shù)基礎(chǔ)-PPT課件,55,數(shù)據(jù)庫,SQL Server 2005 建庫:,軟件技術(shù)基礎(chǔ)-PPT課件,56,use master go create database College1 on (name=College1_db, filename =e:SQL-dbCollege1_db.mdf, size=10mb, maxsize=50mb, filegrowth=5mb) log on (name=College_lg, filename =e:SQL-dbCollege1_lg.ldf, size=5mb, maxsize=25mb,

27、 filegrowth=5mb) go,軟件技術(shù)基礎(chǔ)-PPT課件,57,軟件技術(shù)基礎(chǔ)-PPT課件,58,use college go create table student (sno char(7) primary key, sname char(8) unique, ssex char(2), sage smallint, sdept char(20) ) go,軟件技術(shù)基礎(chǔ)-PPT課件,59,use college go create table course (cno char(4) primary key, cname char(40), cpno char(4), ccredit

28、smallint, foreign key (cpno) references course(cno) ) go,軟件技術(shù)基礎(chǔ)-PPT課件,60,use college go create table sc (sno char(7), cno char(4), grade smallint, primary key (sno,cno), foreign key (sno) references student(sno), foreign key (cno) references course(cno) ) go,軟件技術(shù)基礎(chǔ)-PPT課件,61,軟件技術(shù)基礎(chǔ)-PPT課件,62,軟件技術(shù)基礎(chǔ)-PP

29、T課件,63,軟件技術(shù)基礎(chǔ)-PPT課件,64,設(shè)計GUI,軟件技術(shù)基礎(chǔ)-PPT課件,65,系統(tǒng)主窗體MainForm,添加并編輯菜單menustrip 設(shè)置窗體的IsMdiContainer屬性為True 即:確定該窗體為Mdi(多文檔界面)容器窗體系統(tǒng)的父窗體 設(shè)置窗體的Text屬性為:學(xué)生選課管理系統(tǒng),軟件技術(shù)基礎(chǔ)-PPT課件,66,MainForm代碼,private void sQLServer數(shù)據(jù)庫連接ToolStripMenuItem_Click( ) Form2 frmlinksql = new Form2(); frmlinksql.MdiParent = this; frml

30、inksql.Show(); private void 退出系統(tǒng)ToolStripMenuItem_Click ( ) Application.Exit(); private void 課程信息管理ToolStripMenuItem_Click ( ) Form3 frmcourse = new Form3(); frmcourse.MdiParent = this; frmcourse.Show(); ,軟件技術(shù)基礎(chǔ)-PPT課件,67,private void 學(xué)生信息管理ToolStripMenuItem_Click ( ) Form4 frmstudent = new Form4();

31、frmstudent.MdiParent = this; frmstudent.Show(); private void 選課信息管理ToolStripMenuItem_Click ( ) Form5 frmsc = new Form5(); frmsc.MdiParent = this; frmsc.Show(); ,軟件技術(shù)基礎(chǔ)-PPT課件,68,Form2數(shù)據(jù)庫連接,獲取連接字符串的兩個重要的值:數(shù)據(jù)源SqlServerName和數(shù)據(jù)庫DatabaseName的名稱。,軟件技術(shù)基礎(chǔ)-PPT課件,69,在“數(shù)據(jù)管理”的三個窗體【學(xué)生】、【課程】、【選課】的加載事件中,連接字符串將被三次重寫

32、,即SqlServerName和DatabaseName 的值重復(fù)出現(xiàn)三次。 定義一個類保存變量SqlServerName和DatabaseName 的值。,軟件技術(shù)基礎(chǔ)-PPT課件,70,通過添加類,定義全局變量:,軟件技術(shù)基礎(chǔ)-PPT課件,71,類代碼: class Varlist /用靜態(tài)變量(必須使用靜態(tài)變量,必須!)作全局變量 public static string mySqlServerName; /靜態(tài)變量用 “類名.變量名“ 的方式訪問,注意中間的點。不用采用對類進行實例引用的方式訪問 public static string myDataBaseName; ,軟件技術(shù)基礎(chǔ)-

33、PPT課件,72,代碼: private void button1_Click () Varlist.mySqlServerName = textBox1.Text; Varlist.myDataBaseName = textBox2.Text; this.Close(); private void button2_Click () this.Close(); ,軟件技術(shù)基礎(chǔ)-PPT課件,73,課程信息管理窗口:負責(zé)管理課程course的相關(guān)數(shù)據(jù)的。,軟件技術(shù)基礎(chǔ)-PPT課件,74,窗體的加載Load事件: 通過連接字符串,連接數(shù)據(jù)庫College 定義查詢 利用數(shù)據(jù)控件顯示數(shù)據(jù),軟件技術(shù)基礎(chǔ)

34、-PPT課件,75,引用的空間 using System; using System.Collections.Generic; using System.Text; using System.Xml; using System.Collections; using System.Windows.Forms; using System.Data; using System.Data.OleDb; using System.Data.SqlClient; using System.Reflection;,軟件技術(shù)基礎(chǔ)-PPT課件,76,string consqlserver; private vo

35、id Form3_Load( ) DataSet ds = new DataSet(); consqlserver = Data Source= + Varlist.mySqlServerName + ;Initial Catalog= + Varlist.myDataBaseName + ;Integrated Security=True; string sql = select * from course; SqlConnection con = new SqlConnection(consqlserver); SqlDataAdapter da = new SqlDataAdapter(

36、sql, con); da.Fill(ds); if (ds.Tables0.Rows.Count 0) dataGridView1.DataSource = ds.Tables0; con.Close(); con.Dispose(); da.Dispose(); ,軟件技術(shù)基礎(chǔ)-PPT課件,77,單擊DataGridView任意一個數(shù)據(jù)項,將該項所在的記錄顯示在TextBox25中。 dataGridView1.CurrentRow.Cellsi.Value.ToString(),軟件技術(shù)基礎(chǔ)-PPT課件,78,private void dataGridView1_CellContentC

37、lick( ) textBox2.Text = dataGridView1.CurrentRow.Cells0.Value.ToString(); textBox3.Text = dataGridView1.CurrentRow.Cells1.Value.ToString(); textBox4.Text = dataGridView1.CurrentRow.Cells2.Value.ToString(); textBox5.Text = dataGridView1.CurrentRow.Cells3.Value.ToString(); ,軟件技術(shù)基礎(chǔ)-PPT課件,79,Button1:按列表

38、框ListBox1的條件模糊查詢。 將篩選的結(jié)果顯示在Datagridview中。,軟件技術(shù)基礎(chǔ)-PPT課件,80,private void button1_Click( ) string sql = ; DataSet ds = new DataSet(); if (listBox1.SelectedIndex = 0) sql = SELECT * FROM course where cno like % + textBox1.Text.Trim() + %; if (listBox1.SelectedIndex = 1) sql = SELECT * FROM course where

39、cname like % + textBox1.Text.Trim() + %; if (listBox1.SelectedIndex = 2) sql = SELECT * FROM course where cpno like % + textBox1.Text.Trim() + %; if (listBox1.SelectedIndex = 3) sql = SELECT * FROM course where ccredit like % + textBox1.Text.Trim() + %; ,并列的if判斷,導(dǎo)致不必要的執(zhí)行語句,軟件技術(shù)基礎(chǔ)-PPT課件,81,SqlConnect

40、ion con = new SqlConnection(consqlserver); SqlDataAdapter da = new SqlDataAdapter(sql, con); da.Fill(ds); if (ds.Tables0.Rows.Count 0) dataGridView1.DataSource = ds.Tables0; con.Close(); con.Dispose(); da.Dispose(); ,軟件技術(shù)基礎(chǔ)-PPT課件,82,Button2:添加 首先判斷輸入信息是否完全 判斷保存重復(fù)記錄問題 定義SQL Server連接對象 按新的課程號TextBox2查

41、詢,若有 提示該課程編號已經(jīng)存在 定義SQL Server連接對象 刷新數(shù)據(jù),軟件技術(shù)基礎(chǔ)-PPT課件,83,if (textBox2.Text = | textBox3.Text = ) MessageBox.Show(請輸入完整的課程信息, 信息提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); else DataSet ds = new DataSet(); string strSqls; strSqls = string.Format(SELECT * FROM course where cno= + textBox2.Text.Tri

42、m() + ); SqlConnection con = new SqlConnection(consqlserver); SqlDataAdapter da = new SqlDataAdapter(strSqls, con); da.Fill(ds); if (ds.Tables0.Rows.Count 1) MessageBox.Show(該課程號已經(jīng)存在,請您重新輸入, 信息提示, MessageBoxButtons.OK, MessageBoxIcon.Error); ,軟件技術(shù)基礎(chǔ)-PPT課件,84,else if (MessageBox.Show(確認要保存該課程信息嗎?, 信息

43、提示, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes) strSqls = string.Format( insert into course(cno,cname,cpno,ccredit) values (0,1,2,3) “ , textBox2.Text.Trim(), textBox3.Text.Trim(), textBox4.Text.Trim(), textBox5.Text.Trim(); SqlConnection cons = new SqlConnection(consqlserv

44、er); SqlCommand cmd = new SqlCommand(strSqls, cons); try cons.Open(); cmd.ExecuteNonQuery(); catch finally cons.Close(); cons.Dispose(); cmd.Dispose(); MessageBox.Show(信息保存成功, 信息提示, MessageBoxButtons.OK, MessageBoxIcon.Information);,軟件技術(shù)基礎(chǔ)-PPT課件,85,string sqls = select * from course order by cno; Sq

45、lDataAdapter da1 = new SqlDataAdapter(sqls, con); da1.Fill(ds); if (ds.Tables0.Rows.Count 1) dataGridView1.DataSource = ds.Tables0; ,軟件技術(shù)基礎(chǔ)-PPT課件,86,Button4:修改 若課程號TextBox2為空,不允許修改 判斷要修改的數(shù)據(jù)信息是否存在 定義SQL Server連接對象 定義修改數(shù)據(jù)信息的SQL語句 定義SQL Server連接對象 修改 刷新數(shù)據(jù),軟件技術(shù)基礎(chǔ)-PPT課件,87,if (textBox2.Text = ) MessageBo

46、x.Show(請選擇或輸入要修改的課程編號, 信息提示, MessageBoxButtons.OK, MessageBoxIcon.Warning); else DataSet ds = new DataSet(); string strSqls; strSqls = string.Format(SELECT * FROM course where cno= + textBox2.Text.Trim() + ); SqlConnection con = new SqlConnection(consqlserver); SqlDataAdapter da = new SqlDataAdapter

47、(strSqls, con); da.Fill(ds);,軟件技術(shù)基礎(chǔ)-PPT課件,88,if (ds.Tables0.Rows.Count 0) if (MessageBox.Show(確認要修改該課程信息嗎?, 信息提示, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes) strSqls = string.Format( update course set cname=1,cpno=2,ccredit=3 where cno=0, textBox2.Text.Trim(), textBox3.Text.Trim(), textBox4.Text.Trim(), textBox5.Text.Trim(); SqlConnection cons = new SqlConnection(consqlserver); SqlCommand cmd = new SqlCommand(strSqls, cons); try cons.Open(); cmd.ExecuteNonQuery(); catch finally cons.Close(); cons.Dispose(

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論