Tải bản đầy đủ (.pdf) (27 trang)

BÀI TẬP THỰC HÀNH VISUAL BASIC.NET pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.47 MB, 27 trang )

Trang 1
BÀI TẬP THỰC HÀNH VISUAL BASIC.NET

Tuần 1 : Cấu trúc chương trình VB
- Tạo và lưu 1 project VB
- Viết chương trình in ra chữ Hello
- Viết chương trình nhập họ tên của 1 người. In ra họ tên của người đó.
- Thiết kế Form nhập vào 2 số. Tính tổng 2 số vừa nhập
(Dùng Textbox và Command Button)
- Thiết kế giao diện máy tính đơn giản

Tuần 2 : Ngôn ngữ lập trình
- Viết chương trình giải phương trình ax + b = 0
- Viết chương trình giải phương trình bậc 2 : ax
2
+ bx + c = 0
- Viết chương trình nhập vào 1 số từ 1 đến 7. Cho biết số đó là thứ mấy trong tuần
- Viết chương trình tính tổng S = 1 + 2 + 3 +…+ N
- Viết chương trình tính N!

Tuần 3 : Ngôn ngữ lập trình (tt)
- Viết chương trình lặp lại nhiều lần việc nhập 1 số nguyên x, việc nhập kết thúc khi
x=0. Tính tổng các số vừa nhập
- Viết chương trình kiểm tra 1 số có phải nguyên tố hay không?
- Viết chương trình kiểm tra 1 số có phải là số chính phương hay không?

Tuần 4 : Ngôn ngữ lập trình (tt)
- Viết chương trình con nhập vào mảng 1 chiều N phần tử. Tìm số lớn nhất và nhỏ
nhất trong mảng
- Viết chương trình con sắp xếp mảng 1 chiều theo thứ tự tăng dần
- Viết chương trình con cho biết có bao nhiêu số nguyên tố trong mảng 1 chiều


- Viết chương trình con nhập vào mảng 2 chiều có M hàng, N cột. Tìm số lớn nhất
và nhỏ nhất trong mảng
- Viết chương trình con tính tổng các phần tử lẻ trong mảng 2 chiều
- Viết chương trình con tính tổng các phần tử trên 2 đường chéo chính trong mảng
2 chiều
Tuần 5 : Kiểm tra
Trang 2
Tuần 6 : Các Control điều khiển
1. Tạo form cộng 2 số a và b có giao diện như sau








Yêu cầu :
- Đặt tên cho các textbox số 1(txtso1), số 2 (txtso2), textbox kết quả (txtkq), button
kết quả (btnkq), button close (btnclose)
- Txtkq không được nhập, không được đặt con trỏ vào textbox này
- Dùng phím Tab để di chuyển các control theo thứ tự txtso1,txtso2, btnkq, btnclose
- Đặt phím nóng cho button kết quả và button close.
2. Thiết kế giao diện:

Yêu cầu :
- Các điều khiển sử dụng trong form gồm:
- CheckBox1: thuộc tính Checked – False; Text – Máy tính cá nhân
- Checkbox2: thuộc tính Checked – False; Text – Máy photocopy
- PictureBox1: thuộc tính Image – None; SizeMode: StretchImage

- PictureBox2: thuộc tính Image – None; SizeMode: Stretchimage
- Chương trình này có hai CheckBox cho phép click chọn. Nếu click chọn vào
CheckBox nào thì sẽ hiện một bức ảnh tương ứng với nó.

Trang 3
3. Tạo trong form các điều khiển gồm ListBox, TextBox và một Button như hình.

4. Chương trình gồm hai textbox cho phép nhập hai giá trị để gán cho hai biến value1
và value2, bốn radiobutton cho phép chọn bốn toán tử khác nhau, khi đã nhập đầy
đủ hai giá trị thì có thể thực hiện tính bằng cách nhấp chọn nút ‘thực hiện tính’ và
kết quả hiển thị trong ô textbox3 – kết quả.

Tuần 7 : Các Control điều khiển (tt)
1. Giao diện chương trình:

Yêu cầu :
5. Chương trình bao gồm một listbox liệt kê danh sách 4 nước. Khi người dùng click
vào một nước nào đó thì tên nước hiện trên một nhãn và thông tin chi tiết hiện trên
một nhãn khác.
Trang 4
6. Lúc này nếu người dùng click vào lstcountry nhưng nếu không click đúng vào một
trong bốn mục thì chương trình lập tức hiện thông báo yêu cầu chọn một trong bốn
mục đó (sự kiện MouseHover)
2. Thiết kế giao diện như sau :

Dùng Textbox


Tuần 8 : Các Control điều khiển (tt)
2. Thiết kế giao diện:

Yêu cầu :
:
- Tạo hai điều khiển GroupBox
- Tạo 3 radiobox đặt vào trong điều khiển GroupBox1.
- Tạo 3 CheckBox đặt vào trong điều khiển GroupBox2.
- Tạo 1 điều khiển ListBox và không nhập liệu gì cả.
- Tạo một điều khiển ComboBox. Tạo 6 PictureBox và 3 Label cùng 1 Button.
- Sửa các thuộc tính sao cho phù hợp với hình trên. Riêng hai điều khiển ListBox và
ComboBox thì các dữ liệu sẽ được nhập khi Form được load vào lúc chương trình chạy.
Chuyên đề .NET.

Khoa Công nghệ thông tin – ĐHSPKT Hưng Yên 2006

Bài thực hành số 1
Lập trình hướng đối tượng trong VB.NET
Mục tiêu: Kết thúc bài thực hành sinh viên có thể:
Ø Tạo được các lớp trong VB.NET
Ø Tạo được các lớp có sử dụng kỹ thuật override, overload, thừa kế và đa hình.
Ø Vận dụng các kỹ thuật lập trình hướng đối tượng để xây dựng một số ứng dụng
đơn giản.

Nội dung:
1. Tạo lớp clsMyTextBox thừa kế từ lớp Textbox
2. Thêm các phương thức, thuộc tính và sự kiện cho lớp clsMyTextBox
3. Viết chương trình Editor đơn giản sử dụng lớp clsMyTextBox.

Mô tả yêu cầu:
1. Tạo lớp clsMyTextBox: Sinh viên cần khai báo một lớp clsMyTextBox thừa
kế từ lớp TextBox.
2. Các thành viên (member) thêm vào lớp clsMyTextBox như sau:

Constructor
Sub New() Public
Đặt nội dung cho textbox là “This is
my textbox”
Sub new (TextValue As String) public
Đặt nội dung cho textbox như tham số
truyền vào.
Phương thức
Phạm vi
truy cập
Yêu cầu chức năng
Sub Show() public Hiển thị textbox
Sub Hide() public Ẩn textbox
Sub SetDefaultFont() public Đặt font chữ mặc định cho textbox là
12pt, normal.
Sub SetFont(FontName As string) Public Đặt font chữ cho textbox. Thuộc tính
khác giữ nguyên
Sub SetFont(FontSize As Integer) Public Đặt kích cỡ font
Sub SetFont(FontName As String,
FontSize As Integer)
public Đặt tên font và kích thước cho textbox
Sub SetFont(F As Font) public Đặt font chữ cho textbox.
NumericEntryOnly() public Chỉ cho phép nhập số
Chuyên đề .NET.

Khoa Công nghệ thông tin – ĐHSPKT Hưng Yên 2006

ABCAlphabetEntryOnly() public Chỉ cho phép nhập chữ cái.
SetForeColor(Color As
ColorEnum)

public Đặt màu chữ cho textbox, tên màu là
một kiểu enum có các giá trị
“XANH”, “ĐỎ”, “ĐEN”
SetBackColor(Color As
ColorEnum)
Đặt màu chữ cho textbox, tên màu là
một kiểu enum có các giá trị
“XANH”, “ĐỎ”, “ĐEN”

Sự kiện public
Ctrl_Right_Click() public Được kích hoạt khi người dùng nhấn
Ctrl + Click chuột phải
Viết lệnh cho sự kiện
Ctrl_Right_Click()
Khi sự kiện này được kích hoạt thì xóa
nội dung trong textbox.
Gợi ý:
lệnh RaiseEvent <TenSuKien>
(Sender, E) để kích hoạt sự kiện
Lệnh Public Event
<Ten_SuKien>() để khai báo sự
kiện.

Thuộc tính
FontName As String Public Xử lý khi tên font bị sai
FontSize As Integer Public Đặt kích thước font, cần xử lý khi
người dùng nhập vào một số thực.
(hoặc số quá lớn, quá nhỏ)
FontBold As
Boolean/Italic/Underline

public
3. Viết ứng dụng đơn giản.
Yên cầu:
Viết chương trình soạn thảo văn bản đơn giản có đầy đủ menu bar, menu toolbar và menu
popup để cho phép người dùng soạn thảo, định dạng và lưu trữ ra đĩa cứng.

à Sinh viên LÀM TRƯỚC Ở NHÀ, sau đó giáo viên sẽ
kiểm tra trong giờ thực hành và công bố điểm ngay khi hết
giờ thực hành. SV nào không đi thực hành để báo cáo à 0
điểm.

1
Bài thực hành số 2
Thao tác Cơ sở dữ liệu trong VB.NET

Mục tiêu : Sau khi kết thúc bài thực hành, sinh viên có thể:
ỉ Kết nối và truy vấn cơ sở dữ liệu thông qua tập các lớp của ADO.NET
ỉ Cập nhật dữ liệu thông qua các lớp thuộc mô hình kết nối và phi kết nối
(Connectioned & Disconnected).
ỉ Viết các lớp ComboBox, ListBox, TreeView, ListView, DataGridview mới có kế
thừa từ các lớp gốc.
ỉ Xây dựng một ứng dụng có sử dụng các lớp vừa xây dựng.

L-u ý:
ỉ Sinh viên khi làm cần phải xây dựng một (hoặc vài) form để Demo các yêu
cầu cho GVHD.
ỉ Nếu các bài Copy của nhau (không trình bày đ-ợc cái mình đã làm) thì cả ng-ời
Copy và cho Copy đều đ-ợc điểm 0 của phần thực hành (bị trừ 3 điểm).
M



Nội dung:
1. Thao tác với CSDL (Thống nhất lấy cơ sở dữ liệu Nwind.mdb) dùng mô hình kết
nối (sử dụng các lớp OledbConnection, OleDbCommand, OleDbDataReader.
2. Thao tác với CSDL (Thống nhất lấy cơ sở dữ liệu Nwind.mdb) dùng mô hình
không kết nối (sử dụng các lớp OledbConnection, OleDbDataAdapter, DataSet.
3. Xây dựng lớp MyListBox thừa kế từ ListBox
4. MyComboBox thừa kế từ lớp ComboBox
5. Xây dựng lớp DataGridView
6. Xây dựng lớp MyTreeView
7. Xây dựng lớp MyListView
8. Vận dụng các lớp vừa xây dựng ở trên, viết ứng dụng Quản lý lịch làm việc cá
nhân.

Nội dung chi tiết:

Danh sách các Bảng trong CSDL Nwind.mdb
2
Thực hành làm các công việc sau đây:
1. Thao tác CSDL nwind.mdb theo mô hình kết nối
a) Hiển thị danh sách tất cả các nhà cung cấp (CompanyName) trong một ListBox
b) Hiển thị tên các sản phẩm (ProductName) trong LisstBox khi ng-ời dùng chọn Mã
nhà cung cấp (SupplierID) t-ơng ứng ở trong ComboBox.
c) Hiển thị tên công ty (Company name) của nhà cung cấp trong một Textbox. Khi
ng-ời dùng di chuyển đến một Company name thì hiển thị các đơn hàng trong
một DataGridview. Khi ng-ời dùng click vào một đơn hàng thì lại hiển thị chi tiết
đơn hàng đó trong một DataGridview khác (Hình 1). Thêm các nút duyệt tên các
công ty. (|<; < ; > ; >| )
d) Hiển thị mã khách hàng (CustomerID) trong ComboBox. Khi ng-ời dùng chọn thì
thông báo tổng giá trị đơn hàng mà khách hàng đó đã đặt.

e) Ghi thông tin về các sản phẩm đã bán vào tệp văn bản theo định dạng. (Mỗi bản
ghi trên một dòng)

STT ContacName ProductName CompanyName Quantity
1 John Monitor IBM 5
2 Adam CPU Intel 10
.


Hình 1
2. Thao tác CSDL nwind.mdb theo mô hình phi kết nối
Xây dựng một form thao tác với bản Customers có dạng nh- sau:
3

H2. Giao diện thể hiện chức năng.
L-u ý: Có sử dụng điểu khiển Error Provider để kiểm tra dữ liệu nhập (các tr-ờng
số, tr-ờng not null)
3. Xây dựng lớp MyListBox thừa kế từ ListBox, với các thành viên mới:
- Ph-ơng thức LoadField(FieldName, TableName, DBPath: String) để nạp
một tr-ờng trong một bảng của tệp CSDL DBPath vào Listbox.
- Ph-ơng thức LoadFieldDistinctRow
(FieldName, TableName, DBPath: String)
để nạp tr-ờng nh-ng loại bỏ các phần tử trùng nhau (chỉ giữ lại một).

- Ph-ơng thức SortData (ChieuSapXep as boolean) để sắp xếp dữ liệu theo
chiều tăng hoặc giảm dần.

- Ph-ơng thức SortData(KieuDuLieu As Integer, ChieuSapXep as boolean) để sắp
xếp tùy thuộc vào kiểu dữ liệu trong listbox.
- Ph-ơng thức SortVietnameseName() để sắp xếp theo vần tên (Nếu listbox chứa

danh sách họ tên)
- Thêm sự kiện XOA. Sự kiện này đ-ợc kích hoạt khi ng-ời dùng nhấn phím Del.
4. MyComboBox thừa kế từ lớp ComboBox
Xây dựng chức năng t-ơng tự nh- lớp MyListBox
5. Xây dựng lớp DataGridView
Các ph-ơng thức bổ sung:
- LoadTable(Tên bảng, tên CSDL)
- LoadTable(Tên bảng, Tên CSDL, tên tr-ờng để sắp xếp theo, chiều (tăng, giảm))
- ExecuteSQL(Tên CSDL, tên câu lệnh SQL)
- ExecuteSQL(Câu lệnh SQL), thực thi câu lệnh SQL với CSDL đ-ợc thực hiện
tr-ớc đó.
- ExecuteSelectCmd(Câu lệnh Select) As DataReader
- Export(FileName As String) : Để kết xuất dữ liệu ra file text. Mỗi bản ghi trên
một dòng. Ph-ơng thức này, lớp sau có thể thay đổi để kết xuất ra t/bị khác.
4
6. Xây dựng lớp MyTreeView
Xây dựng lớp MyTreeView với các ph-ơng thức sau:
- LoadField(Tên tr-ờng, tên bảng, Tên CSDL) để nạp tr-ờng của một bảng vào cây
(Nạp vào mức 1)
- LoadField(Tên tr-ờng_mức 1, Bảng chứa tên tr-ờng 1, Tên tr-ờng _ Mức 2,
Bảng chứa tên tr-ờng ở mức 2, Tên CSDL): Dùng để nạp một tr-ờng của một
bảng vào mức 1 (mức cha) và ứng với mỗi nút cha đó thì nạp các nút con t-ơng
ứng nằm trong tr-ờng 2 của bảng 2. Ví dụ Mức 1 nạp tên công ty
(CompanyName), mức 2 nạp tên sản phẩm ứng với công ty đó (ProductName).
- LoadField(Tên tr-ờng_mức 1, Bảng chứa tên tr-ờng 1, Tên tr-ờng _ Mức 2,
Bảng chứa tên tr-ờng ở mức 2, Tên tr-ờng _ Mức 3, Tên bảng chứa tr-ờng 3,
Tên CSDL) Giống nh- trên nh-ng thực hiện đến mức thứ 3. Ví dụ nạp
CompanyName (mức cha) ProductName (mức con) UnitPrice (mức cháu).
- Function Check(ID as String) As Node để kiểm tra xem trong cây có một nút có
khóa là ID hay không, nếu có thì trả về chính node đó. Trái lại trả về Nothing.

- Sub DeleteKey(K as string) để xóa một nút có khóa bằng K
- Function InsertNode(Key, Text As String, ParentKey As String) Để thêm một nút
mới có khóa là Key, Text là Text làm nút con của nút có khóa (Key) là ParentKey.
- Lớp MyTreeView
- SaveToCollection() As Collection : để l-u tất cả các nút của treeview vào một tập
hợp.
- Thêm menu popup vào cho treeview với các mục : Add, Delete để cho phép ng-ời
dùng thêm ngay, xóa ngay nút hiện hành (đang đ-ợc chọn).
- Bổ sung sự kiện Delete. Sự kiện này của ng-ời dùng sẽ đ-ợc kích hoạt mỗi khi
ng-ời dùng nhấn phím Del. (l-u ý: Nhiều bạn ở bài thực hành tr-ớc hiểu sai yêu
cầu Xin xem ví dụ mẫu).
7. Xây dựng lớp MyListView
Xây dựng lớp này để có thêm chức năng:
- ShowTable(Tên bảng, Tên CSDL) để hiển thị một bảng CSDL trong ListView.
- MyListView cũng có menuPopup để ng-ời dùng chọn kiểu hiển thị (3 mục là List,
Icons, report). Việc hiển thị menu có thể là tùy chọn (Enable/Disable).
- Thêm sự kiện Delete giống nh- ở câu 6.
8. Vận dụng các lớp vừa xây dựng ở trên, viết ứng dụng Quản lý lịch làm việc
Thông tin chung:
- Mỗi ng-ời có thể viết nhiều ngày làm việc
- Mỗi ngày có thể có nhiều việc khác nhau
- Mỗi việc đều có chi tiết công việc.
Yêu cầu (các chức năng chính, còn SV có thể bổ sung thêm nếu thấy cần Càng tốt !):
a. Nhập lịch làm việc cho một tuần
b. Bổ sung thêm một công việc cho một ngày nào đó
c. Xóa một công việc
d. Chỉnh sửa công việc
e. Xem các công việc theo ngày, tháng, tuần
f. Nhắc việc. Nếu thời gian máy tính bằng với thời điểm bắt đầu của công việc thì
"Nhắc nhở" bằng cách hiển thị một Message.

*** L-u ý:
- Có thể tham khảo phần mềm Outlook đi cùng với bộ MS Office 2k, 2k3
- Việc trình bày các công việc ở trên nên sử dụng MyTreeView, MyListView,
MyListBox ở trên !
1
Bài thực hành số 5:
Lập trình mạng trong VB.NET

Mục tiêu
: Sau khi kết thúc bài thực hành, sinh viên có thể:
ỉ Nắm vững cách khai báo và sử dụng đ-ợc các lớp UDP, TCP,
IPAddress, IPHostEntry, IPEndpoint .
ỉ Sử dụng các lớp UDP và TCP để viết một số ch-ơng trình Client và
Server đơn giản: CHAT.
Nội dung
:
UDP
:
Bài 1: Viết ch-ơng trình UDP đặt ở hai máy thực hiện công việc sau:
- Khi một ứng dụng gửi xâu "OPEN#<Đ-ờng dẫn>" thì ứng dụng
trên máy kia sẽ mở file nằm trong phần <đ-ờng dẫn>
- Khi một ứng dụng gửi xâu " shutdown ", restart thì ứng dụng kia
sẽ tắt máy tính và khởi động lại t-ơng ứng.
Mô tả giao diện:

Giao diện của ứng dụng A (ứng dụng 1)


Giao diện của ứng dụng B (ứng dụng 2)


Yêu cầu:
Nhập nội dung xâu gửi (shutdown, restart, OPEN#<Đ-ờng dẫn>) vào
ô textbox Xâu gửi trên ứng dụng A. Sau khi nhấn nút Gửi thì xâu đó hiện ra
ô textbox Xâu nhận về trên ứng dụng B, đồng thời thực hiện các công việc
t-ơng ứng.

Bài 2: Viết ch-ơng trình UDP đặt trên một máy. thực hiện các công việc sau:
Khi một ứng dụng (B) gửi một xâu chữ Tiếng Anh thì ứng A sẽ gửi trả lại
nghĩa tiếng Việt t-ơng ứng. Nếu từ Tiếng Anh không có trong từ điển (từ
2
điển ở đây chỉ có 3 từ Computer, RAM, HDD) thì ứng dụng A gửi trả lại xâu
"Not found".
Mô tả giao diện:

Giao diện của ứng dụng A (ứng dụng 1)



Giao diện của ứng dụng B (ứng dụng 2)

Yêu cầu:
Nhập từ Tiếng Anh (TA) cần tra vào ô Textbox Từ TA trên ứng dụng
B. Khi nhấn nút Gửi thì từ TA đó hiện ra trong ô Text Từ TA nhận về từ
ứng dụng B trên ứng dụng A. Sau khi nhấn nút Gửi lại nghĩa thì nghĩa của
từ TA sẽ hiện ra trong ô Textbox Nghĩa nhận về từ ứng dụng A .

Bài 3: viết ch-ơng trình chơi cờ Caro qua mạng sử dụng giao thức UDP.
Mô tả giao diện:

Giao diện của ứng dụng A (ứng dụng 1)


3

Giao diện của ứng dụng B (ứng dụng 2)
Yêu cầu+Gợi ý:
- Code cho mỗi ứng dụng là hoàn toàn giống nhau
- Mỗi khi ng-ời dùng Click vào một ô (
sự kiện
CellClick của
DatagridView) thì gửi vị trí của ô đó, đồng thời thiết lập giá trị cho ô đó (X
hoặc O)

Bài 4: viết ch-ơng trình CHAT giữa 2 máy sử dụng giao thức UDP.
Mô tả giao diện:

Giao diện của ứng dụng A (ứng dụng 1)

4

Giao diện của ứng dụng B (ứng dụng 2)
Code cho mỗi ứng dụng là hoàn toàn giống nhau.
L-u ý: Nếu 2 ứng dụng đặt trên 2 máy khác nhau thì chúng ta có thể đặt
Remote Port và Local Port của hai ứng dụng giống nhau (Vì không bị xung
đột).


TCP
:
Bài 1
:

Viết ch-ơng trình Telnet.

Bài 2: Viết ch-ơng trình Client/Server: Khi client gửi xâu "shutdown",
"restart" thì Server sẽ tắt máy và khởi động t-ơng ứng.
Mô tả giao diện:


Giao diện của ứng dụng Client
Yêu cầu + Gợi ý:
5
- Khi ng-ời dùng nhấn nút Gửi thì client sẽ gửi nội dung trong ô
textbox Nội dung gửi cho Server. Tùy theo nội dung client gửi đi
mà Server thực hiện các công việc t-ơng ứng (shutdown, restart).
- Các thông tin về server có thể thay đổi đ-ợc.
- Để shutdown máy tính có thể dùng hàm API ExitWindown hay
Process.start(Shutdown,-s).

Bài 3: Viết ch-ơng trình Server giải đáp tên miền. Nếu máy khách gửi tên
máy thì server sẽ gửi về địa chỉ IP. (danh sách này tự tạo ra khoảng 3 cặp
để minh họa).
Mô tả giao diện:

Giao diện của ứng dụng Client

Yêu cầu
- Khi ng-ời dùng nhấn nút Gửi thì client sẽ gửi nội dung trong ô
textbox Nội dung gửi cho Server. Kiểm tra xem nội dung client gửi
đi có trùng với 1 trong 3 tên máy đã đ-ợc định nghĩ tr-ớc. Nếu
trùng thì Server gửi lại địa chỉ IP cho client.
- Các thông tin về server có thể thay đổi đ-ợc.


Bài 4: Viết ch-ơng trình Client/Server. Khi Client gửi đ-ờng dẫn của tệp
nằm trên máy server thì server gửi trả cho Client nội dung của tệp đó.
Mô tả giao diện:
6

Giao diện của ứng dụng Client
Yêu cầu
Nhập đ-ờng dẫn file vào ô Nội dung gửi: khi ng-ời dùng nhấn nút
Gửi. Thì nội dung này sẽ đ-ợc gửi cho server, dồng thời server gửi trả lại nội
dung file. Nội dung file hiển thị trong ô Nội dung tệp.


Bài 5: Viết ch-ơng trình CHAT giữa hai máy sử dụng giao thức TCP.

Mô tả giao diện:

7


Giao diện của ứng dụng Client 1


Giao diện của ứng dụng Client 2

Yêu cầu
v Server:
- Mỗi khi có Client nào kết nối đến thì client đó đ-ợc hiển thị trong
mục Danh sách các client kết nối đến.
- Thông tin server có thể thay đổi.

v Client:
- Các client kết nối đến server đ-ợc hiển thị trong mục: Danh sách
các client.
8
- Khi một client muốn chat với một client nào đó thì phải chọn client
muốn chat trong (check vào client muốn chat) Danh sách các
client. Nếu không chọn thì nội dung chat chỉ gửi nên server.

Đại học S- phạm Kỹ thuật H-ng Yên Biờn son: Nguyn Minh Quý. Ver 1.0
TRƯờNG ĐạI HọC SƯ PHạM Kỹ THUậT HƯNG YÊN
Khoa công nghệ thông tin



hệ thống bài thực hành môn : ms ASP.net
Lớp: TK3H
Ging viờn: Nguyn Minh Quý



Bài thực hành số 1
Sử dụng Web Control
Yêu cầu:
Xây dựng một trang Web thực hiện 4 phép tính +, -, *, /

Các b-ớc tiến hành:
B1. Chạy Microsoft Visual Studio .net
B2. Chọn kiểu dự án là ASP.NET Application
B3. Kéo và đặt lần l-ợt các điều khiển sau đây vào form:
+ Textbox (Để l-u số hạng thứ nhất)

+ ListBox (Để l-u các phép toán +, -, *, / cho ng-ời dùng chọn)
+ TextBox (Để l-u số hạng thứ hai)
+ Button (Để thực thi phép toán khi ng-ời dùng click chuột)
+ TextBox (Để l-u kết quả)
Sau đó có thể kéo thêm các nhãn (label) để chú thích cho các textbox.
B4: Đặt tên cho các điều khiển (Đặt thuộc tính ID), lần l-ợt nh- sau:
+ txtSH1, lstPhepToan, txtSH2, cmdThucHien, txtKetQua
B5. Viết code trong form

'/// Viết lệnh trong thủ tục Page_Load
Private Sub Page_Load( )
'Nạp phép toán vào trong ListBox
lstPhepToan.Items.Add ("+")
lstPhepToan.Items.Add ("-")
lstPhepToan.Items.Add ("*")
lstPhepToan.Items.Add ("/")
End sub

'// Viết lệnh cho sự kiện click chuột lên nút Thực hiện
Private Sub cmdThucHien_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdBind.Click
Select Case lstPhepToan.SelectedItem.Text
Case "+"
txtKetQua.Text = CInt(txtSH1.Text) + CInt(txtSH2.Text)
Case "-"
txtKetQua.Text = CInt(txtSH1.Text) - CInt(txtSH2.Text)
Case "*"
txtKetQua.Text = CInt(txtSH1.Text) * CInt(txtSH2.Text)
Case "/"
txtKetQua.Text = CInt(txtSH1.Text) / CInt(txtSH2.Text)

End Select
End Sub


truy cập cơ sở dữ liệu trong asp.net
Trong các bài thực hành tiếp theo, ta sẽ lấy cơ sở dữ liệu có tên là Email.mdb để minh hoạ. Tệp
Email.mdb có 1 bảng tên là tblNguoiDung, bảng này có các tr-ờng là MaNguoiDung, HoTen,
DiaChiEMail, MatKhau. Tệp này qui -ớc là l-u trong cùng với th- mục của ứng dụng WEB hiện hành. SV
tự tạo CSDL này và nhập vào bảng khoảng 20 bản ghi mẫu!
Đại học S- phạm Kỹ thuật H-ng Yên Biờn son: Nguyn Minh Quý. Ver 1.0
Bài thực hành số 2.1

Hiển thị dữ liệu trong CSDL ra ListBox (Version 1)
Yêu cầu: Nạp họ tên ng-ời dùng trong bảng tblNguoiDung vào ListBox khi ng-ời dùng click vào nút "DS
ng-ời dùng". (Đây là cách lấy và nạp dữ liệu truyền thống)

Các b-ớc tiến hành:
B1. Kéo một ListBox và một button vào form, đặt tên lần l-ợt là: lstHoTen, cmdHienThi.
B2. Viết lệnh:

'/// Phần khai báo thuộc form
Dim Cn As New OleDb.OleDbConnection
Dim Cmd As OleDb.OleDbCommand
Dim Rs As OleDb.OleDbDataReader

'/// Lệnh khởi tạo khi trang bắt đầu đ-ợc nạp: Mở kết nối đến CSDL
Private Sub Page_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)
Cn.ConnectionString="Provider=Microsoft.JET.OLEDB.4.0; Data Source=" & MapPath("EMail.mdb")
Cn.Open()
End Sub


'/// Thực hiện lấy dữ liệu trong bảng và chèn vào Listbox
Private Sub cmdHienThi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
lstHoTen.Items.Clear()

Cmd = New OleDb.OleDbCommand
Cmd.Connection = Cn
Cmd.CommandText = "Select * from tblNguoiDung"
Rs = Cmd.ExecuteReader

'/// Nạp họ tên vào listbox
Do While Rs.Read
lstHoTen.Items.Add(Rs("HoTen"))
Loop

Cmd.Dispose()
End Sub

'/// Thực hiện các công việc dọn dẹp khi trang kết thúc
Private Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles
Cn.Close() '/// Đóng kết nối
End Sub


Bài thực hành 2.2

Hiển thị dữ liệu trong CSDL ra ListBox (Version 2), sử dụng khả năng
gắn kết dữ liệu (Data Binding) của các Web Control

Yêu cầu: Nạp họ tên ng-ời dùng trong bảng tblNguoiDung vào ListBox khi ng-ời dùng click vào nút "DS

ng-ời dùng". (Đây là cách lấy và nạp dữ liệu cải tiến, tận dụng khả năng gắn kết dữ liệu của các đối t-ợng
Web control)

Các b-ớc tiến hành:
B1. Kéo một ListBox và một button vào form, đặt tên lần l-ợt là: cboDS, cmdHienThi.
B2. Viết lệnh:

'/// Phần khai báo thuộc form
Dim Cn As New OleDb.OleDbConnection
Dim Cmd As OleDb.OleDbCommand
Dim Rs As OleDb.OleDbDataReader

Đại học S- phạm Kỹ thuật H-ng Yên Biờn son: Nguyn Minh Quý. Ver 1.0
'/// Lệnh khởi tạo khi trang bắt đầu đ-ợc nạp: Mở kết nối đến CSDL
Private Sub Page_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)
Cn.ConnectionString="Provider=Microsoft.JET.OLEDB.4.0; Data Source=" & MapPath("EMail.mdb")
Cn.Open()
End Sub

'/// Thực hiện lấy dữ liệu trong bảng và chèn vào Listbox
Private Sub cmdHienThi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
lstHoTen.Items.Clear()

Cmd = New OleDb.OleDbCommand("Select * from tblNguoiDung", Cn)

datAdapter.SelectCommand = Cmd '// Lấy kết quả vừa thực hiện và l-u vào data Adapter
datAdapter.Fill(datSet, "NguoiDung") '// Đặt tên cho tập kết quả đó là NguoiDung (tuỳ ý)

lstHoTen.DataSource = datSet.Tables("NguoiDung")
lstHoTen.DataTextField = "HoTen" '/// Sẽ gắn tr-ờng HoTen với Listbox để hiển thị

lstHoTen.DataBind() '/// Thực hiện gắn kết

Cmd.Dispose() ' Giải phóng đối t-ợng cmd (vì không còn cần nữa)
End Sub

'/// Thực hiện các công việc dọn dẹp khi trang kết thúc
Private Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles
Cn.Close() '/// Đóng kết nối
End Sub

bài thực hành số 3
Hiển thị dữ liệu trong Data Grid control
Yêu cầu : Hiển thị toàn bộ dữ liệu trong bảng tblNguoiDung ra bảng (Data Grid)
Các b-ớc thực hiện:
B1: Kéo điều khiển Data Grid vào form và đặt tên (Thuộc tính ID) là dgrNguoiDung.
B2: Viết lệnh trong thủ tục Page_Load
'/// Khai báo các biến thao tác CSDL
Public Cn As New OleDb.OleDbConnection
Public Cmd As New OleDb.OleDbCommand
Public datRead As OleDb.OleDbDataAdapter

Public datAdapter As New OleDb.OleDbDataAdapter
Public datSet As New DataSet

'// Mở kết nối và hiển thị dữ liệu ra bảng ngay khi trang web đ-ợc mở.
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Cn.ConnectionString = "Provider=microsoft.jet.oledb.4.0; data source=" & MapPath("EMail.mdb")
Cn.Open()
If Not IsPostBack Then Call HienThiDSND() '/// Nếu không PostBack thì mới hiển thị.
End Sub


'/// Thủ tục hiển thị danh sách ng-ời dùng ra điều khiển Data Grid
Public Sub HienThiDSND()
Cmd = New OleDb.OleDbCommand("Select * from tblNguoiDUng", Cn)
datSet.Clear()
datAdapter.SelectCommand = Cmd '/// Chuyển kết quả từ cmd vào data Adapter
datAdapter.Fill(datSet, "NguoiDung") '/// Điền kết quả từ Adapter vào data Set, đặt tên là NguoiDung

dgrNguoiDung.DataSource = datSet.Tables("NguoiDung") '/// Nguồn dữ liệu là NguoIDung
dgrNguoiDung.DataBind() '/// Thực hiện gắn kết thực sự
dgrNguoiDung.Dispose()
End Sub

Private Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs)
datAdapter.Dispose()
Cn.Close()
End Sub
Đại học S- phạm Kỹ thuật H-ng Yên Biờn son: Nguyn Minh Quý. Ver 1.0
Bài thực hành số 4
Hiển thị dữ liệu trong bảng ra Data Grid và thực hiện phân trang
Yêu cầu: Hiển thị dữ liệu chứa trong bảng tblNguoiDung và thực hiện phân trang, mỗi trang hiển thị 5 bản ghi.

Các b-ớc tiến hành:
B1: Kéo Data grid vào form và đặt tên là dgrNguoiDung
B2: Thiết lập các thuộc tính cho DataGrid.:
+ Allow Paging : True
+ PageSize : 5
+ Paging mode: Number
B3: Viết lệnh
Public Cn As New OleDb.OleDbConnection

Public Cmd As New OleDb.OleDbCommand
Public datRead As OleDb.OleDbDataAdapter

Public datAdapter As New OleDb.OleDbDataAdapter
Public datSet As New DataSet

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
'Nếu sử dụng CSDL SQL Server thì sử dụng xâu kết nối có dạng nh- sau:
'Cn.ConnectionString= "Provider=SQLOLEDB.1; Data Source= quynm; Initial catalog=northwind; User ID=user;"

Cn.ConnectionString="Provider=microsoft.jet.oledb.4.0; data source=" & MapPath("EMail.mdb")
Cn.Open()
If Not IsPostBack Then Call HienThiDSND()
End Sub

'/// Thủ tục hiển thị dữ liệu ra Datagrid
Public Sub HienThiDSND()
Cmd = New OleDb.OleDbCommand("Select * from tblNguoiDUng", Cn)
datSet.Clear()
datAdapter.SelectCommand = Cmd
datAdapter.Fill(datSet, "NguoiDung")

dgrNguoiDung.DataSource = datSet.Tables("NguoiDung")
dgrNguoiDung.DataBind()
dgrNguoiDung.Dispose()
End Sub

Private Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs)
datAdapter.Dispose()
Cn.Close()

End Sub

'// Thủ tục này sẽ đ-ợc kích hoạt mỗi khi ng-ời dùng click vào các số trang t-ơng ứng.
'/// Tham số e.NewPageIndex sẽ cho biết là ng-ời dùng click vào trang nào.
Private Sub dgrNguoiDung_PageIndexChanged(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgrNguoiDung.PageIndexChanged
dgrNguoiDung.CurrentPageIndex = e.NewPageIndex '/// Đặt trang cần xem là trang ng-ời dùng vừa chọn
HienThiDSND() '/// Gọi thủ tục này để nạp lại dữ liệu vào Data Grid
End Sub

Bài thực hành số 5
Thực hiện các thao tác cập nhật và xoá bản ghi

Yêu cầu: Sử dụng Data Grid để hiển thị bảng tblNguoiDung, trong đó thêm cột Update và delete. Mỗi khi ng-ời dùng
click vào cột Update, delete của bản ghi (dòng) hiện tại thì thực hiện Update và Delete bản ghi t-ơng ứng.

Các B-ớc tiến hành:
B1+B2: Giống nh- bài thực hành số 4
B3: Tạo thêm cột cho Data Grid:
+ Click chọn Data Grid
+ Chọn mục Properties Buiding trong phần Properties (ở d-ới cùng)
+ Thực hiện thêm cột Edit và cột Delete khi hộp thoại hiện ra.
Đại học S- phạm Kỹ thuật H-ng Yên Biờn son: Nguyn Minh Quý. Ver 1.0
B4: Viết code

Public Cn As New OleDb.OleDbConnection
Public Cmd As New OleDb.OleDbCommand
Public datRead As OleDb.OleDbDataAdapter

Public datAdapter As New OleDb.OleDbDataAdapter

Public datSet As New DataSet

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Cn.ConnectionString = "Provider=microsoft.jet.oledb.4.0; data source=" & MapPath("EMail.mdb")
Cn.Open()
If Not IsPostBack Then Call HienThiDSND()
End Sub

Public Sub HienThiDSND()
Cmd = New OleDb.OleDbCommand("Select * from tblNguoiDUng", Cn)
datSet.Clear()

datAdapter.SelectCommand = Cmd
datAdapter.Fill(datSet, "NguoiDung")

dgrNguoiDung.DataSource = datSet.Tables("NguoiDung")
dgrNguoiDung.DataBind()
dgrNguoiDung.Dispose()
End Sub

Private Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Unload
datAdapter.Dispose()
Cn.Close()
End Sub

'/// Hiển thị trang mà ng-ời dùng vừa chọn (Refresh lại) - ở chế độ phân trang
Private Sub dgrNguoiDung_PageIndexChanged( phần tham số này tự sinh ra )
dgrNguoiDung.CurrentPageIndex = e.NewPageIndex
HienThiDSND()
End Sub


'/// Thủ tục sự kiện này xảy ra khi ng-ời dùng click vào cột Edit của Data Grid > Ta sẽ viết lệnh thực hiện edit tại đây
Private Sub dgrNguoiDung_EditCommand( tham số tự sinh khi bạn chọn sự kiện EditCommand )
dgrNguoiDung.EditItemIndex = e.Item.ItemIndex '/// Chuyển dòng vừa chọn sang chế độ sửa (Hiển thị textbox)
dgrNguoiDung.SelectedIndex = e.Item.ItemIndex '/// Cho dòng này sáng lên (highlight) . có thể bỏ qua dòng này.
HienThiDSND()
End Sub

'/// Thủ tục sự kiện này đ-ợc gọi khi ng-ời dùng click vào cột Delete
Private Sub dgrNguoiDung_DeleteCommand( tự sinh ra )

Dim MaNguoiDung As String = dgrNguoiDung.DataKeys(e.Item.ItemIndex).ToString '/// Lấy mã của bản ghi vừa chọn
Cmd = New OleDb.OleDbCommand("Delete from tblNguoiDung where Manguoidung='" & MaNguoiDung & "'", Cn)
Cmd.ExecuteNonQuery() '// Thực thi câu lệnh xoá
Cmd.Dispose()

HienThiDSND() '/// Hiển thị lại dữ liệu trong bảng ra Data Grid
End Sub

'/// Sự kiện này sinh ra khi ng-ời dùng click vào cột Update
'/// l-u ý: ASP.NET không tự động cập nhật mà chỉ báo hiệu rằng "Ng-ời dùng vừa nhấn nút Update"
'/// Do vậy ta phải viết các lệnh cập nhật tại đây

Private Sub dgrNguoiDung_UpdateCommand( ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs )
Dim txt As TextBox
Dim MaNguoiDung, HoTen, DiaChiEMail, strSQL As String

MaNguoiDung = dgrNguoiDung.DataKeys(e.Item.ItemIndex).ToString '/// Lấy mã ng-ời dùng cần cập nhật

txt = CType(e.Item.Cells(2).Controls(0), TextBox) '/// Lấy nội dung ng-ời dùng vừa soạn mới

HoTen = txt.Text

txt = CType(e.Item.Cells(3).Controls(0), TextBox) '/// Lấy nội dung ng-ời dùng vừa soạn mới
DiaChiEMail = txt.Text

strSQL = "UPDATE tblNguoiDung "
strSQL = strSQL & " SET Hovaten ='" & HoTen & "', DiaChiEMail = '" & DiaChiEMail & "' "
strSQL = strSQL & "WHERE MaNguoiDung ='" & MaNguoiDung & "'"

Cmd = New OleDb.OleDbCommand(strSQL, Cn)
Cmd.ExecuteNonQuery() '/// Thực hiện cập nhật thực sự vào CSDL

Cmd.Dispose()

Đại học S- phạm Kỹ thuật H-ng Yên Biờn son: Nguyn Minh Quý. Ver 1.0
dgrNguoiDung.EditItemIndex = -1 '/// cập nhật xong > ẩn thanh sáng đi.
HienThiDSND() '/// Refresh lại Data Grid (Nạp lại bảng).
End Sub

'/// Thủ tục sự kiện này đ-ợc gọi khi ng-ời dùng click vào bất kỳ cột gì (tại link của dòng header).
Private Sub dgrNguoiDung_ItemCommand( ByVal source As Object, ByVal e As )
End Sub

'/// Thủ tục sự kiện này đ-ợc gọi khi ng-ời dùng nhấn vào nút Edit, sau đó lại nhấn vào nút Cancel
'/// Khi đó đơn giản là ta đặt Data Grid từ trạng thái edit sang trạng thái th-ờng bằng cách đặt 2 thuộc tính sau bằng -1
Private Sub dgrNguoiDung_CancelCommand( tự sinh ra )
dgrNguoiDung.SelectedIndex = -1 '/// ẩn thanh sáng
dgrNguoiDung.EditItemIndex = -1 '/// ẩn textbox soạn thảo, trở về trạng thái bình th-ờng
HienThiDSND() '/// Nạp lại bảng vào trong Data Grid
End Sub


'// thủ tục sự kiện này đ-ợc gọi khi ng-ời dùng click vào dòng tiêu đề với ngụ ý "Sắp xếp"
'/// tham số e.SortExpression sẽ trả về tên của cột mà ng-ời dùng vừa click.
'/// L-u ý là phải đặt thuộc tính Sortexpress cho Data Grid khi thiết lập thêm cột trong Properties Builder
Private Sub dgrNguoiDung_SortCommand(ByVal source As Object, ByVal e As )
SapXepDSND(e.SortExpression) '/// Gọi thủ tục sắp xếp để thực hiện sắp xếp cột t-ơng ứng
End Sub

'/// thủ tục sắp xếp thực hiện sắp xếp theo một tr-ờng nào đó theo chiều tăng hoặc giảm, mặc định là tăng (ASC)
'/// Thực chất công việc của ta là Select lại dữ liệu nh-ng thêm mệnh đề sắp xếp trong câu lệnh SQL
'// Sau đó nạp vào Data Grid.
Public Sub SapXepDSND(ByVal TenTruong As String, Optional ByVal Chieu As String = "ASC")
Cmd = New OleDb.OleDbCommand("Select * from tblNguoiDUng order by " & TenTruong & " " & Chieu, Cn)
datSet.Clear()

datAdapter.SelectCommand = Cmd
datAdapter.Fill(datSet, "NguoiDung")

dgrNguoiDung.DataSource = datSet.Tables("NguoiDung")
dgrNguoiDung.DataBind()
dgrNguoiDung.Dispose()
End Sub


Bài tập làm thêm:

Bài 1: Xây dựng trang Login để kiểm tra thông tin đăng nhập của ng-ời dùng.

Bài 2: Xây dựng trang cho phép thêm mới bản ghi vào bảng. Gợi ý: Xây dựng ttang NhapDuLieu.htm để ng-ời dùng nhập dữ liệu và submit cho
trang Them.aspx. Trang Them.aspx sẽ lấy thông tin nàybằng Request.form và insert vào bảng (sử dụng ph-ơng thức: executeNonQuery của đối

t-ợng OledbCommand)

Bài 3: Xây dựng trang Web aspx đếm số l-ợng ng-ời hiện đang truy cập vào trang index.aspx. Gợi ý: Tìm hiển cách tạo biến toàn cục và file
global.asax.

Bài 4: Đếm và l-u số l-ợng ng-ời đã truy cập vào website

Bài 5: Xây dựng thêm trang: Tracuu.aspx cho phép ng-ời dùng gõ MaNguoiDung, sau đó hiển thị thông tin về ng-ời này trong bảng
tblNguoiDung.
Yêu cầu : Dùng điều khiển Panel, SplitContainer, kết hợp với Splitter và các thuộc tính
Dock tạo ra các form và chia form đó theo các miền như sau:









Chia làm 2 vùng













Tạo 3 vùng






















×