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.
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 ý:
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.
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
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
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.
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.
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ả:
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.
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.
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ờ.
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
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ố.
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.
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.
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
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….
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
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 ý:
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.
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.
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.
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.
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.
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
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.
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.
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ả:
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.
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:
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)
{
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.
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.
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.
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
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ả:
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.
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.
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ả:
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.
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.
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 ý:
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.
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:
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ả:
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.
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
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.
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ả:
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.
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
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.
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.
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.
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ả:
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ả:
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.
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ả:
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.
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.
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
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.
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
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?
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ả:
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)
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)
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
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 đó.
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.
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)
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
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)
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:
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.
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.
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.
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à.
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ả:
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.
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
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)
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.
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.
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).
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.
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ố
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ọ).
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.