BÀI TẬP THỰC HÀNH LẬP TRÌNH TRÊN WINDOWS BUỔI 1: XUẤT NHẬP DỮ LIỆU CƠ BẢN... 2 BUỔI 2: THIẾT KẾ LỚP {1}... 3 BUỔI 3: THIẾT KẾ LỚP {2}... 4 BUỔI 4: THIẾT KẾ LỚP {3}... 5 BUỔI 5: Windows Form {1}... 6 BUỔI 6: Windows Form {3}... 12 BUỔI 7: TRUY CẤP CSDL THEO CÁCH CONNECTED... 14 BUỔI 8: TRUY CẬP CSDL THEO CÁCH DISCONNECTED... 19 BUỔI 9: TÌM KIẾM VÀ CẬP NHẬT DƯ LIỆU... 21 BUỔI 10: Ôn tập BUỔI 11: Kiểm tra Trang 1
Mục tiêu BUỔI 1: XUẤT NHẬP DỮ LIỆU CƠ BẢN Xuất dữ liệu ra màn hình, nhập dữ liệu từ bàn phím (Nhập chuỗi, số nguyên, số thực) Tham số của phương thức: tham trị, ref, out, params Xây dựng lớp cơ bản: Field, Constructor, Method (Nhập, xuất, tính toán) Nhập xuất cơ bản: Console.WriteLine(), Console.ReadLine() Bài 1. Xuất và nhập chuỗi Dùng chương trình Visual Studio.Net viết chương trình nhập họ tên và xuất họ tên đã nhập ra màn hình console theo định dạng sau: Nhap ho ten cua ban: Tran Anh Minh Chao ban Tran Anh Minh! Bài 2. Nhập số nguyên Viết chương trình nhập hai số nguyên x, y. Tính x y và xuất theo định dạng sau: Nhap so nguyen x: 7 Nhap so nguyen y: 3 Ket qua 7 mu 3 la: 343 Viết phương thức: truyền tham số bằng tham trị, tham chiếu: ref, out Bài 3. return giá trị Xây dựng lớp có phương thức tìm giá trị lớn nhất của ba số nguyên. Bài 4. Phương thức bool Xây dựng lớp có phương thức kiểm tra n có phải là số nguyên tố hay không. Bài 5. Tham chiếu ref Xây dựng lớp có phương thức hoán vị hai số thực. Bài 6. Tham chiếu out Xây dựng lớp có phương thức tìm giá trị lớn nhất và giá trị nhỏ nhất của ba số thực. Xây dựng lớp cơ bản Bài 7. Nhập xuất thông tin sinh viên Xây dựng lớp sinh viên để lưu trữ 1 sinh viên (mã sinh viên, họ tên, địa chỉ, sinh viên năm thứ mấy). Hãy nhập xuất 1 sinh viên. Bài 8. Tính lương 1 nhân viên Viết chương trình nhập thông tin một nhân viên (họ tên, mức lương, số ngày vắng). Tính và xuất lương của nhân viên, biết rằng một ngày vắng sẽ bị trừ 100.000 VNĐ. Trang 2
Mục tiêu BUỔI 2: THIẾT KẾ LỚP {1} Hiểu các thành phần trong lớp: Field, Constructor (default, copy, parameter), Property, Method Đa năng toán tử Phương thức tĩnh Thiết kế và xây dựng lớp đơn giản để giải một số bài toán Xây dựng các lớp có đầy đủ các thành phần: Field, Constructor, Property, Method Bài 1. Giá trị đơn thức Viết chương trình tính giá trị của đơn thức P(x) = với giá trị x cho trước ax. n (a là số thực, n là số nguyên không âm) Bài 2. Khoảng cách giữa 2 điểm Viết chương trình tính khoảng cách giữa 2 điểm A và B trong mặt phẳng tọa độ theo 2 cách: Phương thức thành viên Phương thức tĩnh Bài 3. Trung điểm của 2 điểm Viết chương xác định trung điểm I của 2 điểm A và B theo 2 cách: Phương thức thành viên Phương thức tĩnh Bài 4. Đạo hàm đơn thức Viết chương trình tính đạo hàm của đơn thức P(x) = theo qui tắc đạo hàm 1 Q( x) P '( x) a. n. x n Bài 5. Tính tuổi 1 sinh viên Viết chương trình nhập thông tin sinh viên (họ tên, năm sinh). Tính và xuất tuổi sinh viên này. Bài 6. Đa năng toán tử Thiết kế lớp phân số có chức năng +, -, *, / và so sánh >, <, >=, <=, ==,!= giữa 2 phân số ax. n Trang 3
Mục tiêu BUỔI 3: THIẾT KẾ LỚP {2} Lớp chứa mảng, List Indexer Thiết kế và xây dựng lớp phức tạp để giải một số bài toán Lớp phức Bài 1. Lớp chứa mảng 1 chiều Xây dựng lớp dãy số chứa n số nguyên. Hãy viết các phương thức a. Các loại Constructor b. Indexer để truy cập phần tử thứ i trong dãy c. Nhập / Xuất dãy số d. Tìm các số chẵn Bài 2. Lớp chứa mảng 2 chiều Xây dựng lớp mảng 2 chiều có kích thước nxm. Hãy viết các phương thức a. Các loại constructor b. Indexer để truy cập phần tử tại (i, j) c. Nhập / Xuất d. Tìm các số nguyên tố trong mảng Bài 3. Đa thức Xây dựng lớp đa thức gồm n+1 đơn thức 0 1 2 P( x) a0. x a1. x a2. x... a. n n x Viết các phương thức sau: a. Các loại constructor b. Indexer để truy cập đơn thức thứ i c. Nhập / Xuất d. Tính giá trị của đa thức với giá trị x được nhập từ bàn phím Bài 4. Dãy phân số Xây dựng lớp chứa n phân số. Hãy tính tổng của n phân số đó. Bài 5. Tính lương nhân viên Một phòng ban có n nhân viên (họ tên, mức lương, số ngày vắng). Biết rằng một ngày vắng sẽ bị trừ 100.000 VNĐ. Hãy tổng lương của phòng ban. Trang 4
Mục tiêu BUỔI 4: THIẾT KẾ LỚP {3} Thừa kế, đa hình Thiết kế và xây dựng lớp phức tạp để giải một số bài toán Bài 1. Tính lương nhân viên Trong một công ty X, các nhân viên trong công thuộc một trong 2 bộ phân và gọi là: nhân viên kinh doanh và nhân viên sản xuất. Thông tin cơ bản của nhân viên gồm: Mã nhân viên, họ tên. Cách tính lương cho nhân viên mỗi bộ phận như sau: Nhân viên kinh doanh: Ngoài mức lương cơ bản hàng tháng, nhân viên còn nhận được khoảng tiền 500.000 trên 1 hợp đồng được ký kết. Nhân viên sản xuất: Lương nhân viên sản xuất tính theo số lượng sản phẩm x 1000. Nếu làm trên 3000 sản phẩm sẽ được thương thêm 5% lương. Viết chương trình tính lương cho các nhân viên. Bài 2. Tính điểm thí sinh Phân tích, thiết kế và hiện thực theo hướng đối tượng chương trình tính điểm thi cho các thí sinh trong một cuộc thi tin học, thông tin Cuộc thi: danh sách thí sinh. Cuộc thi giành cho hai đối tượng thí sinh: Chuyên (giành cho những thí sinh chưa có giải trước đây) Siêu cúp (giành cho những thí sinh đã đoạt giải trước đây). Biết rằng các thí sinh phải làm 3 bài thi lập trình, riêng đối tượng Chuyên làm thêm bài thi tiếng Anh (để cộng điểm thêm), đối tượng Siêu cúp phải làm thêm bài cơ sở dữ liệu (CSDL). Thông tin chung của các thí sinh: sbd (số báo danh), hoten (họ tên), bai1, bai2, bai3 (điểm của bài 1, 2, 3), tongdiem (tổng điểm cuối cùng của từng thí sinh) Thông tin riêng cho đối tượng Chuyên: tienganh (điểm tiếng Anh) Thông tin riêng cho đối tượng Siêu cúp: csdl (điểm CSDL) Kết quả được xét như sau: Thí sinh Chuyên: Tổng 3 bài thi lập trình + điểm thưởng tiếng Anh được xét như sau: o 7 tienganh 8: cộng 1 điểm o 9 tienganh 10: cộng 2 điểm Thí sinh Siêu cúp: Tổng điểm của 4 bài thi Yêu cầu: Viết chương trình nhập thông tin cuộc thi và xuất tổng điểm thi của từng thí sinh. Trang 5
Mục tiêu BUỔI 5: Windows Form {1} Ứng dụng 1 Form Common Control: Label, Button, TextBox, GroupBox Xử lý sự kiện cơ bản Bài 1: Xác nhận khi đóng Form Hình 1 Yêu cầu: 1. Thiết kế giao diện như hình trên 2. Đặt tên các control hợp lý 3. TexBox của Kết quả không cho phép nhập dữ liệu 4. Xử lý các phép toán 5. TextBox Số chỉ được nhập số, nếu nhập sai hiện MessageBox báo lỗi Hình 2 6. Khi user thoát chương trình, chương trình phải xác nhận lại bằng MessageBox Trang 6
Hình 3 7. Thiết lập nút Enter cho button Bình phương, nút ESC cho button Thoát 8. Hiện Form chính ở giữa màn hình Bài 2: Modal Form Hình 1 Yêu cầu: 1. Thiết kế giao diện như hình trên 2. Khi nhấn nút Nhập phân số 1, Nhập phân số 2 sẽ hiện ra form nhập sau (hiển thị dạng Modal Form) Hình 2 3. Chỉ có một form hiện trong Taskbar 4. Thực hiện các phép tính dựa trên lớp PhanSo 5. Xác nhận khi nhấn nút Thoát Trang 7
Bài 3: Modeless Form Hình 1 Yêu cầu: 1. Thiết kế giao diện như hình trên 2. Khi nhấn nút Thêm sẽ hiện ra form thêm thí sinh sau (hiển thị dạng Modeless Form) Trang 8
Hình 2 3. Thay đổi màu các TextBox khi chúng được active 4. Khi nhấn nút Chấp nhận sẽ thêm thí sinh vào danh sách thí sinh trong MainForm 5. Khi nhấn nút Cập nhật sẽ hiện form cho phép chỉnh sửa thong tin thí sinh đã chọn danh sách thí sinh (SV tự thiết kế form này) 6. Khi nhấn nút Xóa chương trình phải xác nhận trước khi xóa thí sinh đang được chọn trong danh sách thí sinh Bài 4: NotePad Mô phỏng chương trình NotePad Yêu cầu: Một số chức năng quan trọng 1. New, Open, Save, SaveAs, Exit 2. Undo, Cut, Copy, Paste, Delete Hình 1 Trang 9
3. Find, Replace 4. WordWrap 5. Font, 6. About Form Bài 5: Minesweep Thông tin ban đầu (Hình 1) Kích thước bảng: 9x9 Số mìn: 10 Hình 1. 10 trái mìn Quy luật chơi: 1. Nếu lật tất cả các ô không có mìn thì thắng (Hình 2) 2. Nếu lật một ô có chứa mìn thì thua (Hình 1) 3. Khi lật một ô không có mìn, nếu được đánh số n (18) thì xung quanh ô đó có đúng n trái mìn 4. Khi lật một ô không có mìn và xung quanh ô đó cũng không có mìn thì nó lật một loạt các ô liên tiếp không có mìn như hình 3 Trang 10
Hình 2. Đã lật hết các ô không có mìn (Thắng) Hình 3. Lật một số ô liên tiếp Trang 11
BUỔI 6: Windows Form {3} Mục tiêu Sử dụng ListView: Thêm, Xóa, Cập nhật dữ liệu trên listview Bài 1. Thiết kế form dùng để thêm nhân viên vào danh sách nhân viên như sau Khi nhấn nút Thêm, chương trình sẽ thêm thông tin mới nhập vào listview Bài 2. Thêm button Xóa để xóa nhân viên đã chọn trong ListView Trang 12
Bài 3. Thêm button Cập nhật vào form. Khi người dùng chọn 1 dòng nhân viên thì thông tin nhân viên đó sẽ hiện lên các TextBox. Người dùng có thể chỉnh sửa thông tin đó. Sau khi chỉnh sửa trên TextBox, người dùng nhấn button Cập nhật thì thông tin đó sẽ lưu vào ListView Trang 13
Mục tiêu BUỔI 7: TRUY CẤP CSDL THEO CÁCH CONNECTED Ôn tập tạo CSDL trong SQL Server (Sinh viên ở nhà làm trước) Kết nối đến CSDL Lấy dự liệu theo cách Connected Tạo CSDL với tên CSDL: QLXe Xe (Bảng Xe) Field Name Data Type Giải thích BangSo nvarchar(10) Bảng số xe HangXe nvarchar (20) Hãng xe NgaySuDung DateTime Ngày đầu tiên sử dụng NgaySuaChua DateTime Ngày sửa chữa gần nhất NhanVien (Bảng Nhân viên) Field Name Data Type Giải thích MaNV nvarchar (5) Mã nhân viên Ho nvarchar (20) Họ Ten nvarchar (20) Tên NgayVaoLam DateTime Ngày vào làm PhanCong (Bảng Phân công) Field Name Data Type Giải thích BangSo nvarchar (10) MaNV nvarchar (5) NgayLamViec DateTime Ngày làm việc DoanhSo int Doanh số nộp trong ca làm việc Thiết lập quan hệ giữa các bảng Dữ liệu mẫu Trang 14
LẤY DỮ LIỆU THEO CÁCH CONNECTED Bài 1: [Kết nối đến Data Source] Giao diện Yêu cầu: 1. Đặt tên các menuitem hợp lý 2. Lưu chuỗi kết nối trong file: app.config 3. Khi click vào menu Đọc chuỗi kết nối, chương trình sẽ đọc chuỗi kết nối đã lưu trong file app.config và hiện ra màn hình như sau Trang 15
4. Khi click vào menu Mở kết nối, chương trình mở kết nối và thông báo kết nối đã được mở thành công hay thất bại 5. Khi click vào menu Đóng kết nối, chương trình đóng kết nối lại 6. Khi click vào menu Trạng thái Kết nối, chương trình sẽ cho biết kết nối đang mở hay đóng 7. Bắt ngoại lệ SqlException Bài 2: [Lấy 1 giá trị đơn] Giao diện: Tên Project: ThucNghiemCSDL Yêu cầu: Tính tổng doanh số Tổng doang số theo từng quý Bài 3: [Lấy tập giá trị - Đăng nhập] Giao diện: Tên Project: ThucNghiemCSDL Yêu cầu: 1. Thêm cột matkhau (mật khẩu) vào trong bảng NhanVien 2. Form Đăng nhập hiện thị trước các form khác 3. Khi nhấn nút Đăng nhập, chương trình sẽ kiểm tra xem có nhân viên trong csdl không. Nếu có thì hiện form chính 4. Khi nhấn nút Đăng nhập, chương trình sẽ thoát ứng dụng Trang 16
Bài 4: [Lấy tập giá trị - Tra cứu xe] Tên Project: ThucNghiemCSDL Giao diện: Yêu cầu: 1. Combobox Nhập Bảng số : Dữ liệu lấy từ cột BangSo trong bảng Xe 2. Nút Chi tiết xe : Tìm thông tin xe có bảng số được nhập/chọn trong Combobox. Nếu không tìm thấy thông tin xe sẽ hiện message Trang 17
Trang 18
BUỔI 8: TRUY CẬP CSDL THEO CÁCH DISCONNECTED Mục tiêu Sự Adapter để truy vấn CSDL Truy vấn trên 1 và nhiều bảng trong CSDL Bài 1: [Truy vấn 1 bảng] Giao diện: Tên Project: ThucNghiemCSDL Yêu cầu: 1. Lấy danh sách nhân viên và hiện lên lưới bằng DataAdapter Trang 19
Bài 2: [Truy vấn nhiều bảng] Giao diện: Tên Project: ThucNghiemCSDL Yêu cầu: 1. Hiện tên bảng trong Combobox 2. Khi chọn bảng nào thì thông tin bảng đó hiện trong lưới Trang 20
Mục tiêu BUỔI 9: TÌM KIẾM VÀ CẬP NHẬT DỮ LIỆU Tìm kiếm dữ liệu Cập nhật dư liệu Bài 1: [Tìm kiếm dữ liệu] Giao diện: Trang 21
Yêu cầu: 1. Nút Xem tất cả hiện tất cả dữ liệu doanh số trong bảng PhanCong 2. Nút Tìm chỉ hiện doanh số của nhân viên đã chọn 3. Lưới phân công có thêm cột doanh số sau thuế Bài 2. CẬP NHẬT DỮ LIỆU Giao diện: Trang 22
Yêu cầu: 1. Nút Thêm sẽ thêm nhân viên vào CSDL rồi hiện form ThongTinNhanVienForm để kiểm tra xem nhập đúng chưa 2. Nút Thay đổi nhân viên quay về form ThemNhanVien với các ô dữ liệu là những dữ liệu đã nhập và sửa lại nút Thêm thành nút Cập nhật 3. Nút Thêm nhân viên mới vẽ quay về ThemNhanVien với các ô dữ liệu đều trống Trang 23