BÀI TẬP WINDOWS FORM

Tuần 1
Bài Tập 1.1
Hãy thiết kế giao diện một form như sau: lblHoVaTen

lblHoLot

txtHoLot

txtTen lblTen

btnHoLot

Viết lệnh để chương trình hoạt động như sau: • • • • • Nhấn vào button btnHolot thì gán nội dung của txtHolot cho lblHolot (lblHolot.Text = txtHolot.text) Nhấn vào button cmdTen thì gán nội dung của txtTen cho lblTen (lblTen.Text = txtTen.text) Nhấn vào button btnHoVaTen thì gán nội dung của txtHolot cộng với txtTen cho lblHoVaTen lblHoVaTen.Text = txtHolot.text + “ “ + txtTen.Text) Nhấn double click vào lblHoVaTen thì nội dung của lblHoVaTen bị xoá Nhấn vào btnKetThuc thi đóng chương trình (this.Close() hoặc Application.Exit())

Bài tập 1.2
Thêm vào bài tập 1 với các yêu cầu sau: Nội dung của txtHoLot và txtTen được thể hiện ngay trên lblHoLot và LblTen khi user nhập dữ liệu vào txtHoLot hay txtTen (gợi ý : viết lệnh cho sự kiện TextChanged của txtHoLot va txtTen)

Bài Tập 1.3

txtHuongDan

picOn picOff

lblHuongDan btnThoat

Yêu cầu: 1. Thiết kế phải kéo đối tược tooltip vào form (nó hiện phần tray, khay phía duới form xem hình) thì mới tạo tooltip được. 2. Khi chương trình chay lện a. Hiện tên người hướngdẫn mặc định vào ô người hướng dẫn (tùy ý họ tên sinh viên) hướng dẫn viết trong formload hặc trong design. private void FrmLightSwitcher_Load(object sender, EventArgs e) { txtnguoihuongdan.Text = "Nguyễn Văn Tuấn"; lblhuongdan.Text = "Click the light to turn off" + txtnguoihuongdan.Text; } b. Hình đèn picOn (hình đèn mở) được hiện hướng dẫn hiệu chỉnh property trong design. c. Ô hướng dẫn là “Nếu nhấn vào tôi thì đèn tắt + giá trị ô người hướng dẫn” hướng dẫn xem đoạn code trên. d. Nếu đưa chuột vào hình đèn thì hiện tooltip là “Nhấn tôi thì tắt” cho đèn mở và ngược lại cho đèn tắt hướng dẫn cách làm hiệu chỉnh trong phần design. 3. Nếu nhấn vào đèn picOn thì: a. picOn ẩn đi và hiện hình đèn picOff b. Đồng thời ô Hướng dẫn hiện “Nhấn tôi thì mở + giá trị ô người hướng dẫn” hướng dẫn cách làm viết trong sự kiện đèn chọn. private void picmo_Click(object sender, EventArgs e) { picmo.Visible = false;// công viêc 1 pictat.Visible = true; // công viêc 1 lblhuongdan.Text = "Click the light to turn on." + " " + txtnguoihuongdan.Text; // công việc 2 } 4. Nhấn nút thoát hoặc Esc thì thoát chương trình. 5. Khi đưa chuột vảo hình thì hiện lên Tooltip “Click me” (Xem hình)

6. Khi chương trình đã chạy thì hiệu chỉnh sao cho hai hỉnh đè lên nhau và có size như nhau. 7. chạy chượng trình cho hình sau:

1 Thiết kế form như hình bên lblDisplay picRain Yêu cầu: Khi form được load thì txtName được focus. Nếu nhấn vào nút Exit hoặc phím Esc thì kết thúc chương trình . Nếu user nhấn chuột vào Option khác thì ẩn image trước đi và hiện image tương ứng. để user nhập tên vào và 4 image tương ứng được ẩn đi Khi đã nhập text vào txtName mà user click chuột hoặc dùng phím nóng vào các option tương ứng thì thông tin trong lblDisplay là một lời khuyên tự bạn cho và cộng thêm text trong txtName.Tuần 2 Bài tập 2. đồng thời hiện image tương ứng.

2 txtName btnDisplay txtMessa ge chkVisible radRed btnClear radGreen btnExit lblMessage Viết lệnh để chương trình hoạt động như sau: • Khi form vừa load lên thì: picSmall picBig  con nháy hiện tại vị trí ô Name  Hình CDRom lớn hiện ngược lại hình nhỏ ẩn. Hướng dẫn: hiệu chỉnh property Visible của picSmall thành false (trong lúc thiết kế)  Đưa chụôt vào hình CDRom (lớn.Bài Tập 2. nhỏ) hiện lên tooltip “Click Me” • Hiệu chỉnh TabIndex sao cho hợp lý (Tham khảo hình vào Menu View\Tab Order) .

txtName.Clear().Text = txtName.Clear ().Close(). picSmall.ForeColor = Color. • • • • • Nhấn vào RadioButton (Red. Ần hiện Message (lblMessage) phụ thuộc vào giá trị của Check box (chkVisible) Hướng dẫn: lblMessage. Green …) thì đổi màu chữ trong ô Message thành màu tương ứng. Click chuột vào hình CDRom nào thì hình đó ẩn đi và hiện hình CDRom khác lên Hướng dẫn: picBig.Visible = false.3 . Nhấn vào Button Clear thì xóa nội dung trong ô Name và Message Hướng dẫn: txtMessage.Visible = true.: Nhấn vào Button Exit hoặc phím Esc thi đóng chương trình This.Text + " : " + txtMessage.Checked.Text. Hướng dẫn: lblMessage. • Khi chuơng trình chạy hòan chỉnh hãy hiệu chỉnh hai hình CDRom chồng lên nhau sao cho đồng tâm (hướng dẫn chỉnh đồng tâm qua thanh toolbar) Bài Tập 2.Red.• Nhấn vào Button Display hoặc phím Enter thì gán nội dung của ô Name và Message cho Label Message (lblMessage) Hướng dẫn: lblMessage.Visible = chkVisible.

Khi gõ tên vào ô Nhập tên (gõ ký tự nào thì ô lập trình bởi chạy song song cùng giá trị trong ô nhập tên) Hướng dẫn viết trong sự kiện txtNhapTen_TextChanged(.Font.Font.Bold). //??? Tương tự **** . b. EventArgs e) { lblLapTrinh. 2. EventArgs e) { lblLapTrinh.Font = new Font(lblLapTrinh. lblLapTrinh. Nhấn các CheckBox chữ đậm. } 5.Name..lblNhapten chkBold radGreen lblLapTrinh btnThoat Yêu cầu 1.Style ^ FontStyle. khi Formload. Nhấn Radiobutton Red. } .Red. lblLapTrinh.Text } 3. private void chkdam_CheckedChanged(object sender. Radiobutton Red chon mặc định (gợi ý viết trong sự kiện form_Load).ForeColor = Color. Green. txtNhapTen.Size. 4.. thì đổi màu chữ trong ô Lập trình bởi và ô nhập tên có màu tương ứng với Radiobutton phù hợp.Red. a. Nhấn nút thoát hoặc Esc thì thoát chương trình.Font.) private void txtNhapTen_TextChanged(object sender. Con trỏ hiện Focus ngay tại ô Nhập tện. nghiêng… thì đổi font chữ trong ô Lập trình bởi và ô nhập tên tương ứng.ForeColor = Color. EventArgs e) { lblLapTrinh. private void raddo_CheckedChanged(object sender.Text = txtNhapTen.

nếu nhấn chuột vào cdrom02.Bài tập 2.Name.…. Bạn nhớ thiết kế để có thể thực hiện phím nóng) Nếu nhấn vào checbox Bold. Italic.ForeColor=Color. FontStyle.ico.ico thì ẩn nó đi và hiện cdrom02. lblmessage. lblmessage. HD: Xử lý sự kiện CheckChanged của checkbox) Nếu nhấn vào nút Display thì lấy thông tin của text box tên bạn cộng với textbox lới nhắn gán vào lblmesssage (bạn nhớ cộng thêm khoảng trắng hoặc xuống dòng để tách tên và lời nhắn) Nếu nhấn vào nút Clear thì xoá text trong lblmessage.4 Thiết kế form như hình dưới đây.Checked) lblmessage. else lblmessage.Regular). .Font. Underline thì thay đổi text trong lblmessage tương ứng (Bạn nhớ thiết kế để có thể thưc hiện phím nóng.Name.Size.Font.Font = new Font(lblmessage. FontStyle.Font. Yêu cầu: Nhập tên của bạn và nhập lời nhắn vào text box sau đó thực hiện các nút chức năng sau: • • • • • • Nếu nhấn vào đĩa cdrom01.Font = new Font(lblmessage.ico thì làm ngược lại (chú ý trong khi thiết kế bạn phải chọn thuộc tính SizeMode=Stretch) Nếu chọn vào option nào thì lblmessage đổi thành màu tương ứng đó (gợi ý : lblmessage.Size.Bold). hộp text name và hộp text lới nhắn.Font. Nếu nhấn enter thì lấy thông tin của text box tên bạn cộng với textbox lới nhắn gán vào lblmesssage (bạn nhớ cộng thêm khoảng trắng hoặc xuống dòng để tách tên và lời nhắn) (AcceptButton = nút Display) Nếu nhấn Esc thì đóng ứng dụng (CancelButton = nút Exit) • HD: Xử lý sự kiện CheckChanged của checkbox: if (chkBold.. đồng thời rời con nháy về hôp text name.

2 Thiết kế form thực hiện các phép toán như sau: Bài Tập 3.3 1. Hiệu chỉnh sao cho có dạng như hình phí dưới bằng cách hiệu chỉnh property Oraintation thành Horizontal của đối tượng Splitcontainer. . Bài Tập 3.1 Thiết kế Form cho phép thực hiện cộng hai số hạng và mở rộng 4 phép toán. Thiết kết form bằng cách tách form ra làm 2 2.Tuần 3_Biến Bài Tập 3.

Thiết kế và hiệu chỉnh các control như hình sao cho khi chạy chương trình mà co dãn size của form thì các button co dãn theo (Xem hình).3. Riêng button thoát thì hiệu chỉnh qua property Doc là “ Button ” . Tách Panel1 làm hai sao cho như hình Kéo vào panel1 4.

decKetQua = Convert. intSoA = int. private void btnChia_Click(object sender. Bài Tập 3.Text).Parse(txtB. intSoB = int. nhân các bạn tự làm. EventArgs e) { int intSoA. Double decKetQua. Gợi ý: + Công.ToString().Parse(txtA.ToDouble(intSoB).5. + Chia có thể có số lẻ bạn phải khai báo kiểu cho chính xác.Text = decKetQua. trừ. Viết lệnh cho các nút lệnh tượng ứng và xuất kết quả vào ô kết quả. Hiệu chỉnh vị trí Tabindex sao cho phợp lý 6.5 . Nấn phím Esc thóat chương trình và nhấn phím Enter tương đương nhấn nút Hiệ u Chỉ nh A+B.Text). intSoB. } 7. lblKQ.4 Bài Tập 3.ToDouble(intSoA) / Convert.

tham khảo hình . 3) Nhấn Calculate hoặc Enter thì tính và hiện thông tin lên các ô tương ứng (sinh vien co the xem demo tren blog http://thangdhcn. Ghi chú: sử dụng biến toàn cục và hằng số cho hợp lý.com mục của từng lớp) 4) Nhấn vào Exit hoặc Esc thì thoát chương trình.Yêu cầu: 1) Sinh viên tự thiết kế các đối tượng trên form cho phù hợp 2) Thiết đặt TabIndex cho hợp lý.wordpress.

Tuần 4_Cấu trúc điều khiển (If…Else. Switch…Case) Bài Tập 4.1 Thiết kế Form cho phép thực hiện Giải phương trình bậc I. .

Giả sử chỉ nhập số.Bài Tập 4. có thể âm .3 Thiết kết form như sau. Bài tập 4.2 Thiết kế Form cho phép thực hiện Giải phương trình bậc II.

KeyChar) kiểm tra phíp ConTrol như Backspace. KeyPressEventArgs e) { //char.IsControl(e.// ép không nhận ký tự gõ vào } 4.KeyChar) kiểm tra có phải số không //char.Handled = true.IsDigit(e.Yêu cầu: 1. // e.KeyChar) == false && e. Viết code xong thì phải thu nhỏ form như hình phía dưới.KeyChar !='-') e. Ở đây ta chon : private void txtHeA_KeyPress(object sender.KeyChar !='-' cho phép nhập dấu trừ (dấu âm) if (char. Hướng dẫn vào cửa sổ Properties chọn biểu tượng Events tìm tới Event muốn bắt và chọn double click. Huớng dẫn set TabIndex.IsDigit(e. Khi form load thì group phương trình bậc 1 ẩn đi. 3. Nhấn nút giải Hướng dẫn các giải. chồng hai group bậc 1 và bậc 1 lên. Khống chế các ô nhập hệ số chỉ được nhập số.KeyChar) == false && char. Nhấn nút giải mới xóa hết thông tin và di chuyển con nháy về ô Hệ A (dùng Focus) 5. Vào Menu View->TabOrder 2. Thiết kế và hiệu chỉnh TabIndex cho hợp lý ví dụ xem hình.IsControl(e.. If( A!=0) Delta= B*B+4A*C if (Delta>0) { X1=?? X2=?? } Else if(Delta==0) { X1=?? } Else // các bạn hiệu là Delta<0 . Shifh. AX 2+BX+C=0.

. int C) { string strKQua="".Visible= true . txtHeB. Xem hình private void btnMoi_Click(object sender. int B.Text = "". EventArgs e) { txtHeA.PTVo nghiệm a) Nếu đúng các hệ số thì giải và đưa kết quả tương ứng ra Xem hình b) Nếu không đúng (thiếu hệ số A=0) hiện thông tin group cho phương trình bậc 1 và phải gán giá trị đã nhập cho các hệ trong phương trình bậc nhất hợp lý.Clear(). } string GiaiBac2(int A.Clear(). grpBac2.Visible = false. grpBac1. txtHeC. lblketqua.Clear().

if (A == 0) if (B == 0)//0x+0=0 strKQua = "Phuong trinh co vo so nghiem". EventArgs e) { try { int inta. } else// hieu denta<0 { strKQua = "PT vô nghiệm". int B) { // Ax+B=0 string strKQua = "". dblx2 = ((double)(-B) . if ((txtHeA.ToDouble(-B) / A. 2) .Sqrt(dblDenTa )) / (2 * (double)A).Text != "")) { inta = Convert. strKQua = "PT có nghiệm kép:\n" + "x1 = x2 = " + dblx1.ToString() + "\n" + "x2 = " + dblx2. dblx2. } return strKQua. .Text != "") && (txtHeC.Pow((double)B. } return strKQua.Text).ToString(). } string GiaiBac1(int A. intb.Sqrt(dblDenTa )) / (2 * (double)A). intc. dblDenTa = Math.Text != "") && (txtHeB. else { Double ketqua = Convert. strKQua = "PT có 2 nghiệm phân biệt:\n" + "x1 = " + dblx1.dblx1.Math.ToString().double dblDenTa . else //0x+B=0 strKQua = "Phuong trinh vo nghiem ".ToString().ToInt32(txtHeA. } private void btnGiai_Click(object sender. if (dblDenTa > 0) { dblx1 = ((double)(-B) + Math.4 * A * C. } else if (dblDenTa == 0) { dblx1 = (double)(-B) / (2 * (double)A). strKQua ="Phuong trinh co nghiem la x = " + ketqua.

OK.4 Thiết kế Form cho phép thực hiện Tính tiền tiêu thụ điện. if (inta != 0) { grpKetQuaPT. MessageBoxButtons. } } catch (FormatException a) { MessageBox.Text = intc.ToInt32(txtHeB. } } Hướng dẫn xưống dòng qua “\n” ví dụ strkq = "PT có 2 nghiệm phân biệt:\n" + "x1 = " + dblx1.Show("Bạn nhập thiếu thông tin".Text). "Thông báo".ToString ().Text = GiaiBac2(inta.Text = GiaiBac1(intb. txtB1.Text).ToString() + "\n" + "x2 = " + dblx2.intb = Convert.Visible = false.Message). Nhấp phím Esc tương đương nút thoát Bài tập 4. intb. } else if (inta == 0) { grpBac1. grpBac2.Visible = true.Text = "Nghiệm PT bậc 2".ToString().Button1).Text = "Nhập phương trình bậc nhất". intc).Text = intb. MessageBoxDefaultButton. txtA1.Show(a. . 7.ToString(). } else MessageBox.Text = "Nghiệm PT bậc 1". 6. Nhấn phíp Enter tương đương nút giải.Error.ToInt32(txtHeC. lblketqua. intc). grpBac1. MessageBoxIcon. lblketqua. grpKetQuaPT. intc = Convert.

5 Bài tập 4.6 Thiết kế Form cho phép thực hiện các phép tính của một máy tính đơn giản.Bài Tập 4.7 . Bài Tập 4.

dectiencuoc.tienthuong . [0. Các hộp chứa chữ số từ trái qua phải có tên như sau: lbl1. [0. lbl3. tiền của người chơi cũng phải có 100 đồng .10] 3) Kết quả nhận được là: • Nếu kết quả của lbl1 = 7 thì o Hiện tiền thưởng qua messagebox o số tiền được thưởng là 100 +50% số tiền cược đang có trong máy mdectienmay = mdectienmay . lbl2. 8].tienthuong . so2.Viết chương trình cho trò chơi số 7 may mắn. mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc. o Số tiền máy Tham khảo : tienthuong = 30 + (dectiencuoc * 10) / 100.dectiencuoc o Số tiền người chơi = tiền người chơi+ tienthuong + dectiencuoc. so3 phát sinh giá trị ngẫu nhiên lần lượt trong khoang [0.tienthuong . Yêu cầu: 1) Khi chương trình bắt đầu chạy thì số tiền có trong máy là 100 đồng. 7]. Thết kế giao diện xem hình. Nngười chơi phải bỏ vào tiền cược bao nhiêu (số tiền trong máy tăng theo số tiền cược đồng còn tiền người chơi giảm đi theo số tiền cược) b. . mdectienmay = mdectienmay . 2) Mỗi lần quay số a.dectiencuoc o Số tiền người chơi = tiền người chơi+ tienthuong + dectiencuoc. • Nếu kết quả của lbl2 = 7 thì o số tiền được thưởng là =30 +10% số tiền cược đang có trong máy mdectienmay = mdectienmay .Giá trị trong các hộp số được tạo bằng giá trị ngẫu nhiên so1. mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc. o Số tiền máy Tham khảo : tienthuong = 100 + (dectiencuoc * 50) / 100.

so2 = ran. lbl3.Next(0. mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc.dectiencuoc.wordpress. MessageBox.com/ » Khi nút Game mới được click (bắt đầu cho một người chơi khác) thì thiết lập lại như ban đầu Quay số ngẫu nhiên : int so1.Show("Số tiền bạn nhận đc :\nTiền thưởng :" + tienthuong).ToString(). Khi trúng thưởng thì số tiền thưởng được cộng dồn trong trường hợp trúng nhiều số 7và sẽ hiện lên màn hình qua messagebox cho người chơi biết số tiền thưởng mà họ đang có. Để tạo cảm giác quay số nhanh rồi chậm dần dùng time với Interval tăng dần timer1. mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc.Next(0. so2. timer1.Text = so2. 8).tienthuong . so3. decimal tienthuong.mdectienmay = mdectienmay .Interval += 10.ToString().Stop().Next(0.dectiencuoc .Text = so3. lbl2.tienthuong .dectiencuoc . so3 = ran.ToString().tienthuong .Interval >= 200) { timer1. if (so1 == 7) { tienthuong = 100 + (dectiencuoc * 50) / 100. Chi tiết tham khảo chương trình demo trên « http://thangdhcn. } if (so2 == 7) { . Sau đó cập nhật lại tiền trên form (tiền máy. so1 = ran. 7).tienthuong .dectiencuoc Tham khảo : tienthuong = 10 + (dectiencuoc * 10) / 100.Interval += 10. • Nếu kết quả của lbl3 = 7 thì o số tiền được thưởng là =10 +10% số tiền cược đang có trong máy o Số tiền người chơi = tiền người chơi+ tienthuong + dectiencuoc. o Số tiền máy mdectienmay = mdectienmay . mdectienmay = mdectienmay .Text = so1. mdectienmay = mdectienmay . Random ran = new Random(). lbl1. if (timer1. 9). tiền người chơi tương ứng).

EventArgs e) { dectiencuoc = Convert. "Thông Báo").ToDecimal(txttiencuoc. lbltiennguoichoi. decimal mdectiennguoichoi = 100.tienthuong .Text = mdectienmay.Show("Số tiền bạn nhận đc :\nTiền thưởng :" + tienthuong).Interval = 10.ToString().Interval = 10.Enabled = true. } lbltienmay. timer1. mdectienmay = mdectienmay . mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc. MessageBox. lbltiennguoichoi. } lbltienmay.Stop().Text = mdectiennguoichoi.Text).Text = mdectienmay.Start().Text = mdectiennguoichoi. } if (so3 == 7) { tienthuong = 10 + (dectiencuoc * 10) / 100. code toàn bài sinh viên chỉ xem tham khảo phài tư viết code không được copy hay gõ y như hướng dẫn decimal mdectienmay = 100.ToString().Show("Số tiền bạn nhận đc :\nTiền thưởng :" + tienthuong).Enabled = true. EventArgs e) { .tienthuong = 30 + (dectiencuoc * 10) / 100.Show("Bạn không đủ tiền chơi". decimal dectiencuoc. if (mdectiennguoichoi >= dectiencuoc) { mdectienmay += dectiencuoc. btnchoilai. } private void timer1_Tick(object sender. MessageBox. } else { MessageBox. mdectienmay = mdectienmay .tienthuong .dectiencuoc. private void btnquayso_Click(object sender.dectiencuoc. timer1. timer1. btnquayso.ToString(). mdectiennguoichoi -= dectiencuoc.ToString(). mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc. timer1.

so2 = ran.Interval += 10. lbl1.Text).tienthuong . decimal tienthuong.Next(0.Interval >= 200) { timer1.ToString().Text = so3.Text = mdectiennguoichoi. Random ran = new Random(). int so1.Next(0. 8).Text = so2.Text = mdectienmay. EventArgs e) { mdectiennguoichoi = 100. 9). . } } private void btnchoilai_Click(object sender. } lbltienmay. if (timer1. so3. mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc.Show("Số tiền bạn nhận đc :\nTiền thưởng :" + tienthuong).Show("Số tiền bạn nhận đc :\nTiền thưởng :" + tienthuong).dectiencuoc.tienthuong .Stop(). if (so1 == 7) { tienthuong = 100 + (dectiencuoc * 50) / 100. mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc. MessageBox. timer1. mdectienmay = mdectienmay .ToString(). lbl3. } if (so3 == 7) { tienthuong = 10 + (dectiencuoc * 10) / 100. 7).Show("Số tiền bạn nhận đc :\nTiền thưởng :" + tienthuong). mdectienmay = 100. lbl2.dectiencuoc. mdectienmay = mdectienmay .Next(0.dectiencuoc = Convert.ToString(). mdectienmay = mdectienmay .ToString(). MessageBox. } if (so2 == 7) { tienthuong = 30 + (dectiencuoc * 10) / 100.tienthuong . so2. so1 = ran.ToString(). MessageBox.Text = so1. mdectiennguoichoi = mdectiennguoichoi + tienthuong + dectiencuoc. so3 = ran.dectiencuoc. lbltiennguoichoi.ToDecimal(txttiencuoc.

lbl1.Text = "7".ToString(). } private void FRMtre_Load(object sender.IsDigit(e.Button1). EventArgs e) { lbltienmay. MessageBoxButtons. MessageBoxIcon. } private void btnthoat_Click(object sender.Handled = true. txttiencuoc. MessageBoxDefaultButton.ToString().IsControl(e.Clear().ToString().ToString(). } } Hình tham khảo: . EventArgs e) { this. lbl3.lbltienmay. KeyPressEventArgs e) { if (char.Text = mdectiennguoichoi.KeyChar) == false) e. FormClosingEventArgs e) { DialogResult hoi. lbltiennguoichoi.Text = mdectiennguoichoi.Text = mdectienmay. if (hoi == DialogResult.Cancel = true. } private void FRMtre_FormClosing(object sender.Text = "7". lbl2. } private void txttiencuoc_KeyPress(object sender. lbltiennguoichoi.Text = "7". "Thông báo thoát".No) e.Show("Bạn có muốn thoát không?".KeyChar) == false && char.Question. hoi = MessageBox.Text = mdectienmay.YesNo.Close().

8 Bài tập cấu trúc Switch Case Thiết kế form (xem hình) Số phải canh lề trái Ta có bảng quy luật: 0 1 Canh Tan Than Dau 2 3 Nham Quy Tuat Hoi 4 5 Giap At Ti Suu 6 7 Binh Din h Dan Meo 8 9 Mau Ky Thin Ti 10 11 Can Chi Ngo Mui Yêu cầu: 1) Nhấn nút xem thì hiện năm tương ứng qua các con giáp xem hình .Bài Tập 4.

case 1: strCan = "Tân".Now).ToShortDateString().Handled = true.. //Convert.Text = Convert.Now). } 2) Khống chế ô năm chỉ được nhập số private void txtnhap_KeyPress(object sender.Hướng dẫn: Nhận thấy. 5) StatusTrip hiện ngày tháng hiện tại và tên programmer gợi ý: statusStrip1.ToDateTime(DateTime. break. …. KeyPressEventArgs e) { if ((char.Items[0].ToString(DateTime.KeyChar) == false) && (char. .IsDigit(e. Can = Năm %10 lấy dư Chi= Năm %12 lấy dư Canchi tương ứng = Can + chi Yêu cầu viết hàm trả về chuỗi can chi khi biết số năm.IsControl(e. switch (intNamDuong % 10) { case 0: strCan = "Canh". break. } 3) Nhấn phím Enter tương đương nhấn nút xem và phím Esc tương đương nút thóat 4) Hệ thống menu tương ứng các chức năng trên form.KeyChar) == false)) e.

• Nếu ấn Esc hoặc click vào “Kết thúc” thì dừng chương trình Bài Tập 5. Việc in các ước số lên màn hình được thực hiện bởi một Sub.1 Viết một chương trình theo yêu cầu thiết kế sau: Bài Tập 5.3 (Method) Viết một chương trình theo yêu cầu thiết kế sau .2 Viết một chương trình theo yêu cầu thiết kế sau: Cho phép người sử dụng nhập một số nguyên. sẽ nhận số nguyên cần tìm các ước số.Tuần 5 _ Vòng lặp – Phương thức (Method) Bài tập 5. và TextBox nhập vẫn được Focus. • Sau khi nhập số nếu ấn Enter hoặc Click vào nút thực hiện thì hiện kết quả lên TextBox kết quả. • Khi chương trình bắt đầu thực hiện thì textbox nhập số được focus. Sub này có một tham số dạng tham trị. sau đó in lên màn hình các ước số nguyên này lên form.

ToInt32(txtN. } private void btnTongTich_Click(object sender.Text = TongTich(n).Text).Yêu cầu tất cả dùng hàm Code gợi ý : Ta nhận thấy viết hàm có giá trị trả về là lợi cho bài toán nhất vì các bút lệng sau gọi hàm của các nút lệnh trước.Text). EventArgs e) { n = Convert. So với Code gợi ý các bạn sinh viên hãy dùngt vòng lặp khác với trong code gợi ý như ( for.Text = TongWhile(n).ToInt32(txtN. private void buttong1_Click(object sender.ToString(). lblKQ. } .ToString(). EventArgs e) { n = Convert. while…) • Dãy Fibonaci các bạn chuyển thành hàm đệ quy. lblKQ.

lblKQ. i++) if (KiemTraSNTo(i) == true) lblKQ.Text). EventArgs e) { int i.Text = lblKQ.Text = n. for (int i = 2. f2 = 1.ToInt32(txtN. else lblKQ. f2. lblKQ.ToString() + "La so Nguyen To". n = Convert.Text). f1 = 0.Text = Convert.private void btnTinh1_Click(object sender. n =Convert. fn. if (KiemTraSNTo(n) == true) lblKQ. i <= n.Text = "".Text = Convert. EventArgs e) { n = Convert.Text).Text). } private void btnKTraSNTo_Click(object sender.ToString() + " ".ToString((double) (TongTich(n) * TongTich(n) )/ (double)Tong(n)). i = 0.ToInt32(txtN.ToInt32(txtN.Text ="". EventArgs e) { lblKQ. } private void btnFibo_Click(object sender.Text + i. } private void btnTinh2_Click(object sender. lblKQ. } private void btnCacSNTo_Click(object sender.ToInt32(txtN. f1.ToString() + "Khong la so Nguyen To".ToInt32 ( txtN.ToString((double)TongTich(n) / (double)Tong(n)).Text). EventArgs e) { n = Convert. .Text = n. EventArgs e) { n = Convert.

} } Bài Tập 5.4 Thiết kế giao diện. các ghế được đánh số từ 1 đến 15 và được phân thành 3 lô (xem hình): Giá vé lô A 20 ngàn/vé . lblKQ. mỗi hàng có 5 ghế.Text + fn.Text = lblKQ. flowLayoutPanel1 Mô tả: Viết chương trình bán vé rạp chiếu phim với các yêu cầu sau: Hãy tạo một project giúp cho rạp chiếu phim quản lý việc bán vé của một rạp hát. i++. Rạp có 3 hàng ghế. f1 = f2.ghế từ 1-5 Giá vé lô B 30 ngàn/vé . f2 = fn.ghế từ 6-10 Giá vé lô C 40 ngàn/véghế từ 11-15 Một người vào có thể mua nhiều vé.ToString() +" ".Lập tức cập nhật danh sách các ghế đang chọn và listbox bên dưới (các ghế đang chọn) .while (i < n) { fn=f1+f2. và Người bán sẽ chọn các ghế từ các checkbox. +Khi vừa chọn ghế nào thì chương trình là việc sau: .

+Chương trình sử dụng kỹ thuật nạp động các control để sau này dễ dàng cho việc nâng cấp số lượng ghế mỗi hàng . i++) { CheckBox chk = new CheckBox(). Duyệt các checkbox này mỗi khi checkbox thay đổi và cập nhật Listbox.Text = tong.Text)). +Chương trình cho phép người sử dụng thay đổi kích thước nhưng vẫn giữ bố cục như ban đầu. } } private void CacCheck_CheckedChanged(object sender.Items.ToString().Enabled == true) { listBox1. } } lblKQ.Checked)// co chon chk.Items.Controls ) { if (chk. EventArgs e) { for (int i = 1. listBox1. Gợi ý: Nạp động các checkbox (đại diện cho các vị trí ghế) và ghép chung hàm sự kiện. Nạp động các button trong formload private void frmChieufilm_Load(object sender. EventArgs e) { int kq = 0. chk.Clear(). flowLayoutPanel1.Text).Text = kq. i < 16.Add(chk).Add(chk. chk. lbltong. + Nút “Xem mới” đưa về trạng thái ban đầu như khi vừa load lên.ToInt32 ( chk. +Nút “<<Xóa ghế đã chọn” sẽ xóa tất cả các số ghế đang chọn trong listbox2 (các ghế đã chọn) và đưa trạng thái tất cả các checkbox tương ứng với các ghế xóa về trạng thái không chọn như ban đầu. } } . kq += GiaTien(Convert.CheckedChanged += CacCheck_CheckedChanged.ToString().- hiển thị tổng số tiền vào label bên dưới (Thành tiền) + Khi người mua muốn thực sự chọn ghế thì nhấn nút “Thống kê”.Checked=true { if (chk.Controls. Chương trình lập tức chuyển các ghế trong listbox1 (Các ghế đang chọn) qua listbox2 (Cácghế đã chọn) đồng thời khóa các checkbox ghế không cho chọn.ToString().Text = i. foreach (CheckBox chk in flowLayoutPanel1. tong = 0.

private void btnThongke_Click(object sender. EventArgs e) { xoaghe(listBox2). } private void btnXoaDaChon_Click(object sender. tong += GiaTien(Convert.Controls) { if (chk.Text)).Text.Items. foreach (CheckBox chk in flowLayoutPanel1. chk.Text = tong.Enabled = false. lblKQ.Equals(SoViTri)) { chk. while (i <= lst. listBox2. } } lbltong.Text).1) { .Add(chk. } int GiaTien(int VitriGhe) { int DonGia = 0.Checked) { listBox2.Items. } } } void xoaghe(ListBox lst) { int i=0. EventArgs e) { int tong = 0. return DonGia. if (VitriGhe <= 5) DonGia = 20000.Clear().Controls) { if ( chk. chk.Clear(). else if (VitriGhe <= 10) DonGia = 30000.Checked = false.ToString().Items.Count .ToInt32(chk.Items. } void BochonCheck(string SoViTri) { foreach (CheckBox chk in flowLayoutPanel1. else DonGia = 40000.Enabled = true. listBox1.Text = "".

if (lst. foreach (CheckBox chk in flowLayoutPanel1.Items. lst. } else i++. } } private void btnXoa_Click(object sender. listBox2. } } Hình khi chọn .Items[i]. chk.Clear().Items.RemoveAt(i).GetSelected(i) == true) { BochonCheck(lst.ToString()).Controls) { chk.Clear().Checked = false. EventArgs e) { listBox1.Items.Enabled = true.

giải mã. b.”Z”->70 (ví dụ: MaHoaKyTu(‘b’)=5).6 (RadioButton) Thiết kế chương trình có giao diện như sau . c.Viết hàm giải mã và kiểm tra việc mã hóa .”z”->30. “c”->5….5 a. “C”->42….Khi chọn Bài Tập 5.Viết hàm mã hóa 1 ký tự thành số dùng cho việc bảo mật thông tin. chẳng hạn như “a”->4. (ví dụ: “I Love You” ->57 100 50 42 26 …). Bài Tập 5. “ “->100 “A”->44. “b”->5. “B”->41.Sử dụng hàm này để mã hóa 1 chuỗi nhập vào. Hàm có dạng : int MaHoaKyTu (char Kytu) HD: Căn cứ trên mã ASCII và key.

Chương trình cho phép chọn kiểu Button và kiểu Icon của Message box. xử lý sự kiện CheckChanged hoặc sự kiện Click của từng radio button. Bài Tập 5.7 (Listbox) Thiết kế form và thực hiện các chức năng sau: Khi người sử dụng nhập một số vào textbox rồi Enter hoặc nhấp vào nút cập nhật thì số này được thêm vào listbox. như hình bên dưới. HD: Khai báo các biến toàn cục để giữ giá trị chọn trên các radio button. sẽ xuất hiện một Message box để khẳng định có chắc là kết thúc không. đồng thời nội dung trong textbox bị xóa và focus được chuyển về textbox.8 . Người dùng nhấn vào nút nào thì thực hiện chức năng tương ứng của nút đó. Ví dụ: Khi kết thúc chương trình. Bài Tập 5. Sau khi click “Chọn” sẽ hiển thị hộp thông báo tương ứng.

Add("Tăng Hồng Phú").Add("Hồ Ngọc Lan"). Combobox có 2 lớo A. 3 sinh viên trong danh sách lớp B yêu cầu viết trong sự kiện Load của Form Gợi ý. lstLopB.Items.Yêu cầu: 1) Thiất kế tạo các TabOrder sao cho hợp lý. a. Giả sử Item trong Combobox lớp có thứ thự Vị Trí (Index) 0 1 Giá Tri (Value) Lớp A Lớp B . Có thể AddItem trong lúc design hoặc trong sự kiện formload.Add("Nguyễn Hoài Nam"). Có 2 sinh viên trong danh sách lớp A. c. lstLopB.Items. Yêu cầu thêm vào trong lúc thiết kế (design trong properties Item) b. lstLopB. B nhưng Lớp B được chọn mặc định Gợi ý. 2) Khi Form vừa chạy lên (load).Items.

Để hiện lớp B trước ta làm => cboLop. Đưa vào danh sách lớp nào phải phụ thuộc CboLop (xem hình). EventArgs e) { try { . Xem hình Hướng dẫn: private void btnCapnhat_Click(object sender. Nhưng không nhập tên sinh viên thì phải cài bẫy lỗi thông báo và hướng dẫn cho người sử dụng biết.SelectedIndex = 1. Chọn nhiều đổi SelectionMode = MultiExtended 3) Nhấn nút cập nhật đưa thông tin Sinh Viên vừa nhập vào danh sách lớp.

if (txtten. ListBox lstnhan) { // sinh viên viết nội dụng hàom vào đây } private void btnBToA_Click(object sender. xem hình.Add(txtten. Yêu cầu viết hàm.Message).Items. } } 4) Nhấn nút > thì chuyển các Sinh Viên đang chọn trong lớp A Qua Lớp B. "Thông báo").Text). Tham khảo lời gọi hàm sau: Chọn nhiều đổi SelectionMode = MultiExtended private void btnAToB_Click(object sender. else if (cboLop. lstLopB).Text == "") MessageBox.Show(ex. EventArgs e) { ChuyenSinhVien(lstLopA.Text).Items.SelectedIndex == 0) lstLopA. Và ngược lại cho nút < ( danh sách có thể chọn nhiều). } catch (FormatException ex) { MessageBox. } void ChuyenSinhVien(ListBox lstchuyen.Show("Bạn chưa nhập dữ liệu".Add(txtten. EventArgs e) { ChuyenSinhVien(lstLopB. lstLopA). } . else lstLopB.

} void ChuyenHetSinhVien(ListBox lstchuyen. 6) Nếu nhấn vào nút “>>|” thì chuyển hết sinh viên trong lớp A -> Lớp B và tương tự cho lớp nút “| <<” Dựa vào đoạn khai báo và gọi hàm sau. ListBox lstnhan) { int i = 0.Items.Count) . private void btnAtoBAll_Click(object sender. while (i < lstchuyen. string str. lstLopB).5) Nếu đưa chuột vào nút “>” thì hiện Tooltiptext là “Chuyển Sinh Viên lớp A-> Lớp B” và ngược lại cho nút “<”. EventArgs e) { ChuyenHetSinhVien(lstLopA.

// chuyển hết di xóa một lần } 7) Thiết kế thêm Menu và viết lệnh cho các chức năng (xem hình) • Vết lệnh cho Menu “Chuyển A->B” private void mnuChucNangAToB_Click(object sender.Add(str). i++.Items[i]. EventArgs e) { btnAToB_Click (sender. // chỉ cần gọi lại sự kiện của sự kiện nút “>” } .Clear(). lstnhan.Items.{ str = (string)lstchuyen.Items. e). } lstchuyen.

9 (Listbox) Viết chương trình thực hiện các chức năng trên giao diện như sau .Font. 8) Đếm số lượng Sinh Viên trong từng danh sách của lớp rồi xuất ra qua MessageBox theo đoạn code sau.Font = dlgHopThoaiFont. EventArgs e) { dlgHopThoaiFont.• Viết lệnh cho Menu Font (xem hình) private void mnuChucNangMauFontFont_Click(object sender. } • Tương tự viết cho Menu “Màu” (Dialog Color).Font.ShowDialog(). Bài Tập 5. // hiện hộp thoại font lstLopA. // gán giá trị của hộp thoại font vào lstLopB.Font = dlgHopThoaiFont.

1000 vào combobox (N là số nhập tại textbox) ..1 (Array) +Một số thuộc tính của các control +Các đối tượng móc nối CSDL trong mô hình ADO. kiểm tra số nguyên tố thông báo kết quả trên messageBox. Bài Tập Tuần 6 Bài Tập 6.Nút Cập nhật cho phép nhận N số ngẫu nhiên từ 1.Khi người sử dụng chọn 1 số trên combobox.. .NET +Thiết lập giao diện chương trình móc nối CSDL thông qua sự kết hợp giữa các control Viết chương trình với các chức năng được trình bày trên Form như sau . chương trình hiển thị các ước số của số đang chọn vào listbox.Các nút lệnh: Tổng ước số. số lượng ước số chẵn.

100].b. RichTexBox (Readonly=tr ue) Bài Tập 6.2 Thiết kế form (xem hình) RichTexBox (Readonly=true) form nhập liệu sinh viên tự hiệu chỉnh các properties của form cho phù hợp: Yêu cầu 1) Khi form load Khóa các button mờ (xem hình) Code gợi ý: . Sử dụng hộp thoại khác cho nhập số phần tử của mảng. Việc nhập giá trị cho các phần tử của mảng thực hiện bởi một hộp thoại khác. sử dụng lớp ArrayList. a. Các giá trị của mảng được tạo ngẫu nhiên trong [-100 ..

Enabled = Giatri. } void KhoaHieuLucButton(Boolean Giatri) { btnclear. btnmin. btndemnguyento.namespace Mang_Array { public partial class frmMang : Form { public frmMang() { InitializeComponent(). btntongle.Enabled = Giatri. btntim.Enabled = !Giatri.Enabled = Giatri. btnnguyento.Enabled = Giatri.Enabled = Giatri.Enabled = Giatri. } private void frmMang_Load(object sender.// gia tri NOT btnmax.Enabled = Giatri.Enabled = Giatri.Enabled = Giatri. btndemle. btntongmang. EventArgs e) { KhoaHieuLucButton(false).Enabled = Giatri. . btnxoa.Enabled = Giatri. btnnhap.Enabled = Giatri.Enabled = Giatri. btntongchan. btndaoso. btndemchan.

int i=0. Viết hàm tìm trả về vị trí tìm và xuất giá trị thông báo cho người sử dụng biết qua code gợi ý. return gt. hiện form nhập thông tin cho phép nhập số lượng phần tử của mảng. MessageBoxButtons. MessageBoxDefaultButton.ToInt32(frm. int GiaTri() { frmNhapLieu frm = new frmNhapLieu().Clear(). Viết hàm xuất giá trị ra RichTextBox mảng gốc. xuatmang(mA. b. frm. int gt. gt = Convert. while (i < A. "Thông báo".Text).Show("Bạn chưa nhập dữ liệu". void nhapmang(int[] A) { Random n = new Random(). int i=0.ToString() + " ". private void btntim_Click(object sender. } catch { MessageBox. KhoaHieuLucButton(true). while (i < A.Length) { rtxt. EventArgs e) { try { int gt = 0. i++.} 2) Nhấn nút nhập mảng thì a. MessageBoxIcon.Next(1. nhapmang(mA).Error. gt = GiaTri().ShowDialog().txtGTri. } } 3) Nhấn nút tìm kiếm hiện lên form cho phép nhập thông tin tìm. Viết hàm nhập mảng c. } } void xuatmang(int[] A.Button1). mA = new int[gt]. RichTextBox rtxt) { rtxt. EventArgs e) .Text += A[i]. rtxtGoc). 91). } private void btnnhap_Click(object sender. } } int[] mA .OK. i++.Length) { A[i] = n.

gt = GiaTri(). "Thông báo".{ try { int vt. break. gt).mA.gt.Show("Tìm thấy tại vị trí thứ " + vt.Resize(ref mA. } 4) Nhấn nút xóa hiện form cho phép nhập giá trị cần xóa. } } int Tim(int[] a.1. } } return vt. int gt) { int i. if (vt != -1) { vt += 1. "Thông báo". i < mA. gt = ?? sinh viên tự nghĩ cho tiện lợi nhất vt = Tim(mA. for (i = 0.Show("Bạn chưa nhập dữ liệu". i++) { if (a[i] == gt) { vt = i. vt = Tim(mA. MessageBox.Length . } else MessageBox. vt = -1. EventArgs e) { try { int i. //sinh viên viết thêm xóa tất cá các gá trị bằng giá trị nhập vào if (vt != -1) { for (i = vt. "Thông báo".Button1). MessageBoxDefaultButton.Error. gt). MessageBoxButtons.OK).OK. vt. MessageBoxButtons.Show("Không tìm thấy". gt = 0. } catch { MessageBox. Array. rtxtKQ ).Length-1).Length. i++) mA[i] = mA[i + 1]. } catch { . } xuatmang(mA. Trong code gợi ý chỉ xóa vị trí tìm thấy đầu tiên sinh viên viết thêm xóa tất cá các gá trị bằng giá trị nhập vào ( gợi ý hai vòng lặp lồng nhau) private void btnxoa_Click(object sender. MessageBoxIcon.OK). MessageBoxButtons. i < a.ToString().

a[i] = tam. a[j] = a[i].Length . private void btnclear_Click(object sender. int tam. } while (i < A. i <= n. i++. KhoaHieuLucButton(false). xuatmang(a. } void daonguocdayso(int[] a. . for (i = 1. int i = 0.Clear() . } while (i < (a. int j = (a. rtxtKQ). EventArgs e) { rtxtGoc. i++. "Thông báo".Error. RichTextBox rtxt) { int i = 0. MessageBoxButtons. } 5) Nhấn nút đảo ngược dãy số chính là dảo ngược mảng xem code gợi ý. } KhoaHieuLucButton(false). return str.MessageBox. do { if (ktsonguyento(A[i]) == true) str += A[i].Clear ().1). } 7) Cá nút khác sinh viên tự giải quyết nhưng nên viết theo hàm vá sử dụng một số gợi ý hàm sau: string xuatsonguyento(int[] A) { string str = "". btnnhap.Focus(). } Boolean ktsonguyento(int n) { int dem = 0.OK.Button1).Show("Bạn chưa nhập dữ liệu". EventArgs e) { daonguocdayso(mA. MessageBoxIcon. i++) { if (n % i == 0) dem++.Length / 2)). } 6) Nhấn nút clear khóa mở text cho hợp lý xem code gợi ý. private void btndaoso_Click(object sender. rtxt ). do { tam = a[j].ToString() + " ".Length). rtxtKQ. i. MessageBoxDefaultButton. j--.

if (dem > 2) break.3 Thiết kế Form cho phép nhập vào giá trị hai số nguyên A và B. } return (dem == 2). Sau đó người dùng bấm vào nút phát sinh chương trình sẽ cho biết dãy số vừa được phát sinh.1: Thiết kế form (xem hình) . } Bài Tập 6. Bài tập chuỗi Bài 7. tổng giá trị của các phần tử trong dãy và sắp xếp dãy số theo thứ tự tăng.

"thủy" }.Enabled = giatri. "đinh".Enabled = giatri. "tuấn".Enabled = giatri. "huy".Enabled = giatri. "văn". "gia". "cao". "loan". "lê". } void KhoaButton(Boolean giatri) { btnxoaten. Khi form vừa load lên các button mất hiệu lực hỉ có một nút nhập tên ngẫu nhiên là có thể hoạt động được.Yêu cầu Giả sử có mảng string[] ho = { "nguyễn". "tú". "triều". "nam". btnclear. "hải". "hoàng". .Enabled = giatri. "duy". dựa vào mảng ho. string[] ten = { "lan". "anh" }. EventArgs e) { KhoaButton(false). Khi nhấn nút “nhập tên ngẫu nhiên” hiện lên một form cho phép nhập vào số lượng . btndoiho. 1. "ngô". "lâm". "hà".Enabled = giatri. Code tham khảo. "thanh". "hùng". btndoihoadautu. "kiệt". tenlot. ten để tạo ra danh sách các tên ngẫu nhiện. btndoitenhoa. btnxoaho. } 2. Code gợi ý: private void frmMangchuoi_Load_1(object sender. Quy định họ tên =Ho+tenLot+Ten đưa vào list danh sách sinh vien. "hương".Enabled = giatri. "vương" }. "phát". "nga". "vy". btndoiten. string[] tenlot = { "thị". "cường". "hạ". "trần".

} void TaoHoTenNgauNhien(ListBox lst. dem = xoaSVtheoten(lst.Append(" "). EventArgs e) { string ten. tenlot. ten = GiaTri ("Nhập ten cần xóa"). hoten. Temp = ten[x.txtDL. ten.Next(0. Random x = new Random(). string Temp = "".Clear().Add(hoten).Length)].Text = "". ho.Append(Temp). Sử dụng hàm LastIndexOf(' ') trong thuật toán sinh viên có thể dùng hàm EndsWith("chuỗi tìm") Code gợi ý: private void btnxoaten_Click(object sender. lst.Text.Length)]. KhoaButton(true).private void btnnhap_Click(object sender.Items. for (i = 0.Text = str. StringBuilder hoten.Text = "Danh sách SV: " + lst. hoten. ten). EventArgs e) { try { int n. } catch { MessageBox.Count. int dem. hoten. Temp = tenlot[x.ToString() + " SV".Items.Show("Bạn chưa nhập dữ liệu". Nhấn nút “Xóa SV theo tên” hiện form cho phép nhập tên cấn xóa. } } 3.ToInt32(GiaTri("Nhập số lượng:")). frm. hoten.Length)]. groupBox1.Next(0. int n) { lst. n = Convert. n). i++) { hoten = new StringBuilder(). hoten. return frm. i < n.Items. Xóa tất cả các tến trong List trùng với tên nhập vào.Append(Temp). groupBox1. "Thông báo").Append(Temp). frm. int i.Next(0.Append(" ").lblHuongDan. Temp = ho[x. } } string GiaTri( string str) { frmNhapDLieu frm = new frmNhapDLieu(). TaoHoTenNgauNhien(lst. .ShowDialog().

Items. } else i++.Text = "Danh sách SV: " + lst. if (hotam. while (i < lst. private void btndoiten_Click(object sender. } return dem.ToString() + " SV". tentam. int i = 0.ToUpper(). } else i++. dem = 0. Dem = xoaSVtheoho(lst.Length . if (tentam.Substring(vt + 1. statusStrip1. strHo = GiaTri("Nhập tên theo họ") .Items[0]. int i = 0. } int xoaSVtheoten(ListBox lst. int Dem .Count) { hoten = lst. Code gợi ý: private void btnxoaho_Click(object sender. } int xoaSVtheoho(ListBox lst. vt. string ten) { //string[] mangten.ToString().Items[i]. strHo).Equals(ten.Items.Count. Đổi tên thì chọn tên cần đổi trên list và nhập tên mới.Text = "đã xóa " + dem.Text = "Danh sách SV: " + lst. } 4.ToString() + " SV".Equals(ho. } 5.RemoveAt(i).ToUpper())) { lst.RemoveAt(i). EventArgs e) . statusStrip1.Items.ToString() + " SV".Items. tentam = hoten.Items.ToString() + " SV". string ho) { string hoten. Dem = 0.Items[i].Text = "đã xóa " + Dem. groupBox1. string hoten.IndexOf(' ')).Count) { hoten = lst.groupBox1.(vt + 1)). //hoten. Nút “ xóa sinh viên theo họ” thuật toán như theo tên chỉ khác biệt lấy họ ngược lại lấy tên.Items.Substring(0.ToUpper())) { lst. dem++.ToUpper(). hoten.Items[0]. hotam = hoten. hotam. Dem++.EndsWith("") vt = hoten.LastIndexOf(' ').ToString (). EventArgs e) { string strHo.Count. } return Dem. hoten. while (i < lst.

} else MessageBox.Items. if (lst. int vitri. vtChen.SelectedIndex. } Hướng dẫn thực hành .SelectedIndex.ToString() + " SV". vtChen = lst.Items.Length -vitri ).Items.Count. if (lst.ToString() + " SV". string tenmoi) { string hotenMoi.Items. lst. strTenMoi). hoten. private void btndoiho_Click(object sender. vitri) + " " + tenmoi.IndexOf(' '). Dem = DoiHo(lst. statusStrip1.Insert(vtChen .SelectedItem. hoten. groupBox1.SelectedIndex != -1) { strTenMoi = GiaTri("Nhập họ mới").Text = "Danh sách SV: " + lst.RemoveAt(vtChen).Substring(vitri. vtChen = lst. strTenMoi). int vitri.Show("Chon sv doi ten"). int Dem.Items.ToString () .Text = "Danh sách SV: " + lst. hoten. Dem = DoiTen(lst. hoten = lst. return 1. lst.Show("Chon sv doi ten").Text = "đã đổi tên của " + Dem. vitri = hoten.Count.Items. hotenMoi). int Dem. } int DoiTen(ListBox lst.Items[0]. .SelectedIndex != -1) { strTenMoi = GiaTri ("Nhập tên mới"). hotenMoi = hoten. groupBox1. lst. hoten = lst. lst.ToString() + " SV".Substring(0.Lập trình Windows Cơ Bản Trang 4/5 else MessageBox.Text = "đã đổi tên của " + Dem. } 6.ToString() + " SV".ToString(). string HoMoi) { string hotenMoi. vitri = hoten. Đổi sinh viên theo họ.{ string strTenMoi. statusStrip1.RemoveAt(vtChen). vtChen.Items[0]. return 1. hotenMoi = HoMoi + hoten. } int DoiHo(ListBox lst. EventArgs e) { string strTenMoi. hotenMoi).SelectedItem.Insert(vtChen.LastIndexOf(' ').

EventArgs e) { string ten.Split(' '). string hotendaydu. tenlottam.2]. tentam.1]. Đổi tên hoa: private void btndoitenhoa_Click(object sender. } i++. Hướng dẫn thực hành .ToUpper() +" "+ tentam. int dem. ten).} 7. } return dem.ToString() + " SV". int i = 0.Text = "Đã đổi tên hoa của " + dem. EventArgs e) { string ten.Items[0].ToUpper().Length .Text = "Đã đổi tên hoa của " + dem.Items[i] = hotendaydu.Items[0].ToString() + " SV".ToUpper(). hotam. int dem. } 8. Hoa đầu từ private void btndoihoadautu_Click(object sender. mangten = hoten.Items. dem = doitenhoa(lst. hotendaydu = hotam. string ten) { string[] mangten. tentam. statusStrip1.ToUpper() + " " + tenlottam.Lập trình Windows Cơ Bản Trang 5/5 tenlottam = mangten[mangten.Items[i] = hotendaydu. dem = doihoa(lst. string ten) { string[] mangten. int dem = 0. hotam.ToUpper() +""+ tenlottam. string hoten. while (i < lst. tentam = mangten[mangten. } int doihoa(ListBox lst.ToUpper())) { hotendaydu = hotam.ToUpper() + " " + tentam.Length . string hoten. ten = GiaTri ("Nhập tên SV cần đổi: "). lst. ten). . tenlottam.ToString (). lst.Items[i]. dem++. } int doitenhoa(ListBox lst.ToUpper().Equals(ten. if (tentam. hotam = mangten[0]. statusStrip1. ten = GiaTri("Nhập tên SV cần đổi:").Count) { hoten = lst.

Equals(ten.Length .Substring(1. hotam. } i++.ToString (). tam = a + b + " " + c.ToLower().1). } return dem.Items[i] = tam.Items[i] = tam. int) + get / set (ma.Split(' ').mb (int) .ToUpper())) { string tam = "".ma (int) . Xây dựng một class CHinhTamGiac như sau: CHinhTamGiac . b = "". tenlottam.ToUpper() + hotam.int i = 0. int. } 9. mc là ba cạnh của tam giác.c="".Items[i].1).ToUpper(). while (i < lst.Length . hotam = mangten[0].mc (int) + CHinhTamGiac() + CHinhTamGiac(int.ToLower(). mb.1).Count) { hoten = lst. dem = 0.ToUpper() + tenlottam. if (tentam.Substring(1. lst. tenlottam = mangten[mangten.Length . lst. tam = a+" " + b + " " + c.ToLower(). mangten = hoten.Text = "Danh sách SV:". a = hotam. c = tentam. 1).Length .Substring(0.Items.Clear(). KhoaButton(false). lst. b = tenlottam. mb. 1). .Items. tentam=mangten[mangten. Bài tập viết class a. } Bài tập 6.Substring(1. Nút clser private void btnclear_Click(object sender.2].Length-1]. 1). dem++.Substring(0.Substring(0. mc) + int ChuVi() + int DienTich() + bool LaTamGiac() Trong đó: • ma. a = "". EventArgs e) { groupBox1.2.ToUpper() + tentam. tentam.

199 0. int. mb. String. int).65 • Hàm LonHon(CNhanVien nv2): hàm này trả về giá trị True khi số sản phẩm (mSoSP) lớn hơn số sản phẩm của nv2. Viết ứng dụng (console) sử dụng class CNhanVien theo yêu cầu sau: Cho người dùng nhập vào 2 nhân viên. mb. int) sẽ khởi tạo họ. số sản phẩm của nhân viên. tên. Bài tập 2. ngược lại thì tính và xuất ra chu vi và diện tích của nó.399 0. tên. • Hàm TinhLuong(): lương = số sản phẩm * đơn giá. Xây dựng một class CNhanVien như sau: Trong đó: • mHo. tên. Bài tập 1. mc lập thành một hình tam giác. (ba giá trị lập thành một hình tam giác khi và chỉ khi tổng hai cạnh bất kỳ luôn lớn hơn cạnh còn lại) • Hàm ChuVi().599 0. số sản phẩm của nhân viên. ngược lại trả về giá trị False. • Hàm LaTamGiac() trả về giá trị True khi ba giá trị ma. mTen. Viết ứng dụng (console) sử dụng class CHinhTamGiac theo yêu cầu sau: Cho nhập vào 3 giá trị số nguyên và khởi tạo hình tam giác có các cạnh ứng với 3 giá trị này. nếu 3 giá trị này không lập thành tam giác thì thông báo. 2. nếu là số âm thì thông báo và khởi tạo giá trị cho biến mSoSP là 0. Có thể so sánh mà không dùng hàm LonHon được hay không ? Nếu được thì hãy lập trình. số sản phẩm của họ. phải kiểm tra số sản phẩm là số lớn hơn hoặc bằng 0. DienTich() tính chu vi và diện tích của tam giác. So sánh và xuất ra thông báo nhân viên nào có số sản phẩm nhiều hơn và nhiều hơn bao nhiêu. với đơn giá tùy thuộc vào số sản phẩm như sau: Số sản phẩm Đơn giá 1 . b.5 200 . mỗi nhân viên nhập vào họ. mc bằng 0. nếu 3 giá trị số nguyên truyền vào không lập thành một hình tam giác thì thông báo «Không phải hình tam giác» và khởi tạo giá trị cho các biến ma. Bài tập viết class 1.• Trong constructor CHinhTamGiac(int. • Constructor CNhanVien(String. (File) Viết chương trình thao tác trên tập tin như sau: .55 400 . mSoSP lần lượt là họ.6 600 trở lên 0. Hãy tính và xuất ra lương của từng nhân viên.

Bài tập 3.. (File) Viết chương trình thao tác trên tập tin như sau: Yêu cầu: • Nút . Nội dung tập tin sau khi được chọn sẽ được đưa vào mục Nội dung tập tin. .txt). mỗi phần tử trong danh sách là tên tập tin.: cho phép mở hộp thoại Open để người dùng chọn một tập tin (chỉ hiện các tập tin .. • Nút Xóa: xóa một phần tử đang chọn trong Danh sách tập tin..: cho phép mở hộp thoại Open để người dùng chọn các tập tin (chỉ hiện các tập tin .txt).Yêu cầu: Nút .. Các tập tin sau khi được chọn sẽ được đưa vào Danh sách tập tin.

nếu không hợp lệ thì thông báo và không cho lưu vào tập tin (dữ liệu hợp lệ khi nhập đầy đủ thông tin vào ô Mã số và Họ tên.txt với định dạng: Mã SV Họ tên Ngày sinh Bài tập 5. Dữ liệu được lưu trong tập tin SinhVien.• Khi nhấn vào tập tin nào trong Danh sách tập tin thì nội dung của tập tin đó được hiển thị tương ứng trong phần Nội dung tập tin. (File) Viết chương trình thao tác trên tập tin như sau: . Trước khi lưu phải kiểm tra dữ liệu có hợp lệ không. Họ tên. Bài tập 4.txt. Ngày sinh) vào tập tin SinhVien. nếu có Ngày sinh thì ngày phải hợp lệ) • Nút Hiện danh sách: cho phép hiện danh sách ở Listbox bên dưới theo định dạng như hình. (File) Viết chương trình thao tác trên tập tin như sau: Yêu cầu: • Nút Lưu: chương trình sẽ lưu thông tin sinh viên (gồm Mã số.

Dữ liệu được lưu trong tập tin SinhVien.txt với định dạng: Mã SV Họ tên Ngày sinh • Khi form load lên thì danh sách sinh viên đã nhập được hiện lên ListView bên dưới. • Nút Thêm: thêm một dòng vào ListView, gồm Mã số, Họ tên, Ngày sinh. Trước khi lưu phải kiểm tra dữ liệu có hợp lệ không, nếu không hợp lệ thì thông báo và không cho lưu vào tập tin (dữ liệu hợp lệ khi nhập đầy đủ thông tin vào ô Mã số và Họ tên, nếu có Ngày sinh thì ngày phải hợp lệ) • • Nút Xóa: dùng để xóa một dòng đang chọn trong ListView. Nút Lưu dùng để lưu toàn bộ thông tin trong ListView vào tập tin SinhVien.txt Bài tập 6.

(String)

Viết chương trình theo giao diện và thực hiện các yêu cầu sau

• Khi form được load lên màn hình thì chỉ có nút Nhập Liệu và nút Kết Thúc là sử dụng được, và đồng thời nút Nhâp Liệu được focus • Khi nút Nhập Liệu được nhấn thì các button khác mới sáng nên để có thể thao tác được, đồng thời quét khối các text trong text nhập liệu và cho con nháy về text Nhập Liệu. • Khi một nút chức năng nào đó được nhấn thì kết quả tương ứng hiện vào text kết quả và làm mờ tất cả các nút (trừ nút Nhập Liệu và Kết Thúc) • Khi nhấn Xoá Chuỗi hiện ra một hộp thoại cho bạn nhập một chuỗi để xoá, nếu thực sự có trong text Nhập Liệu, có text bằng text vừa nhập thì xoá đi và nếu không có thì báo không có text muốn xóa (=> bạn có thể mở rộng bằng thay thế một chuỗi) Bài tập 7. Viết chương trình quay số may mắn.

Quy luật chơi như sau: • Khi bắt đầu chơi số tiền có sẵn trong máy là 10 đồng và số tiền thưởng là 0. Mỗi lần quay số thì người chơi phải bỏ vào 30 đồng (=> số tiền có trong máy tăng 30 đồng) • • Nếu kết quả quay số =0 => người chơi nhận được cộng 10 đồng vào tiền thưởng Nếu kết quả quay số =9 => người chơi nhận được cộng 30 đồng vào tiền thưởng

• Nếu kết quả quay số =7 => người chơi nhận được cộng 100 đồng và 50% số tiền đang có trong máy vào tiền thưởng (=> số tiền trong máy giảm 50%) • Khi nút Game mới được nhấn thì số tiền thưởng phải có gía trị = 0 • Khi có thưởng thì chương trình phải hiện dòng thông báo cho biết số tiền thưởng hiện tại là bao nhiêu. Bài tập 8. Viết lại chương trình quay số may mắn theo mẫu sau:

Khi chương trình bắt đầu chạy thì số tiền có trong máy là 100 đồng. Mỗi lần quay số người chơi phải bỏ vào máy 30 đồng (số tiền trong máy tăng 30 đồng mỗi lần quay số) Các hộp chứa chữ số từ trái qua phải có tên như sau: txt1, txt2, txt3. Giá tri trong các hộp số được tạo bằng giá trị ngẫu nhiên txt1, txt2, txt3 phát sinh giá trị ngẫu nhiên lần lượt trong [0, 7], [0, 8], [0,10] • Nếu kết quả của txt1 = 7 thì số tiền được thưởng là 100 +50% số tiền đang có trong máy (số tiền trong máy giảm 50%) • Nếu kết quả của txt2 = 7 thì số tiền được thưởng là 30 +10% số tiền đang có trong máy (số tiền trong máy giảm 10%) • Nếu kết quả của txt1 = 7 thì số tiền được thưởng là 10. Khi trúng thưởng thì số tiền thưởng được cộng dồn và sẽ hiện lên màn hình cho người chơi biết số tiền thưởng mà họ đang có. Khi nút Game mới được click (bắt đầu cho một người chơi khác) thì số thưởng quay về 0 Bài tập 9. Thiết kế Form kê khai sơ yếu lý lịch của một Sinh viên

Bài tập 8: Thiết kế Form cho màn hình soạn thảo của NotePad .

.Bài tập 10. Bài tập 11. Thiết kế Form Cho phép tính chi phí Cầm Đồ. Thiết kế Form sao cho khi người sử dụng nhập vào giá trị tại hộp lên xuống hoặc trái phải ( NumericUpDown ) thì Hình vuông nhỏ bên trong sẽ dịch chuyển trong phạm vi bên trong cuả hình vuông lớn bên ngoài.

System. System. System.Windows. System.ComponentModel.Generic.Data. System.Drawing.Forms. namespace Dichvucamdo { public partial class Giangthanhtron : Form { int songay.Text.Code minh họa: using using using using using using using System. System. . public Giangthanhtron() { InitializeComponent().Collections.

Text == "DienThoai")) txtTenTS.Text = "Xe Đạp Các Loại".Text == "XeHoi") xtTenTS.Text = "Điện Thoại Các Loại".} private void cmbMaTS_SelectedIndexChanged(object sender.Text == "XeDap") txtTenTS. else { if ((cmbMaTS. Ngaynhan. TimeSpan Songaygui.Text = "Xe Hơi Các Loại". EventArgs e) { Close(). else txtTenTS.Text = "Vật Dụng Cá Nhân Khác". else { if (cmbMaTS. else { if (cmbMaTS. } private void btnThanhtien_Click(object sender. else { if (cmbMaTS. } } } } } private void btnThoat_Click(object sender. .Text = "Đồ Trang Sức Các Loại".Text == "TrangSuc") txtTenTS.Text = "Xe Gắn Máy Các Loại". EventArgs e) { int songay. EventArgs e) { if (cmbMaTS.Text == "XeGanMay") xtTenTS. DateTime Ngaygui.

Parse(txtTrephat.Text). } else { lai = (30 * trigia) / 100.Parse(txtNgaynhan.Text).Parse(txtGiatriTS.Text = thanhtien. txtLaisuat.Text = songay. } } } private void txtThoihan_TextChanged(object sender. } private void txtGiatriTS_TextChanged(object sender. Ngaynhan = DateTime.trephat. laisuat. int thanhtien.Text).Days. laisuat = int. txtLaisuat.Parse(txtNgaygui.Parse(txtThoihan. trigia=int.ToString(). trephat = int.Parse(txtLaisuat.ToString(). txtSongaygui. EventArgs e) { int thoihan. if (trigia <= 5000000) { lai = (10 * trigia) / 100. Songaygui = Ngaynhan.Text).Text = lai. if (thoihan <= songay) .Text).Subtract(Ngaygui). EventArgs e) { int trigia.Text). } else { if (trigia <= 10000000) { lai = (20 * trigia) / 100.Text = lai. txtLaisuat. lai. txtChiphi.Duration().ToString(). thanhtien = laisuat + trephat. thoihan = int. songay = Songaygui.ToString().Ngaygui = DateTime.ToString().Text = lai.

} else { if ((thoihan .songay)<=10) { txtTrephat.Text = "500000".Text = "0".Text = "100000". } else txtTrephat.{ txtTrephat. } } } } .

using System. Thiết kế Form Cho phép tính Lưong thời gian cho Nhân Viên.Bài tập 12. using System. using System.ComponentModel.Forms.Collections. using System.Windows. using System. using System.Text.Generic.Drawing. } . Code Minh Họa using System. namespace Luongthoigian { public partial class GiangThanhTron : Form { public GiangThanhTron() { InitializeComponent().Data.

EventArgs e) { int songay. txtLuong. EventArgs e) { int thuong. thuong. ngay = int.Text = thuong. phucap. txtThuong. EventArgs e) { } private void Thoat_Click(object sender.Text).Text). luong. EventArgs e) { Close(). } private void btnTinh_Click(object sender. int tongcong.ToString().Substring(1. EventArgs e) { string a. } private void GiangThanhTron_Load(object sender. luongcb = int. luongnv. if (songay <= 25) { luongnv = songay * luongcb.Text = a.Text). . songay = int.25) * 2 * luongcb).Parse(txtNC.Text). luong=int. } else luongnv = (25 * luongcb) + ((songay .Text.Parse(txtNC. } private void txtNC_TextChanged(object sender. a = txtTenNV.Parse(txtLuong.ToString(). txtLuongCB.Text).3). phucap = int.Text = luongnv. ngay. luongcb.Parse(txtLuongCB. thuong = ngay * 50000.Parse(txtPCCV.private void button1_Click(object sender.

MNV=cbmNV. } private void cbmNV_SelectedIndexChanged(object sender. txtThanhtien.1).Text = "300000".Parse(txtThuong.Text = "200000".Text).Text = "500000". tongcong = luong + phucap + thuong. EventArgs e) { string MNV.Text = tongcong.Substring(0.Text.thuong=int. } } } } .ToString(). else { if (MNV == "B") txtPCCV. else txtPCCV. if (MNV == "A") txtPCCV.