Nhập môn C# vs VS2008

Embed Size (px)

Citation preview

Lu hnh ni b

MC LCChng 1. C bn ngn ng C# ............................................................................................ 1 I. Gii thiu ngn ng C# 2008 ...................................................................................... 1 II. Mi trng lp trnh ..................................................................................................... 2 III. Bin, hng, ton t ....................................................................................................... 3 IV. Quy c lp trnh, ng dng Console Application trong Visual Studio 2008............. 5 V. Kiu d liu ................................................................................................................. 9 VI. Cu trc iu khin .................................................................................................... 10 VII. Cu trc lp ................................................................................................................ 12 Chng 2. Xy dng Windows Forms Application ........................................................... 15 I. S dng Visual Studio 2008 ...................................................................................... 15 II. Cc control c bn: Label, TextBox, Button, CheckBox, .................................... 18 III. Menu v ToolBar ....................................................................................................... 30 IV. Common Dialog......................................................................................................... 30 Chng 3. Array String Exception ............................................................................... 34 I. Mng 1 chiu ............................................................................................................. 34 II. Mng nhiu chiu....................................................................................................... 37 III. String .......................................................................................................................... 40 IV. Exception ................................................................................................................... 45 Chng 4. Class Object - Method .................................................................................... 47 I. Khi nim ................................................................................................................... 47 II. nh ngha lp (Class) ............................................................................................... 47 III. Phng thc (Method) ............................................................................................... 50 Chng 5. SQL Server 2008 ................................................................................................ 54 I. Tng quan v SQL ..................................................................................................... 54 II. Tng quan v CSDL quan h ..................................................................................... 55 III. Table (Bng) .............................................................................................................. 58 IV. Cu lnh truy vn ....................................................................................................... 66 V. Mt s hm thng dng trong SQL Server ............................................................. 70 Chng 6. Lp trnh kt ni CSDL SQL Server 2008 ...................................................... 72 I. To kt ni Vn chuyn d liu. ............................................................................ 72 II. S dng control .......................................................................................................... 73 III. Cc thao tc trn d liu: Thm - Sa - Xa vi ADO.NET ..................................... 78 Chng 7. Xy dng ng dng............................................................................................ 85 I. Chun b. .................................................................................................................... 85 II. S dng control .......................................................................................................... 85 III. S dng database ....................................................................................................... 88

Lu hnh ni b

Chng 1: C BN NGN NG C#Bi 1: GII THIU C# 2008I. Gii thiu C# Ngn ng C# kh n gin, ch khong hn 80 t kha v hn mi my kiu d liu c dng sn. Tuy nhin, ngn ng C# c ngha to ln khi n thc thi nhng khi nim lp trnh hin i. C# bao gm tt c nhng h tr cho cu trc, thnh phn component, lp trnh hng i tng. Nhng tnh cht hin din trong mt ngn ng lp trnh hin i. Hn na ngn ng C# c xy dng trn nn tng hai ngn ng mnh nht l C++ v Java. Tm li, C# c cc c trng sau y: - C# l ngn ng n gin - C# l ngn ng hin i - C# l ngn ng hng i tng - C# l ngn ng mnh m v mm do - C# l ngn ng hng module - C# s tr nn ph bin 1. C# l ngn ng n gin - C# loi b c mt vi s phc tp v ri rm ca cc ngn ng C++ v Java. - C# kh ging C / C++ v din mo, c php, biu thc, ton t. - Cc chc nng ca C# c ly trc tip t ngn ng C / C++ nhng c ci tin lm cho ngn ng n gin hn. 2. C# l ngn ng hin i C# c c nhng c tnh ca ngn ng hin i nh: - X l ngoi l - Thu gom b nh t ng - C nhng kiu d liu m rng - Bo mt m ngun 3. C# l ngn ng hng i tng C# h tr tt c nhng c tnh ca ngn ng hng i tng l: - S ng gi (encapsulation) - S k tha (inheritance) - a hnh (polymorphism) 4. C# l ngn ng mnh m v mm do - Vi ngn ng C#, chng ta ch b gii hn chnh bn thn ca chng ta. Ngn ng ny khng t ra nhng rng buc ln nhng vic c th lm. - C# c s dng cho nhiu d n khc nhau nh: to ra ng dng x l vn bn, ng dng ha, x l bng tnh; thm ch to ra nhng trnh bin dch cho cc ngn ng khc. - C# l ngn ng s dng gii hn nhng t kha. Phn ln cc t kha dng m t thng tin, nhng khng g th m C# km phn mnh m. Chng ta c th tm thy rng ngn ng ny c th c s dng lm bt c nhim v no. 5. C# l ngn ng hng module - M ngun ca C# c vit trong Class (lp). Nhng Class ny cha cc Method (phng thc) thnh vin ca n. - Class (lp) v cc Method (phng thc) thnh vin ca n c th c s dng li trong nhng ng dng hay chng trnh khc. 6. C# s tr nn ph bin Lu hnh ni b Trang 1

C# mang n sc mnh ca C++ cng vi s d dng ca ngn ng Visual Basic. II. Mi trng lp trnh 1. S dng Notepad son tho Bc 1: Son tho tp tin v lu vi tn C:\ChaoMung.cs c ni dung nh sau class ChaoMung { static void Main() { // Xuat ra man hinh chuoi thong bao 'Chao mung ban den voi C# 2008 ' System.Console.WriteLine("Chao mung ban den voi C# 2008 ") ; System.Console.ReadLine() ; } } Bc 2: Vo menu Start | All Programs | Microsoft Visual Studio 2008 | Visual Studio Tools | Visual Studio 2008 Command Prompt Bc 3: - G lnh bin dch tp tin ChaoMung.cs sang tp tin ChaoMung.exe C:\> csc /t:exe /out:chaomung.exe chaomung.cs - Chy tp tin ChaoMung.exe v c kt qu nh sau : C:\> chaomung.exe Chao mung ban den voi C# 2008 2. S dng Micosoft Visual Studio 2008 to chng trnh Bc 1: Khi ng Visual Studio 2008 Start | All Programs | Microsoft Visual Studio 2008 | Microsoft Visual Studio 2008 Bc 2: Vo menu File | New | Project Bc 3: Khai bo

Lu hnh ni b

Trang 2

* Mc nh: Visual Studio 2008 (Visual Studio .NET) s to ra tp tin Program.cs cha mt namespace tn ChaoMung v trong namespace ny cha mt class tn Program. Bc 4: trong phng thc Main, g on m lnh sau * V d: // Xuat ra man hinh chuoi thong bao 'Chao mung ban den voi C# 2008 ' System.Console.WriteLine("Chao mung ban den voi C# 2008 ") ; System.Console.ReadLine() ; Bc 5: chy chng trnh, nhn F5 hoc nhp vo nt III. Bin, hng, ton t 1. Bin a) Khi nim: - Bin l mt vng lu tr ng vi mt kiu d liu. - Bin c th c gn gi tr v cng c th thay i gi tr trong khi thc hin cc lnh ca chng trnh. b) Khai bo bin: Sau khi khai bo bin phi gn gi tr cho bin [ = ] ; c) V d 1.1: Khi to v gn gi tr mt bin class Bien { static void Main() { // Khai bao va khoi tao bien int bien = 9 ; System.Console.WriteLine("Sau khi khoi tao: bien = {0}", bien) ; // Gan gia tri cho bien bien = 5 ; // Xuat ra man hinh System.Console.WriteLine("Sau khi gan: bien = {0}", bien) ; } } 2. Hng a) Khi nim: - Hng cng l mt bin nhng gi tr ca hng khng thay i trong khi thc hin cc lnh ca chng trnh. - Hng c phn lm 3 loi: + Gi tr hng (literal) + Biu tng hng (symbolic constants) + Kiu lit k (enumerations) b) Gi tr hng: V d: x = 100; // 100 c gi l gi tr hng c) Biu tng hng: gn mt tn hng cho mt gi tr hng. Khai bo: = ; V d 1.2: Nhp vo bn knh, in ra chu vi v din tch hnh trn. Lu hnh ni b Trang 3

class HinhTron { static void Main() { // Khai bao bieu tuong hang const double PI = 3.14159 ; // Khai bao bien int bankinh ; double chuvi , dientich ; string chuoi ; // Nhap gia tri cho bien chuoi System.Console.Write("Nhap ban kinh hinh tron: ") ; chuoi = System.Console.ReadLine() ; // Doi chuoi thanh so va gan vao bien so bankinh = System.Convert.ToInt32(chuoi) ; // Gan gia tri cho bien chuvi = 2 * bankinh * PI ; dientich = bankinh * bankinh * PI ; // Xuat ra man hinh System.Console.WriteLine("Chu vi hinh tron = {0:0.00}", chuvi) ; System.Console.WriteLine("Dien tich hinh tron = {0:0.00}", dientich) ; } } d) Kiu lit k: l tp hp cc tn hng c gi tr s khng thay i (danh sch lit k) Khai bo: { = , = , ... , }; V d: enum NhietDoNuoc { DoDong = 0, DoNguoi = 20, DoAm = 40, DoNong = 60, DoSoi = 100, }; 3. a) b) c) d) e) f) g) Ton t Ton t ton hc: + , - , * , / , % Ton t tng / gim: += , -= , *= , /= , %= Ton t tng / gim 1 n v: ++ , -Ton t gn: = Ton t quan h: == , != , > , >= , < , = 25 --- oOo ---

Lu hnh ni b

Trang 8

Bi 2: (tip theo) KIU D LIU CU TRC IU KHIN CU TRC LPV. Kiu d liu C# chia kiu d liu thnh hai tp hp kiu d liu chnh: - Kiu xy dng sn (built-in): do ngn ng cung cp cho ngi lp trnh. - Kiu do ngi dng nh ngha (user-defined): do ngi lp trnh to ra. 1. Kiu d liu dng sn Kiu C# byte char bool sbyte short ushort int uint float double S byte 1 2 1 1 2 2 4 4 4 8 Kiu .NET Byte Char Boolean Sbyte Int16 Uint16 Int32 Uint32 Single Double M t S nguyn dng khng du t 0 n 255 K t Unicode Gi tr logic true / false S nguyn c du t -128 n 127 S nguyn c du t -32768 n 32767 S nguyn dng khng du t 0 n 65535 S nguyn c du t -2.147.483.647 n 2.147.483.647 S nguyn khng du t 0 n 4.294.967.295 Kiu du chm ng, gi tr xp x t -3.4E-38 n 3.4E+38, vi 7 ch s c ngha Kiu du chm ng c chnh xc gp i, gi tr xp x t -1.7E-308 n 1.7E+308, vi 15, 16 ch s c ngha C chnh xc n 28 con s v gi tr thp phn, c dng trong tnh ton ti chnh, kiu ny i hi phi c hu t m hay M Kiu s nguyn c du c gi tr trong khong -9.223.370.036.854.775.808 n 9.223.372.036.854.775.807 S nguyn khng du t 0 n 0xfffffffffffffff

decimal

8

Decimal

long

8

Int64

ulong

8

Uint64

* Bng trnh by cc k t c bit K t \' \" \\ \0 \a \b \f \n \r \t \v Lu hnh ni b ngha Du nhy n Du nhy kp Du cho K t null Alert Backspace Sang trang form feed Dng mi u dng Tab ngang Tab dc Trang 9

2. Chuyn i kiu d liu V d a: short x = 10 ; int y = x ; // chuyn i ngm nh V d b: short x ; int y = 100 ; x = (short) y ; // p kiu tng minh, trnh bin dch khng bo li V d c: short x ; int y = 100 ; x = y ; // khng bin dch, li VI. Cu trc iu khin 1. Cu lnh if else a) C php: if (iu_Kin) [else ] b) V d 2.1: Dng cu lnh iu kin if else using System; class Chan_Le { static void Main() { // Khai bao va khoi tao bien int bienDem = 9 ; // Xuat ra man hinh if (bienDem % 2 == 0) Console.WriteLine("{0} la so chan", bienDem) ; else Console.WriteLine("{0} la so le", bienDem) ; } } 2. Cu lnh if lng nhau a. C php: if (iu_Kin_1) else if (iu_Kin_2) else b. V d 2.2: using System; class Thu_Trong_Tuan Lu hnh ni b Trang 10

{ static void Main() { // Khai bao va khoi tao bien int thu = 5 ; // 0: Chu nhat, 1: Thu hai, 2: Thu ba, 3: Thu tu, // 4: Thu nam, 5: Thu sau, 6: Thu bay // Xuat ra man hinh if ((thu == 1) || (thu == 3) || (thu == 5)) Console.WriteLine("Day la ngay 2-4-6") ; else if ((thu == 2) || (thu == 4) || (thu == 6)) Console.WriteLine("Day la ngay 3-5-7") ; else Console.WriteLine("Day la ngay chu nhat") ; } } 3. Cu lnh switch a. C php: switch (Biu_Thc) { case : < Khi lnh 1> case : < Khi lnh 2> . [default: < Khi lnh khc>] } b. V d 2.3: using System; class Thu { static void Main() { // Khai bao va khoi tao bien int thu = 5 ; // 0: Chu nhat, 1: Thu hai, 2: Thu ba, 3: Thu tu, // 4: Thu nam, 5: Thu sau, 6: Thu bay // Xuat ra man hinh switch (thu) { case 0: Console.WriteLine("Chu nhat") ; break; case 1: Console.WriteLine("Thu hai") ; break; case 2: Lu hnh ni b Trang 11

Console.WriteLine("Thu ba") ; break; case 3: Console.WriteLine("Thu tu") ; break; case 4: Console.WriteLine("Thu nam") ; break; case 5: Console.WriteLine("Thu sau") ; break; case 6: Console.WriteLine("Thu bay") ; break; default: Console.WriteLine("Khong phai la thu trong tuan") ; break; } } } VII. Cu trc lp 1. Lnh lp while a. C php: while (iu_Kin) < Khi lnh> b. V d 2.4: using System; class UsingWhile { static void Main() { // Khai bao va khoi tao bien dem int i = 1 ; // Xuat ra man hinh while (i while (iu_Kin) ; Lu hnh ni b Trang 12

b. V d 2.5: using System; class UsingDoWhile { static void Main() { // Khai bao va khoi tao bien dem int i = 1 ; // Xuat ra man hinh do { Console.WriteLine("i = {0}",i) ; i++ ; // tang bien dem } while (i b. V d 2.6: using System; class UsingFor { static void Main() { for (int i=1 ; i b. V d 2.7: using System; public class UsingForeach { public static void Main() { int[] intArray = {1,2,3,4,5,6,7,8,9,10}; foreach (int item in intArray) Console.WriteLine("i = {0} ",item) ; } } Lu hnh ni b Trang 13

Bi tp1. Vit chng trnh nhp vo 3 s nguyn. In ra mn hnh s nguyn nh nht trong 3 s . 2. Vit chng trnh nhp vo h tn, im thi cui k ca mt hc sinh. In ra h tn hc sinh bng ch IN HOA, v kt qu xp loi ca hc sinh theo tiu chun sau: - Gii: Nu im kt qu >= 8 - Kh: Nu 8 > im >= 6.5 - Trung bnh: Nu 6.5 > im >= 5 - Yu: Nu im < 5 3. Vit chng trnh gii phng trnh bc 1: bx + c = 0 4. Vit chng trnh gii phng trnh bc 2: ax2 + bx + c = 0 5. Vit chng trnh nhp vo mt s nguyn cho n khi nhn c s nguyn dng th dng. 6. Vit chng trnh nhp vo mt s nguyn n. Cho bit s nguyn n c phi l s nguyn t khng ? 7. Vit chng trnh nhp vo mt s nguyn dng n ch nm dng lch. Cho bit n c phi l nm nhun khng ? 8. Vit chng trnh nhp vo s nguyn dng n. In ra mn hnh kt qu ca cc tng sau: a) S1 = 1 + 2 + 3 + ... + n b) S2 = 1 +

1 1 1 + + ... + 2 3 n

9. Vit chng trnh nhp vo s nguyn dng n. In ra mn hnh: a) Cc s nguyn dng t 1 n n b) Tng v trung bnh cng ca n s nguyn dng ny.

--- oOo ---

Lu hnh ni b

Trang 14

Chng 2: XY DNG WINDOWS FORMS APPLICATIONBi 3: XY DNG WINDOWS FORMS APPLICATIONI. S dng Microsoft Visual Studio 2008 1. Khi ng Bc 1: Khi ng Visual Studio 2008 Start | All Programs | Microsoft Visual Studio 2008 | Microsoft Visual Studio 2008 Bc 2: Vo menu File | New | Project Bc 3: Khai bo

M hp ToolBox: Menu View | ToolBox cha cc control M ca s Properties: Menu View | Properties cha thuc tnh M ca s Solution Explorer: Menu View | Solution Explorer ca s Project xut hin. Thit k form: Nhp vo Vit code: Nhp vo View Designer (trong ca s Solution Explorer) View Code (trong ca s Solution Explorer)

Bc 4: Thit k Form Vit code

Bc 5: chy chng trnh, nhn F5 hoc nhp vo nt dng chng trnh, nhn Shift + F5 hoc nhp vo nt * Cc thao tc vi Project / Solution a. To Project Lu hnh ni b Trang 15

C1. Vo menu File | New | Project C2. Ctrl + Shift + N C3. Chn cng c New Project trn thanh Standart b. M Project / Solution: C1. Vo menu File | Open | Project / Solution C2. Ctrl + Shift + O c. Lu Project / Solution C1. Vo menu File | Save All C2. Chn cng c Save All trn thanh Standart d. ng Solution: Vo menu File | Close Solution 2. Mn hnh giao din ca Windows Forms a. Ca s thit k Form (Designer):

b. Ca s thit vit code:

* Cc thao tc vi Form a. Thm mt Form mi vo Project: Lu hnh ni b Trang 16

b1. C1. Vo menu Project | Add New Item C2. Chn cng c Add New Item trn thanh Standart b2. Khai bo + Categories: chn Windows Forms + Templates: chn Windows Form + Name: t tn Form b3. Nhp Add b. Thm mt Form c sn vo Project: b1. Vo menu Project | Add Existing Item b2. Chn Form b3. Nhp Add c. Xa b mt Form ang c trong Project: b1. Chn Form cn g b ( ca s Solution Explorer) b2. Vo menu Edit | Delete d. Lu Form - Vo menu File | Save Form.cs - Ctrl + S * Ghi ch - Ta em b vo form cc i tng nh: Label, TextBox, Button, + Label, TextBox, Button, c gi l control hay cn gi l component. + Form c gi l control cha. - Khi thay i ni dung ca Label, TextBox, Button, ta thay i vo Text. Text c gi l Property ca control. 3. Control l g? - Control l lp (class) cc thnh phn c thm vo Windows Forms tng tc gia ngi s dng vi Windows. - C rt nhiu loi control trong Windows Forms nh: Label, TextBox, ListBox, ComboBox, Button, - Cc control s dng trn Windows Forms dng namespace System.Windows.Forms. 4. Properties (thuc tnh) ca control - Properties l nhng thng tin m ta c th thay i ni dung, cch trnh by ca ngi thit k ng dng vo control. - Mi lp (class) c nhiu property khc nhau. Tuy nhin, vn c mt s property ging nhau c xy dng t lp ban u. * Bng trnh by cc thuc tnh (Properties) ging nhau Thuc tnh Anchor M t C 4 hng c nh ngha l: top, bottom, left, right c nh (neo). Khi control cha n thay i kch thc th n s b thay i kch thc nu nu cc hng left / right / top / bottom b c nh (neo). Mu nn ca control. L khong cch theo chiu dc t cnh y ca control n cnh trn ca control cha n. Ging nh Anchor nhng vic c nh (neo) ny theo mt cnh no ca control (hoc c 4 cnh) vi control cha n. Control c php tng tc (True) hay khng c php tng tc (False)) vi ngi dng. Trang 17

BackColor Bottom Dock Enabled Lu hnh ni b

ForeColor Height Left Name Parent Right TabIndex TabStop

Tag Text Top Visible Width

Mu ch ca control. L chiu cao ca control tnh t cnh trn ca control n cnh di ca control. L khong cch theo chiu ngang t cnh tri ca control n cnh tri ca control cha n. Tn ca control. Ch n control cha control hin hnh. L khong cch theo chiu ngang t cnh phi ca control n cnh tri ca control cha n. Th t focus khi nhn phm Tab (trn bn phm) ca control so vi cc control khc cng nm trong control cha n. Ch nh control c c php bt (True) / khng c php bt (False) phm Tab. Nu khng c php th TabIndex cng khng dng c. L nhn phn bit gia cc control ging nhau trong cng form. Ni dung hin trong control. L khong cch theo chiu dc t cnh trn ca control n cnh trn ca control cha n. Cho php control hin (True) / khng hin (False) khi chy ng dng. L chiu rng ca control tnh t cnh tri ca control n cnh phi ca control. M t Xa ni dung Xa ni dung Text Ct b khong trng tha hai bn chui

* Bng trnh by cc phng thc (Method) x l trn chui Phng thc Clear() ResetText() Trim() II. Cc control c bn 1. Label ( ) a. Cng dng: - Hin th chui k t khng thay i trn form (nhn). b. To Label: - Chn cng c - R chut v v Label trn form. c. Thuc tnh: Thuc tnh M t AutoSize iu chnh kch thc i tng cho va vi chiu di chui k t Font Name Quy nh font ch cho vn bn Bold True: m / False: b m Italic True: nghing / False: b nghing Size Quy nh c ch cho vn bn Underline True: gch di / False: b gch di TextAlign Canh l (Left / Center / Right) 2. TextBox ( Lu hnh ni b ) Trang 18

a. Cng dng: - Dng trnh by vn bn v cho php ngi dng c thay i ni dung vn bn. - Cng dng chnh l cho ngi dng nhp vn bn. b. To TextBox: - Chn cng c - R chut v v TextBox trn form. c. Thuc tnh: Thuc tnh M t PasswordChar Quy nh k t hin th cho mt khu. Multiline True: hin thanh cun / False: khng hin thanh cun ScrollBars Thanh cun (None / Horizontal / Vertical / Both) 3. Button ( ) a. Cng dng: - Dng thc thi lnh. - Khi nhp chut ln button, chng trnh nhn c tn hiu Click v lnh c thi hnh. b. To Button: - Chn cng c - R chut v v Button trn form. c. Thuc tnh: Thuc tnh M t Text Nhp ni dung vo Button 4. CheckBox ( ) a. Cng dng: - Cho php ngi dng chn hoc khng chn. b. To CheckBox: - Chn cng c - R chut v v CheckBox trn form. c. Thuc tnh: Thuc tnh M t Checked Khng c du check (False) / C du check (True) V d 3.1: * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 3.1 nh sau:

* Yu cu: - Nhp: + Username vo TextBox Tn ng nhp (Name: txtUser) + Password vo TextBox Mt khu (Name: txtPass) Lu hnh ni b Trang 19

- Chn hoc khng chn CheckBox Ghi nh (Name: chkNho) - Nhp button ng nhp th hin ra hp thng bo cha Tn ng nhp, Mt khu; V Bn c ghi nh (nu chkNho c nh du chn). - Nhp button Xa th xa trng TextBox Tn ng nhp v TextBox Mt khu, ng thi di chuyn con tr vo txtUser. - Nhp button Dng th dng chng trnh. * Hng dn: - Thit k Form nh yu cu, trong form c cc thuc tnh sau: + AutoSize: True + Font: Times New Roman + Size: 12 + Text: Form ng Nhp + Icon: logo.ico - Nhp p vo button ng nhp, thm on code sau: string thongbao; thongbao = "Tn ng nhp l: " ; thongbao += this.txtUser.Text ; thongbao += "\n\rMt khu l: " ; thongbao += this.txtPass.Text; if (this.chkNho.Checked==true) { thongbao += "\n\rBn c ghi nh."; } MessageBox.Show(thongbao,"Thng bo"); - Nhp p vo button Xa, thm on code sau: this.txtUser.Clear(); this.txtPass.Clear(); this.txtUser.Focus(); - Nhp p vo button Dng, thm on code sau: Application.Exit(); + C th thay button Xa bng button Reset vi on code nh sau: this.txtUser.ResetText(); this.txtPass.ResetText(); this.txtUser.Focus(); * Phn B sung: 1. MessageBox.Show: hin hp thng bo MessageBox.Show("Thng bo" , "Tiu "); MessageBox.Show("Thng bo", "Tiu ", Buttons, Icon); + Buttons (nt lnh): MessageBoxButtons.OK MessageBoxButtons.OKCancel MessageBoxButtons.YesNo MessageBoxButtons.YesNoCancel + Icon (biu tng): MessageBoxIcon.Information MessageBoxIcon.Question MessageBoxIcon.Warning + DialogResult (kt qu tr v): DialogResult.Ok Lu hnh ni b Trang 20

DialogResult.Yes 2. Dng chng trnh: this.Close(); Application.Exit(); 3. Event (s kin) l g? - S kin l nhng phn ng ca i tng. Ni cch khc, s kin l nhng tn hiu pht ra khi ngi dng thao tc trn i tng. - Nh c event, ngi lp trnh s nhn c nhng tn hiu v x l nhng tn hiu phn hi li cho ngi dng, to nn s nhp nhng cho chng trnh. 4. Bng trnh by cc s kin (Events) ca control S kin Click M t Gi n khi control b Click. Trong mt vi control, event ny cng xy ra khi ngi dng nhn phm Enter. DoubleClick Gi n khi control b Double-Click. Trong mt vi control, event ny khng bo gi c gi. V d: control Button. DragDrop Gi n khi vic Drag and Drop c hon tt. DragEnter Gi n khi i tng va c Drag n bin ca control. DragLeave Gi n khi i tng va c Drag ra ngoi bin ca control. DragOver Gi n khi i tng c Drag bn trong control. KeyDown Gi n khi va bm mt phm bt k t 1 control ang focus. S kin ny lun c gi trc s kin KeyUp. KeyPress Gi n khi va bm mt phm bt k t 1 control c focus. S kin ny c gi sau s kin KeyUp. KeyUp Gi n khi va bm mt phm bt k ri th ra t 1 control ang focus. S kin ny lun c gi sau s kin KeyDown. GotFocus Gi n khi control c focus. LostFocus Gi n khi control b mt focus. MouseDown Gi n khi con tr chut nm trn 1 control v nt chut c nhp nhng cha th ra. MouseMove Gi n khi con tr chut i qua 1 control. MouseUp Gi n khi con tr chut nm trn 1 control v nt chut va c th. Paint Gi n khi control c v. Validated Gi n khi control focus, property CaucesValidation c t l true v sau khi gi vic kim tra bng Validating. Validating Gi n khi control mt focus, property CaucesValidation c t l true. V d 3.2: * Ci tin Vi Du 3.1 cho button Dng nh sau: - Khi nhp vo button Dng th xut hin hp thoi hi p c 2 button Ok, Cancel. - Chng trnh ch dng khi nhp tip vo nt Ok. * Hng dn: Sa li button Dng nh sau DialogResult traloi; traloi = MessageBox.Show("Chc khng?", "Tr li", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if ( traloi == DialogResult.OK) Application.Exit(); V d 3.3: * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 3.3 gm: Lu hnh ni b Trang 21

- Form1: c thit k nh sau

- Form2: c thit k nh sau

(txtUser, txtPass, btnDangnhap, btnThoat) * Yu cu: - Khi chy chng trnh th Form2 (ng nhp h thng) c m ln trc. - Nhp: + Tn ngi dng vo TextBox txtUser + Mt khu vo TextBox txtPass - Nhp button ng nhp th thc hin kim tra + Nu txtUser = "teonv" v txtPass = "123" th chuyn sang Form1. + Ngc li th thng bo "Khng ng tn ngi dng / mt khu !!!" - Nhp button Thot th hin th thng bo "Chc khng? " + Nu chn Yes th kt thc chng trnh. + Ngc li th tr li mn hnh ng nhp h thng. * Hng dn: - Form1 . Thit k Form nh yu cu, trong form c cc thuc tnh sau: + AutoSize: True + Font: Times New Roman + Size: 12 + Text: Mn hnh chnh + Icon: star.ico . Form load: Form frm = new Form2(); frm.ShowDialog(); - Form2 . Thit k Form nh yu cu, trong form c cc thuc tnh sau: + AutoSize: True + Font: Times New Roman Lu hnh ni b Trang 22

+ Size: 12 + Text: ng nhp h thng + Icon: logo.ico . ng nhp: Nhp p vo button btnDangnhap, g vo on code sau if ((this.txtUser.Text=="teonv")&&(this.txtPass.Text=="123")) this.Close(); else { MessageBox.Show("Khng ng tn ngi dng / mt khu !!!","Thng bo"); this.txtUser.Focus(); } . Thot: Nhp p vo button btnThoat, g vo on code sau DialogResult traloi; traloi = MessageBox.Show("Chc khng?", "Tr li", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if ( traloi == DialogResult.OK) Application.Exit();

Bi tp1. - Thit k form nh mu.

(txtsSo1, txtSo2, txtKQ, btnCong, btnTru, btnNhan, btnChia, btnXoa) - Vit chng trnh lm cc php ton: cng, tr, nhn, chia cho cc button btnCong, btnTru, btnNhan, btnChia. - Xa: Xa trng cc TextBox. - Thm vo button Dng (btnDung), khi nhp vo btnDung th dng chng trnh. - Ci tin: Khi nhp button btnChia, nu txtSo2 l 0 th xut hin hp thng bo li ri xa trng txtSo2 v di chuyn con tr n TextBox ny. 2. Vit chng trnh gii phng trnh bc nht: bx + c = 0

Lu hnh ni b

Trang 23

(txtB, txtC, btnGiai, txtKQ) - Thm vo button Dng, khi nhp vo button ny th dng chng trnh. 3. Vit chng trnh gii phng trnh bc hai: ax2 + bx + c = 0 4. Vit chng trnh nhp vo: h tn (txtHoTen), n (chkNu), im vn (txtVan), im ton (txtToan), im ngoi ng (txtNN). - Nhp vo nt Tnh (btnTinh) th in ra im thp nht (txtDTN), im kt qu (txtDKQ), xp loi (txtXL). Bit rng: + im thp nht: txtDTN l im thp nht trong 3 im: vn, ton, ngoi ng. + im thm: DThem = 0.5 nu l n; DThem = 0 nu l nam. + im kt qu: txtKQ = txtVan * 2 + txtToan * 2 + txtNN + DThem + Xp loi theo tiu chun: . Gii: nu txtKQ >= 40 v txtDTN >= 7 . Kh: nu txtKQ >=35 v txtDTN >= 6 . Trung bnh: nu txtKQ >= 25 v txtDTN >= 5 . Yu: cc trng hp cn li - Nhp vo nt Xa (btnXoa) th xa ht cc ni dung trong cc TextBox. - Thm vo button Dng, khi nhp vo button ny th dng chng trnh. 5. Vit chng trnh to mt ng dng gm: - Form1: Mn hnh chnh c 5 button: Bi tp 1 (btnBT1), Bi tp 2 (btnBT2), Bi tp 3 (btnBT3), Bi tp 4 (btnBT4), Thot (btnThoat). + Khi nhp vo Button Bi Tp 1: m Form2 + Khi nhp vo Button Bi Tp 2: m Form3 + Khi nhp vo Button Bi Tp 3: m Form4 + Khi nhp vo Button Bi Tp 4: m Form5 - Form2: thc hin bi tp 1. B sung Button Tr v ng Form2. - Form3: thc hin bi tp 2. B sung Button Tr v ng Form3. - Form4: thc hin bi tp 3. B sung Button Tr v ng Form4. - Form5: thc hin bi tp 4. B sung Button Tr v ng Form5.

--- oOo ---

Lu hnh ni b

Trang 24

Bi 4: (tip theo) XY DNG WINDOWS FORMS APPLICATION5. ListBox ( ) a. Cng dng: - Dng hin th mt danh sch cc la chn. b. To ListBox: - Chn cng c - R chut v v ListBox trn form. c. Thuc tnh: Thuc tnh M t Items Cc mc gi tr trong ListBox SelectedItem Item c chn Phng thc M t Add("chui") Thm mt mc gi tr l "chui" ToString() Tr v chui k t c chn * Nhp gi tr vo ListBox: .Items.Add ("Chui") ; * Ly gi tr trong ListBox: .SelectedItem.ToString() ; V d 4.1: * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 4.1 nh sau:

* Yu cu: - ListBox lstWeb (Lin kt website) cha cc gi tr: + Tui tr + Thanh nin + VNExpress + Dn tr + Cng an - TextBox txtKQ (cha kt qu) trng. - Nhp button btnOk (Ok) s hin trong txtKQ tn website c chn lstWeb. - Nhp button btnReset (Reset) s xa trng txtKQ. * Hng dn: - Thit k Form nh yu cu, trong form c cc thuc tnh sau: + AutoSize: True + Font: Times New Roman + Size: 12 + Text: FormWebLinks - Nhp p vo button Ok ri thm on code sau: this.txtKQ.Text = "Bn chn website "; this.txtKQ.Text += this.lstWeb.SelectedItem.ToString(); Lu hnh ni b Trang 25

- Nhp p vo button Reset ri thm on code sau: this.txtKQ.ResetText(); * Ci tin: Ta c th a cc gi tr ca lstWeb trong Form1_Load. + Thit k li form nh sau

+ Nhp p chut vo nn form, ri g on code this.lstWeb.Items.Add("Tui tr"); this.lstWeb.Items.Add("Thanh nin"); this.lstWeb.Items.Add("VNExpress"); this.lstWeb.Items.Add("Dn tr"); this.lstWeb.Items.Add("Cng an"); this.lstWeb.SelectedItem = "Tui tr"; 6. ComboBox ( ) a. Cng dng: - Dng hin th mt danh sch cc la chn / hoc nhp vo mt gi tr. b. To ComboBox: - Chn cng c - R chut v v ComboBox trn form. c. Thuc tnh: Thuc tnh M t DisplayMember Gn ni dung th hin trn ComboBox Items Lit k cc mc gi tr trong ComboBox SelectedItem Ly Item c chn SelectedText Ly ni dung th hin trn ComboBox t DisplayMember SelectedValue Ly gi tr t ValueMember ValueMember Gn gi tr cho ComboBox V d 4.2: * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 4.2 nh sau: * Yu cu: Thc hin ging nh V d 4.1, nhng thay ListBox bng ComboBox cbWeb.

Lu hnh ni b

Trang 26

7. RadioButton ( ) a. Cng dng: - Dng chn mt trong cc la chn trong danh sch. b. To RadioButton: - Chn cng c - R chut v v RadioButton trn form. c. Thuc tnh: Thuc tnh M t Checked Khng c du chn (False) / C du chn (True) 8. GroupBox ( a. Cng dng: - To ra mt nhm. b. GroupBox: )

- Chn cng c - R chut v v GroupBox trn form. c. Thuc tnh: Thuc tnh M t BackgroundImage Hnh nn BackgroundImageLayout None / Tile / Center / Stretch / Zoom V d 4.3: * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 4.3 nh sau:

* Yu cu: - Nhp h v tn vo TextBox txtHoTen - Chn kiu ch + Radio Button (rad1): ch thng + Radio Button (rad2): ch HOA - Nhp vo Button Kt qu (btnKQ) s in h v tn bng kiu ch c chn trong TextBox txtKQ. - Nhp vo Button Xa (btnXoa) s xa trng txtHoTen, txtKQ, rad1 c chn v a con tr vo TextBox txtHoTen. * Hng dn: - Thit k Form nh yu cu, trong form c cc thuc tnh sau: + AutoSize: True + Font: Times New Roman Lu hnh ni b Trang 27

+ Size: 12 + Text: i kiu ch - Nhp p vo nt Kt qu ri thm on code sau: string hoten=this.txtHoTen.Text.Trim(); if (this.rad1.Checked == true) txtKQ.Text = hoten.ToLower(); if (this.rad2.Checked == true) txtKQ.Text = hoten.ToUpper(); - Nhp p vo nt Xa ri thm on code sau: this.txtHoTen.Clear(); this.txtKQ.Clear(); this.rad1.Checked = true; this.txtHoTen.Focus(); * B sung: - Nhp vo Button Dng (btnDung) s dng chng trnh: thit k v vit code sau Application.Exit(); 9. Timer ( ) a. Cng dng: - Quy nh khong thi gian nh k thc hin mt cng vic. b. To Timer: - Chn cng c - R chut v v Timer l control dng unvisible (n). c. Thuc tnh: Thuc tnh M t Enabled Bt / tt ch hn thi gian Interval Khong thi gian nh k V d 4.4: * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 4.4 nh sau:

* Yu cu: - To Timer1 c Enabled = false; Interval = 1000 - Khi to bin m i = 20 - Button Bt u (btnBatDau): dng bt ch hn thi gian. - Button Dng (btnDung): dng dng chng trnh. - Timer1: m ngc t 20 n 1 v xut ra dng ch Ht gi. + Xut gi tr bin m i ra Label lblDongHo. + Gim bin i xung 1 n v. + Khi bin m i < 0 th tt ch hn gi v xut Ht gi! ra Label lblDongHo. * Hng dn: - Thit k Form nh yu cu, trong form c cc thuc tnh sau: Lu hnh ni b Trang 28

+ AutoSize: True + Font: Times New Roman + Size: 12 + Text: ng h m ngc - Khai bo bin m i: qua code, thm on code c kt qu nh sau: public Form1() { InitializeComponent(); } int i = 10; - Nhp p vo nt Bt u ri thm on code sau: this.timer1.Enabled = true; - Nhp p vo nt Dng ri thm on code sau: Application.Exit(); - Nhp p vo nt Timer1 (Timer1_Tick) ri thm on code sau: this.lblDongHo.Text = i.ToString(); i--; if (i < 0) this.timer1.Enabled = false; 10. RichTextBox ( ) a. Cng dng: - Dng nhp vn bn vi nh dng vn bn a dng. b. To RichTextBox: - Chn cng c - R chut v v RichTextBox trn form. c. Thuc tnh: Thuc tnh M t ReadOnly Khng cho son tho, ch c. 11. Panel ( ) a. Cng dng: - Bng cha cc control hay mt nhm cc control. b. To Panel: - Chn cng c - R chut v v Panel. c. Thuc tnh: Thuc tnh M t AutoScroll T ng cun nu s control nm ngoi vng BorderStyle None / FixedSingle / Fixed3D 12. PictureBox ( a. Cng dng: - Khung cha hnh nh. b. To PictureBox: - Chn cng c - R chut v v PictureBox. c. Thuc tnh: Thuc tnh M t Lu hnh ni b Trang 29 )

Image

Hnh cha trong PictureBox

13. ErrorProvider ( ) a. Cng dng: - H tr thng bo li cho cc control khc. - Thng c dng vi control input (v d: TextBox) rng buc vi 1 iu kin nhp no . b. To ErrorProvider: - Chn cng c - R chut v v ErrorProvider l control dng unvisible (n). III. Menu v ToolBar 1. MenuStrip ( a. Cng dng: - To menu. b. To MenuStrip: - Nhp p vo control - Nhp menu. 2. ToolStrip ( a. Cng dng: - To ra toolbar. b. To ToolStrip: ) )

.

- Chn cng c - Ko control ToolStrip vo trong form. - Bm vo ToolStrip va to, ta c th to ra cc tool (cng c) nh: Label, TextBox, Button, ComboBox, DropDownButton. V d 4.5: * To ng dngWindows Forms Application nh hnh. * Hng dn: dng RichTextBox, MenuStrip v ToolStrip.

Lu hnh ni b

Trang 30

IV. Common Dialog (Hp thoi dng chung) 1. FontDialog ( a. Cng dng: - To ra hp thoi Font. b. To FontDialog: - Nhp p vo control 2. OpenFileDialog ( a. Cng dng: - To ra hp thoi Open File. b. To OpenFileDialog: - Nhp p vo control 3. SaveFileDialog ( a. Cng dng: - To ra hp thoi Save File. b. To SaveFileDialog: - Nhp p vo control 4. PrintPreviewDialog ( a. Cng dng: - Xem trc khi in. b. To SaveFileDialog: - Nhp p vo control 5. PrintDialog ( a. Cng dng: - To ra hp thoi Print File. b. To PrintDialog: - Nhp p vo control 6. FolderBrowserDialog ( a. Cng dng: - To ra hp thoi Browser. b. To FolderBrowserDialog: - Nhp p vo control ) ) ) ) ) )

Lu hnh ni b

Trang 31

Bi tp1. Vit chng trnh to dng ch xut hin ln lt tng k t, c ni dung nh sau:

( lblChucMung, Timer1, btnDungChay, btnThoat) - Button Dng/Chy c nhim v khng cho / cho Timer hot ng v i ni dung (Text) ca button btnDungChay t Dng sang Chy hoc ngc li. - Button Thot dng dng chng trnh. 2. Vit chng trnh to form Bm bay (trong phm vi form) nh sau:

* Hng dn: S dng: timer, PictureBox, Button v 2 file hnh BFClose.ico, BFOpen.ico 3. Vit chng trnh nhp hai s nguyn dng n v m. Tnh theo yu cu chn nh sau:

Lu hnh ni b

Trang 32

(txtN, txtM, rad1, rad2, txtKQ, btnTinh, btnXoa, btnThoat) - Button Tnh (btnTinh): tnh ton v xut kt qu ra TextBox txtKQ. - Button Xa: xa trng tt c cc TextBox, a con tr vo txtN. - Button Thot: dng chng trnh. 4. T V D 4.5, to v b sung thm cc cng c CommonDialog c ng dng dng giao din n vn bn (Single-Document Interface SDI). 5. Pht trin bi tp 4, c th m cng lc nhiu ca s - dng giao din a vn bn (Multi-Document Interface MDI) -- oOo --

Lu hnh ni b

Trang 33

Chng 3: ARRAY - STRING - EXCEPTIONBi 5: ARRAY (MNG)I. Mng 1 chiu 1. nh ngha - Mng l mt tp hp c th t ca nhng i tng (objects), tt c cc i tng ny c cng mt kiu d liu. - Mng trong ngn ng C# s dng nhng phng thc v cc thuc tnh. Th hin ca mng trong C# c th truy cp nhng phng thc v cc thuc tnh ca System.Array. - Mt s cc thuc tnh v phng thc ca lp System.Array: Thnh vin M t Sort() Phng thc sp xp gi tr tng dn trong mng mt chiu Reverse() Phng thc sp xp gi tr gim dn trong mng mt chiu Length Thuc tnh chiu di ca mng SetValue() Phng thc thit lp gi tr cho mt thnh phn xc nh trong mng 2. Khai bo mng: [] ; V d: int[] myIntArray ; To th hin ca mng: s dng t kha new V d: myIntArray = new int[5] ; 3. Khi to thnh phn ca mng - To th hin ca mng ng thi vi khi to cc gi tr: + Cch 1: int[] myIntArray = new int[5] {2, 4, 6, 8, 10}; + Cch 2: int[] myIntArray = {2, 4, 6, 8, 10}; - Cc khai bo trn s thit lp bn trong b nh mt mng cha 5 s nguyn. Ch : Khng th thit lp li kch thc cho mng. 4. Gi tr mc nh: - Khi chng ta to mt mng c kiu d liu gi tr, mi thnh phn s cha gi tr mc nh ca kiu d liu. V d: Vi khai bo int myIntArray = new int[5] ; th: - Mi thnh phn ca mng c thit lp gi tr l 0 (gi tr mc nh ca s nguyn). - Nhng kiu tham chiu trong mt mng khng c khi to gi tr mc nh, chng c khi to gi tr null. 5. Truy cp cc thnh phn trong mng: - truy cp vo thnh phn trong mng ta s dng ton t ch mc ([]). - Ch mc ca thnh phn u tin trong mng lun lun l 0. - Thuc tnh Length ca mng cho bit s i tng trong mt mng. Lu hnh ni b Trang 34

6. Duyt mng 1 chiu: for (int i=0; i < myIntArray.Length; i++) { x l myIntArraya[i]; }C th thay for bng foreach nh sau

foreach (int phantu in a){ x l myIntArraya[i]; } V d 5.1: (Mng 5 s nguyn t 1 n 5) * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 5.1 nh sau:

* Yu cu - Thit k form nh mu (lblKQ, btnIn, btnXoa, btnDung). - Khai bo mng 1 chiu (a) gm 5 s nguyn t 1 n 5. - Nhp vo button In mng (btnIn) s in ra label (lblKQ) cc gi tr trong mng. - Nhp vo button Xa (btnXoa) s xa trng ni dung ca label (lblKQ). - Nhp vo button Dng s dng chng trnh. * Hng dn - Thit k form nh yu cu. - Khai bo mng: qua code, thm on code c kt qu nh sau: public partial class Form1 : Form { // Khai bao mang 1 chieu gom 5 so nguyen tu 1 den 5 int[] a = { 1, 2, 3, 4, 5 }; } - Nhp p vo button In mng, thm on code sau: // Xuat cac phan tu trong mang ra man hinh this.lblKQ.Text="Cc phn t trong mng l:\n\r"; for (int i=0; i < a.Length; i++) { this.lblKQ.Text += a[i]+" "; } C th thay for bng foreach nh sau foreach (int phantu in a){ this.lblKQ.Text += a[i]+" "; } - Nhp p vo button Xa, thm on code sau: this.lblKQ.Text = ""; - Nhp p vo button Dng, thm on code sau: Application.Exit(); Lu hnh ni b Trang 35

V d 5.2: (Mng 5 s nguyn) * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 5.2 nh sau:

* Yu cu - Thit k form: btnNhap, txtNhap, btnTang, btnGiam, lblKQ, btnIn, btnXoa, btnDung. - Khai bo mng 1 chiu (a) cha 5 s nguyn, s phn t hin c (sopt) l 0. - Nhp s vo TextBox txtNhap, nhp vo button Nhp 1 phn t mng (btnNhap) cho php a gi tr trong TextBox txtNhap vo mng. Khi mng 5 s nguyn th phi thng bo Mng y v khng cho nhp na. - Nhp vo button Sp tng (btnTang) s sp xp mng theo th t tng dn. - Nhp vo button Sp gim (btnGiam) s sp xp mng theo th t gim dn. - Nhp vo button In mng (btnIn) s in ra label (lblKQ) cc gi tr trong mng. - Nhp vo button Xa (btnXoa) s xa trng ni dung ca label (lblKQ) ng thi khai bo li s phn t hin c (sopt) ca mng l 0. - Nhp vo button Dng s dng chng trnh. * Hng dn - Thit k form nh yu cu. - Khai bo mng nh sau: public partial class Form1 : Form { // Khai bao mang 1 chieu gom 5 so nguyen int[] a = new int[5]; // Khai bao so phan tu hien co cua mang int sopt = 0; } - Nhp p vo button Nhp 1 phn t mng, thm on code sau: // Nhap mot phan tu cho mang if (sopt == 5) MessageBox.Show("Mng y!"); else { a[sopt] = Convert.ToInt32(this.txtNhap.Text); sopt++; this.txtNhap.ResetText(); this.txtNhap.Focus(); } - Nhp p vo button Sp tng, thm on code sau: // Sap xep mang giam if (sopt == 0) this.lblKQ.Text = "Mng rng!"; Lu hnh ni b Trang 36

else Array.Sort(a, 0, sopt); this.lblKQ.Text = " sp xp mng tng dn!"; - Nhp p vo button Sp gim, thm on code sau: // Sap xep mang giam if (sopt == 0) this.lblKQ.Text = "Mng rng!"; else Array.Reverse(a, 0, sopt); this.lblKQ.Text = " sp xp mng gim dn!"; - Nhp p vo button Xa, thm on code sau: this.lblKQ.Text = ""; sopt = 0; this.txtNhap.Focus(); - Nhp p vo button In mng, thm on code sau: // Xuat cac phan tu trong mang ra man hinh if (sopt==0) this.lblKQ.Text = "Mng rng!"; else { this.lblKQ.Text="Cc phn t trong mng l:\n\r"; for (int i = 0; i < sopt; i++) this.lblKQ.Text += a[i] + " "; } - Nhp p vo button Dng, thm on code sau: Application.Exit(); II. Mng nhiu chiu 1. nh ngha - Mng a chiu l mng m mi thnh phn l mt mng khc. - Ngn ng C# h tr hai kiu mng a chiu l: + Mng a chiu cng kch thc. + Mng a chiu khc kch thc. - Trong phm vi bi hc ny, ta ch kho st mng 2 chiu m thi. 2. Khai bo mng 2 chiu [ , ] V d: int[ , ] myRectangularArray ; 3. Khi to thnh phn ca mng int[] myRectangularArray = new int[sodong , socot] ; 4. Duyt mng 2 chiu for (int i = 0; i < sodong; i++) { for (int j = 0; j < socot; j++) { Lu hnh ni b Trang 37

X l myRectangularArray[i,j]; } } V d 5.3: * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 5.3 nh sau:

* Yu cu - Thit k form nh mu (lblKQ, btnIn, btnXoa, btnDung, btnNhap, btnSapXep). - Khai bo mng 2 chiu gm 4 dng, 3 ct cha cc s nguyn. - Nhp vo button Nhp mng nhp cc phn t cho mng (c gi tr = dng - ct). - Nhp vo button Sp Xp s sp xp mng tng dn theo tng hng. - Nhp vo button In mng (btnIn) s in ra label (lblKQ) cc gi tr trong mng. - Nhp vo button Xa (btnXoa) s xa trng ni dung ca label (lblKQ). - Nhp vo button Dng s dng chng trnh. * Hng dn - Thit k form nh yu cu. - Khai bo mng: qua code, thm on code c kt qu nh sau: public partial class Form1 : Form { // Khai bao 4 dong 3 cot const int sodong = 4; const int socot = 3; // Khai bao mang 2 chieu gom 4 dong, 3 cot chua 12 so nguyen int[,] Array2 = new int[sodong,socot]; } - Nhp p vo button Nhp mng, thm on code sau: // Nhap cac phan tu cho mang for (int i=0; i < sodong; i++) for (int j=0; j< socot; j++) Array2[i,j]= i-j; - Nhp p vo button Sp xp, thm on code sau: // Sap xep mang int[] t = new int[sodong * socot]; for (int i = 0; i < sodong; i++) { for (int j = 0; j < socot; j++) t[j] = Array2[i, j]; Array.Sort(t, 0, socot); Lu hnh ni b Trang 38

for (int j = 0; j < socot; j++) Array2[i, j]=t[j]; } - Nhp p vo button In mng, thm on code sau: // Xuat cac phan tu trong mang ra man hinh this.lblKQ.Text = "Cc phn t trong mng l:\n\r"; for (int i = 0; i < sodong; i++) { for (int j = 0; j < socot; j++) { this.lblKQ.Text += Array2[i,j] + " "; } this.lblKQ.Text += "\n\r"; } - Nhp p vo button Xa, thm on code sau: this.lblKQ.Text = ""; - Nhp p vo button Dng, thm on code sau: Application.Exit();

Bi tpKhi to mt ng dng Windows Forms Application: 1. Khai bo 1 mng nguyn 1 chiu ti a 10 phn t. Vit chng trnh: - Nhp vo gi tr cho 1 phn t trong mng. - In gi tr ca cc phn t trong mng. - In gi tr ln nht, gi tr nh nht ca cc phn t trong mng. - In tng s cc gi tr, trung bnh cng cc gi tr ca cc phn t trong mng. 2. Khai bo 1 mng nguyn 2 chiu 4 dng, 5 ct. Vit chng trnh: - Nhp gi tr cho cc phn t trong mng (gi tr = s th t dng + s th t ct). - In gi tr cc phn t trong mng. - In gi tr ln nht, gi tr nh nht ca cc phn t trong mng. - In tng s cc gi tr, trung bnh cng cc gi tr ca cc phn t trong mng.

-- oOo --

Lu hnh ni b

Trang 39

Bi 6: (tip theo) STRING (CHUI) EXCEPTION (NGOI L)III. String (Chui) 1. To mt chui a. Chui hng string TenChuoi = "Chui" ; V d: string thongbao = "y l mt cu thng bo." ; Ch : Ta c 2 khai bo chui sau l nh nhau string chuoi = "Dong mot \n Dong hai"; string chuoi = @"Dong mot Dong hai"; b. Chui dng phng thc ToString V d: int myInt = 9 ; string intString = myInt.ToString(); 2. Thao tc trn chui Lp string cung cp rt nhiu cc phng thc so snh, tm kim, thay th ; cc phng thc ny c trnh by trong bng sau: Phng thc ngha Compare() So snh hai chui (Chui 1 ? Chui 2) = (-1 ; 0 ; 1) tng ng () Concat() Ni chui EndsWidth() Xem chui c kt thc bng mt nhm k t xc nh hay khng. IndexOf() Ch ra v tr xut hin u tin ca mt chui con trong chui ln. Insert() Tr v mt chui mi c chn thm. LastIndexOf() Ch ra v tr xut hin cui cng ca mt chui con trong chui ln. Length Chiu di ca chui. Remove() Xo i mt chui con. Replace() Thay th chui c bng chui mi. Split() Tr v chui con c phn nh bi k t xc nh. StartsWidth() Xem chui c bt u bng mt nhm k t xc nh hay khng. Substring() Ly chui con. ToLower() Tr v bn sao ca chui kiu ch thng. ToUpper() Tr v bn sao ca chui kiu ch IN HOA. 3. V d 6.1 * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 6.1 nh sau: * Yu cu - Thit k form gm: lblTieuDe, lbl1, txtS1, lbl2, txtS2, lbl3, lblKQ, v cc button (xem hnh). - Nhp vo button Compare: so snh 2 chui txtS1 v txtS2 (c phn bit ch HOA v ch thng), kt qu xut trong lblKQ. - Nhp vo button COMPARE: so snh 2 chui txtS1 v txtS2 (khng phn bit ch HOA v ch thng), kt qu xut trong lblKQ. - Nhp vo button Concat, ni 2 chui txtS1 v txtS2, kt qu xut trong lblKQ. Lu hnh ni b Trang 40

- Nhp button IndexOf, cho bit v tr xut hin ca chui txtS2 trong chui txtS1. Nu c txtS2 trong txtS1 th thay th txtS2 (trong txtS1) bng chui "CH NY". Xut kt qu trong lblKQ. - Nhp vo button Insert, chn chui txtS2 vo sau t u tin ca chui txtS1; v chn chui txtS2 vo trc t sau cng ca chui txtS1. Xut kt qu trong lblKQ. - Nhp vo button Substring, cho bit v tr xut hin ca chui "TRNH X L" trong lblTieuDe. Nu c th xa chui ra khi lblTieuDe. Xut kt qu trong lblKQ. - Nhp button Xa th xa trng: TextBox txtS1, TextBox txtS2, Label lblKQ ng thi a con tr vo TextBox txtS1. - Nhp button Dng th dng chng trnh.

* Hng dn - Thit k form nh yu cu. - Nhp p vo button Compare, thm vo on code: string s1=this.txtS1.Text; string s2=this.txtS2.Text; // So snh hai chui vi nhau c phn bit ch thng v ch hoa int kq = string.Compare(s1,s2); this.lblKQ.Text = "txtS1 "; if (kq == -1) this.lblKQ.Text += ""; this.lblKQ.Text += " txtS2"; - Nhp p vo button COMPARE, thm vo on code: Lu hnh ni b Trang 41

string s1=this.txtS1.Text; string s2=this.txtS2.Text; // So snh hai chui vi nhau khng phn bit ch thng v ch hoa int kq = string.Compare(s1,s2, true); this.lblKQ.Text = "txtS1 "; if (kq == -1) this.lblKQ.Text += ""; this.lblKQ.Text += " txtS2"; - Nhp p vo button Concat, thm vo on code: string s1 = this.txtS1.Text; string s2 = this.txtS2.Text; // Ni chui this.lblKQ.Text = string.Concat(s1,s2); - Nhp p vo button IndexOf, thm vo on code: string s1 = this.txtS1.Text; string s2 = this.txtS2.Text; // Ch ra v tr xut hin ca chui 2 trong chui 1 if (s1.IndexOf(s2) >= 0) { this.lblKQ.Text = "txtS2 xut hin trong txtS1 ti v tr "; this.lblKQ.Text += s1.IndexOf(s2); this.lblKQ.Text += ".!"; // Thay th chui s="CH NY" vo v tr chui 2 trong chui 1 string s = "CH NY"; this.lblKQ.Text += "\n\rThay th txtS2 trong txtS1 bng chui CH NY,"; this.lblKQ.Text+= "\n\rKt qu:"+s1.Replace(s2, s); } else this.lblKQ.Text = "txtS2 khng xut hin trong txtS1!"; - Nhp p vo button Insert, thm vo on code: string s1 = this.txtS1.Text; string s2 = this.txtS2.Text; // Chn chui 2 vo sau t u tin ca chui 1 this.lblKQ.Text = "Chn txtS2 vo sau t u tin ca txtS1:\n\r"; this.lblKQ.Text += s1.Insert(s1.IndexOf(" "), s2); // Chn chui 2 vo trc t cui cng ca chui 1 this.lblKQ.Text += "\n\rChn txtS2 vo trc t cui cng ca txtS1:\n\r "; this.lblKQ.Text += s1.Insert(s1.LastIndexOf(" "), s2); - Nhp p vo button Substring, thm vo on code: Lu hnh ni b Trang 42

// Ch ra v tr xut hin ca s="TRNH X L" trong lblTieuDe string s="TRNH X L"; int ix; ix = this.lblTieuDe.Text.IndexOf(s); // Trch s t lblTieuDe v in vo lblKQ if (ix >= 0) { this.lblKQ.Text = this.lblTieuDe.Text.Substring(ix, s.Length); this.lblKQ.Text += " xut hin trong tiu ti v tr "; this.lblKQ.Text += ix; // Xa s ra khi lblTieuDe this.lblKQ.Text += "\n\rTiu sau khi xa " + s; this.lblKQ.Text += "\n\rKt qu l: "; this.lblKQ.Text += this.lblTieuDe.Text.Remove(ix, s.Length); } else this.lblKQ.Text = "Khng xut hin trong chui 1!"; - Nhp p vo button Xa, thm vo on code: this.txtS1.ResetText(); this.txtS2.ResetText(); this.lblKQ.Text = ""; this.txtS1.Focus(); - Nhp p vo button Dng, thm vo on code: Application.Exit(); 4. V d 6.2 * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 6.2 nh sau:

* Yu cu - Thit k form gm: lbl1, txtHoTen, lbl2, lblKQ, v cc button (xem hnh). Lu hnh ni b Trang 43

- Nhp vo button CountOfWord: m s t trong chui txtHoTen, kt qu xut trong lblKQ. - Nhp vo button Proper: i thnh ch Hoa u T cho chui txtHoTen, kt qu xut trong lblKQ. - Nhp vo button Left, ly ra t bn tri ca chui txtHoTen, kt qu xut trong lblKQ. - Nhp vo button Right, ly ra t bn phi ca chui txtHoTen, kt qu xut trong lblKQ. - Nhp button Xa th xa trng: TextBox txtS1, TextBox txtS2, Label lblKQ ng thi a con tr vo TextBox txtS1. - Nhp button Dng th dng chng trnh. * Hng dn - Thit k form nh yu cu. - Nhp p vo button CountOfWord, thm vo on code: // m s t trong chui // To ra hng k t khong trng const char Space =' '; // Gn gi tr cho chui string s = hoten.Trim(); // Thc hin vic chia chui vo mng --> m t = di mng int cWord = s.Split(Space).Length;) // Gi kt qu tr v return cWord; ** Tham kho thm on code sau: // m s t trong chui txtHoTen int count=0; string s=this.txtHoTen.Text.Trim(); for (int i = 0; i < s.Length-1; i++) if ((s.Substring(i, 1)==" ") && (s.Substring(i + 1, 1)!=" ")) count++; if (s.Length > 0) count++; this.lblKQ.Text = "S t l: " + count; - Nhp p vo button Proper, thm vo on code: // i thnh ch Hoa u T trong chui txtHoTen string s = this.txtHoTen.Text.Trim(); if (s.Length == 0) this.lblKQ.Text = "Chui rng!"; else { this.lblKQ.Text = "Chui kt qu l: "; this.lblKQ.Text += s.Substring(0,1).ToUpper(); for (int i = 1; i < s.Length; i++) { if ((s[i-1].ToString()==" " )&&(s[i].ToString()!=" ")) { string ss = s[i].ToString(); this.lblKQ.Text += ss.ToUpper(); Lu hnh ni b Trang 44

} else this.lblKQ.Text += s[i].ToString(); } } - Nhp p vo button Left, thm vo on code: // T u tin ca chui txtHoTen string s = this.txtHoTen.Text.Trim(); if (s.Length == 0) this.lblKQ.Text = "Chui rng!"; else { this.lblKQ.Text = "T u tin ca chui l: "; this.lblKQ.Text += s.Substring(0, s.IndexOf(" ")); } - Nhp p vo button Right, thm vo on code: // T cui cng ca chui txtHoTen string s = this.txtHoTen.Text.Trim(); if (s.Length == 0) this.lblKQ.Text = "Chui rng!"; else { this.lblKQ.Text = "T u tin ca chui l: "; this.lblKQ.Text += s.Substring(s.LastIndexOf(" ")+1, s.Length-s.LastIndexOf(" ") - 1); } - Nhp p vo button Xa, thm vo on code: this.txtHoTen.ResetText(); this.lblKQ.Text = ""; this.txtHoTen.Focus(); - Nhp p vo button Dng, thm vo on code: Application.Exit(); IV. Exception (Ngoi l) 1. Khi nim - Exception c th c hiu l bt gi li vi nhng on m hp l khng tn hi n chng trnh. - Li c th do nguyn nhn t chnh ngi s dng; hoc c th do nhng vn khng mong i khc nh: thiu b nh, thiu ti nguyn h thng . - Mt trnh x l ngoi l l mt khi lnh chng trnh c thit k x l cc ngoi l m chng trnh pht sinh. - X l ngoi l c thc thi trong trong cu lnh catch. - Cc cu lnh c kh nng xy ra ngoi l thc thi trong cu lnh try. * Mt cch l tng, nu mt ngoi l c bt v c x l th chng trnh c th sa cha c vn b li v tip tc thc hin hot ng. Thm ch nu chng trnh khng tip tc, bng vic bt gi ngoi l chng ta cng c c hi in ra nhng thng ip c ngha v kt thc chng trnh mt cch r rng. 2. V d 6.3 * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 6.3 nh sau: Lu hnh ni b Trang 45

* Yu cu - Thit k form gm: lbl1, txtSo1, lbl2, txtSo2, lbl3, txtKQ v cc button (xem hnh). - Nhp s vo 2 TextBox txtSo1 v TxtSo2. - Nhp vo button Chia: + Nu txtSo1, txtSo2 khng phi l s; hoc nhp vo txtSo2 l 0 th bo li: Li ri!. + Nu txtSo1, txtSo2 l s th xut kt qu l txtSo1 / txtSo2 vo TextBox txtKQ. - Nhp button Xa th xa trng: TextBox txtS1, TextBox txtS2, Label lblKQ ng thi a con tr vo TextBox txtS1. - Nhp buuton Dng th dng chng trnh. * Hng dn - Thit k form nh yu cu. - Nhp p vo button Chia, thm vo on code: // Xa trng TextBox txtKQ txtKQ.ResetText(); // on code c xy ra ngoi l khi thc hin try { int so1 = int.Parse(this.txtSo1.Text); int so2 = int.Parse(this.txtSo2.Text); this.txtKQ.Text += (float)so1 / so2; } // X l ngoi l catch (Exception ex) { this.txtKQ.Text = "Li ri!"; }

Bi tp1. Vit chng trnh nhp vo mt chui h v tn. In ra: - di v s t ca chui h tn. - Chui h v tn di dng ch thng. - Chui h v tn di dng ch IN HOA. - Chui h v tn di dng Hoa u T. - Chui h v tn c loi b cc khong trng tha (u chui, cui chui, bn trong chui). 2. Vit chng trnh gii phng trnh bc 1: bx + c = 0 Lu : c x l trng hp nhp vo b, c khng phi l s. -- oOo -Lu hnh ni b Trang 46

Chng 4: CLASS OBJECT METHODBi 7: CLASS (LP) OBJECT (I TNG) METHOD (PHNG THC)I. Khi nim - Kiu d liu trong C# c nh ngha l mt lp (class). - Th hin ring ca tng lp c gi l i tng (object). - Hai thnh phn chnh cu thnh mt lp (class) l thuc tnh / tnh cht v phng thc (method) / hnh ng ng x ca i tng. II. nh ngha lp (class) 1. C php [Thuc tnh] [B sung truy cp] class [: Lp c s] { // Cc thuc tnh // Cc phng thc } 2. V d 7.1 * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 7.1 nh sau:

* Yu cu - Thit k form gm: lbl1, txtHoTen, lbl2, lblKQ, v cc button (xem hnh). - To class Chuoi nh sau: public class Chuoi { // Thuc tnh ... // Phng thc ... } + Trong phn thuc tnh, khai bo: Lu hnh ni b Trang 47

string tenchuongtrinh = "Chng trnh x l h v tn!"; + Trong phn phng thc, khai bo cc phng thc sau: // Phng thc public string In() { // In tn chng trnh return tenchuongtrinh; } public string Ten(string hoten) { // Ly tn int lio=hoten.LastIndexOf(" "); return hoten.Substring(lio+1, hoten.Length-lio-1); } public string HoLot(string hoten) { // Ly h v lt int lio = hoten.LastIndexOf(" "); return hoten.Substring(0,lio); } public int CountOfWord(string hoten) { // m s t trong chui // To ra hng k t khong trng const char Space =' '; // Gn gi tr cho chui string s = hoten.Trim(); // Thc hin vic chia chui thnh mng --> m t cWord = s.Split(Space)).Length ; // Gi kt qu tr v return cWord; } ** Tham kho thm on code sau: // m s t trong chui HoTen int count = 0; string s = hoten.Trim(); for (int i = 0; i < s.Length - 1; i++) if ((s.Substring(i,1)==" ")&&(s.Substring(i+1,1)!= " ")) count++; if (s.Length > 0) count++; return count; public string Proper(string hoten) { Lu hnh ni b Trang 48

// i thnh ch Hoa u T trong chui txtHoTen // To ra hng k t khong trng const char Space = ' '; // Gn gi tr cho chui string s = hoten.Trim(); // i chui string kq = "Chui rng!"; if (s.Length == 0) return kq; else { kq = ""; string [] s1 = s.Split(Space); foreach (string tu in s1) { string ss = tu[0].ToString(); kq += ss.ToUpper(); kq += tu.Substring(1,tu.Length-1); kq += " "; } return kq.Trim(); } ** Tham kho thm on code sau: // i thnh ch Hoa u T trong chui txtHoTen string s = hoten.Trim(); string kq = "Chui rng!"; if (s.Length > 0) { kq = s.Substring(0, 1).ToUpper(); for (int i = 1; i < s.Length; i++) { if ((s[i - 1].ToString() == " ") && (s[i].ToString() != " ")) { string ss = s[i].ToString(); kq += ss.ToUpper(); } else kq += s[i].ToString(); } } return kq; - S dng cc phng thc trn thc hin cc vic sau y (xut kt qu trong lblKQ): + Nhp vo button In Li gii thiu, s in li gii thiu. + Nhp button H Lt, tch ly h lt ca chui trong txtHoTen. + Nhp button Tn, tch ly tn ca chui trong txtHoTen. + Nhp button m t, m s t ca chui trong txtHoTen. + Nhp button Hoa u T, i thnh chui Hoa u T ca chui trong txtHoTen.

Lu hnh ni b

Trang 49

- Nhp button Xa th xa trng: TextBox txtHoTen, Label lblKQ ng thi a con tr vo TextBox txtHoTen. - Nhp button Dng th dng chng trnh. * Hng dn - Thit k form nh yu cu. - Khai bo class: qua code, thm on code c kt qu nh sau public Form1() { InitializeComponent(); } public class Chuoi { // Thuc tnh ... (1) // Phng thc ... (2) } + Trong phn (1), khai bo thuc tnh (xem bi) + Trong phn (2), khai bo phng thc (xem bi) - Nhp p vo button In Li gii thiu, thm vo on code: Chuoi s = new Chuoi(); this.lblKQ.Text = s.In(); - Nhp p vo button H lt, thm vo on code: Chuoi s = new Chuoi(); this.lblKQ.Text="H lt: " + s.HoLot(this.txtHoTen.Text); - Nhp p vo button Tn, thm vo on code: Chuoi s = new Chuoi(); this.lblKQ.Text = "Tn l: " + s.Ten(this.txtHoTen.Text); - Nhp p vo button m t, thm vo on code: Chuoi s = new Chuoi(); this.lblKQ.Text = "Tng s t l: " ; this.lblKQ.Text += s.CountOfWord(this.txtHoTen.Text); - Nhp p vo button Hoa u T, thm vo on code: Chuoi s = new Chuoi(); this.lblKQ.Text = "Kt qu l: " ; this.lblKQ.Text += s.Proper(this.txtHoTen.Text); - Nhp p vo button Xa, thm vo on code: this.lblKQ.Text = ""; this.txtHoTen.ResetText(); this.txtHoTen.Focus(); - Nhp p vo button Dng, thm vo on code: Application.Exit(); * B sung - Nt button In Hoa: i thnh chui IN HOA ca chui trong txtHoTen . - Nt button In Thng: i thnh chui in thng ca chui trong txtHoTen. III. Properties - Method 1. Thuc tnh (Properties): Lu hnh ni b Trang 50

Thuc tnh l nhng thng tin c th thay i c. 2. Thuc tnh truy cp Thuc tnh Gii hn truy cp public Khng hn ch. Nhng thnh vin c nh du public c th c dng bt k cc phng thc ca lp, bao gm c nhng lp khc. private Thnh vin trong lp c nh du private ch c dng cc phng thc ca lp ny m thi. Protected Thnh vin trong lp c nh du protected ch c dng cc phng thc ca lp ny; v cc phng thc ca lp dn xut t lp ny. Internal Thnh vin trong lp c nh du l internal c dng cc phng thc ca bt k lp no cng khi hp ng vi lp ny. protected internal Thnh vin trong lp c nh du l protected internal c dng cc phng thc ca lp ny; cc phng thc ca lp dn xut t lp ny; v cc phng thc ca bt k lp no trong cng khi hp ng vi lp ny. 3. Phng thc (Method) - Phng thc (method) chnh l cc hm (function) c to trong lp (class). - Tn ca phng thc thng c t theo tn ca hnh ng. 4. Tham s ca phng thc a) Khi nim: - Cc tham s theo sau tn phng thc v c bc bn trong du ngoc trn (). - Mi tham s phi khai bo km theo kiu d liu. - Trong C# c 2 dng truyn tham s: + Truyn tham chiu: dng thm t kha ref. + Truyn tham tr b) V d: * Truyn tham s cho phng thc theo kiu tham chiu public class Hoandoi { public void HoanVi(ref int a, ref int b) { int c = a ; a=b; b=c; } } Khi : khi gi hm HoanVi ta phi truyn tham s di dng tham chiu nh sau: HoanDoi s = new HoanDoi(); s.HoanVi(ref a, ref b); * Truyn tham s cho phng thc theo kiu tham tr public class HoanDoi { public void HoanVi(int a, int b) Lu hnh ni b Trang 51

{ int c = a ; a=b; b=c; } } 5. V d 7.2 * Khi to mt ng dng Windows Forms Application, lu vi tn l Vi Du 7.2 nh sau:

* Yu cu - Thit k form gm: lbl1, txta, lbl2, txtb, v cc button (xem hnh). - To cc class HoanDoi, trong class c hm HoanVi cho php hon v 2 gi tr s nguyn. - Nhp button Hon i s hon i 2 gi tr trong txta v txtb - Nhp button Xa s xa trng 2 TextBox v a con tr vo txta. - Nhp button Dng s dng chng trnh. * Hng dn - Thit k form nh yu cu. - Khai bo class: qua code, thm on code c kt qu nh sau public Form1() { InitializeComponent(); } public class HoanDoi { public void HoanVi(ref int a,ref int b) { int c = a ; a = b ; b = c ; } } - Nhp p vo button Hon i, thm vo on code: int a = int.Parse(this.txta.Text); int b = int.Parse(this.txtb.Text); HoanDoi s = new HoanDoi(); s.HoanVi(ref a, ref b); this.txta.Text = a.ToString(); this.txtb.Text = b.ToString(); Lu hnh ni b Trang 52

- Nhp p vo button Xa, thm vo on code: this.txta.ResetText(); this.txtb.ResetText(); this.txta.Focus(); - Nhp p vo button Dng, thm vo on code: Application.Exit();

Bi tpKhi to mt ng dng Windows Forms Application: 1. To mt class c tn l BAI_TAP_CLASS, c cc hm: - Hm TEN nhn vo mt chui ch h v tn, gi tr tr li ca hm l chui ch tn. - Hm NGTO nhn vo mt s nguyn n, gi tr tr li ca hm l true nu n l s nguyn t; l false nu n khng l s nguyn t. 2. Thit k form c: - TextBox txtHoTen: nhp h v tn. - TextBox txtn: nhp s nguyn n. - TextBox txtKQ: xut kt qu. - Button btnTEN: gi hm TEN x l chui h v tn, xut kt qu vo txtKQ. - Button btnNGTO: gi hm NGTO x l s nguyn n, xut kt qu vo txtKQ. - Button btnXoa: xa trng tt c cc TextBox v a con tr vo txtHoTen - Button btnDung: dng chng trnh.

-- oOo --

Lu hnh ni b

Trang 53

Chng 5: SQL SERVER 2008Bi 8: SQL SERVER 2008I. Tng quan v SQL 1. Khi nim SQL - SQL (Structured Query Language ngn ng hi c cu trc) l cng c s dng t chc, qun l v truy xut d liu c lu tr trong cc c s d liu. - SQL l mt h thng ngn ng bao gm tp cc cu lnh s dng tng tc vi c s d liu quan h. - SQL c s dng iu khin tt c cc chc nng m mt h qun tr c s d liu cung cp cho ngi dng bao gm: nh ngha d liu: SQL cung cp kh nng nh ngha cc c s d liu, cc cu trc lu tr v t chc d liu cng nh mi quan h gia cc thnh phn d liu. Truy xut v thao tc d liu: Vi SQL, ngi dng c th d dng thc hin cc thao tc truy xut, b sung, cp nht v loi b d liu trong cc c s d liu. iu khin truy cp: SQL c th c s dng cp pht v kim sot cc thao tc ca ngi s dng trn d liu, m bo s an ton cho c s d liu. m bo ton vn d liu: SQL nh ngha cc rng buc ton vn trong c s d liu nh m bo tnh hp l v chnh xc ca d liu trc cc thao tc cp nht cng nh cc li ca h thng. 2. Vai tr ca SQL - SQL khng phi l mt h qun tr c s d liu, do n khng th tn ti c lp. - SQL l mt phn ca h qun tr c s d liu, n xut hin trong cc h qun tr c s d liu vi vai tr ngn ng v l cng c giao tip gia ngi s dng v h qun tr c s d liu. - SQL c nhng vai tr nh sau: SQL l ngn ng hi c tnh tng tc: Ngi s dng c th d dng thng qua cc trnh tin ch gi cc yu cu di dng cc cu lnh SQL n c s d liu v nhn kt qu tr v t c s d liu. SQL l ngn ng lp trnh c s d liu: Cc lp trnh vin c th nhng cc cu lnh SQL vo trong cc ngn ng lp trnh xy dng nn cc chng trnh ng dng giao tip vi c s d liu. SQL l ngn ng qun tr c s d liu: Thng qua SQL, ngi qun tr c s d liu c th qun l c c s d liu, nh ngha cc cu trc lu tr d liu, iu khin truy cp c s d liu, ... SQL l ngn ng cho cc h thng khch/ch (client/server): Trong cc h thng c s d liu khch/ch, SQL c s dng nh l cng c giao tip gia cc trnh ng dng pha my khch vi my ch c s d liu. SQL l ngn ng truy cp d liu trn Internet: Cho n nay, hu ht cc my ch Web cng nh cc my ch trn Internet s dng SQL vi vai tr l ngn ng tng tc vi d liu trong cc c s d liu. SQL l ngn ng c s d liu phn tn: i vi cc h qun tr c s d liu phn tn, mi mt h thng s dng SQL giao tip vi cc h thng khc trn mng, gi v nhn cc yu cu truy xut d liu vi nhau. Lu hnh ni b Trang 54

SQL l ngn ng s dng cho cc cng giao tip c s d liu: Trong mt h thng mng my tnh vi nhiu h qun tr c s d liu khc nhau, SQL thng c s dng nh l mt chun ngn ng giao tip gia cc h qun tr c s d liu. II. Tng quan v c s d liu (CSDL) quan h 1. M hnh d liu quan h - CSDL quan h l mt CSDL trong tt c d liu c t chc trong cc bng (table) c mi quan h vi nhau. Mi bng (table) bao gm cc dng (record/bn ghi/b) v cc ct (field/trng/thuc tnh). - Tm li, mt CSDL bao gm nhiu bng (table) c mi quan h vi nhau (relationship). V d:

2. Bng (Table) Bng (table) bao gm cc yu t sau: - Tn ca bng: c xc nh duy nht. - Cu trc ca bng: tp hp cc ct (field/trng/thuc tnh). - D liu ca bng: tp hp cc dng (record/bn ghi/b) hin c trong bng. V d: Table DONVI

3. Kha chnh ca bng (Primary Key) - Mi bng phi c mt ct (hoc mt tp cc ct) m gi tr d liu ca n xc nh duy nht mt dng trong tp hp cc dng trong bng. - Mt ct (hoc mt tp cc ct) c tnh cht ny gi l kha chnh ca bng (Primary Key). V d: Table DONVI Lu hnh ni b Trang 55

(c kha chnh l MADONVI) 4. Mi quan h (Relationship) v kha ngoi (Foreign Key) - Mi quan h (Relationship) c th hin thng qua rng buc gi tr d liu xut hin bng ny phi c xut hin trc mt bng khc.

- Mt ct (hoc tp hp cc ct) (field/trng/thuc tnh) trong mt bng m gi tr ca n c xc nh t kha chnh (Primary Key) ca mt bng khc c gi l kha ngoi (Foreign Key). 5. S lc v cu lnh SQL Cu lnh Chc nng Thao tc d liu SELECT Truy xut d liu INSERT B sung d liu UPDATE Cp nht d liu DELETE Xa d liu TRUNCATE Xa ton b d liu trong bng nh ngha d liu CREATE TABLE To bng DROP TABLE Xa bng ALTER TABLE Sa cu trc bng CREATE FUNCTION To hm (do ngi s dng nh ngha) ALTER FUNCTION Sa i hm DROP FUNCTION Xa hm Lu hnh ni b Trang 56

CREATE TRIGGER ALTER TRIGGER DROP TRIGGER

To trigger Sa trigger Xa trigger

6. Quy tc s dng tn trong SQL - Trong cu lnh SQL, nu ta cn ch n mt bng do mt ngi dng khc s hu (hin nhin l phi c php) th tn ca bng phi c vit sau tn ca ngi s hu v phn cch vi tn ngi s hu bi du chm theo cng thc: tn_ngi_s_hu.tn_bng - Trong cu lnh SQL, nu c s dng t hai ct tr ln c cng tn trong cc bng khc nhau th bt buc phi ch nh thm tn bng trc tn ct; tn bng v tn ct c phn cch nhau bi du chm theo cng thc: tn_bng.tn_ct 7. Kiu d liu Tn kiu CHAR (n) NCHAR (n) VARCHAR (n) NVARCHAR (n) INTEGER INT TINYTINT SMALLINT BIGINT NUMERIC (p,s) DECIMAL (p,s) FLOAT REAL MONEY BIT DATETIME SMALLDATETIME BINARY VARBINARY IMAGE TEXT NTEXT

M t Kiu chui vi di c nh Kiu chui vi di c nh h tr UNICODE Kiu chui vi di chnh xc Kiu chui vi di chnh xc h tr UNICODE S nguyn c gi tr t -231 n 231 1 Nh kiu Integer S nguyn c gi tr t 0 n 255 S nguyn c gi tr t -215 n 215 1 S nguyn c gi tr t -263 n 263 1 Kiu s vi chnh xc c nh Tng t kiu Numeric S thc c gi tr t -1.79E+308 n 1.79E+308 S thc c gi tr t -3.40E + 38 n 3.40E + 38 Kiu tin t Kiu bit (c gi tr 0 hoc 1) Kiu ngy gi (chnh xc n phn trm ca giy) Kiu ngy gi (chnh xc n pht) D liu nh phn vi di c nh (ti a 8000 bytes) D liu nh phn vi di chnh xc (ti a 8000 bytes) D liu nh phn vi di chnh xc ( < >= Lu hnh ni b

ngha V / Hoc Bng Ln hn Nh hn Ln hn hoc bng Trang 57

!< c) Danh sch IN NOT IN d) Gii hn d liu BETWEEN NOT BETWEEN LIKE

Nh hn hoc bng Khc Khng ln hn Khng nh hn Nm trong danh sch Khng nm trong danh sch Gi_tr BETWEEN a AND b ngha l (a Gi_tr b) Gi_tr NOT BETWEEN a AND b ngha l (Gi_tr < a) AND (Gi_tr > b) M t khun dng d liu cn tm kim c s dng k t i din: % Chui k t bt k _ Mt k t bt k [] K t bt k trong gii hn c ch nh [^] K t bt k khng nm trong gii hn c ch nh

III. Table (Bng) * Quy tc khi vit cu lnh SQL: - Cc cu lnh SQL khng phn bit ch hoa v ch thng. Tuy nhin, d c nn vit hoa t kha trong mnh . - Cu lnh SQL c th vit trn mt dng hay nhiu dng. Nhng nn vit mi dng mt mnh . - Khng tch t kha trn nhiu dng, khng vit tt t kha. - Cu lnh SQL kt thc bng du chm phy (;) 1. To bng C php: CREATE TABLE tn_bng ( tn_ct thuc_tnh_ct cc_rng_buc [ , ... , tn_ct_n thuc_tnh_ct_n cc_rng_buc_ct_n ] [ , cc_rng_buc_trn_bng ] ) Trong : tn_bng Tn ca bng cn to (= , , !< + Gii hn: BETWEEN AND , NOT BETWEEN AND + Danh sch: IN , NOT IN + Khun dng: LIKE , NOT LIKE Vi cc k t i din: % , _ , [] , [^] + Cc gi tr cha bit: IS NULL , IS NOT NULL + Kt hp cc iu kin: AND , OR V d 9.1j: Cu lnh sau y cho bit HOTEN (h tn), DIACHI (a ch) v DIENTHOAI (in thoi) ca cc nhn vin c HSLUONG (h s lng) ln hn 1.92 SELECT hoten, diachi FROM nhanvien WHERE hsluong > 1.92 Lu hnh ni b Trang 67

V d 9.1k: Cu lnh sau y cho bit HOTEN (h tn), DIACHI (a ch) v DIENTHOAI (in thoi) ca cc nhn vin c HSLUONG (h s lng) trong khong 1.92 n 3.11 SELECT hoten, diachi FROM nhanvien WHERE hsluong BETWEEN 1.92 AND 3.11 V d 9.1l: Cu lnh sau y cho bit HOTEN (h tn), DIACHI (a ch) v DIENTHOAI (in thoi) ca cc nhn vin c HSLUONG (h s lng) l 1.86, 1.92, 2.11 SELECT hoten, diachi FROM nhanvien WHERE hsluong IN (1.86, 1.92, 2.11) * Hoc: SELECT hoten, diachi FROM nhanvien WHERE hsluong = 1.86 OR hsluong = 1.92 OR hsluong = 2.11 V d 9.1m: Cu lnh sau y cho bit thng tin ca nhn vin c tn l NAM. SELECT * FROM nhanvien WHERE hoten LIKE '%NAM' V d 9.1n: Cu lnh sau y cho bit thng tin ca nhn vin khng c in thoi. SELECT * FROM nhanvien WHERE dienthoai IS NULL 2. Thm d liu INSERT Cng dng: - Thm dng d liu (mu tin/record) vo bng. C php: INSERT INTO tn_bng [(danh_sch_ct)] VALUES(danh_sch_tr) V d 9.2a: Cu lnh sau y thm mt dng d liu vo bng DONVI INSERT INTO donvi VALUES('06', 'Phng CTCT-HSSV', '821460') V d 9.2b: Cu lnh sau y thm mt dng d liu vo bng NHANVIEN INSERT INTO nhanvien VALUES('NV02003', 'L Th Mai', '23/05/1972', NULL, '523312', 1.92, '02') V d 9.2c: Cu lnh sau y thm mt dng d liu vo bng NHANVIEN nhng ch in d liu vo mt s ct. INSERT INTO nhanvien(manv, hoten, diachi, madonvi) VALUES('NV05002', 'Nguyn Th Hnh Dung', '56 Trn Ph', '05') V d 9.2d: Thm d liu vo bng vi d liu ly t bng khc Cu lnh sau y thm d liu vo bng LUONG_NHANVIEN vi d liu ly t bng NHANVIEN. Lu hnh ni b Trang 68

INSERT INTO luong_nhanvien SELECT manv, hoten, hsluong*730000 FROM nhanvien 3. Cp nht d liu UPDATE Cng dng: - Cp nht d liu trong cc bng. C php: UPDATE tn_bng SET tn_ct = biu_thc [ , ... , tn_ct_k = biu_thc_k] [FROM danh_sch_bng] [WHERE iu_kin] V d 9.3a: Cu lnh sau y tng HSLUONG (h s lng) thm 0.2 cho cc nhn vin c MADONVI l 04. UPDATE nhanvien SET hsluong = hsluong + 0.2 WHERE madonvi = '04' V d 9.3b: Cu lnh sau y s cp nht gi tr cho field THANHTIEN (thnh tin) trong bng NHATKYBANHANG theo cng thc THANHTIEN = SOLUONG * DONGIA. UPDATE nhatkybanhang SET thanhtien = soluong * MATHANG.dongia FROM MATHANG WHERE nhatkybanhang.mahang = MATHANG.mahang 4. Xa d liu DELETE Cng dng: - xa d liu trong bng. C php: DELETE FROM tn_bng [FROM danh_sch_bng] [WHERE iu_kin] V d 9.4: Cu lnh sau y xo khi bng NHANVIEN nhng nhn vin lm ti n v c SODIENTHOAI (s in thoi) l '848484' DELETE FROM nhanvien FROM donvi WHERE nhanvien.madonvi = donvi.madonvi AND donvi.dienthoai = '848484' 5. Xa ton b d liu TRUNCATE Cng dng: - xa ton b d liu trong bng. C php: TRUNCATE TABLE tn_bng V d 9.5: Cu lnh sau xo ton b d liu trong bng LUONG_NHANVIEN DELETE FROM luong_nhanvien Lu hnh ni b Trang 69

Tng ng cu lnh TRUNCATE TABLE luong_nhanvien V. Mt s hm thng dng trong SQL Server 1. Hm ngy gi a. Hm DATEADD C php: DATEADD(datepart, number, date) Datepart: tham s ch nh thnh phn s c cng thm vo ngy date. DatePart Vit tt year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww hour hh minute mi, n second ss, s milisecond ms Cng dng: Hm tr v mt gi tr kiu DateTime bng cch cng thm mt khong gi tr l number vo ngy date c ch nh. b. Hm DATEDIFF C php: DATEDIFF(datepart, startdate, enddate) Cng dng: Hm tr v khong thi gian gia 2 gi tr kiu ngy startdate v enddate ty thuc vo datepart. V d: DateDiff(year, '3/10/2003', '6/15/2010') kt qu: 7 c. Hm DATEPART C php: DATEPART(datepart, date) Cng dng: Hm tr v mt s nguyn c trch ra t thnh phn c ch nh bi datepart trong gi tr ngy date. V d: DatePart(year, '6/15/2010') kt qu: 2010 d. Hm GETDATE C php: GETDATE() Cng dng: Hm tr v gi tr l ngy hin ti. e. Hm DAY, MONTH, YEAR C php: DAY(date) / MONTH(date) / YEAR(date) Cng dng: Hm tr v gi tr l ngy / thng / nm ca ngy date. V d: Day('6/15/2010') kt qu: 15 Month('6/15/2010') kt qu: 6 Lu hnh ni b Trang 70

Year('6/15/2010') kt qu: 2010 2. Hm chui a. Hm LEFT C php: LEFT(string, n) Cng dng: Hm trch t chui string n k t tnh t bn tri. b. Hm RIGHT C php: RIGHT(string, n) Cng dng: Hm trch t chui string n k t tnh t bn phi. c. Hm SUBSTRING C php: SUBSTRING(string, m, n) Cng dng: Hm trch t chui string n k t tnh t k t th m. d. Hm LTRIM C php: LTRIM(string) Cng dng: Hm ct b khong trng tha bn tri chui string. e. Hm RTRIM C php: RTRIM(string) Cng dng: Hm ct b khong trng tha bn phi chui string. f. Hm LEN C php: LEN(string) Cng dng: Hm tr v di ca chui string.

Thc hnh1. Khi ng SQL SERVER 2008: a. Start All programs Microsoft SQL Server 2008 SQL Server Management Studio b. Chng thc c. Chn Connect 2. ca s Object Explorer, click phi chut ln banhang v chn lnh New Query 3. ca s query, thc hin cc cu lnh trong cc V d trn.

-- oOO --

Lu hnh ni b

Trang 71

Chng 6: LP TRNH KT NI CSDL SQL SERVER 2008Bi 10-11: LP TRNH KT NI C S D LIU* Chun b: - Tn my c s dng (SERVERNAME) l PC-PC - Database c s dng (DATABASENAME) l QuanLyBanHang, gm c cc table: + Nhanvien + HoaDon + Sanpham + ChiTietHoaDon + Khachhang + ThanhPho - Vi quan h (Relationship) nh sau:

- S dng Visual Studio 2008 to mt project mi (Windows Forms Application) I. To kt ni - Vn chuyn d liu 1. Khai bo namespace s dng using System.Data.SqlClient; 2. Khai bo mc class // Chui kt ni string strConnectionString = "Data Source=SERVERNAME;Initial Catalog=DATABASENAME;Integrated Security=True"; // i tng kt ni SqlConnection conn = null; // i tng a d liu vo DataTable dtTABLENAME SqlDataAdapter daTABLENAME = null; // i tng hin th d liu ln Form DataTable dtTABLENAME = null; 3. Khai bo Form Load Lu hnh ni b Trang 72

// Khi ng kt ni conn = new SqlConnection(strConnectionString); // Vn chuyn d liu ln DataTable dtTABLENAME daTABLENAME = new SqlDataAdapter("SELECT * FROM TABLENAME",conn); dtTABLENAME = new DataTable(); daTABLENAME.Fill(dtTABLENAME); 4. Gii phng ti nguyn . Chuyn Form v ch Design View . ca s properties ca form ang chn, click Events . Nhp p ln s kin FormClosing . Vit code cho s kin ny nh sau: // Gii phng ti nguyn dtTABLENAME.Dispose(); dtTABLENAME = null; // Hy kt ni conn = null; II. a d liu ln cc i tng ListBox / ComboBox DataGridView 1. a d liu ln ListBox / ComboBox V d 10.1: Thit k form nh sau

(lstThanhPho, btnThoat) * Yu cu: . Khi Form load: a d liu t table ThanhPho ln ListBox (lstThanhPho), km by li. . Nhp vo Button Thot: dng chng trnh (c hin hp thoi hi p trc khi dng). * Hng dn: - Thit k form nh yu cu. - Khai bo namespace s dng: using System.Data.SqlClient; - mc class, khai bo: // Chui kt ni string strConnectionString = "Data Source=PC-PC;Initial Catalog=QuanLyBanHang;Integrated Security=True"; // i tng kt ni SqlConnection conn = null; // i tng a d liu vo DataTable dtThanhPho SqlDataAdapter daThanhPho = null; // i tng hin th d liu ln Form DataTable dtThanhPho = null; Lu hnh ni b Trang 73

- Form load: try { // Khi ng connection conn = new SqlConnection(strConnectionString); // Vn chuyn d liu ln DataTable dtThanhPho daThanhPho = new SqlDataAdapter("SELECT * FROM THANHPHO", conn); dtThanhPho = new DataTable(); dtThanhPho.Clear(); daThanhPho.Fill(dtThanhPho); // a d liu ln ListBox this.lstThanhPho.DataSource = dtThanhPho; this.lstThanhPho.DisplayMember = "TenThanhPho"; this.lstThanhPho.ValueMember = "ThanhPho"; } catch (SqlException) { MessageBox.Show("Khng ly c ni dung trong table THANHPHO. Li ri!!!"); } - FormClosing: // Gii phng ti nguyn dtThanhPho.Dispose(); dtThanhPho = null; // Hy kt ni conn = null; - Button Thot: // Khai bo bin traloi DialogResult traloi; // Hin hp thoi hi p traloi = MessageBox.Show("Chc khng?", "Tr li", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); // Kim tra c nhp chn nt Ok khng? if (traloi == DialogResult.OK)Application.Exit(); 2. a d liu ln DataGridView V d 10.2: Thit k form nh sau

Lu hnh ni b

Trang 74

(dgvKHACHHANG, btnThoat) * Yu cu: . Khi Form load: a d liu t table KhachHang ln DataGridView (dgvKHACHHANG), c by li. . Nhp vo Button Thot: dng chng trnh. * Hng dn: - Thit k form theo yu cu. - DataGridView c thuc tnh: + Name: dgvKHACHHANG + Nhp phi chut ln DataGridView chn Edit Columns + Trong hp thoi Edit Columns, nhp Add m hp thoi Add column v cc column (ct) theo danh sch sau: Name Type Header text DataPropertyName Width Ghi ch MaKH TextBox M KH MaKH 100 Frozen TenCty TextBox Tn Cty TenCty 250 DiaChi TextBox a ch DiaChi 200 ThanhPho TextBox Thnh Ph ThanhPho 100 DienThoai TextBox Ngy Nhn Hng DienThoai 100 Trong : TextBox: l DataGridViewTextBoxColumn CheckBox: l DataGridViewCheckBoxColumn ComboBox: l DataGridViewComboBoxColumn Thuc tnh DataPropertyName, Width iu chnh trong hp thoi Edit Column. - Khai bo namespace s dng: using System.Data.SqlClient; - mc class, khai bo: // Chui kt ni string strConnectionString = "Data Source=PC-PC;Initial Catalog=QuanLyBanHang;Integrated Security=True"; // i tng kt ni SqlConnection conn = null; // i tng a d liu vo DataTable dtKhachHang SqlDataAdapter daKhachHang = null; // i tng hin th d liu ln Form Lu hnh ni b Trang 75

DataTable dtKhachHang = null; - Form load: try { // Khi ng connection conn = new SqlConnection(strConnectionString); // Vn chuyn d liu ln DataTable dtKhachHang daKhachHang = new SqlDataAdapter("SELECT * FROM KHACHHANG", conn); dtKhachHang = new DataTable(); dtKhachHang.Clear(); daKhachHang.Fill(dtKhachHang); // a d liu ln DataGridView dgvKHACHHANG.DataSource = dtKhachHang; } catch (SqlException) { MessageBox.Show("Khng ly c ni dung trong table KHACHHANG. Li ri!!!"); } - FormClosing: // Gii phng ti nguyn dtKhachHang.Dispose(); dtKhachHang = null; // Hy kt ni conn = null; - Button Thot: // Khai bo bin traloi DialogResult traloi; // Hin hp thoi hi p traloi = MessageBox.Show("Chc khng?", "Tr li", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); // Kim tra c nhp chn nt Ok khng? if (traloi == DialogResult.OK)Application.Exit(); 3. a d liu vo ComboBox trong DataGridView V d 10.3: T V D 10.2, b sung button ReLoad (btnReLoad): load li ni dung ca table KhachHang vo DataGridView.

Lu hnh ni b

Trang 76

* Hng dn: - mc class, b sung on code v khai bo hm LoadData() nh sau: // i tng a d liu vo DataTable dtThanhPho SqlDataAdapter daThanhPho = null; // i tng hin th d liu ln Form DataTable dtThanhPho = null; void LoadData() { try { // Khi ng connection conn = new SqlConnection(strConnectionString); // Vn chuyn d liu vo DataTable dtThanhPho daThanhPho = new SqlDataAdapter("SELECT * FROM THANHPHO", conn); dtThanhPho = new DataTable(); dtThanhPho.Clear(); daThanhPho.Fill(dtThanhPho); // a d liu ln ComboBox trong DataGridView (dgvKHACHHANG.Columns["ThanhPho"] as DataGridViewComboBoxColumn).DataSource = dtThanhPho; (dgvKHACHHANG.Columns["ThanhPho"] as DataGridViewComboBoxColumn).DisplayMember = "TenThanhPho"; (dgvKHACHHANG.Columns["ThanhPho"] as DataGridViewComboBoxColumn).ValueMember = "ThanhPho"; // Vn chuyn d liu vo DataTable dtKhachHang daKhachHang = new SqlDataAdapter("SELECT * FROM KHACHHANG", conn); dtKhachHang = new DataTable(); dtKhachHang.Clear(); daKhachHang.Fill(dtKhachHang); // a d liu ln DataGridView Lu hnh ni b Trang 77

dgvKHACHHANG.DataSource = dtKhachHang; } catch (SqlException) { MessageBox.Show("Khng ly c ni dung trong table KHACHHANG. Li ri!!!"); } } - Form Load: b ni dung c, thay bng LoadData(); - ReLoad: Nhp p vo Button ReLoad, vit on code nh sau LoadData(); III. Cc thao tc trn d liu: Thm Sa - Xa 1. V d 10.4: T V d 10.3, b sung button sau Xa (btnXoa): xa record hin hnh ra khi table KhachHang.

* Hng dn: - Xa: Nhp p vo Button Xa, thc hin nh sau // M kt ni conn.Open(); try { // Thc hin lnh SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandType = CommandType.Text; // Ly th t record hin hnh int r = dgvKHACHHANG.CurrentCell.RowIndex; // Ly MaKH ca record hin hnh string strMAKH = dgvKHACHHANG.Rows[r].Cells[0].Value.ToString(); // Vit cu lnh SQL cmd.CommandText = System.String.Concat("Delete From KhachHang Where MaKH='" + strMAKH + "'"); cmd.CommandType = CommandType.Text; // Thc hin cu lnh SQL Lu hnh ni b Trang 78

cmd.ExecuteNonQuery(); // Cp nht li DataGridView LoadData(); // Thng bo MessageBox.Show(" xa xong!"); } catch (SqlException) { MessageBox.Show("Khng xa c. Li ri!!!"); } // ng kt ni conn.Close(); 2. V d 10.5: T V d 10.4, b sung cc i tng nh sau (xem hnh) - Panel, trong c + 4 TextBox: txtMaKH, txtTenCty, txtDiachi, txtDienthoai + 1 ComboBox: cbThanhpho - 4 Button: btnThem, btnSua, btnLuu, btnHuy * Yu cu: - Thit k khng cho ngi dng thao tc (Enabled = false) khi load form: + Panel + Cc Button Lu, Hy - iu chnh li thuc tnh (properties) ca DataGridView + AllowUserToAddRows = False + EditMode = EditProgrammatically - Khi Form load: a d liu t table KhachHang ln DataGridView (dgvKHACHHANG), c by li. - Nhp vo Button ReLoad: load li ni dung table KhachHang ln dgvKHACHHANG - Nhp vo Button Thm: + Xa trng cc i tng trong Panel. + Cho php nhp thng tin khch hng vo cc i tng trn Panel + Khng cho php thao tc trn cc Button: Thm, Sa, Xa, Thot. + Cho php thao tc trn cc Button: Lu, Hy. - Nhp vo Button Sa: + a thng tin ca khch hng ang c chn trong DataGridView ln Panel. + Cho php nhp / sa thng tin khch hng vo / trong cc i tng trn Panel. + Khng cho php thao tc trn cc Button: Thm, Sa, Xa, Thot. + Cho php thao tc trn cc Button: Lu, Hy. - Nhp vp Button Lu. + Insert / Update thng tin khch hng t Panel vo table KhachHang. + ReLoad li DataGridView - Nhp vp Button Hy: + Xa trng cc i tng trong Panel. + Khng cho php nhp thng tin khch hng vo cc i tng trn Panel

Lu hnh ni b

Trang 79

* Hng dn: - Thit k b sung Panel vi 4 TextBox v 1 ComboBox, Panel c Enabled = false - mc class, b sung khai bo bin nh sau: // Khai bo bin kim tra vic Thm hay Sa d liu bool Them; - Hm LoadData(): b sung di hng // a d liu ln DataGridView dgvKHACHHANG.DataSource = dtKhachHang; on code sau // Xa trng cc i tng trong Panel this.txtMaKH.ResetText(); this.txtTenCty.ResetText(); this.txtDiaChi.ResetText(); this.txtDienThoai.ResetText(); // Khng cho thao tc trn cc nt Lu / Hy this.btnLuu.Enabled = false; this.btnHuy.Enabled = false; this.panel.Enabled = false; // Cho thao tc trn cc nt Thm / Sa / Xa / Thot this.btnThem.Enabled = true; this.btnSua.Enabled = true; this.btnXoa.Enabled = true; this.btnThoat.Enabled = true; - Thm: nhp p vo button Thm, b sung on code // Kich hot bin Them Them = true; // Xa trng cc i tng trong Panel this.txtMaKH.ResetText(); this.txtTenCty.ResetText(); this.txtDiaChi.ResetText(); Lu hnh ni b Trang 80

this.txtDienThoai.ResetText(); // Cho thao tc trn cc nt Lu / Hy / Panel this.btnLuu.Enabled = true; this.btnHuy.Enabled = true; this.panel.Enabled = true; // Khng cho thao tc trn cc nt Thm / Xa / Thot this.btnThem.Enabled = false; this.btnSua.Enabled = false; this.btnXoa.Enabled = false; this.btnThoat.Enabled = false; // a d liu ln ComboBox this.cbThanhPho.DataSource = dtThanhPho; this.cbThanhPho.DisplayMember = "TenThanhPho"; this.cbThanhPho.ValueMember = "ThanhPho"; // a con tr n TextField txtMaKH this.txtMaKH.Focus();

- Sa: Nhp p vo button Sa, b sung on code // Kch hot bin Sa Them = false; // a d liu ln ComboBox this.cbThanhPho.DataSource = dtThanhPho; this.cbThanhPho.DisplayMember = "TenThanhPho"; this.cbThanhPho.ValueMember = "ThanhPho"; // Cho php thao tc trn Panel this.panel.Enabled = true; // Th t dng hin hnh int r = dgvKHACHHANG.CurrentCell.RowIndex; // Chuyn thng tin ln panel this.txtMaKH.Text = dgvKHACHHANG.Rows[r].Cells[0].Value.ToString(); Lu hnh ni b Trang 81

this.txtTenCty.Text = dgvKHACHHANG.Rows[r].Cells[1].Value.ToString(); this.txtDiaChi.Text = dgvKHACHHANG.Rows[r].Cells[2].Value.ToString(); this.cbThanhPho.SelectedValue = dgvKHACHHANG.Rows[r].Cells[3].Value.ToString(); this.txtDienThoai.Text = dgvKHACHHANG.Rows[r].Cells[4].Value.ToString(); // Cho thao tc trn cc nt Lu / Hy / Panel this.btnLuu.Enabled = true; this.btnHuy.Enabled = true; this.panel.Enabled = true; // Khng cho thao tc trn cc nt Thm / Xa / Thot this.btnThem.Enabled = false; this.btnSua.Enabled = false; this.btnXoa.Enabled = false; this.btnThoat.Enabled = false; // a con tr n TextField txtMaKH this.txtMaKH.Focus();

- Lu: Nhp p vo button Lu, b sung on code // M kt ni conn.Open(); // Thm d liu if (Them) { try { // Thc hin lnh SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; Lu hnh ni b Trang 82

cmd.CommandType = CommandType.Text; // Lnh Insert InTo cmd.CommandText = System.String.Concat("Insert Into KhachHang Values(" + "'" + this.txtMaKH.Text.ToString() + "','" + this.txtTenCty.Text.ToString() + "','" + this.txtDiaChi.Text.ToString() + "','" + this.cbThanhPho.SelectedValue.ToString() + "','" + this.txtDienThoai.Text.ToString() + "')"); cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); // Load li d liu trn DataGridView LoadData(); // Thng bo MessageBox.Show(" thm xong!"); } catch (SqlException) { MessageBox.Show("Khng thm c. Li ri!"); } } if (!Them) { try { // Thc hin lnh SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandType = CommandType.Text; // Th t dng hin hnh int r = dgvKHACHHANG.CurrentCell.RowIndex; // MaKH hin hnh string strMAKH = dgvKHACHHANG.Rows[r].Cells[0].Value.ToString(); // Cu lnh SQL cmd.CommandText = System.String.Concat("Update KhachHang Set TenCty='" + this.txtTenCty.Text.ToString() + "', DiaChi='" + this.txtDiaChi.Text.ToString() + "', ThanhPho='" + this.cbThanhPho.SelectedValue.ToString() + "', DienThoai='" + this.txtDienThoai.Text.ToString() + "' Where MaKH='" + strMAKH + "'"); // Cp nht cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); // Load li d liu trn DataGridView Lu hnh ni b Trang 83

LoadData(); // Thng bo MessageBox.Show(" sa xong!"); catch (SqlException) { MessageBox.Show("Khng sa c. Li ri!"); } } // ng kt ni conn.Close(); - Hy: Nhp p vo button Hy, b sung on code // Xa trng cc i tng trong Panel this.txtMaKH.ResetText(); this.txtTenCty.ResetText(); this.txtDiaChi.ResetText(); this.txtDienThoai.ResetText(); // Cho thao tc trn cc nt Thm / Sa / Xa / Thot this.btnThem.Enabled = true; this.btnSua.Enabled = true; this.btnXoa.Enabled = true; this.btnThoat.Enabled = true; // Khng cho thao tc trn cc nt Lu / Hy / Panel this.btnLuu.Enabled = false; this.btnHuy.Enabled = false; this.panel.Enabled = false;

Bi Tp1. Thit k form nh sau:

(cbSanpham, btnThoat) * Yu cu: . Form load: a d liu t table SanPham ln ComboBox (cbSanPham), km by li. . Nhp vo Button Thot: dng chng trnh (c hin hp thoi hi / p). 2. a d liu ln DataGridView (nh II. 2) cho cc table: NhanVien, SanPham. 3. Thit k form (nh III) thc hin cc thao tc: Thm, Sa, Xa cho cc table: HoaDon, ChiTietHoaDon. Lu : Cc field MaKH, MaNV, MaSP th hin di dng ComboBox.

-- oOo --

Lu hnh ni b

Trang 84

Chng 7: XY DNG NG DNGBi 12-13-14-15: NG DNG QUN L BN HNGI. Chun b: - Tn my c s dng (SERVERNAME) l PC-PC (thay i cho ng my ang dng!) - Database c s dng (DATABASENAME) l QuanLyBanHang, gm c cc table sau: + ThanhPho + Sanpham + Khachhang + Hoadon + Nhanvien + ChitietHoadon - Vi quan h (Relationship) nh sau:

- Khi ng SQL Server 2008, to mt DataBase mi c tn QuanLyBanHang, import d liu t file QuanLyBanHang.mdb - Khi ng Visual Studio 2008, to mt project mi (Windows Forms Application), lu vi tn QUANLYBANHANG II. S dng control: Cu 01: (Form1 Mn hnh chnh) Thit k nh sau

Lu hnh ni b

Trang 85

* Yu cu: Khi Form1 c thc hin s th hin mn hnh ng nhp h thng l Form2. * Hng dn: - mc class, khai bo hm frmLogin() nh sau: Form frm = new Form2(); frm.ShowDialog(); - Form Load: frmlogin(); Cu 02: (Form2 Mn hnh ng nhp - login) Vit chng trnh th hin mn hnh ng nhp (login) nh sau:

(txtUser, txtPass, btnDangNhap, btnThoat) * Yu cu: - Khi nhp vo nt ng nhp (btnDangNhap) s thc hin kim tra: + Nu txtUser = "teonv" v txtPass = "123" th chuyn sang Form1. + Ngc li th thng bo "Khng ng tn ngi dng / mt khu !!!" - Nhp button Thot th hin th thng bo "Chc khng? " + Nu chn Yes th kt thc chng trnh. + Ngc li th tr li mn hnh ng nhp h thng. * Hng dn: - ng nhp: Nhp p vo button btnDangnhap, g vo on code sau if ((this.txtUser.Text=="teonv")&&(this.txtPass.Text=="123")) this.Close(); else { MessageBox.Show("Khng ng tn ngi dng / mt khu !!!","Thng bo"); this.txtUser.Focus(); } - Thot: Nhp p vo button btnThoat, g vo on code sau DialogResult traloi; traloi = MessageBox.Show("Chc khng?", "Tr li", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if ( traloi == DialogResult.OK) Application.Exit();

Lu hnh ni b

Trang 86

Cu 03: (Form1 H thng Menu) Thm vo Form1, h thng menu nh sau

Lu hnh ni b

Trang 87

* Hng dn: S dng MenuStrip Cu 04: (Form1 Menu H thng) * Yu cu: Trn Form1, vit lnh cho menu h thng nh sau - Khi chn menu H thng \ ng nhp s thc hin ng nhp li h thng (Form2). - Khi chn menu H thng \ Thot s dng chng trnh. * Hng dn: - Menu H thng \ ng nhp: Nhp p vo menu H thng \ ng nhp, g vo on code sau: frmlogin(); - Menu H thng \ Thot: Nhp p vo menu H thng \ ng nhp, g vo on code sau: DialogResult traloi; traloi = MessageBox.Show("Chc khng?", "Tr li", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if ( traloi == DialogResult.OK) Application.Exit(); III. S dng DataBase: Cu 05: a) (Form1 Menu Danh mc) * Yu cu: Trn Form1, vit lnh cho menu danh mc nh sau - Vit hm XemDanhMuc(int intDanhMuc) thc hin m Form3 v gnForm3.Text = intDanhMuc. - Khi chn menu Xem Danh mc \ s thc hin gi hm XemDanhMuc(), vi l gi tr tng ng vi danh mc c chn. * Hng dn: - mc class, khai bo hm XemDanhMuc(int intDanhMuc) nh sau: // Hm xemm danh mc void XemDanhMuc(int intDanhMuc) { Form frm = new Form3(); frm.Text = intDanhMuc.ToString(); frm.ShowDialog(); } - Menu Xem Danh mc \ Danh mc Thnh Ph: Nhp p vo menu Xem Danh mc \ Danh mc Thnh Ph, g vo on code sau: XemDanhMuc(1); - Menu Xem Danh mc \ Danh mc Khch Hng: Nhp p vo menu Xem Danh mc \ Danh mc Khch Hng, g vo on code sau: XemDanhMuc(2); - Menu Xem Danh mc \ Danh mc Nhn Vin: Nhp p vo menu Xem Danh mc \ Danh mc Nhn Vin, g vo on code sau: XemDanhMuc(3); - Menu Xem Danh mc \ Danh mc Sn Phm: Nhp p vo menu Xem Danh mc \ Danh mc Sn Phm, g vo on code sau: XemDanhMuc(4); Lu hnh ni b Trang 88

- Menu Xem Danh mc \ Danh mc Ha n: Nhp p vo menu Xem Danh mc \ Danh mc Ha n, g vo on code sau: XemDanhMuc(5); - Menu Xem Danh mc \ Danh mc Chi Tit Ha n: Nhp p vo menu Xem Danh mc \ Danh mc Chi Tit Ha n, g vo on code sau: XemDanhMuc(6); b) (Form3) Thit k Form3 theo mu nh sau

(lblDanhMuc, dgvDANHMUC, btnTroVe) * Yu cu: Trn Form3 - Khi Form c load s hin th tn table (c chn) ln Label lblDanhMuc v ni dung ca table ny ln DataGridView dgvDANHMUC. - Khi nhp vo button Tr V s ng Form3. * Hng dn: - Khai bo namespace s dng: using System.Data.SqlClient; - mc class, khai bo nh sau: // Chui kt ni string strConnectionString = "Data Source=PC-PC;Initial Catalog=QuanLyBanHang;Integrated Security=True"; // i tng kt ni SqlConnection conn = null; // i tng a d liu vo DataTable dtTable SqlDataAdapter daTable = null; // i tng hin th d liu ln Form DataTable dtTable = null; - Form Load try { // Khi ng connection conn = new SqlConnection(strConnectionString); // X l danh mc int intDM = Convert.ToInt32(this.Text); switch (intDM) Lu hnh ni b Trang 89

{ case 1: lblDM.Text = "Danh Mc Thnh Ph"; daTable = new SqlDataAdapter("SELECT ThanhPho, TenThanhPho FROM THANHPHO", conn); break; case 2: lblDM.Text = "Danh Mc Khch Hng"; daTable = new SqlDataAdapter("SELECT MaKH, TenCTy FROM KHACHHANG", conn); break; case 3: lblDM.Text = "Danh Mc Nhn Vin"; daTable = new SqlDataAdapter("SELECT MaNV, Ho, Ten FROM NHANVIEN", conn); break; case 4: lblDM.Text = "Danh Mc Sn Phm"; daTable = new SqlDataAdapter("SELECT MaSP, TenSP, DonViTinh, DonGia FROM SANPHAM", conn); break; case 5: lblDM.Text = "Danh Mc Ha n"; daTable = new SqlDataAdapter("SELECT MaHD, MaKH, MaNV FROM HOADON", conn); break; case 6: lblDM.Text = "Danh Mc Chi Tit Ha n"; daTable = new SqlDataAdapter("SELECT * FROM CHITIETHOADON", conn); break; default: break; } // Vn chuyn d liu ln DataTable dtTable dtTable = new DataTable(); dtTable.Clear(); daTable.Fill(dtTable); // a d liu ln DataGridView dgvDANHMUC.DataSource = dtTable; // Thay i rng ct dgvDANHMUC.AutoResizeColumns(); } catch (SqlException) { MessageBox.Show("Khng ly c ni dung trong table. Li ri!!!"); Lu hnh ni b Trang 90

} } - Tr V: Nhp p vo button Tr V, thm vo on code sau this.Close(); Cu 06: (Form4 Menu Qun l danh mc n \ Danh mc Thnh Ph ) * Yu cu: - Trn Form1: khi chn menu Qun l danh mc n \ Danh mc Thnh Ph s m Form4. - Trn Form4: Thit k nh sau:

(panel, txtThanhPho, txtTenThanhPho, dgvTHANHPHO, btnReLoad, btnThem, btnSua, btnXoa, btnLuu, btnHuyBo, btnTroVe) * Hng dn: a) (Form1 Menu Qun l danh mc n) - Menu Qun l danh mc n \ Danh mc Thnh Ph: Nhp p vo menu Qun l danh mc n \ Danh mc Thnh Ph, g vo on code