khối: cao Đẳng và trung cấ năm 2011 · pdf filebài tập thực...

89
Hướng dẫn thực hành - Lập trình Windows nâng cao Trang 1/89 Khối: Cao Đẳng và Trung Cấp Năm 2011 Hướng dẫn: Bài tập thực hành dựa trên giáo trình: Microsoft .Net Framework 3.5 Windows Forms Application Development. Bài tập thực hành được chia theo làm nhiều Module Mỗi Module được thiết kế cho thời lượng 3 tiết thực hành tại lớp với sự hướng dẫn của giảng viên. Tùy theo số tiết phân bổ, mỗi tuần học có thể thực hiện nhiều Module. Sinh viên nên nghiên cứu và làm trước bài tập trước ở nhà. Các thắc mắc sẽ được giảng viên giải quyết ở buổi thực hành. Sinh viên phải làm tất cả các bài tập trong các Module ở tuần tương ứng. Những sinh viên chưa hòan tất phần bài tập tại lớp có trách nhiệm tự làm tiếp tục ở nhà. Các bài có dấu (*) là các bài tập nâng cao dành cho sinh viên khá giỏi.

Upload: dangphuc

Post on 06-Feb-2018

220 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 1/89

Khối: Cao Đẳng và Trung Cấp

Năm 2011

Hướng dẫn:

Bài tập thực hành dựa trên giáo trình: Microsoft .Net Framework 3.5

Windows Forms Application Development.

Bài tập thực hành được chia theo làm nhiều Module

Mỗi Module được thiết kế cho thời lượng 3 tiết thực hành tại lớp với sự

hướng dẫn của giảng viên.

Tùy theo số tiết phân bổ, mỗi tuần học có thể thực hiện nhiều Module.

Sinh viên nên nghiên cứu và làm trước bài tập trước ở nhà. Các thắc mắc

sẽ được giảng viên giải quyết ở buổi thực hành.

Sinh viên phải làm tất cả các bài tập trong các Module ở tuần tương ứng.

Những sinh viên chưa hòan tất phần bài tập tại lớp có trách nhiệm tự làm

tiếp tục ở nhà.

Các bài có dấu (*) là các bài tập nâng cao dành cho sinh viên khá giỏi.

Page 2: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 2/89

Module 1

Nội dung kiến thức thực hành:

+Một số thuộc tính của các control

+Các control LinkLabel, MaskedTextbox

+Thiết lập giao diện chương trình thông qua sự kết hợp giữa các control

Bài 1.

Mục đích:

Sử dụng IDE của Visual Studio.Net với Layout Toolbar và Document Outline

Windows trong quá trình thiết kế giao diện. Sử dụng các thuộc tính Dock và

Anchor

Mô tả:

Exercise 1: Practice Configuring Controls (Trang 47-59)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Sử dụng thuộc tính của control để tạo giao diện tùy biến theo kích thước Form.

Mô tả:

Tạo giao diện như hình bên dưới với các yêu cầu như sau:

Trong quá trình thiết kế, khi người lập trình thay đổi kích thước Form thì Label

tiêu đề (Khoa Khoa Học và Kỹ Thuật Máy Tính -Đại Học Công Nghiệp Tp.HCM)

vẫn nằm ở giữa màn hình với các mép trái – phải không đổi, đường vẽ và nút

lệnh Exit vẫn ở vị trí phải- dưới với các mép không đổi.

Khi thực thi chương trình, người sử dụng không thể thay đổi kích thước của

Form. Vị trí mặc định của Form lúc ban đầu nằmn giữa màn hình. Đồng thời

Form không hiển thị trên thanh TaskBar.

Gợi ý:

Page 3: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 3/89

Sử dụng thuộc tính Anchor cho các control.

Tạo đường kẻ ngang bằng một Label với thuộc tính size hợp lý

Bài 3:

Mục đích:

Sử dụng LinkLabel Control.

Sử dụng thuộc tính DialogResult của button control.

Gán phím tắt cho Textbox với Label tương ứng

Mô tả:

Lab: Practice with Command and Text Display Controls (Trang 69-71)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 4:

Mục đích:

Sử dụng MaskedTextBox để nhập số điện thọai theo khuôn mẫu quy định.

Mô tả:

Lab: Practice with Text Display Controls (Trang 75-79)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 5:

Mục đích:

Sử dụng nhóm thuộc tính AutoComplete để tạo giao diện trợ giúp cho người sử

dụng trong việc nhập liệu trên Textbox.

Page 4: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 4/89

Mô tả:

Viết chương trình tạo Form nhập thông tin khách hàng mức đơn giản như hình

bên dưới.

Khi người sử dụng nhập số điện thọai khách hàng, chương trình hiện danh sách

tùy chọn ở textbox gồm các đầu số: 090, 091, 095, 096, 098,0911, 0912.

Khi người sử dụng nhập quê khách hàng (tỉnh thành), chương trình hiện danh

sách tùy chọn ở textbox gồm các tỉnh thành đề nghị gồm: Huế, Đà Nẵng, HCM,

Hà Nội, Bến Tre, Thái Bình, Tiền Giang.

Thiết lập các thuộc tính để khi co dãn kích thước Form, thì vị trí mép của các đối

tượng vẫn không đổi.

Gợi ý:

Thiết lập danh sách dữ liệu hiển thị: thuộc tính AutoCompleteCustomSource

Chọn chế độ hiển thị: thuộc tính AutoCompleteMode

Thiết lập nguồn dữ liệu hiển thị: thuộc tính AutoCompleteSource

Page 5: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 5/89

Bài 6:

Mục đích:

Sử dụng nhóm thuộc tính AutoComplete để tạo giao diện trợ giúp cho người sử

dụng trong việc nhập liệu trên Textbox.

Mô tả:

Viết chương trình nhập sách đơn giản với giao diện như hình dưới.

Sách gồm 4 thông tin: Số Đăng Ký Cá Biệt, Tên Sách, Nhà Xuất Bản và Nơi

Xuất Bản.

+Sau khi người sử dụng nhập đủ thông tin sách và bấm nút Lưu, chương trình

xóa trắng các textbox, lưu Số ĐKCB vào listbox, đồng thời chuyển focus về

textbox Số ĐKCB

+Khi người sử dụng nhập nhà XB (hoặc Nơi XB), chương trình hiển thị danh

sách chọn lựa (autocomplete) tại các textbox tương ứng, với giá trị danh sách

chọn là các giá trị đã nhập (không trùng nhau) tại các trường tương ứng.

+Thiết lập thuộc tính anchor cho các control hợp lý.

+Khi người dùng bấm ALT+S: focus chuyển vào textbox số DKCB.

Khi người dùng bấm ALT+T: focus chuyển vào textbox tên sách.

Khi người dùng bấm ALT+B: focus chuyển vào textbox nhà xuất bản.

Khi người dùng bấm ALT+N: focus chuyển vào textbox nơi xuất bản.

Gợi ý:

Sử dụng nhóm các thuộc tính về Autocomplete.

Lưu các giá trị đã nhập của trường Nhà XB (và Nơi XB) vào các biến danh sách

(chỉ lưu các giá trị mới để danh sách không bị trùng lắp).

Chuyển danh sách này vào AutoCompleteCusomSource của các textbox tương

ứng

Page 6: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 6/89

Bài 7:

Mục đích:

Sử dụng thuộc tính DialogResult.

Mô tả:

Sử dụng tiếp tục chương trình ở bài kế trên. Khi người dùng bấm nút thoát,

chương trình sẽ hiện ra form xác nhận việc thoát.

Nếu người dùng bấm nút thoát, chương trình sẽ kết thúc.

Page 7: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 7/89

Module 2

Nội dung kiến thức thực hành:

+Một số thuộc tính của các control và Form

+Một số đối tượng Container mới.

+Thiết lập giao diện chương trình thông qua sự kết hợp giữa các control

Bài 1:

Mục đích:

Sử dụng một số thuộc tính của Form: Opacity, FormBorderStyle, Size,

StartPosition…

Mô tả:

Lab: Customizing a Windows Form – Exercise 1: Customize a Rectangular

Windows Form (Trang 16)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Thiết lập thuộc tính Region của Form để tạo Form với hình dạng bất kỳ (trong

bài tập này là hình tam giác).

Hiểu ý nghĩa của đối tương GraphicsPath.

Mô tả:

Lab: Customizing a Windows Form - Exercise 2: Create a Non-Rectangular

Windows Form (Trang 17)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 3:

Mục đích:

Sử dụng một Container Controls: TabControl, FlowLayoutPanel,

TableLayoutPanel, SplitContainer.

Page 8: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 8/89

Biết cách chọn Container Control thích hợp khi thiết kế giao diện.

Mô tả:

Lab: Practice with Container Controls (Trang 36)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 4:

Mục đích:

Thiết kế giao diện với nhiều control sử dụng chung không gian màn hình, và

người sử dụng có thể tùy biến kích thước control đang làm việc.

Sử dụng các SplitContainer control lồng nhau.

Mô tả:

Thiết kế Form sử dụng SplitContainer control để tạo giao diện nhập câu hỏi trắc

nghiệm như hình dưới.

Khi Form thay đổi kích thước, vị trí và kích thước tương đối giữa các textbox vẫn

giữ như lúc đầu tiên.

Gợi ý:

Sử dụng 4 SplitContainer với thiết lập về hướng (Orientation) thích hợp.

Tuần tự thêm vào từng SplitContainer control.

Bài 5:

Mục đích:

Sử dụng thuộc tính DialogResult của Button

Ghép chung sự kiện cho nhiều control

Cách chuyển dữ liệu giữa các Form thông qua kỹ thuật delegate

Mô tả:

Page 9: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 9/89

Viết chương trình cho người sử dụng bình chọn thương hiệu điện thọai được yêu

thích nhất. Chương trình gồm 2 Form: Form1 và Form2.

Người sử dụng nhập tên và hãng điện thọai vào các textbox tại Form1. Nếu

không nhớ tên hãng ĐT, người sử dụng có thể double click vào textbox Hãng

điện thọai, chương trình sẽ hiển thị Form2 chứa các hãng ĐT. Người sử dụng

click chọn hãng nào, Form2 sẽ đóng lại và hiển thị tên hãng tương ứng ở Form1.

Gợi ý:

Thiết lập thuộc tính DialogResult của các button trên Form2

Form1 sẽ dùng kỹ thuật delegate để lấy dữ liệu.

Bài 6:

Mục đích:

Chuyển tab giữa nhiều control nhập liệu

Mô tả:

Tạo giao diện chương trình như hình. Khi người dùng nhập xong một textbox bất kỳ và

bấm phím Enter, chương trình sẽ chuyển focus đến control kế tiếp, giúp tạo sự thuận

tiện cho người nhập.

Page 10: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 10/89

Module 3

Nội dung kiến thức thực hành:

+Sử dụng biến cố (event) cho Mouse và Keyboard

+Sử dụng WebBrowser control

+Sử dụng ToolStrip control

+Tạo một hay nhiều control lúc run-time

+Sử dụng Event cho các control được tạo lúc run-time

Bài 1:

Mục đích:

Theo dõi các biến cố của Mouse: Click, DoubleClick, MouseClick,

MouseDoubleClick, MouseDown, MouseEnter, MouseHover, MouseLeave,

MouseMove, and MouseUp.

Sau khi thực hiện xong bài, cho biết điểm khác biệt giữa sự kiện Click và

MousecClick

Mô tả:

Lab 3: Practice with Mouse Events (Trang 174)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Page 11: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 11/89

Bài 2:

Mục đích:

Ghép sự kiện

Mô tả:

Viết chương trình định dạng màu chữ và màu nền cho Label Khoa Khoa Học &

Kỹ Thuật Máy Tính.

Bài 3:

Mục đích:

Thêm control động lúc runtime

Cho phép control mới tương tác với người sử dụng thông qua các Event

Mô tả:

Viết chương trình với giao diện như hình dưới. Khi lúc khởi động, chương trình

gồm một button “Tạo Textbox” và một Groupbox hiển thị chuỗi: Chưa có textbox

nào.

Sau khi người sử dụng bấm nút “Tạo textbox”, chương trình tạo một Tetxbox mới

và thêm ở Groupbox, đồng thời button này sẽ bị mờ.

Page 12: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 12/89

Khi người sử dụng nhập nội dung trên textbox, nội dung này sẽ lập tức hiển thị

trên tiêu đề của Groupbox.

Khi nguời sử dụng double click vào textbox, thì nội dung của textbox sẽ bị xóa

hết.

Gợi ý:

Tạo một textbox và thêm vào controls của Groupbox

Tạo 2 hàm sự kiện của textbox: Textbox_Changed và Textbox_DoubleClick

Bài 4:

Mục đích:

Sử dụng WebBrowser control và ToolStrip control.

Viết chương trình tạo trình duyệt Web đơn giản

Mô tả:

Lab: Creating a WebBrowser

+Exercise 1: Creating a Web Browser (Trang 125)

Lab 1: Creating a ToolStrip–Based Web Browser

+Exercise 1: Creating a Web Browser (Trang 143)

+Exercise 2: Adding a Search Tool Strip (Trang 144)

Lab 2: Adding File Browsing Capability to Your Web Browser (Trang 160)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 5:

Mục đích:

Nạp động nhiều đối tượng lúc run-time.

Quản lý các đối tượng mới tạo thông qua Collection Controls

Lập trình biến cố trên các đối tượng nạp động lúc run-time

Page 13: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 13/89

Mô tả:

Viết chương trình nạp động các đối tượng như sau.

Khi chương trình vừa khởi động, giao diện chương trình chứa textbox dùng để

nhập số phần tử n. Chương trình chỉ cho phép nhập số vào textbox, không cho

phép nhập chữ vào textbox.

Khi người sử dụng bấm OK (chương trình phải kiểm tra số nhập có hợp lệ hay

không-là số nguyên dương), chương trình sẽ tự động tạo n button động vào như

hình dưới, với giá trị text là ngẫu nhiên từ 2..100.

+Nút “Chọn số chẵn”: các button chứa số chẵn sẽ đổi màu chữ thành màu đỏ.

Các button còn lại màu chữ vẫn màu đen.

+Nút “Chọn số lẻ”: các button chứa số lẻ sẽ đổi màu chữ thành màu đỏ. Các

button còn lại màu chữ vẫn màu đen.

+Nút xóa tất cả: chương trình sẽ xóa tất cả button vừa tạo và đưa chương trình

về trạng thái ban đầu.

+Khi người sử dụng click vào một button chứa số: chương trình sẽ hiện thông

báo cho biết số đó phải là số nguyên tố hay không? Đồng thời button này sẽ bị

mờ, không cho bấm lần thứ 2.

Gợi ý:

Sử dụng FlowLayoutPanel để chứa các đối tượng nạp động lúc run-time, với

thuộc tính AutoScroll=True.

Dùng vòng lặp for each để duyệt qua collection Controls của FlowLayoutPanel.

Viết hàm kiểm tra số nguyên tố.

Page 14: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 14/89

Bài 6:

Mục đích:

Đồng bộ trạng thái giữa nhiều control.

Mô tả:

Viết chương trình định dạng màu chữ cho Label (Khoa Khoa Học và Kỹ Thuật

Máy Tính). Người dùng có thể chọn cách định dạng bằng: menu, các radiobutton

hay Listbox. Khi định dạng màu bằng bất cứ cách nào, trạng thái màu hiện tại

của menu, các radiobutton hay Listbox đều được cập nhật giống nhau.

Page 15: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 15/89

Module 4

Nội dung kiến thức thực hành:

+Sử dụng ImageList control

+Sử dụng đối tượng Listview

Bài 1:

Mục đích:

Sử dụng ImageList control.

Thêm và truy xuất hình ảnh lưu trữ trong ImageList

Mô tả:

Viết chương trình hiển thị một mặt trăng xoay như hình bên dưới.

Người sử dụng có thể cho phép đảo chiều xoay bằng cách sử dụng hai button

Xoay sang trái và xoay sang phải.

+Sau khi làm xong phần trên, tinh chỉnh chương trình để điều khiển bằng một

button duy nhất như sau. Một button dùng để đảo chiều xoay, text hiển thị trên

button luôn thể hiện trạng thái cần đổi đến.

Gợi ý:

Sử dụng Timer. Thiết lập thuộc tính Interval khỏang 40-> 100 (ms).

Sử dụng ImageList chứa 8 Icon (moon01.ico …moon08.ico)

Lần lược hiển thị mỗi lần một hình khi Timer_Tick thực hiện.

Page 16: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 16/89

Bài 2:

Mục đích:

Sử dụng ListView control.

Mô tả:

Exercise 1: Exercise 1: The Ski Instructor Reservation Form (Trang 105)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 3:

Mục đích:

Sử dụng Listview control.

Hiểu và nắm được các thuộc tính, method quan trọng của ListView

Mô tả:

Viết chương trình nhập dữ liệu vào Listview như hình bên dưới.

Người sử dụng nhập thông tin: (lastname, firstname, phone) và sử dụng nút Add

Name để nhập vào listview.

Các contact có biểu tượng (icon) hiển thị như hình.

Người sử dụng có thể thay đổi chế độ view của listview bằng menu View.

Menu FormatListview hiểu thị hộp thọai chọn màu dùng để thay đổi màu chữ

(forecolor) của Listview.

Gợi ý:

Sử dụng ListviewItem để thêm một dòng mới cho Listview

Page 17: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 17/89

Sử dụng ImageList để chứa thư viện icon cho Listview. Kết nối Listview với

ImageList.

Sử dụng ColorDialog control để hiển thị hộp thọai chọn màu, và thay đổi

forecolor của Listview.

Bài 4:

Mục đích:

Phát triển bài tập 3 với yêu cầu chỉnh sửa thông tin.

Mô tả:

Khi người sử dụng double click vào một nhân viên trong listview, chương trình

sẽ hiển thị form mới gồm 3 textbox và hiển thị thông tin nhân viên đang chọn.

Sau khi người dùng chỉnh sửa thông tin này, và bấm nút lưu (ở form mới), form

này sẽ đóng lại và quay về form chính, đồng thời cập nhật lại thông tin trong

listview.

Bài 5:

Mục đích:

Thao tác trên các phần tử của Listview.

Mô tả:

Viết chương trình nhập và quản lý danh sách như hình dưới. Chương trình quản

lý danh sách 2 lớp: Lớp A và lớp B. Lớp A là các sinh viên đang đăng ký chờ

nhập học. Lớp B là danh sách Sv đã được chấp nhận để vào lớp học.

Người sử dụng nhập danh sách sinh viên lớp A bằng cách nhập Mã SV và Họ

Tên SV trong 2 textbox, sau đó bấm nút OK.

Người sử dụng có thể chọn một hay nhiều SV trong 1 danh sách và chuyển qua

danh sách kia bằng các nút lệnh < hay >. Nút lệnh << và >> dùng để chuyển

tòan bộ danh sách.

Người sử dụng có thể tìm nhanh những SV nào đó theo tên hoặc mã (tìm không

chính xác, ví du: nhập Ca để tìm tất cả SV có mã hoặc tên chứa từ Ca).

Số thứ tự của SV do chương trình đánh tự động, luôn bắt đầu bằng số 1 và liên

tiếp 1,2,3….

Page 18: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 18/89

Mã SV nhập vào danh sách không được trùng với các mã SV đã tồn tại trong cả

2 danh sách lớp A và lớp B.

Gợi ý:

Các Listview có thuộc tính MultiSelect =True

Chuyển một tử từ danh sách này sang danh sách khác: gồm 2 thao tác: thêm và

xóa

Page 19: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 19/89

Module 5

Nội dung kiến thức thực hành:

+Sử dụng TreeView control

+Kết hợp giữa TreeView và ListView

+Sử dụng ToolStrip control

Bài 1:

Mục đích:

Nạp danh sách vào TreeView. Kết hợp với ImageList control để hiển thị biểu

tượng cho các node của cây..

Tạo và sử dụng ToolStrip control.

Mô tả:

Viết chương trình hiển thị danh mục các ký tự như hình. Các ký tự được chua

làm 3 nhóm: ký tự đặt biệt, chữ cái (từ a..z) và chữ số (từ 1..50).

Trên toolstrip của chương trình chứa 2 nút lệnh dùng để đóng/mở tòan bộ cây.

Gợi ý:

Page 20: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 20/89

Sử dụng ImageList lưu trữ 5 icon khác nhau và kết nối với Treeview

Sử dụng vòng lặp nhập các ký tự vào Listview

Bài 2:

Mục đích:

Nạp danh sách vào TreeView. Đồng bộ giữa TreeView và ListView.

Mô tả:

Viết chương trình xem danh sách sinh viên của Khoa Khoa Học và Kỹ Thuật

Máy Tính -Đại Học Công Nghiệp Tp.HCM trường Đại Học Công Nghiệp Tp.HCM

như hình. Khi chương trình vừa thực thi, Treeview hiển thị danh sách các lớp –

các sinh viên như hình.

Khi nguời sử dụng chọn cấp Khoa, chương trình hiển thị tòan bộ danh sách sinh

viên thuộc Khoa đang chọn vào Listview. Khi người sử dụng chọn một lớp bất kỳ

thì chương trình hiển thị tòan bộ sinh viên của lớp đang chọn vào listview. Khi

chọn 1 sinh viên bất kỳ thì chỉ hiển thị sinh viên đó vào Listview.

Page 21: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 21/89

Gợi ý:

Kiểm tra vị trí của Node đang chọn trên Treeview.

Bài 3:

Mục đích:

Nạp danh sách vào TreeView. Phân biệt vị trí đang chọn trên Treeview.

Mô tả:

Viết chương trình nhập danh sách lớp và sinh viên của Khoa Khoa Học và Kỹ

Thuật Máy Tính -Đại Học Công Nghiệp Tp.HCM với giao diện như hình dưới.

Khi người sử dụng chọn node Trung Tâm CNTT-HUI, chương trình hiển thị

textbox cho phép nhập các lớp mới của Trung Tâm CNTT-HUI. Việc nhập được

thực hiện bằng nút lệnh OK hoặc bấm phím Enter.

Page 22: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 22/89

Khi người sử dụng chọn một lớp nào đó trong treeview, chương trình hiển thị

textbox dùng để nhập tên các sinh viên thuộc lớp đó. Việc nhập được thực hiện

bằng nút lệnh OK hoặc bấm phím Enter.

Khi người sử dụng chọn node sinh viên, chương trình sẽ hiển thị tên sinh viên

đó vào textbox, đồng thời khóa textbox và button, không cho phép họat động.

Gợi ý:

Phân biệt cấp của node đang chọn trên TreeView.

Page 23: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 23/89

Module 6

Nội dung kiến thức thực hành:

+Sử dụng TreeView control, WebBrowser control

+Kết hợp giữa TreeView và ListView

+Nạp đối tượng động

Bài 1:

Mục đích:

Nạp danh sách vào TreeView. Nạp đối tượng động.

Mô tả:

Viết chương trình tóan vui với giao diện khởi đầu gồm một textbox và button OK

như hình dưới.

Sau khi người sử dụng nhập số phần tử n vào textbox và bấm OK, chương trình

sẽ tạo n tetxbox nạp động và tạo tập số ngẫu nhiên từ 2..200 như hình. Nút OK

sẽ bị mờ và không cho họat động. Treeview chứa danh sách các số này phân

theo 3 nhóm: các số chẵn, các số lẻ và các số nguyên tố với các icon khác nhau

(xem hình).

Khi người sử dụng thay đổi một giá trị nào đó của các textbox số trong mục “tập

số”, chương trình sẽ lập tức cập nhật danh sách mới vào TreeView.

Khi người sử dụng bấm nút Clear, chương trình sẽ xóa tất cả textbox động,

treeview và trở về trạng thái lúc ban đầu.

Page 24: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 24/89

Gợi ý:

Nạp động n textbox vào một FlowLayout panel.

Duyệt các textbox này và xây dựng Treeview.

Thêm sự kiện TextChanged cho các textbox này.

Bài 2:

Mục đích:

Nạp danh sách vào TreeView. Sử dụng một số hàm-phương thức trên chuỗi.

Mô tả:

Viết chương trình nhập danh danh bạ với yêu cầu giao diện như hình dưới.

+Khi chương trình vừa hiển thị, treeview chứa tất cả các chữ cái từ A->Z.

+Nhằm mục đích tiện lợi cho người sử dụng khi tìm tên, khi người sử dụng nhập

tên của một người nàp đó, chương trình sẽ đưa tên người này vào treeview ở vị

trí treenode có tương ứng với chữ các đầu của tên (xem hình).

+Khi người sử dụng chọn một tên nào đó, chương trình hiển thị lại họ - tên người

đó vào các textbox.

+Thêm một ToolStrip chứa textbox dùng để tìm người đầu tiên (theo first name

hay last name) và chọn trên treeview, đồng thời hiển thị tên người tìm thấy lên 2

textbox.

Chú ý là, tên người sử dụng nhập không bỏ dấu tiếng việt.

Page 25: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 25/89

Gợi ý:

Nạp danh sách ký tự từ A->Z vào Treeview

Dùng phương thức SubString(vitrí,số ký tự) để lấy ký tự đầu tiên của tên.

Chọn node ký tự tương ứng trong Treeview và thêm học+tên vào Node này.

Bài 3:

Mục đích:

Nạp đối tượng động. Quản lý và sử dụng các đối tượng động vừa nạp này.

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. Rạp có 3 hàng ghế, mỗi hàng có 5 ghế, 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é - ghế từ 1-5

Giá vé lô B 30 ngàn/vé - ghế từ 6-10

Giá vé lô C 40 ngàn/vé- ghế từ 11-15

Page 26: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 26/89

Một người vào có thể mua nhiều vé, và Người bán sẽ chọn các ghế từ các

checkbox.

+Khi vừa chọn ghế nào, chương trình lập tức cập nhật danh sách các ghế đang

chọn và listbox bên dưới

+Khi vừa chọn ghế nào, chương trình lập tức tính và hiển thị tổng số tiền vào

label bên dưới

+ Khi người mua muốn hủy bỏ 1 vé nào đó, người bán sẽ chọn số ghế trong

listbox và bấm nút “Xóa ghế đang chọn”. Chương trình lập tức sẽ xóa số ghế đó

trong listbox và bỏ checkbox cho ghế đó.

+Nút “Xóa tất cả” sẽ xóa tất cả các số ghế trong listbox và đưa trạng thái tất cả

các checkbox về trạng thái không chọn

+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.

+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.

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.

Duyệt các checkbox này mỗi khi checkbox thay đổi và cập nhật Listbox.

Page 27: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 27/89

Module 7

Nội dung kiến thức thực hành:

Sử dụng các control: PropertyGrid, StatusStrip, ErrorProvider, HelpProvider…

Bài 1:

Mục đích:

Sử dụng các control: PropertyGrid, StatusStrip, ErrorProvider, HelpProvider

Mô tả:

Lab: Practice with User Assistance Controls: Ex 1,2,3,4 (Trang 588).

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Sử dụng các control: PropertyGrid để thiếp lập giá trị cho các control. Sử dụng

sự kiện của mouse

Mô tả:

Tạo ứng dụng dùng để vẽ các điểm được click trên màn hình.

Gợi ý:

SV tự tạo class tên là myClass (myX, myY) chứa tọa độ các điểm được click

chuột. (không sử dụng class Point có sẵ).

Khi người dùng click vào điểm nào trên form, chương trình thêm điểm đó vào

danh sách và hiển thị trong listbox, đồng thời chương trìn sẽ vẽ line nối các điểm

với nhau.

Khi người dùng chọn điểm nào trên lisview, chương trình cho phép sửa tọa độ

điểm đó trên property grid. Ngay khi tọa độ vừa đựợc vẽ, chương trình sẽ vẽ lại

đường nối tất cả các điểm này.

Page 28: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 28/89

Bài 3:

Mục đích:

Tạo bộ cài đặt cho ứng dụng với Click One

Mô tả:

Exercise 1: Publishing an Application to a Network Share (Trang 673).

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 4:

Mục đích:

Tạo bộ cài đặt cho ứng dụng sử dụng Setup Projects for Deployment.

Mô tả:

Lab: Create a Setup Project (Trang 685).

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 5:

Mục đích:

Tạo bộ cài đặt cho ứng dụng

Mô tả:

Page 29: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 29/89

Viết chương trình hiển thi danh sách SV từ file text vào listview. (sv.txt). Mỗi

hàng chứa 3 thông tin (mã, ten, lop) cách nhau bằng dấu phẩy.

Ví dụ:

1, Nguyễn văn A, NCTH1A

2, Nguyễn văn B, NCTH1B

3, Nguyễn văn C, NCTH1A

4, Nguyễn văn D, NCTH1B

Sau đó, thực hiện tạo bộ cài đặt cho chương trình này. Sau khi cài, chương trình

sẽ tạo serial number để tráng người khác sử dụng bộ cài, tạo shortcut trên

desktop tên là KhoaKHvaKTMT, tạo nhóm và shortcut cùng tên trong menu start

để khởi động ứng dụng.

Page 30: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 30/89

Module 8

Nội dung kiến thức thực hành:

+Tạo Connection với MS Access và SQL Server

+Sử dụng Exception

+Nắm được một số thuật ngữ trong ADO.NET và phạm vi áp dụng

Bài 1:

Mục đích:

Tạo connection (thời điểm design time) từ cửa sổ Server Explorer

Tạo connection (thời điểm design time) từ Data Source Configuration Wizard

Mô tả:

Exercise 1: Creating Connections in Server Explorer (Trang 190)

Exercise 2: Creating Connections using the Data Source Configuration Wizard

(Trang 191).

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Tạo connection (thời điểm run time) sử dụng code. Sinh viên phải nắm được

tường tận thiết lập của connectionstring với MS Access, SQL Server.

Mở kết nối và kiểm tra trạng thái của connection.

Sử dụng event của connection.

Đọc thông tin về server từ connection

Mô tả:

Lab: Practice Opening and Closing Data Connections (Trang 196)

(Lưu ý: chỉ thực hiện kết nối với MS Access, SQL Server)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 3:

Mục đích:

Page 31: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 31/89

Xử lý biệt lệ (Exception). Xử lý các lỗi thông dụng.

Mô tả:

Viết chương trình thực hiện phép tóan chia với mục đích dùng để xứ lý các giá trị

do người sử dụng nhập. Giao diện chương trình bên dưới.

Bước 1: Viết code cho nút lệnh “Tính A/B” như sau:

private void button2_Click(object sender, EventArgs e) {

try

{

int a = Convert.ToInt16(txta.Text);

int b = Convert.ToInt16(txtb.Text);

int chia = a / b;

txtkq.Text = chia.ToString();

}

catch (Exception ex1)

{ MessageBox.Show("Lỗi" + Environment.NewLine +

ex1.GetType().ToString()); }

}

Thực thi chương trình. Nhập giá trị các textbox là chữ cái. Xem loại lỗi. Xác định

đây là loại lỗi thường xảy ra.

Bước 2: Thay đổi chương trình như sau

try

{

int a = Convert.ToInt16(txta.Text);

int b = Convert.ToInt16(txtb.Text);

int chia = a / b;

txtkq.Text = chia.ToString();

}

catch (FormatException ex1)

{

MessageBox.Show("Dữ liệu nhập không hợp lệ: phải là số" +

Environment.NewLine + ex1.Message );

txta.SelectAll();

txta.Focus();

}

catch (Exception ex2)

{

Page 32: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 32/89

MessageBox.Show("Lỗi" + Environment.NewLine +

ex2.GetType().ToString()); }

Thực thi chương trình. Nhập giá trị các textbox là rất lớn (999999999). Xem loại

lỗi. Xác định đây là loại lỗi thường xảy ra.

Bước 3: Thay đổi chương trình như sau

try

{

int a = Convert.ToInt16(txta.Text);

int b = Convert.ToInt16(txtb.Text);

int chia = a / b;

txtkq.Text = chia.ToString();

}

catch (FormatException ex1)

{

MessageBox.Show("Dữ liệu nhập không hợp lệ: phải là số" +

Environment.NewLine + ex1.Message );

txta.SelectAll();

txta.Focus();

}

catch (OverflowException ex2)

{ MessageBox.Show("Số nhập quá lớn." + Environment.NewLine +

ex2.Message); }

catch (Exception ex3)

{ MessageBox.Show("Lỗi" + Environment.NewLine +

ex3.GetType().ToString()); }

Bước 4: Nhập giá trị txtB bằng 0. Thực thi chương trình. Sinh viên thực hiện bắt

lỗi này và hiện thông báo tiếng Việt để dễ dàng cho người sử dụng.

Gợi ý:

Thực hiện với cách làm như các bước 1,2 và 3.

Bài 4:

Mục đích:

Xử lý các biệt lệ (Exception) khi kết nối với database.

Hiển thị các thông báo lỗi từ SQL server.

Mô tả:

Lab: Handling Database Connection Errors (Trang 214)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Page 33: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 33/89

Bài 5:

Mục đích:

Tìm các instance của SQL Server từ các máy trong mạng

Mô tả:

Lab: Returning the List of Visible SQL Servers (Trang 220)

Sau khi hiển thị kết quả, kiểm tra xem có tên máy cục bộ trong danh sách hay

không? Nếu không thì cho biết tại sao?

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Page 34: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 34/89

Module 9

Nội dung kiến thức thực hành:

+Kết nối với Database SQL Server và MS Access trong môi trường Connected

sử dụng DataReader

+Thực thi câu lệnh SQL, gọi Stored Procedure của SQL

+Nhận kết quả trả về sử dụng DataReader

Bài 1:

Mục đích:

Kết nối với MS Access và SQL server

Thiết lập command và thực thi câu lệnh SQL trong 2 trường hợp: ExecuteReader

và ExecuteNonQuery.

Mô tả:

Lab: Executing SQL Statements and Calling Stored Procedures (Trang 246)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Truy xuất dữ liệu từ MS Access sử dụng Datareader. Sử dụng câu lệnh SQL

được phát sinh từ C#. Thực hiện kết nối động vào file MS Access (đường dẫn

file là đường dẫn của chương trình).

Mô tả:

Tạo cơ sở dữ liệu MS Access lưu trữ danh sách sinh viên trong một table

SINHVIEN gồm 4 field như hình. Nhập danh sách 5 sinh viên trong lớp vào bảng

SINHVIEN từ trong MS Access.

Page 35: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 35/89

Viết chương trình hiển thị danh sách sinh viên trên từ database vào Listview với

giao diện như hình. Listview hiển thị tòan bộ danh sách sinh viên, và thông tin về

giới tính (nam/nữ) của mỗi sinh viên được biểu diễn bằng các biểu tượng tương

ứng khác nhau (xem hình).

+Khi người sử dụng chọn một sinh viên nào, chương trình lập tức hiển thị thông

tin chi tiết của sinh viên đó vào các textbox (xem hình).

+Thêm vào form một menu Sắp Xếp Tăng Dần chứa 3 menuitem(Sắp xếp theo

Tên Sv, Sắp xếp theo Địa chỉ, Sắp xếp theo SDT). Khi người sử dụng chọn kiểu

sắp xếp nào, chương trình sẽ cập nhật lại danh sách sinh viên trong Listview

theo thứ tự vừa chọn.

Gợi ý:

Xem hướng dẫn cách truy xuất dữ liệu tại giáo trình – trang 214.

Sử dụng lớp OLEDB để truy xuất dữ liệu Ms Access.

Bài 3:

Mục đích:

Truy xuất dữ liệu từ MS SQL Server sử dụng Datareader.

Sử dụng kết quả trả về để nạp động đối tượng. Thao tác trên đối tượng động

tương ứng với record dữ liệu.

Mô tả:

Tạo cơ sở dữ liệu từ SQL Server quản lý sách bán tại một cửa hàng. Nhập danh

sách sách gồm 10 cuốn là các giáo trình sinh viên đang và đã học tại Khoa

Khoa Học và Kỹ Thuật Máy Tính -Đại Học Công Nghiệp Tp.HCM

Page 36: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 36/89

Khi chương trình vừa được thực thi, chương trình nạp động các button tương

ứng với số đầu sách trong database (mỗi đầu sách tương ứng một button) và

hiển thị tên sách.

Khi người sử dụng click chọn một đầu sách nào đó, chương trình hiển thị thông

tin chi tiết về đầu sách đó ở các textbox bên cạnh (xem hình).

Gợi ý:

Xem hướng dẫn cách truy xuất dữ liệu tại giáo trình – trang 224, 249, 250.

Sử dụng lớp SQLClients để truy xuất dữ liệu Ms SQL Server.

Việc thực hiện nạp động cho từng button nên thực hiện trong một hàm riêng để

dễ dàng cho việc đọc và sửa chương trình.

Bài 4:

Mục đích:

Truy xuất dữ liệu từ MS Access. Hiển thị dữ liệu vào listview với phân nhóm

group.

Mô tả:

Page 37: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 37/89

Tạo cơ sở dữ liệu MS Access quản lý danh sách lớp. Dữ liệu gồm 2 table

Lop(ma,ten) và SV(ma,ten,malop). Nhập dữ liệu mẫu gồm 3 lớp, mỗi lớp gồm 3

SV.

Khi chương trình vừa nạp và hiển thị, mặc định sẽ hiển thị tất cả các sv thuộc tất

cả các lớp vào listview, phân theo group là lớp. Menu Danh sách lớp chọn sẵn là

“Tất cả các lớp”. (có dấu check).

Khi người dùng chọn lớp nào, thì chương trình chỉ hiển thị danh sách sinh viên

thuộc lớp đó.

Bài 5:

Mục đích:

Truy xuất dữ liệu từ MS SQL server. Viết chương trình gởi email tự động

Mô tả:

Tạo cơ sở dữ liệu từ MS SQL server gồm các table: DANHBA(ma, ten, email);

EMAIL_CAN_GOI(stt, macontact, headermessage,bodymessage,ngaygoi,

giogoi).

Khi vừa được nạp, chương trình chạy nền ở Tray (khay hệ thống) của MS

Windows. Để kích họat giao diện, nguời dùng bấm phải chuột vào biểu tượng và

chọn hiển thị giao diện.

Page 38: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 38/89

Sau 15 phút, chương trình sẽ dò thấy trong nguồn dữ liệu có email với ngày và

giờ ấn định (sai lệch 1 giờ )thì sẽ gởi email này đến người nhận.

Ghi chú: Tất cả các thông tin được Sv nhập trực tiếp vào database (Sv sẽ bổ

sung phần thêm thông điệp và danh bạ sau khi hòan tất các module phía sau –

phần cập nhật dữ liệu). Cách gởi email sẽ được GV post tại blog của GV.

Page 39: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 39/89

Module 10

Nội dung kiến thức thực hành:

+Kết nối với Database SQL Server và MS Access trong môi trường Connected

sử dụng DataReader

+Sử dụng SQL động trước khi thực thi câu lệnh SQL

+Sử dụng Command Parameters trước khi thực thi câu lệnh SQL

+Nhận kết quả trả về sử dụng DataReader

Bài 1:

Mục đích:

Kết nối với và SQL server. Tạo và thực thi lệnh SQL có tham số.

Mô tả:

Lab: Working with Parameters

Exercise 1: Creating and Executing a Parameterized SQL Statement

(Trang 257)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Tạo và thực thi lệnh Stored Procedure có tham số (chỉ loại Input Parameters).

Mô tả:

Lab: Working with Parameters

Exercise 2: Creating and Executing a Parameterized Stored Procedure

(Trang 262)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 3:

Mục đích:

Tạo và thực thi lệnh Stored Procedure có tham số InputOutput and Output.

Mô tả:

Page 40: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 40/89

Lab: Working with Parameters

Exercise 3: Using InputOutput and Output Parameters (Trang 267)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 4:

Mục đích:

Kết nối với và MS Access. Sử dụng Parameters Query để truy xuất dữ liệu

Mô tả:

Thiết kế database gồm 1 table SinhVien(ma,hoten,diachi,ngaysinh,SDT).

Khi chương trình vừa thực thi, hiển thị danh sách sinh viên trong Listview chỉ

gồm 2 cột: Họ tên và ngày sinh.

Khi người sử dụng chọn một sinh viên nào đó thì chương trình hiển thị thông tin

chi tiết của sinh viên vừa chọn vào các textbox như hình dưới.

Cài đặt chương trình sử dụng Parameters Query để thực hiện bài tập này.

Gợi ý:

Sinh viên tùy chọn cơ sở dữ liệu là MS Access hoặc SQL Server.

Nạp danh sách sinh viên vào listview (nên viết hàm riêng) và được gọi ở

Form_Load

Viết hàm hiển thị thông tin chi tiết của sinh viên với 1 tham số là Mã SV. Gọi

hàm này từ sự kiện Listview_SelectedIndexChaned

Bài 5:

Mục đích:

Truy xuất dữ liệu từ MS SQL Server sử dụng Stored Procedured tham số.

Sử dụng kết quả trả về để nạp động đối tượng. Thao tác trên đối tượng động

tương ứng với record dữ liệu.

Page 41: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 41/89

Cài đặt chương trình sử dụng Stored Procedured để thực hiện bài tập này.

Mô tả:

Tạo cơ sở dữ liệu từ SQL Server quản lý sách bán tại một cửa hàng. Nhập danh

sách sách gồm 10 cuốn là các giáo trình sinh viên đang và đã học tại Khoa

Khoa Học và Kỹ Thuật Máy Tính -Đại Học Công Nghiệp Tp.HCM.

Khi chương trình vừa được thực thi, chương trình nạp động các button tương

ứng với số đầu sách trong database (mỗi đầu sách tương ứng một button) và

hiển thị tên sách.

Khi người sử dụng click chọn một đầu sách nào đó, chương trình hiển thị thông

tin chi tiết về đầu sách đó ở các textbox bên cạnh (xem hình).

Yêu cầu: tạo 2 Stored Procedured: Sp_getBooks (lấy danh mục sách dùng cho

việc nạp động) và sp_getBookDetail (lấy về 1 record Book dùng cho việc hiển

thị thông tin chi tiết.)

Gợi ý:

Việc thực hiện nạp động cho từng button nên thực hiện trong một hàm riêng để

dễ dàng cho việc đọc và sửa chương trình.

Page 42: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 42/89

Module 11

Nội dung kiến thức thực hành:

+Bước đầu làm quen với với chế độ Disconected

+Khảo sát cấu trúc của Dataset

+Tạo và phân biệt các đối tượng typed DataSet và untyped DataSet

+Khảo sát cấu trúc DataTable

Bài 1:

Mục đích:

Tạo đối tượng typed DataSet sửdụng DataSet Designer

Mô tả:

Lab: Creating DataSet Objects

Exercise 1: Creating a DataSet with the DataSet Designer (Trang 347)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Tạo đối tượng typed DataSet sử dụng Data Source Configuration Wizard

Mô tả:

Lab: Creating DataSet Objects

Exercise 2: Creating a Typed DataSet with the Data Source Configuration

Wizard (Trang 349)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 3:

Mục đích:

Tạo đối tượng untyped DataSet

Mô tả:

Lab: Creating DataSet Objects

Exercise 3: Configuring Untyped DataSet Objects (Trang 353)

Gợi ý:

Page 43: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 43/89

Xem hướng dẫn thực hiện trong giáo trình.

Bài 4:

Mục đích:

Tạo đối tượng DataTable không sử dụng database có sẵn

Khảo sát cấu trúc của DataTable

Mô tả:

Lab: Creating DataTable Objects

Exercise 1: Creating a DataTable (Trang 364)

Gợi ý: Xem hướng dẫn thực hiện trong giáo trình.

Page 44: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 44/89

Module 12

Nội dung kiến thức thực hành:

+Sử dụng DataAdapter với môi trường Disconected

+Khảo sát cấu trúc của DataAdapter

+Sử dụng CommandBuilder với DataAdapter khi cập nhật dữ liệu

Bài 1:

Mục đích:

Tạo đối tượng DataAdapter cửa dụng Data Adapter Configuration Wizard.

Tạo đối tượng typed DataSet từ DataAdapter này. Nạp dữ liệu và hiển thị trên

DataGrid. Update dữ liệu.

Sử dụng các sự kiện RowUpdating, RowUpdated, FillError của DataAdapter

Mô tả:

Lab: Working with DataAdapter Objects

Exercise 1: Creating a DataAdapter with the Data Adapter Configuration

Wizard (Trang 375)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Tạo đối tượng DataAdapter sử dụng code

Tạo đối tượng untyped DataSet – untyped DataTable.

Update dữ liệu sử dụng CommandBuilder

Mô tả:

Lab: Working with DataAdapter Objects

Exercise 2: Creating DataAdapters in Code (Trang 379)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 3:

Mục đích:

Page 45: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 45/89

Sử dụng DataSet, Parameters Command, Command Builder để viết ứng dụng

quản lý danh bạ.

Mô tả:

Viết chương trình quản lý danh bạ với giao diện như hình bên dưới.

Sử dụng MS Access (hoặt SQL Server) lưu trữ danh bạ, gồm 1 Table: chứ 4

field DanhBa(ID, LastName, FirstName, Phone) Khi hiển thị, chương trình chỉ

hiển thị 3 field (xem hình).

Khi người sử dụng nhập thông tin: (lastname, firstname, phone) và sử dụng nút

Add Name để nhập, thì chương trình cập nhật danh bạ này vào Database và

vào listview. Sau đó chương trình xóa trắng các textbox.

Khi người sử dụng chọn 1 hàng nào đó trên Listview, chương trình hiển thị lại

thông tin chi tiết vào các Textbox.

Trong chương trình sử dụng DataSet, Parameters Command, Command Builder

để thực hiện các yêu cầu.

Gợi ý:

Tạo 1 table DanhBa(ID, LastName, FirstName, Phone) với ID là khóa chính, và

tự động tăng dần.

Bài 4:

Mục đích:

Sử dụng DataAdapter để hiển thị và lưu trữ dữ liệu, kết hợp với control

TreeView.

Mô tả:

Page 46: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 46/89

Viết chương trình nhập danh danh bạ với yêu cầu giao diện như hình dưới.

+Khi chương trình vừa hiển thị, treeview chứa tất cả các chữ cái từ A->Z và tên

danh bạ, phân lọai theo ký tự đầu, và sắp xếp theo LastName.

+Chương trình cho phép nhập 1 danh mục người quen mới, và lưu trữ vào cơ sở

dữ liệu (chưa 1 table: DanhBa(ID, Fname, Lname)

+Khi người sử dụng chọn một tên nào đó, chương trình hiển thị lại họ - tên người

đó vào các textbox.

Chú ý là, tên người sử dụng nhập không bỏ dấu tiếng việt.

Gợi ý:

Sử dụng DataDapter và CommandBuilder để thực hiện việc cập nhật dữ liệu.

Field ID để dạng autonumber.

Bài 5:

Mục đích:

Nạp danh sách vào TreeView-ListView. Dữ liệu được lấy từ DataBase (MS

Access hoặc SQL Server) sử dụng DataSet. Viết hàm truy xuất DataBase để

giảm độ dài của chương trình.

Mô tả:

Viết chương trình xem danh sách sinh viên của các Trung Tâm tại trường Đại

Học Công Nghiệp Tp.HCM như hình. Khi chương trình vừa thực thi, Treeview

hiển thị danh sách các Khoa - Lớp – và sinh viên như hình.

Page 47: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 47/89

Dữ liệu được thiết kế gồm 3 bảng: TrungTam, Lop,Sinhvien.

Khi nguời sử dụng chọn cấp Trung Tâm, chương trình hiển thị tòan bộ danh

sách sinh viên thuộc Trung Tâm đang chọn vào Listview. Khi người sử dụng

chọn một lớp bất kỳ thì chương trình hiển thị tòan bộ sinh viên của lớp đang

chọn vào listview. Khi chọn 1 sinh viên bất kỳ thì chỉ hiển thị sinh viên đó vào

Listview.

Gợi ý:

Thực hiện viết các hàm thư viện trả về Dataset, sử dụng các hàm này để giảm

độ dài của chương trình.

Bài 6:

Mục đích:

Viết chương trình lưu các ghi chú (note) cho người sử dụng.

Mô tả:

Chương trình ghi chú đọc – ghi dữ liệu từ MS Access hoặc SQL server. Dữ liệu

gồm 1 table: Ghichu(ma, ten,noidung,ngay). Mã ghi chú kiểu số được đánh tự

động. Khi vừa được nạp, chương trình chạy nền ở Tray (khay hệ thống) của MS

Page 48: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 48/89

Windows. Để kích họat giao diện, nguời dùng bấm phải chuột vào biểu tượng và

chọn hiển thị giao diện.

Người dùng có thể thêm 1 ghi chú mới, bằng cách nhập nội dung và bấm nút

thêm. Để xóa ghi chú, nguời dùng bấm phải chuột ngay vị trí ghi chú cần xóa và

chọn mục Xóa ghi chú. Truớc khi xóa, chương trình sẽ hỏi để xác nhận việc xóa.

Để sửa nội dung, nguời dùng bấm phải chuột ngay vị trí ghi chú cần sửa và chọn

sửa ghi chú. Lúc đó nội dung sẽ hiển thị trên các textbox, đồng thời nút Thêm sẽ

đổi thành nút Cập nhật.

Danh sách ghi chú hiển thị thei yêu cầu: các ghi chú có ngày thực hiện chưa xảy

ra (so với ngày hiện tại của đồng hồ máy) sẽ có màu xanh, chữ in đậm. Các ghi

chú trong quá khứ sẽ có màu đỏ, in chữ thường.

Page 49: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 49/89

Module 13

Nội dung kiến thức thực hành:

+Khảo sát cấu trúc dữ liệu lưu trữ trong DataTable

+Cập nhật dữ liệu trong DataAdapter

+Sử dụng DataView

Bài 1:

Mục đích:

Thêm, xóa, sửa DataTable

Truy xuất các version của datarow sử dụng RowVersion

Kiểm tra data version sau khi sử dụng phương thức AcceptChanges,

Rejectchanges của datarow

Mô tả:

Lab: Working with Data in a DataTable

Exercise 1: Working with DataTable Objects (Trang 388)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Tạo đối tượng DataView từ DataTable có sẵn.

Sử dụng DataView objects để sort và filter dữ liệu hiển thị từ DataTable.

Mô tả:

Lab: Working with DataView Objects

Exercise 1: Working with DataView Objects (Trang 412)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 3:

Mục đích:

Sử dụng DataView objects để sort và filter dữ liệu hiển thị từ DataTable.

Mô tả:

Page 50: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 50/89

Sử dụng lại chương trình của bài 3- module 9. Tạo menu Sort By chứa 3 menu

con để sắp xếp danh sách trong listview theo LastName, FirstName, Phone.

Gợi ý:

Sử dụng phương thức Sort của DataView.

Bài 4:

Mục đích:

Nạp đối tượng động với database. SV tự chọn cách nạp dữ liệu cho hợp lý nhất.

Mô tả:

Viết một phần của chương trình quản lý danh sách đồ án môn học. Một nhóm

làm đồ án có tối đa 7 sinh viên. Database gồm 2 table: Nhom(sonhom, tendetai),

sinhvien(masv,ten,sonhom, sdt,email).

Khi chương trình vừa nạp: hiển thị danh sách nhóm từ daabase vào các button.

Khi người dùng click nhóm nào, chương trình sẽ hiển thị menu chứa danh sách

SV của nhóm đó. Nếu người dùng chọn SV nào, chương trình sẽ hiển thị

messagbox chứa thông tin sv đó: mã sv, tên, sdt, email.

Page 51: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 51/89

Bài 5:

Mô tả:

Nạp dữ liệu từ database vào autocomplete cho text box. Dữ liệu gồm 1 table:

KhachHang (ma, ten, quequan).

Bài 6:

Mô tả:

Khoa Khoa học và kỹ thuật máy tính -Đại Học Công Nghiệp Tp.HCM cần

chương trình quản lý nhóm thực hành của sinh viên theo danh sách lớp. Dữ liệu

gồm 2 table: Lop(ma, tenlop) và SV(ma,hoten,malop).

Chương trình gồm 4 form: form chính, form lớp (dùng để thêm, sửa, xóa danh

sách lớp. SV tự thiết kế).

Form chọn lớp để chuyển: nguời dùng chọn 2 lớp, và bấm nút “Chuyển Sv giữa

các lớp” và chương trình hiển thị form Quản lý học viên. Nếu không chọn đúng 2

lớp, chương trình sẽ báo lỗi.

Form quản lý học viên giúp nhập mới một sinh viên (lưu vào database) và

chuyển SV giữa 2 lớp đang chọn. Khi form vừa được nạp, danh sách SV của 2

Page 52: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 52/89

lớp sẽ hiển thị, và người dùng có thể chuyển các SV đang chọn (hay tòan bộ

SV) của lớp này sang lớp khác. Tất cả thay đổi đều được cập nhật vào

database.

Page 53: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 53/89

Module 14

Nội dung kiến thức thực hành:

+Tạo Data From sử dụng Data Form Wizard.

+Sử dụng Data Source Configuration Wizard để tạo data-bound Windows Forms

+Sử dụng Simple Bound control và Complex Bound control

Bài 1:

Mục đích:

Tạo DataBound control từ DataSource Window, sử dụng Wizard

Khảo sát đối tượng DataBindingSource

Xem xét khả năng họat động của các relate records

Mô tả:

Lab 1: Creating a Data-Bound Windows Form

Exercise 1: Create a Data-Bound Form with the Data Sources Wizard

(Trang 423)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Sử dụng đối tượng DataBound Control

Sử dụng Code để tạo binding với control.

Cài đặt cho chế độ Simple DataBound

Mô tả:

Lab: Data Binding Controls

Exercise 1: Simple Data Binding (Trang 432)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 3:

Mục đích:

Sử dụng đối tượng DataBound Control

Sử dụng Code để tạo binding với control.

Page 54: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 54/89

Cài đặt cho chế độ Complex Data Binding

Mô tả:

Lab: Data Binding Controls

Exercise 2: Complex Data Binding (Trang 434)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 4:

Mục đích:

Sử dụng đối tượng Listbox/Combobox với chế độ Complex bound

Mô tả:

Viết chương trình xem danh sách bài hát của các ca sỹ.

Dữ liệu gồm 2 bảng: CASY(ma,ten); BAIHAT(ma,tenbaihat, nhacsy, macasy)

Sinh viên xem xét và tự thiết lập relation giữa các bảng.

Khi chương trình vừa được thực thi, trong combobox hiển thị danh sách tên các

ca sỹ.

Khi chọn một ca sỹ nào đó từ danh sách, chương trình hiển thị danh sách các

bài hát của ca sỹ đó vào Listview bên dưới.

Gợi ý:

Sử dụng Thuộc tính DataSource, Datamember, DisplayMember,ValueMember

của Listbox/Combobox.

Page 55: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 55/89

Bài 5:

Mục đích:

Sử dụng đối tượng Listbox/Combobox với chế độ Complex bound

Mô tả:

Viết chương trình xem danh mục hàng hóa. Chú ý: có thể có 2 mặt hàng trùng

tên.

Hiển thị danh sách hàng hóa vào LISTBOX như hình khi vừa thực thi chương

trình.

Khi người sử dụng click vào mặt hàng trong danh sách sẽ hiển thị thông tin chi

tiết về mặt hàng đó (xem hình).

Việc hiển thị chi tiết mặt hàng vào các Label sử dụng cơ chế Bound Data.

+Sau khi thực hiện xong các yêu cầu trên, sửa chương trình để thực hiện cơ chế

Unbound để hiển thị chi tiết mặt hàng vào các Label.

Gợi ý:

Sử dụng Thuộc tính DataSource, Datamember, DisplayMember,ValueMember

của Listbox/Combobox.

Bài 6:

Mục đích:

Sử dụng đối tượng Listbox/Combobox với chế độ Complex bound

Mô tả:

Page 56: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 56/89

Viết chương trình giúp cho người mua hàng xem xét danh mục linh kiện máy tính

tại một cửa hàng.

Dữ liệu được thiết kế như sau:

Khi chươn trình vừa thực thi, danh mục lọai linh kiện theo loại hiển thị trong

listbox

Khi người sử dụng chọn một loại linh kiện nào đó, chương trình sẽ hiển thị các

linh kiện thuộc loại đó trong listview.

Khi người sử dụng chọn mặt hàng trong listview, chưong trình sẽ hiển thị thông

tin chi tiết về mặt hàng đó trong các textbox như hình. (hiển thị tên loại hàng)

+Sau khi các yêu cầu trên đã hòan tất, thay đổi đối tượng Listview bằng

DataGridView.

Gợi ý:

Sử dụng Thuộc tính DataSource, Datamember, DisplayMember,ValueMember

của Listbox/Combobox.

Bài 7:

Mục đích:

Viết chương trình cho phép khách hàng bình chọn thương hiệu điện thọai yêu

thích. Dữ liệu gồm 2 table: HANGDIENTHOAI (Mahang, tenhang).

KHACHBINHCHON(makhach (autonumber), tenkhach, ngaydangky, mahang)

Mô tả:

Page 57: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 57/89

Viết chương trình cho người sử dụng bình chọn thương hiệu điện thọai được yêu

thích nhất. Chương trình gồm 2 Form: Form1 và Form2.

Người sử dụng nhập tên và hãng điện thọai vào các textbox tại Form1. Nếu

không nhớ tên hãng ĐT, người sử dụng có thể double click vào textbox Hãng

điện thọai, chương trình sẽ hiển thị Form2 chứa các hãng ĐT. Người sử dụng

click chọn hãng nào, Form2 sẽ đóng lại và hiển thị tên hãng tương ứng ở Form1.

Khi bấm nút lưu, chương trình sẽ lưu dữ thông tin khách hàng đăng ký vào

database. Trường hợp khách hàng tự nhập tên hãng điện thọai không có trong

danh mục database, chương trình sẽ báo lỗi và hiển thị form2 cho nguời dùng

chọn lại.

Bài 8:

Mục đích:

Viết chương trình nhập thông tin SV đăng ký. Dữ liệu gồm 2 table: Lop(ma,ten),

SV (ma,ho,ten,malop,sobienlai,ngaydangky).

Sử dụng datagrid để nhập liệu. Datagrid hiển thị sẵn 10 hàng trống để người

dùng nhập cho nhanh chóng, điền sẵn ngày đăng ký là ngày hiện tại. Danh sách

lớp được chọn từ combobox chứa danh sách lớp.

Page 58: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 58/89

Sau khi người sử dụng nhập một số sinh viên vào danh sách (không nhất thiết

nhập đủ 10 hàng) và bấm nút lưu, chương trình sẽ cập nhật danh sách này vào

database, đồng thời hiển thị lại danh sách đã nhập kèm theo 10 hàng mới để

chuẩn bị nhập.

Mô tả:

Page 59: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 59/89

Module 15

Nội dung kiến thức thực hành:

+Sử dụng DataGridView control để hiển thị dữ liệu từ DataSet/DataTable.

+Thiết lập thuộc tính của DataGridView để tùy biến cách hiển thị dữ liệu

+Sử dụng DataBound control

Bài 1:

Mục đích:

Sử dụng DataGridView control để hiển thị dữ liệu từ DataSet/DataTable.

Thêm/Xóa cột (Column) chho DataGrid lúc Run-time.

Lấy giá trị của Cell hiện hành của DataGridView control

Sử dụng sự kiện CellValidating của DataGridView để kiểm tra giá trị nhập vào

Thay đổi màu sắc cho các hàng của DataGridView

Mô tả:

Lab: Working with the DataGridView

Exercise 1: Working with the DataGridView (Trang 444)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Sử dụng DataGridView với chế độ Bound Data.

Sử dụng Listbox với chế độ Bound Data

Mô tả:

Viết chương trình hiển thị danh sách các chuyến bay và danh sách hành khách.

Dữ liệu lưu trữ gồm 2 bảng: Planes(ID, FueLeftKg,Model), Passengers(PassID,

Name, PlaneID).

Khi chương trình vừa thực thi, danh sách các chuyến bay sẽ hiển thị trong

DataGridView.

Page 60: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 60/89

Khi người sử dụng chọn 1 chuyến bay nào trong DataGrid, chương trình sẽ hiển

thị lọai máy bay (Model) vào textbox phía dưới, đồng thời hiển thị danh sách tên

các hành khách đi chuyến bay đó ở Listbox bên cạnh.

Người sử dụng có thể nhập và tìm tên các hành khách từ textbox nhập tên

(Name) phía dưới (xem hình).

Gợi ý:

Xem cách sử dụng DataGirdView khi chọn phần tử tại trang 441 tại giáo trình.

Kết xuất Dataset chứa danh sách khách cho chuyến bay và hiển thị vào Listbox.

Bài 3:

Mục đích:

Sử dụng Đối tượng BindingSource

Mô tả:

Viết chương trình xem danh sách bài hát của các ca sỹ.

Dữ liệu gồm 2 bảng: CASY(ma,ten); BAIHAT(ma,tenbaihat, nhacsy, macasy)

Sinh viên xem xét và tự thiết lập relation giữa các bảng.

Khi chương trình vừa được thực thi, trong combobox hiển thị danh sách tên các

ca sỹ.

Khi chọn một ca sỹ nào đó từ danh sách, chương trình hiển thị bài hát của ca sỹ

đó vào textbox bên dưới. Người sử dụng có thể duyệt các bài hát bằng nút di

chuyển, có thể thê, xóa hay sửa các bài hát của ca sỹ đang chọn.

Chú ý là, trong quá trình thêm hay sửa bài hát, chương trình không cho phép

người sử dụng chọn ca sỹ khác.

Page 61: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 61/89

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 4:

Mục đích:

Sử dụng đối tượng DataBound Control

Sử dụng Code để tạo binding với control.

Cài đặt cho chế độ Complex Data Binding

Mô tả:

Viết chương trình hiển thị danh sách nhân viên của TrungTâm CNTT HUI. Dữ

liệu gồm 1 table: NHANVIEN(ma, ten, diachi, SDT, quequan, CMND,

CMNDngay ,CMNDNoi)

Các phím mũi tên dùng để di chuyển qua lại giữa các record. Khi di chuyển giữa

các nhân viên, chương trình hiển thị vị trí hiện tại của nhân viên vào label phía

dưới.

Chương trình cho phép cập nhật nhân viên bằng các nút: Thêm, Sửa, Xóa, Lưu

như hình. Mặt định, nút Lưu không cho phép họat động (Enable=False).

Khi Bấm nút “Thêm”:

+Nút “Thêm” trở thành nút Hủy Bỏ

+Nút “Lưu” cho phép họat động.

+Các nút còn lại không cho phép họat động

Khi Bấm nút “Sửa”:

+Nút “Sửa” trở thành nút Hủy Bỏ

+Nút “Lưu” cho phép họat động.

+Các nút còn lại không cho phép họat động

Page 62: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 62/89

Khi Bấm nút “Xóa”:

+Chương trình sẽ hỏi xác nhận việc xóa. Nếu đồng ý, chương trình sẽ

xóa nhân viên hiện tại

Gợi ý:

Sử dụng DataBinding để thực hiện hiển thị dữ liệu.

Sử dụng DataAdapter/Dataset cho vịêc cập nhật dữ liệu.

Bài 5:

Mục đích:

Sử dụng đối tượng DataBound Control

Sử dụng Code để tạo binding với control.

Sử dụng Binding với Combobox/Listbox

Mô tả:

Viết chương trình hiển thị danh sách nhân viên của TrungTâm CNTT HUI.

Dữ liệu gồm 2 table:

NHANVIEN(ma, ten, diachi, SDT, Maquequan, CMND, CMNDngay ,CMNDNoi)

THANHPHO (matp, TenTP)

Trong đó, Maquaquan của bảng NhânViên là khóa ngọai của Bảng ThànhPhố.

Các phím mũi tên dùng để di chuyển qua lại giữa các record. Khi di chuyển giữa

các nhân viên, chương trình hiển thị vị trí hiện tại của nhân viên vào label phía

dưới.

Page 63: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 63/89

Chương trình cho phép cập nhật nhân viên bằng các nút: Thêm, Sửa, Xóa, Lưu

như hình. Mặt định, nút Lưu không cho phép họat động (Enable=False).

Khi Bấm nút “Thêm”:

+Nút “Thêm” trở thành nút Hủy Bỏ

+Nút “Lưu” cho phép họat động.

+Các nút còn lại không cho phép họat động

Khi Bấm nút “Sửa”:

+Nút “Sửa” trở thành nút Hủy Bỏ

+Nút “Lưu” cho phép họat động.

+Các nút còn lại không cho phép họat động

Khi Bấm nút “Xóa”:

+Chương trình sẽ hỏi xác nhận việc xóa. Nếu đồng ý, chương trình sẽ

xóa nhân viên hiện tại

+Sau khi chương trình thực thi, chuyển đổi trường NơiCấp của bảng NhanVien

thành khóa ngọai (MaNoiCap) của bảng ThanhPho và đổi textbox thành

ComBoBox.

Gợi ý:

Sử dụng DataBinding để thực hiện hiển thị dữ liệu.

Sử dụng DataAdapter/Dataset cho vịêc cập nhật dữ liệu.

Sử dụng các thuộc tính thực hiện kết nối với 2 bảng của Combobox

Page 64: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 64/89

Bài 6

Mục đích:

Sinh viên nhận biết trường hợp có sử dụng DataBound hay không?

Mô tả:

Viết chương trình giúp cho người mua hàng xem xét danh mục linh kiện máy tính

tại một cửa hàng.

Dữ liệu được thiết kế như sau:

Danh mục lọai linh kiện – và linh kiện hiển thị vào Treeview ngay khi chương

trình vừa khởi động.

Khi chọn loại hàng ở treeview, chương trình hiển thị vào listview các hàng hóa

của loại hàng đó vào Listview.

Khi chọn một linh kiện nào đó ở treeview, chương trình hiển thị chi tiết hàng hóa

đang chọn vào listview.

+Sau khi các yêu cầu trên được thực hiện hòan tất, chuyển Listview thành

DataGridView.

Gợi ý:

Sử dụng Dataset với Treeview. Nên viết hàm chia nhỏ công việc.

Quyết định sử dụng Bound hay UnBound?

Page 65: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 65/89

Module 16

Nội dung kiến thức thực hành:

+Viết chương trình sử dụng kiến trúc 3-tier

+Sử dụng Binding

Bài 1:

Mục đích:

Sử dụng kiến trúc 3-tier viết chương trình login.

Mô tả:

Viết chương trình cho phép người sử dụng đăng nhập vào hệ thống. Giao diện

như hình dưới.

Dữ liệu sử dụng MS Access hoặc SQL Server do SV tùy chọn, gồm 1 table:

TaiKhoan(tentaikhoan, password)

Nếu người sử dụng đăng nhập 3 lần liên tiếp mà không thành công thì chương

trình sẽ tự động thóat.

Gợi ý:

Chia các lớp vào các folder riêng để dễ dàng quản lý.

Thực hiện viết các class theo thứ tự.

Bài 2:

Mục đích:

Sử dụng kiến trúc 3-tier viết chương trình thay đổi password.

Mô tả:

Page 66: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 66/89

Mở rộng chương trình ở bài tập trên, viết chương trình cho phép người sử dụng

thay đổi password sau khi đăng nhập thành công vào hệ thống. Cơ sở dữ liệu

vẫn như cũ.

Giao diện chương trình như hình dưới.

Yêu cầu kiểm tra: password mới phải tối thiểu 4 ký tự, các ký tự không được

giống nhau, và không được giống password trước khi đổi, và không được trùng

username.

Gợi ý:

Thực hiện kiểm tra tại tầng tương ứng.

Bài 3:

Mục đích:

Sử dụng kiến trúc 3-tier với nền tảng ADO.NET viết chương trình nhập liệu cho

công ty vận tải.

Mô tả:

Sử dụng kiến trúc 3-tier viết chương trình tính doanh thu đơn giản cho công ty

vận tải biển, sử dụng tại khâu xuất hàng tại cảng, dùng để tính số tiền thanh

tóan bởi các khách hàng. Các số liệu này dùng để so sánh với số liệu tại chi

nhánh chính. Chi phí thanh tóan cho mỗi lô hàng cần vận chuyển phụ thuộc vào

trọng lượng của lô hàng và nơi đi đến, được cho bởi các bảng bên dưới. Yêu cầu

chương trình như sau:

Thiết kế database MS Access với relationship có 2 table: NoiDen (Ma,Ten,Gia)

và DoanhThu (Ngay, noiden, soluong)

Page 67: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 67/89

Số liệu mẫu được cho như sau:

Chương trình cho phép người sử dụng nhập trọng lượng của lô hàng và chọn nơi

đến (xem hình). Ngày gởi lô hàng đi là ngày hiện hành của máy.

Nếu trong một ngày, có 2 lô hàng chuyển đến cùng một địa điểm thì chương

trình sẽ cộng dồn khối lượng vào nới đến (chỉ quan tâm đến nơi đến, không

quan tâm đến người gởi).

Hiện tại do khả năng công ty chỉ có hạn, nhưng khách hành quá nhiều, nên mỗi

kiện hàng không được quá 50 tấn.

Khi người sử dụng chọn nút Báo Cáo thì hiện Form tính tổng doanh thu theo nơi

đến theo ngày hiện hành. (Xem hình)

Page 68: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 68/89

Các dữ liệu báo cáo được nạp động và hiển thị trong một Panel. Chỉ hiển thị

những nơi đến có doanh thu >0.

Gợi ý:

Cài đặt luật kiểm tra vào đúng tầng tương ứng.

Bài 4:

Mục đích:

Sử dụng kiến trúc 3-tier với nền tảng ADO.NET viết chương trình nhập điểm cho

Khoa Khoa Học và Kỹ Thuật Máy Tính -Đại Học Công Nghiệp Tp.HCM.

Mô tả:

Sử dụng kiến trúc 3-tier viết chương trình nhập điểm cho một trung tâm tin học.

Mỗi lớp học tương ứng với một môn học được mở duy nhất trong một khóa. Số

lớp học được cho bởi bảng bên dưới. Yêu cầu chương trình như sau:

Thiết kế database MS Access với relationship có 3 table:

+Lop (Ma,Ten)

+SinhVien (Ma, ten, lop)

+Diem (maSV,maLop,Diem)

Tiêu đề của các form và tên Sollution là tên của sinh viên

Thiết kế giao diện chương trình cho như các hình dưới

Page 69: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 69/89

Khi Giáo viên chọn lớp học từ combobox (dữ liệu lớp học được nạp từ

database), chương trình nạp động danh sách sinh viên và textbox để nhập điểm

trong. (xem hình).

Đối với lớp đã có điểm, chương trình hiện điểm của các sinh viên lớp đó, và nút

Cập Nhật bị mờ. (Điểm đã nhập rồi không cho phép sửa).

Nếu lớp đó chưa nhập điểm, chương trình hiện textbox rỗng, và nút Cập Nhật bị

sáng – cho phép nhập điểm và lưu.

Sau khi nhập điểm cho các sinh viên trong các textbox, giáo viên bấm nút Cập

Nhật và chương trình lưu tòan bộ điểm vào database. Các sinh viên không có

điểm - textbox để trống (bỏ thi) sẽ nhận giá trị -1 khi lưu xuống database.

Chương trình sẽ kiểm tra điểm nhập có hợp lệ hay không (từ 0..10, là kiểu số

hoặc bỏ trống). Các textbox điểm không hợp lệ sẽ có dấu báo lỗi bên cạnh.

Gợi ý:

Nạp động đối tượng.

Sử dụng thuộc tính tag.

Sử dụng đối tượng ErrorProvider.

Bài 5:

Mục đích:

Sử dụng kiến trúc 3- viết chương trình quản lý cho một quán coffee.

Mô tả:

Dữ liệu gồm các bảng sau: Bàn (số_bàn, ghichú); Măthàng(mã, tên,

đơngía). Bán(ngàygiờ, bàn, mãhàng, sốtiền, đã_thuTiền).

Khi chương trình vừa nạp, hiển thị danh sách bàn.

Khi có khách vào, người dùng click chọn bàn nào, thì hiển thị form nhập

mặt hàng của bàn đó.

Page 70: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 70/89

Giá trị thành tiền được tự động tính. Khi bấm nútl Lưu, chương trình mới

lưu trữ danh mục hàng đã bán cho bàn tương ứng. Khi bấm nút tính tiền,

chương trình sẽ in report tính tiền cho bàn đang chọn. Nút tính tiền sẽ

đánh dấu bàn đã hòan tất, để lần kế tiếp, chương trình sẽ để lưới trống

dùng nhập mới.

Bài 6:

Mục đích:

Quản lý danh sách contact

Mô tả:

Viết chương trình nhập danh danh bạ với yêu cầu giao diện như hình dưới.

+Khi chương trình vừa hiển thị, treeview chứa tất cả các chữ cái từ A->Z.

+Nhằm mục đích tiện lợi cho người sử dụng khi tìm tên, khi người sử dụng nhập

tên của một người nàp đó, chương trình sẽ đưa tên người này vào treeview ở vị

trí treenode có tương ứng với chữ các đầu của tên (xem hình), đồng thời lưu vào

database.

+Khi người sử dụng chọn một tên nào đó, chương trình hiển thị lại họ - tên người

đó vào các textbox.

Page 71: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 71/89

+Viết thêm 1 form hiển thị danh sách contact từ nguồn dữ liệu trên, sử dụng

group với Listview (xem hình)

Page 72: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 72/89

Module 17

Nội dung kiến thức thực hành:

+Viết chương trình sử dụng kiến trúc 3-tier

+Sử dụng Crystal Report.

Bài 1:

Mục đích:

Dùng kiến trúc 3-tier viết chương trình đơn giản quản lý tại của hàng Internet.

Giả sử phòng máy hiện tại có 2 máy tính.

Mô tả:

Thiết kế DataBase gồm các bảng: ThueMay(SoMay, GioBatDau, GioKetThuc,

SoTien). DonGia(TienThueMotGio).

A. Khi chương trình vừa được thực thi:

+Các hình trong khung máy 1 và máy 2 có hình là Máy tính (sinh viên tự

chọn hình thích hợp) vì các máy chưa được cho thuê.

+Các Label hiện giờ rổng

B. Khi người sử dụng click vào hình của máy 1 hoặc máy 2 (tương ứng với thao

tác cho thuê hay trả máy) thì:

+Nếu là máy chưa thuê: (có hình là Máy tính)

-Đổi hình (tương ứng với máy tính) máy tính thành hình Đồng hồ

-Hiện giờ hiện tại vào label label phía trên (giờ vào thuê máy)

+Nếu là máy đang thuê: (có hình là Đồng hồ)

-Hiện giờ hiện tại label phía dưới (giờ trả máy)

-Dựa vào Giờ và Phút (không cần quan tâm đến số giây) trên các

label Bắt đầu và Kết thúc tính ra số tiến phải trả, rồi dùng Msgbox

để thông báo (tiền thuê máy là 3000đ/giờ), lưu trữ vào database.

-Đổi picture của image thành hình Máy tính

-Xóa nội dung trong các Label Bắt đầu và Kết thúc

Page 73: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 73/89

C. Khi người sử dụng Click vào nút Kết thúc:

Kiểm tra nếu có máy đang thuê phải nhắc nhở người sử dụng bằng hộp

thoại và không cho thoát, còn nếu có máy nào đang thuê thì lập tức thoát

chương trình.

D. Thêm menu dùng để hiện Report danh sách các record thuê máy.

Gợi ý:

Thiết kế chương trình có khả năng mở rộng cho nhiều máy. Sử dụng chỉ trên 2

máy.

Bài 2:

Mục đích:

Dùng kiến trúc 3-tier viết chương trình dùng cho việc chọn ngẫu nhiên danh

sách sinh viên.

Mô tả:

Hàng năm, Khoa Khoa Học và Kỹ Thuật Máy Tính -Đại Học Công Nghiệp

Tp.HCM chọn ngẫu nhiên một số sinh viên của Khoa KH và KTMT để theo dõi

đánh giá tình hình học tập, tác phong nhằm rút ra các thông tin để cải tiến việc

dạy – học. Chương trình sẽ chọn ngẫu nhiên một số sinh viên từ cơ sở dữ liệu.

Database gồm 1 table: SinhViên(Ma,Ho,Ten,Lop)

Page 74: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 74/89

Chương trình cho phép nhập số sinh viên, và sẽ hiển thị danh sách sinh viên

đựợc chọn ngẫu nhiên từ cơ sở dữ liệu của Khoa Khoa Học và Kỹ Thuật Máy

Tính -Đại Học Công Nghiệp Tp.HCM.

Sau khi hiển thị ngẫu nhiên số sinh viên (nạp động), chương trình cho phép tìm

kiếm theo họ trong các sinh viên vừa chọn (hiển thị màu cho biết các sinh viên

thỏa yêu cầu).

Thêm menu dùng để xuất Report để in giấy danh sách các sinh viên ngẫu nhiên

này.

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 3:

Mục đích:

Page 75: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 75/89

Dùng kiến trúc 3-tier viết chương trình quàn lý danh sách ca sỹ- bài hát.

Mô tả:

Viết chương trình xem danh mục bài hát của các ca sỹ. Dữ liệu được thiết kế với

2 bảng như sau.

+ Hiển thị danh sách ca sỹ hình bên. Chương trình cho phép Thêm ca sỹ vào

database và cập nhật vào listview bên dưới. Khi người sử dụng chọn ca sỹ trong

listview và bấm nút Xóa, chương trình sẽ xoá ca sỹ đang chọn ra khỏi danh

sách.

+ Khi người sử dụng click vào nút lệnh “Xem Bài Hát”, chương trình sẽ hiển thị

danh sách các bài hát (của ca sỹ đang chọn trong listview) hiển thị ở cửa sổ như

hình dưới.

Page 76: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 76/89

-Tạo report xuất ra danh sách tất cả bài hát. Mỗi bài hát kèm tên ca sỹ

-Tạo report xuất ra danh sách tất cả bài hát của một ca sỹ (do người sử dụng

chọn)

Bài 4:

Mục đích:

Dùng kiến trúc 3-tier viết chương trình dùng cho việc tính tiền cho thuê tại một

phòng máy.

Mô tả:

Một phòng máy Internet gồm nhiều máy cần chương trình tính tiền thuê máy.

Dữ liệu gồm các table:

+MayTinh(somay, ghichu).

+ThueMay(Somay,ngaygiothue,thoigian,thanhtien)

Chương trình lúc ban đầu khởi động sẽ nạp động danh sách máy. Các checkbox

sẽ trống. Sẽ có Tooltip hiển thị về ghi chú của mỗi máy khi người sử dụng đưa

chuột vào các control ở máy tương ứng. Các textbox không cho phép nhập liệu.

Page 77: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 77/89

Khi có khách vào thuê, người sử dụng sẽ đánh dấu vào checkbox máy tương

ứng. Đổi tooltip của các textbox là giờ bắt đầu thuê, đồng thời hiển thị máy tính

được thuê vào Listbox.

Tạo report xuất ra tổng số tiền mỗi máy thu được trong ngày.

Sau một khỏang thời gian 1 phút, chương trình tự động tính thời gian thuê máy,

và tính tiền.

Khi người thuê trả máy, người sử dụng tắt checkbox tương ứng sau khi tính tiền

xong. Chương trình lưu trữ record thuê máy vào database.

Thêm menu cho phéo thống kê tổng số tiền thu được trong ngày hiện tại.

Gợi ý:

Sử dụng Timer với Interval=1000*60

Sử dụng đối tượng ToolTip

Bài 5:

Mục đích:

Dùng kiến trúc 3-tier viết chương trình dùng cho việc quản lý contact.

Mô tả:

Công ty NOKIA cần một chươong trình Demo cho điện chương trình quản lý

danh mục số điện thoại với các yêu cầu: (như hình dưới)

+Dữ liệu được lưu trong 2 text file: Sim.mdb và Phone.mdb.

+File Sim.mdb chỉ lưu được tối đa 10 contact. Nếu quá 10 contact,

chương trình sẽ lưu vào phone.mdb.

+Phone.mdb chỉ lưu tốt đa 20 contact. Nếu quá 20 contact, chương trình

sẽ không thể lưu trữ số mới.

+Người sử dụng tìm contact thông qua tên. Khi đó, chương trình sẽ hiển

thị tất cả contact chứa tên cần tìm.

+Khi lưu vào contact mới, nếu trùng tên hay SDT, chương trình sẽ thông

báo xác nhận. Nếu người sử dụng đồng ý, chương trình sẽ tiếp tục lưu

thành 1 contact mới.

Viết chương trình theo kiến truc 3-tier thực hiện các yêu cầu trên.

Sử dụng Class Library (DLL) để phân tách business tier, data-tier.

Page 78: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 78/89

-Tạo report xuất ra danh sách các contact. Người dùng có thể chọn xuất

danh sách sắp xếp theo tên, số điện thoại hay địa chỉ nhà.

Page 79: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 79/89

Module 18

Nội dung kiến thức thực hành:

+Viết chương trình sử dụng chức năng Drag-Drop

+Sử dụng giao diện MDI

+Sử dụng các control trợ giúp cho việc thiết kế giao diện: Timer, ErrorProvider,

ToolStrip, StatusBar…

Bài 1:

Mục đích:

Viết chương trình thực hiện chức năng Drag-Drop giữa các phần tử của

Treeview.

Mô tả:

Implement Drag-and-Drop functionality in a TreeView control (Trang 535-

540)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Viết chương trình thực hiện chức năng Drag-Drop giá trị giữa các

Textbox.

Mô tả:

Lab: Implement Drag and Drop

Exercise 1: Implementing Drag and Drop (Trang 540)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 3:

Mục đích:

Viết chương trình tạo giao diện MDI.

Mô tả:

Page 80: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 80/89

Lab: Create a Simple MDI Application

Exercise 1: Creating an MDI Application (Trang 557)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 4:

Mục đích:

Sử dụng các đối tượng trợ giúp cho việc thiết kế giao diện chương trình:

Timer, Tooltip

Mô tả:

Lab: Practice with User Assistance Controls

Exercise 1: Creating a Simple Digital Clock (Trang 588)

Exercise 3: Providing Tooltips for Your Application (Trang 589)

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 5:

Mục đích:

Sử dụng MDI

Mô tả:

Viết chương trình dạng MDI chứa 1 form chính (frmMain) và 2 form con

(frmOne và frmTwo), 1 form splash (frmSplash), 1 form about (frmAbout).

+Trên form frmMain có các menu items trong menu File: [Display Form

1], [Display Form 2] dùng để kích hoạt các form con tương ứng, và menu

[Exit].

+Trên form frmMain có các menu items trong menu Windows: [Tile

Vertical], [Tile Horizontal], [Cascade] và [ShowWindowList].

+Trên form frmMain có các menu items trong menu About: [About

Programmer]

+Trên form frmMain có 1 status bar dùng để hiển thị ngày thánh hiện tại.

+Trên form frmMain có 1 toolbar dùng kích hoạt các form con

+Mỗi form con có nút lệnh Close để ẩn chúng.

Gợi ý: Xem hướng dẫn thực hiện trong giáo trình.

Page 81: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 81/89

Module 19

Nội dung kiến thức thực hành:

+Thực hiện chức năng đóng gói chương trình

Bài 1:

Mục đích:

Thực hiện đóng gói chương trình.

Mô tả:

Viết chương trình đơn giản dùng để kiểm tra một số có phải là số nguyên

tốt hay không. Thực hiện đóng gói chương trình với các yêu cầu sau:

+Tên Shortcut ở Desktop là HUI_TTCNTT_GiaiToan

+ Tên Shortcut ở StartMenu là GiaiToan TTCNTT HUI

+Chương trình nằm trong folder HUI-TTCNTT ở menu Start

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 2:

Mục đích:

Thực hiện đóng gói chương trình với cơ sở dữ liệu MS Access. Ôn tập các

nội dung kiến thức đã học.

Mô tả:

Viết chương trình đơn giản dùng để quản lý danh sách nhân viên của

Khoa Khoa Học và Kỹ Thuật Máy Tính -Đại Học Công Nghiệp Tp.HCM.

Dữ liệu gồm 1 table: NhanVien(ma,ten,diachi). Chương trình cho phép

thêm, sửa, xóa nhân viên, cho phép duyệt danh sách nhân viên. Chương

trình cho phép xuất Report (Crystal Report) để in ấn danh sách các nhân

viên của Khoa Khoa Học và Kỹ Thuật Máy Tính -Đại Học Công Nghiệp

Tp.HCM -HUI. Chương trình được xây dựng trên kiến trúc 3-tier. Sinh viên

tùy chọn giao diện.

Thực hiện đóng gói chương trình với các yêu cầu sau:

+Tên Shortcut ở Desktop là HUI_TTCNTT_NV

Page 82: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 82/89

+ Tên Shortcut ở StartMenu là NVTTCNTT HUI

+Chương trình nằm trong folder HUI-TTCNTT ở menu Start

+Khi cài đặt, file MS Access tự động đưa vào ổ cứng

+Sinh viên tùy chọn mật khẩu (serial key) trong quá trình cài đặt

chương trình.

Gợi ý:

Xem hướng dẫn thực hiện trong giáo trình.

Bài 3:

Mục đích:

Thực hiện tổng hợp các kiến thức đã học.

Mô tả:

Công ty Walls chuyên sản xuất và các loại kem do chính công ty sản xuất. Hiện

nay công ty sản xuất nhiều lọai loại kem (trong hình 1). Công ty cần một

chương trình theo dõi số lượng tổng kết kem bán ra theo từng loại (tính theo đơn

vị tấn) theo từng quý (có 3 quý trong năm).

Viết chương trình quản lý doanh số bán của công ty theo yêu cầu sau:

Giao diện chính cho chương trình như hình.

Dữ liệu gồm các table:

+LoaiKem(ma,tenloai,dongia)

Page 83: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 83/89

+DoanhThuTheoQuy(maloai, quy, soluong)

(Quý: được lưu trữ là các con số 1,2,3).

Chương trình nạp động danh sách lọai kem trên màn hình. Để ghi lại doanh số

mỗi loại kem, sau khi chọn loại kem và quý (trong listbox), người sử dụng nhập

số lượng đã bán và nhấn nút OK. Sau khi nhấn OK, chương trình sẽ cập nhật số

lượng kem đã bán của loại kem đã chọn theo quý đã chọn, và bỏ chọn loại kem.

(Chương trình phải kiểm tra và thông báo lỗi nếu người sử dụng không chọn loại

kem, quý, hoặc nhập số lượng không hợp lệ).

+Khi bấn nút báo cáo “Theo Loại Kem”, chương trình hiển thị cửa sổ cho biết

từng doanh số từng quý của loại kem đang chọn. Chương trình phải kiểm tra

trường hợp không chọn loại kem.

+Khi bấm nút báo cáo “Toàn Bộ Loại Kem”, chương trình hiển thị cửa sổ cho

biết doanh số từng loại kem theo từng quý mà công ty đã bán.

Page 84: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 84/89

+

Khi bấn nút báo cáo “Tổng Kết Doanh Số”, chương trình hiển thị cửa sổ cho biết

tổng số các loại kem theo từng quý mà công ty đã bán. (Hình 4).

+ Thêm vào cửa sổ chính 1 nút lệnh dùng để mở 1 cửa sổ báo cáo.

(CrystalReport). Cửa sổ này xếp hạng doanh thu tăng dần theo lọai kem.

Bài 4:

Mục đích:

Viết chương trình 3-tier.

Mô tả:

Viết chương trình xem danh mục sách hiện đang có bán tại nhà sách Khai Trí.

Người mua sách sử dụng chương trình để xem xét giá cả trước khi chọn mua.

Page 85: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 85/89

Cơ sở dữ liệu được thiết kế gồm 3 Table: LOAISACH, SACH, NHAXUATBAN với

cấu trúc như sau

+Nếu người sử dụng chọn Option “Loại Sách”, chương trình hiển thị danh mục

sách trong TreeView phân theo Loại Sách.

+Nếu người sử dụng chọn Option “Nhà Xuất Bản”, chương trình hiển thị danh

mục linh kiện trong TreeView phân theo Nhà Xuất Bản.

Chú ý: Mặc định khi chương trình vừa được nạp, thì Option “Loại Sách” được

chọn sẵn (tức là hiển thị theo Loại Sách).

Page 86: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 86/89

Bài 5:

Mục đích:

Viết chương trình 3-tier.

Mô tả:

Chương trình được viết trên kiến trúc N-tier.

Xây dựng ứng dụng quản lý số điện thọai của khách hàng theo từng vùng. Dữ

liệu được lưu trữ vào mdb file do sinh viên tự thiết kế.

Chương trình gồm 2 Form. Form nhập danh sách khách hành và Form nhập –

chọn mã vùng.

Cửa sổ thứ 2 dùng để chọn vùng.

Sinh viên phân tích các thành phần trước khi lập trình.

Page 87: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 87/89

Bài 6:

Mục đích:

Viết chương trình 3-tier dùng cho vịêc trả - mượn sách.

Mô tả:

Tạo file ThuVien.MDB với 3 table: DOCGIA, SACH, MUON như mô tả dưới.

Chương trình này do thủ thư sử dụng, dùng cho việc mượn và trả sách, đồng

thời nhập thẻ mới cho độc giả mới. Giao diện của chương trình bên dưới.

Yêu cầu:

+Khi thủ thư chọn sách đang mượn trong ListView, thì nút lệnh “Trả” mới

cho phép hoạt động, và dùng để hủy record mượn sách của sinh viên

đang chọn với đầu sách đang chọn.

+Khi thủ thư bấm nút “Mượn’, chương trình hiển thị hộp thoại để nhập vào

Số Đăng Ký của sách, và lưu thông tin mượn sách cho sinh viên đang

chọn trong ListBox.

+Mỗi độc giả chỉ được mượn tối đa 5 đầu sách.

+Mỗi đầu sách chỉ được mượn tối đa 1 tháng. Nếu độc giả có sách mượn

quá hạn thì không thể mượn tiếp.

+Mỗi đầu sách chỉ được mượn bởi 1 sinh viên trong cùng 1 thời điểm.

+Chương trình sử dụng kiến trúc 3-tier, với 3 project độc lập.

+Chương trình sử dụng sử dụng Query tham số

Page 88: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 88/89

Bài 7:

Mục đích:

Viết chương trình 3-tier dùng cho vịêc nhập điểm.

Mô tả:

Bài 5. Trường Đại Học Công Nghiệp Thành Phố Hồ Chí Minh sử dụng SQL

Server để lưu trữ danh sách sinh viên và bảng điểm của học sinh

Dữ liệu được thiết kế như sau:

+MonHoc(Ma,ten)

+LopHoc(Ma,ten)

+SV(Ma,Ten,Malop,SOBienLai)

+Điểm (masv,mamon,diem)

Viêt chương trình hiển thị danh sách sinh viên theo lớp đang chọn (từ combo).

+Chú ý: Danh sách sinh viên được sắp xếp theo trình tự (tên, và họ).

Page 89: Khối: Cao Đẳng và Trung Cấ Năm 2011 · PDF fileBài tập thực hành dựa trên giáo trình: ... Lập trình biến cố trên các đối tượng nạp động lúc

Hướng dẫn thực hành - Lập trình Windows nâng cao

Trang 89/89

Lưu cập nhật điểm của toàn bộ lớp vào database HUI.

+Tạo form report dùng để tạo report cho danh sách Sv và bảng điểm của lớp.