SlideShare a Scribd company logo
1 of 64
Download to read offline
TRUNG TÂM TIN HỌC – ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
227 Nguyễn Văn Cừ - Quận 5- Tp.Hồ Chí Minh
Tel: 8351056 – Fax 8324466 – Email: ttth@hcmuns.edu.vn
Mã tài liệu: DT_NCM_HP2_BT_LTHDTC#
Phiên bản 4.1 – Tháng 07/2013
BÀI TẬP
CHƯƠNG TRÌNH
KỸ THUẬT VIÊN
NGÀNH LẬP TRÌNH
Học phần 2
---
NỀN TẢNG VÀ LẬP
TRÌNH HƯỚNG ĐỐI
TƯỢNG VỚI C# 4.0
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
BÀI 1: Tổng quan
Thực hành một số thao tác cơ bản trong môi trường C# và ứng dụng dạng Windows
Application.
Sử dụng các điều khiển cơ bản trên Form
1.1. Làm quen môi trường phát triển ứng dụng
 Mục tiêu:
 Tạo Project, tổ chức cây thư mục
 Sử dụng các đối tượng trong ứng dụng Windows Application
 Thực hiện các thao tác: tạo, thêm, xoá các đối tượng
 Thực thi một ứng dụng
 Yêu cầu:
 Tạo một ứng dụng dạng Windows Forms Application có tên Bai_Tap lưu tại thư mục làm việc
 Lần lượt tạo các thư mục dùng để lưu trữ bài tập (hình 1)
 Thực hiện thêm và xóa một đối tượng trong ứng dụng (Trên cửa sổ Solution Explorer, nhấn chuột
phải trên Project chọn Add để thêm một đối tượng, nhấn chuột phải trên đối tượng cần xóa và
chọn Delete)
 Thực thi ứng dụng (nhấn phím F5 hoặc nhấn nút Start Debugging)
Hình 1: Tổ chức thư mục trong Project
1.2. Xây dựng màn hình xuất câu chào
 Mục tiêu:
 Sử dụng ba thành phần chính của một chương trình (Input, Process, Output)
 Yêu cầu:
 Xây dựng Form có tên MH_Cau_chao lưu tại thư mục Bai_01 (hình 2)
 Nhập vào họ tên của bạn

TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
 Xuất ra màn hình câu chào “Chào bạn <Họ tên>, chúc mừng bạn đến với Ngôn ngữ lập
trình C# 4.0”
Hình 2: màn hình in câu chào
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
BÀI 2: Kiểu dữ liệu và biến
Sử dụng kiểu dữ liệu trong C#, ứng dụng các kiểu dữ liệu để khai báo biến.
Áp dụng các kỹ thuật chuyển kiểu dữ liệu trong C#
Sử dụng các toán tử trong C#
 Sử dụng kiểu giá trị
 Mục tiêu:
 Sử dụng các kiểu dữ liệu loại giá trị, kỹ thuật chuyển đổi kiểu dữ liệu và sử dụng các toán tử
2.1. Tính chu vi và diện tích hình tròn
 Mục tiêu: Sử dụng các phương thức và thuộc tính của lớp Math
 Yêu cầu: Xây dựng chương trình tính diện tích và chu vi hình tròn, gồm các chức năng:
 Nhập vào bán kính của hình tròn: kiểu số thực double
 Xuất ra diện tích và chu vi của hình tròn: kiểu số thực double
 Hướng dẫn
 Xây dựng màn hình có giao diện như sau:
Điều khiển Thuộc tính Sự kiện Xử lý
Label Text: TÍNH CHU VI, DIỆN TÍCH HÌNH TRÒN
Label Text: Bán kính
Label Text: Chu vi
Label Text: Diện tích
TextBox Name: txtban_kinh
TextBox Name: txtchu_vi
ReadOnly: true
TextBox Name: txtdien_tich

TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
ReadOnly: true
Button Name: btntinh
Text: Tính
Click
Button Name: btnlam_lai
Text: Làm lại
Click
 Xử lý sự kiện Click của Button “Tính”
private void btntinh_Click(object sender, EventArgs e)
{
double ban_kinh=double.Parse(txtban_kinh.Text);
double chu_vi=Math.PI*2*ban_kinh;
double dien_tich=Math.PI*ban_kinh*ban_kinh;
txtchu_vi.Text = Math.Round(chu_vi,2).ToString();
txtdien_tich.Text = Math.Round(dien_tich,2).ToString();
}
 Xử lý sự kiện Click của Button “Làm lại”
private void btnlam_lai_Click(object sender, EventArgs e)
{
txtban_kinh.Text=””;
txtchu_vi.Text=””;
txtdien_tich.Text=””;
}
2.2. Tính chu vi và diện tích hình chữ nhật (Bài về nhà)
 Yêu cầu: Xây dựng chương trình tính chu vi và diện tích hình chữ nhật, gồm các chức năng:
 Nhập vào chiều dài vào chiều rộng của hình chữ nhật: kiểu số thực double
 Xuất ra diện tích và chu vi của hình chữ nhật: kiểu số thực double
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
2.3. Tính chu vi và diện tích tam giác
 Yêu cầu 1
 Nhập vào chiều dài 3 cạnh của hình tam giác: kiểu số thực double
 Tính và xuất chu vi, diện tích của hình tam giác: kiểu số thực double
 Yêu cầu 2
 Nhập vào chiều dài 3 cạnh của hình tam giác: kiểu số nguyên int
 Tính và xuất chu vi, diện tích của hình tam giác: kiểu số thực double
 Yêu cầu 3
 Nhập vào chiều dài 3 cạnh của hình tam giác: kiểu số nguyên int
 Tính và xuất chu vi, diện tích của hình tam giác: kiểu số thực float
2.4. Tính số nút của 1 số nguyên (Bài về nhà)
 Mục tiêu: Sử dụng toán tử %
 Yêu cầu:
 Nhập vào 1 số nguyên n có 4 chữ số
 Tính và xuất ra số nút của số nguyên n
 Ví dụ: n = 1234  số nút = 0
n = 2023  số nút = 7
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
 Sử dụng kiểu tham chiếu
 Mục tiêu: Sử dụng các kiểu dữ liệu loại tham chiếu
2.5. Tách chuỗi họ tên
 Mục tiêu:
- Sử dụng kiểu string với các phương thức và thuộc tính của kiểu này
- Ứng dụng vào bài toán thực tế
 Yêu cầu:
- Nhập vào 1 chuỗi họ tên
- Tách chuỗi và xuất ra phần họ, phần lót, phần tên của chuỗi họ tên.
2.6. Sử dụng kiểu tham chiếu
 Mục tiêu: Sử dụng kiểu tham chiếu StringBuilder
 Yêu cầu:
- Nhập vào 2 giá trị từ 2 ô TextBox, sau đó cập nhật 2 giá trị này vào 2 biến có kiểu
StringBuilder
- Tiếp theo, gán biến 1 bằng biến 2, sau đó cập nhật giá trị của một trong 2 biến, xuất kết quả
của biến còn lại ra màn hình
- Giao diện Form như sau:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
 Hướng dẫn:
- Khai báo 2 biến kiểu StringBuilder dùng chung trong Form
StringBuilder strb1;
StringBuilder strb2;
- Xử lý sự kiện Load của Form
strb1 = new StringBuilder("Hoa Lan");
strb2 = new StringBuilder("Hoa Hồng");
txtMot.Text = strb1.ToString();
txtHai.Text = strb2.ToString();
- Xử lý sự kiện Click của Button “Gán bằng”
strb1 = strb2;
txtMot.Text = strb1.ToString();
txtHai.Text = strb2.ToString();
- Xử lý sự kiện Click của Button “Cập nhật vào biến 1”
strb1.Remove(0, strb1.Length);
strb1.Append(txtMot.Text);
//xuất xem biến 2
txtHai.Text = strb2.ToString();
// Quan sát giá trị của 2 biến và nhận xét
- Xử lý sự kiện Click của Button “Cập nhật vào biến 2”
strb2.Remove(0, strb2.Length);
strb2.Append(txtHai.Text);
//xuất xem biến 1
txtMot.Text = strb1.ToString();
// Quan sát giá trị của 2 biến và nhận xét
- Xử lý sự kiện Click của Button “Làm lại”
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
strb1 = new StringBuilder("Hoa Lan");
strb2 = new StringBuilder("Hoa Hồng");
txtMot.Text = strb1.ToString();
txtHai.Text = strb2.ToString();
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
BÀI 3: Cấu trúc điều khiển
Sử dụng các cấu trúc điều khiển, cách bẫy lỗi và xử lý lỗi trong C#.
3.1. Xếp loại học tập
 Mục tiêu: Sử dụng cấu trúc IF
 Yêu cầu:
- Nhập vào điểm học kỳ I, điểm học kỳ 2
- Tính Điểm trung bình, theo công thức: Điểm trung bình = (Điểm HKI + Điểm HKII*2)/3
- Tính Xếp loại học tập, theo quy tắc sau:
o Điểm trung bình <5: yếu
o 5 <= Điểm trung bình <6.5: trung bình
o 6.5 <= Điểm trung bình < 8: khá
o Điểm trung bình >=8: giỏi
 Hướng dẫn:
- Xây dựng màn hình có giao diện sau:
- Xử lý sự kiện Click của Button “Đồng ý”
private void btndong_y_Click(object sender, EventArgs e){
float diem_hki=float.Parse(txtdiem_hki.Text);
float diem_hk2=float.Parse(txtdiem_hki.Text);
float dtb=(diem_hki+diem_hkii*2)/3;
dtb=(float)Math.Round(dtb,2);
string xep_loai=””;
if (dtb<5)
xep_loai=”Yếu”;
else if (dtb<6.5)

TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
xep_loai=”Trung bình”;
else if (dtb<8)
xep_loai=”Khá”;
else
xep_loai=”Giỏi”;
txtxep_loai.Text=xep_loai;
}
- Xử lý sự kiện Click của Button “Làm lại”
private void btndong_y_Click(object sender, EventArgs e){
txtdiem_hki.Text=””;
txtdiem_hkii.Text=””;
txtxep_loai.Text=””;
}
3.2. Tìm ngày trước, ngày sau của một ngày
 Mục tiêu: Sử dụng cấu trúc if và các phương thức của lớp DateTime
 Yêu cầu:
- Nhập vào ngày tháng (DateTime) cần tìm ngày trước và ngày sau
- Tính và xuất ra ngày trước, ngày sau của ngày vừa nhập với giao diện sau:
- Ví dụ: Ngày hiện tại: 01/01/2009  Ngày trước = 31/12/2008, ngày sau= 02/01/2009
3.3. Tính tiền điện (bài về nhà)
 Mục tiêu: Sử dụng cấu trúc IF
 Yêu cầu:
- Nhập vào chỉ số đầu, chỉ số cuối của điện kế
- Tính và xuất tiền điện phải trả dựa vào lượng điện năng tiêu thụ (tính bằng KW) theo quy tắc sau
(có tính lũy tiến):
KW Giá tiền
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
0 < KW <=100 500
100 < KW <=250 600
250 < KW <=300 800
KW > 300 1.000
3.4. Tính năm âm lịnh
 Mục tiêu: Sử dụng cấu trúc switch
 Yêu cầu:
- Nhập vào năm dương lịch (Nam_duong)
- Tính và xuất ra năm âm lịch ứng với năm dương lịch được nhập vào với quy ước tính năm âm lịch:
Năm âm lịch được tính dự vào CAN + CHI trong đó CAN và CHI được tính theo quy tắc sau:
Nam_duong % 10 0 1 2 3 4 5 6 7 8 9
CAN Canh Tân Nhâm Quý Giáp Ất Bính Đinh Mậu Kỷ
Nam_duong % 12 0 1 2 3 4 5 6 7 8 9 10 11
CHI Thân Dậu Tuất Hợi Tí Sử Dần Mẹo Thìn Tỵ Ngọ Mùi
- Ví dụ: năm dương lịch: 2009  năm âm lịch: Kỷ sửu
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
3.5. Tính số ngày trong tháng
 Mục tiêu: Sử dụng cấu trúc switch
 Yêu cầu:
- Nhập vào tháng và năm dương lịch cần tìm số ngày
- Tính và xuất ra số ngày của tháng năm đó
3.6. Tính ngày của mẹ, ngày của cha (Bài về nhà)
 Mục tiêu: Sử dụng cấu trúc switch và các thuộc tính, phương thức của kiểu DateTime
 Yêu cầu:
- Nhập vào năm dương lịch
- Xuất ra màn hình ngày của mẹ và ngày của cha trong năm, biết rằng:
o Ngày của mẹ là ngày chủ nhật thứ 2 của tháng 5
o Ngày của cha là ngày chủ nhật thứ 3 của tháng 6 hàng năm.
- Màn hình gợi ý:
3.7. In bảng cửu chương của một số
 Mục tiêu: Sử dụng cấu trúc for
 Yêu cầu:
- Nhập vào một số nguyên
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
- In bảng cửa chương của số nguyên đó
- Giao diện Form như sau:
 Hướng dẫn:
- Xử lý sự kiện Click của nút In bảng cửu chương:
int cc = int.Parse(txtSo.Text);
StringBuilder strb = new StringBuilder();
for (int i = 1; i <= 10; i++)
{
strb.AppendLine(cc.ToString("00") + " x " + i.ToString("00") + " = " + ((int)(cc *
i)).ToString("00") );
}
lblBang.Text = strb.ToString();
3.8. In bảng cửu chương từ số đến số
 Mục tiêu: Sử dụng cấu trúc for
 Yêu cầu:
- Nhập vào Từ số và Đến số
- Xử lý và xuất Bảng cửu chương có dạng sau:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
3.9. Tính lãi suất ngân hàng (Bài về nhà)
 Mục tiêu: sử dụng cấu trúc for
 Yêu cầu:
- Nhập vào số tiền gởi, lãi suất ngân hàng (tính theo năm) và số tháng gởi
- Tính và xuất Số dư cuối kỳ và tiền lãi cuối kỳ, biết rằng:
o Lãi suất tháng = (Lãi suất năm / 12) /100
o Tiền lãi tháng = Tiền gốc * Lãi suất tháng
o Tiền lãi mỗi tháng sẽ được gộp chung vào tiền gốc
o Tiền lãi cuối kỳ sẽ được tính lũy tiến từ tiền lãi mỗi tháng + tiền gốc
Ví dụ: Nếu bạn gởi 10 triệu với lãi suất 12%/năm và gởi trong 6 tháng, thì tiền lãi cuối kỳ được tính
như sau:
o Lãi suất tháng = (12/12)/100  0.01
Tháng Tiển gốc + Lãi Tiền lãi tháng
1 10,000,000 100,000
2 10,100,000 101,000
3 10,201,000 102,010
4 10,303,010 103,030.1
5 10,406,040.1 104,060.401
6 10,510,100.5 105,101.005
 Số dư cuối kỳ = 10,615,201.51
 Tiền lãi cuối kỳ = 615,201.51
- Màn hình gợi ý:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
3.10. Thực hiện lại các bài 3.8, 3.9 và 3.10 bằng cách dùng vòng lặp while,
do..while (Bài về nhà)
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
BÀI 4: Kiểu struct và kiểu Array
Xây dựng và sử dụng kiểu dữ liệu do người dùng định nghĩa (struct).
Khai báo và sử dụng mảng trong C#
4.1. Tạo và sử dụng kiểu Nhan_vien
 Mục tiêu: Tạo và sử dụng kiểu cấu trúc (struct)
 Yêu cầu:
- Tạo kiểu Nhan_vien, với các thành phần: họ tên, Ngày sinh, hệ số lương, lương cơ bản và số
con
o Xây dựng hàm khởi tạo các thành phần trên
o Xây dựng phương thức tính tiền lương, với:
Tiền lương = Lương cơ bản + ( Số con * 100000)
o Xây dựng phương thức xuất thông tin nhân viên ra màn hình có dạng:
“Nguyễn Thanh Thúy – 32 tuổi – Số con: 2 – Tiền lương: 2500000
- Nhập thông tin nhân viên và xuất ra màn hình
 Hướng dẫn:
- Tạo cấu trúc Nhan_vien với các thành phần được khai báo Public
+ Họ tên nhân viên: string
+ Ngày sinh: DateTime
+ Lương cơ bản: double
+ Hệ số lương: double
+ Số con: int (cho phép chứa giá trị NULL)
struct Nhan_vien
{
public string ho_ten;
public DateTime ngay_sinh;
public double he_so_luong;
public double luong_co_ban;
public int? so_con;
}
- Xây dựng phương thức khởi tạo cho cấu trúc Nhan_vien
public Nhan_vien(string pHo_ten, DateTime pNgay_sinh, double
pLuong_co_ban, double pHe_so_luong, int? pSo_con)
{
ho_ten = pHo_ten;
ngay_sinh = pNgay_sinh;
he_so_luong = pHe_so_luong;

TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
luong_co_ban = pLuong_co_ban;
so_con = pSo_con;
}
- Xây dựng phương thức tính tiền lương cho nhân viên:
public double Tinh_luong()
{
double tienluong = luong_co_ban * he_so_luong;
tienluong += so_con.HasValue ? so_con.Value * 100000 : 0;
return tienluong;
}
- Xây dựng phương thức ToString để hiển thị thông tin của nhân viên:
public new string ToString()
{
int tuoi = DateTime.Now.Year - ngay_sinh.Year;
return string.Format("{0} - {1} tuổi – Số con: {2} – Tiền lương: {3}",
ho_ten, tuoi, so_con.HasValue ? so_con.Value : 0, Tinh_luong());
}
- Xây dựng màn hình có giao diện sau:
- Xử lý sự kiện Click của Button “Đồng ý”
private void btndong_y_Click(object sender, EventArgs e) {
Nhan_vien nv;
nv.ho_ten = txtho_ten.Text;
nv.ngay_sinh = DateTime.Parse(txtngay_sinh.Text);
nv.luong_co_ban = double.Parse(txtluong_co_ban.Text);
nv.he_so_luong = double.Parse(txthe_so_luong.Text);
nv.so_con = txtso_con.Text != "" ? (int?)int.Parse(txtso_con.Text) : null;
MessageBox.Show(nv.ToString());
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
}
- Xử lý sự kiện Click của Button “Làm lại”
private void btnlamlai_Click(object sender, EventArgs e){
txtho_ten.Text = "";
txtngay_sinh.Text = "";
txthe_so_luong.Text = "";
txtluong_co_ban.Text = "";
txtso_con.Text = "";
}
4.2. Làm việc với mảng
 Mục tiêu:
- Sử dụng mảng và các thao tác xử lý thông dụng trên mảng
- Sử dụng lớp Random và các phương thức của lớp này
- Sử dụng các phương thức của lớp Array
 Yêu cầu:
- Nhập vào số phần tử
- Tạo một Mảng số nguyên có số phần tử được nhập vào. Sau đó phát sinh giá trị cho từng
phần tử, biết rằng giá trị được phát sinh ngẫu nhiên nằm trong khoảng [-50, 100]
- Thực hiện các xử lý sau trên Mảng số nguyên, xuất kết quả ra MessageBox:
1. Tìm phần tử lớn nhất, phần tử nhỏ nhất trong mảng
2. Sắp xếp mảng tăng dần/ giảm dần
3. Tính tổng các phần tử trong mảng
4. Nhập vào 1 số nguyên X, tìm giá trị X ở trong mảng
 Hướng dẫn:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
- Khai báo biến mảng số nguyên a toàn cục
int[] a;
- Xử lý sự kiện Click của Button “Tạo mảng”
// Tạo mảng số nguyên a với kích thước bằng số phần tử vừa nhập
int n = int.Parse(txtso_phan_tu.Text);a = new int[n];
// Khởi tạo mảng số nguyên a với các phần tử có giá trị ngẫu nhiên từ
50 đến 100
Random ngau_nhien=new Random();
for (int i=0;i<a.Length;i++)
a[i]=ngau_nhien.Next(-50,101);
// Xuất mảng số nguyên a lên màn hình
string chuoi_a=a[0].ToString();
for (int i=1;i<a.Length;i++)
chuoi_a=string.Format("{0} {1}",chuoi_a,a[i]);
txtmang_so_nguyen_a.Text=chuoi_a;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
BÀI 5: Tổng quan Lập trình hướng đối
tượng
Xây dựng và sử dụng các class cũng như các thành phần của class trong môi trường C#
5.1. Giải phương trình bậc nhất Ax + B = 0
 Mục tiêu: Xây dựng class đơn giản với 1 phương thức
 Yêu cầu:
- Tạo class Phương trình bậc 1, gồm các thành phần sau:
o Các thuộc tính: Hệ số a, hệ số b
o Phương thức Giải phương trình.
- Tạo form, trong đó:
o Nhập Hệ số a và b
o Giải phương trình và xuất ra nghiệm
 Hướng dẫn:
- Nhấn chuột phải lên project và chọn Add  Class
- Trong cửa sổ Add New Item, nhập tên cho class là PHUONG_TRINH_BAC_I.CS
- Khai báo các thành phần trong class:
o Biến thành viên (Field): lưu trữ thông tin về hệ số a và hệ số b
private float mHe_so_a;
private float mHe_so_b;
o Thuộc tính (Property): Truy xuất đến giá trị của các biến thành viên trong class
public float He_so_a
{
get { return mHe_so_a; }
set { mHe_so_a=value; }
}
public float He_so_b
{
get { return mHe_so_b; }
set { mHe_so_b=value; }
}
o Phương thức khởi tạo (Constructor): Khởi tạo các giá trị ban đầu cho hệ số A và B
public PHUONG_TRINH_BAC_I()

TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
{ }
public PHUONG_TRINH_BAC_I(float pHe_so_a, float pHe_so_b)
{
He_so_a=pHe_so_a;
He_so_b=pHe_so_b;
}
o Phương thức giải phương trình tìm nghiệm
public string Giaipt() {
string kq; //lưu kết quả nghiệm của pt
//Xét nghiệm của phương trình theo hệ số a
if (mHe_so_a == 0)
if (mHe_so_b == 0)
kq ="PT có vô số nghiệm";
else
kq = "PT vô nghiệm";
else
kq = string.Format("Phương trình có nghiệm: x = {0}", -
He_so_b / He_so_a);
//trả về giá trị cho hàm
return kq;
}
- Xây dựng màn hình có giao diện sau:
o Xử lý sự kiện Click của Button “Giải PT”
private void btngiai_pt_Click(object sender, EventArgs e){
float a=float.Parse(txthe_so_a.Text);
float b=float.Parse(txthe_so_b.Text);
PHUONG_TRINH_BAC_I pt_bac_1=new PHUONG_TRINH_BAC_I(a,b);
txtnghiem.Text=pt_bac_1.Giaipt();
}
o Xử lý sự kiện Click của Button “Làm lại”
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và lập trình hướng đối tượng với C# 4.0
private void btnlam_lai_Click(object sender, EventArgs e){
txthe_so_a.Text=””;
txthe_so_b.Text=””;
txtnghiem.Text=””;
}
5.2. Xử lý phân số
 Mục tiêu: xây dựng class và các phương thức tính toán khác nhau
 Mô tả: xây dựng chương trình hỗ trợ người dùng thực hiện các phép toán cộng, trừ, nhân, chia trên
các phân số
 Yêu cầu:
- Xây dựng class Phân số với các thành phần sau:
o Thuộc tính: Tử số và Mẫu số
o Phương thức khởi tạo không có tham số: gán giá trị mặc định cho Tử số và mẫu số là 1
o Phương thức khởi tạo có 2 tham số là Tử số và Mẫu số
Các phương thức tính toán:
o Phương thức Tối giản phân số: dùng để tối giản phân số (ví dụ: 2/4 tối giản thành 1/2)
o Phương thức Cộng: tính tổng của 2 phân số và trả về phân số kết quả sau khi đã được tối
giản
o Phương thức Trừ: tính hiệu của 2 phân số và trả về phân số kết quả sau khi đã được tối
giản
o Phương thức Nhân: tính tích của 2 phân số và trả về phân số kết quả sau khi đã được tối
giản
o Phương thức Chia: tính thương của 2 phân số và trả về phân số kết quả sau khi đã được
tối giản
o Phương thức Xuất: xuất phân số kết quả ra màn hình có dạng <Tử số>/<Mẫu số>
Trong đó:
db
cbda
d
c
b
a
*
** 

db
cbda
d
c
b
a
*
** 

db
ca
d
c
b
a
*
*
* 
cb
da
d
c
b
a
*
*
: 
 Hướng dẫn:
- Tạo class PhanSo, gồm các thành phần yêu cầu trên
o Xây dựng phương thức Tối giản như sau:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 24/64
private PhanSo Toigian(PhanSo pso)
{
PhanSo ps = new PhanSo();
int us = uscln(pso.Tuso, pso.Mauso);
ps.Tuso = pso.Tuso / us;
ps.Mauso = pso.Mauso / us;
return ps;
}
private int uscln(int so_1, int so_2)
{
int a = Math.Abs(so_1), b = Math.Abs(so_2);
while (a != b)
{
if (a > b)
a -= b;
else
b -= a;
}
return a;
}
//Lưu ý: Học viên phải kiểm tra tính hợp lệ của tử số và mẫu số trước
khi gọi hàm này
- Xây dựng phương thức Cộng như sau:
public PhanSo Cong(PhanSo p)
{
PhanSo kq = new PhanSo();
kq.Tuso = Tuso * p.Mauso + Mauso * p.Tuso;
kq.Mauso = Mauso * p.Mauso;
return Toigian(kq);
}
//Tương tự, học viên xây dựng 3 phương thức còn lại
- Xây dựng màn hình có giao diện sau:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 25/64
o Xây dựng phương thức Tạo phân số: xử lý chuỗi nhập của Phân số và trả về Phân số
//Phương thức này được xây dựng trong class Form
private PhanSo Tao_phan_so(string chuoi)
{
string[] s = chuoi.Split('/');
int tu = int.Parse(s[0]);
int mau = int.Parse(s[1]);
return new PhanSo(tu, mau);
}
o Xử lý sự kiện Click của Button “Cộng”
PhanSo p1 = Tao_phan_so(txtphan_so_1.Text);
PhanSo p2 = Tao_phan_so(txtphan_so_2.Text);
PhanSo kq = p1.Cong(p2);
txtket_qua.Text = kq.Xuat();
//Tương tự, xử lý các nút còn lại
5.3. Xử lý phân số nâng cao
 Mục tiêu: xây dựng class và các phương thức nạp chồng toán tử
 Yêu cầu:
- Giống yêu cầu của bài 4.2, nhưng viết lại (hoặc bổ sung) các phương thức nạp chồng toán tử +, -,
*, /, ==, !=
- Bổ sung nút So sánh 2 phân số trên Form, dùng để so sánh hai phân số nhập vào có bằng nhau
không
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 26/64
- Mở rộng: Học viên có thể bổ sung các nút So sánh lớn hơn, So sánh nhỏ hơn
5.4. Nhập xuất thông tin hóa đơn (Bài về nhà)
 Mục tiêu:
- Xây dựng class và tổng hợp các kiến thức đã học (Array, Class, string, StringBuilder …)
- Ứng dụng bài toán thực tế
 Yêu cầu: xây dựng ứng dụng hỗ trợ nhập xuất thông tin Hóa đơn bán hàng theo mô tả sau:
- Thông tin hóa đơn gồm có: Số hóa đơn, Ngày lập hóa đơn, Khách hàng và Danh sách các sản
phẩm được mua
- Thông tin sản phẩm gồm có: Tên sản phẩm, Đơn giá sản phẩm, Số lượng mua và Thành tiền.
- Sau khi nhập đầy đủ Thông tin hóa đơn và Chi tiết hóa đơn, người dùng được phép xem thông
tin của Hóa đơn bán hàng
 Hướng dẫn:
- Xây dựng hai class: HoaDon và SanPham
- Khai báo các biến dùng chung trên Form: 1 biến kiểu HoaDon, 1 biến mảng kiểu SanPham, 1 biến
kiểu int (dùng lưu trữ số sản phẩm, cũng là số phần tử của mảng)
- Gợi ý giao diện của Form:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 27/64
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 28/64
BÀI 6: Tính Thừa kế và Đa hình
Xây dựng và sử dụng các class kế thừa từ class khác
Sử dụng tính đa hình của class
6.1. Quản lý thông tin nhân viên
 Mục tiêu: Xây dựng class kế thừa và áp dụng kỹ thuật Late Binding
 Mô tả: Xây dựng ứng dụng quản lý lương của công ty Z.
- Thông tin của nhân viên gồm: Họ tên nhân viên, Giới tính, Ngày sinh, Ngày vào làm, Hệ số lương,
Lương cơ bản, Thâm niên và Định mức số ngày vắng (mặc định là 3 ngày). Trong đó:
o Lương cơ bản: dùng chung cho tất cả các nhân viên trong công ty
o Thâm niên = Năm hiện hành – Năm vào làm
- Nhân viên của công ty được chia làm 2 loại:
o Nhân viên văn phòng: có thêm thông tin về Số ngày vắng và Đơn giá phạt cho từng ngày
vắng (mặc định là 100.000/ngày). Các khoản phạt, thưởng và lương như sau:
 Tiền phạt: Tiền phạt = đơn giá phạt x Số ngày vắng vượt quá định mức.
 Tiền thưởng: 10% của (Lương cơ bản * Hệ số lương)
 Lương: (Lương cơ bản * Hệ số lương) + Tiền thưởng – Tiền phạt
o Nhân viên sản xuất: có thêm thông tin về Số ngày vắng , Số lượng sản phẩm, Định mức sản
phẩm (mặc định là 1,000), và Đơn giá sản phẩm (mặc định là 10,000/sản phẩm). Riêng Định
mức số ngày vắng sẽ tăng lên 2 ngày. Các khoản thưởng và lương như sau:
 Tiền thưởng: Số sản phẩm vượt định mức x đơn giá sản phẩm x 0.05
Tuy nhiên, nếu Số ngày vắng > Định mức vắng thì:
Tiền thưởng = Tiền thưởng - Số ngày vắng vượt quá định mức * (Tiền thưởng *0.01)
 Lương: (Lương cơ bản * Hệ số lương) + Tiền thưởng
 Yêu cầu: xây dựng chương trình hỗ trợ nhập thông tin nhân viên, tính các khoản phạt, thưởng, lương
và xuất kết quả ra màn hình
 Hướng dẫn:
- Xây dựng lớp Nhan_vien
class Nhan_vien
{
private string mHo_ten;
private DateTime mNgay_sinh;
private DateTime mNgay_vao_lam;
private double mHe_so_luong;
private Gioi_tinh mGioi_tinh;
public static double mLuong_co_ban = 830000;
protected int Dinh_muc_vang = 3;

TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 29/64
public string Ho_ten
{ get { return mHo_ten; } set { mHo_ten = value; } }
public DateTime Ngay_sinh
{ get { return mNgay_sinh; } set { mNgay_sinh = value; } }
public DateTime Ngay_vao_lam
{ get { return mNgay_vao_lam; } set { mNgay_vao_lam = value; } }
public double He_so_luong
{
get { return mHe_so_luong; }
set { mHe_so_luong = value; }
}
public Gioi_tinh Gioi_tinh
{ get { return mGioi_tinh; } set { mGioi_tinh = value; } }
public Nhan_vien() { }
public Nhan_vien(string _ho_ten, DateTime _ngay_sinh, DateTime _ngay_vao_lam, Gioi_tinh
_gioi_tinh, double _he_so_luong)
{
Ho_ten = _ho_ten;
Ngay_sinh = _ngay_sinh;
Ngay_vao_lam = _ngay_vao_lam;
Gioi_tinh = _gioi_tinh;
He_so_luong = _he_so_luong;
}
public virtual double Tinh_luong()
{
double tienluong = mLuong_co_ban * He_so_luong;
return tienluong;
}
public int Tham_nien
{
get { return DateTime.Today.Year - Ngay_vao_lam.Year; }
}
public virtual double Tinh_thuong()
{
return Tham_nien * 500000;
}
public override string ToString()
{
return string.Format("Thông tin lương của {0}", Ho_ten);
}
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 30/64
}
- Xây dựng class NVVP kế thừa từ class Nhan_vien:
class NVVP : Nhan_vien
{
int mSo_ngay_vang;
private static double mDon_gia_phat = 100000;
public int So_ngay_vang
{
get { return mSo_ngay_vang; }
set { mSo_ngay_vang = value; }
}
public static double Don_gia_phat
{
get { return mDon_gia_phat; }
set { mDon_gia_phat = value; }
}
public NVVP(string _ho_ten, DateTime _ngay_sinh, DateTime, ngay_vao_lam,
Gioi_tinh _gioi_tinh, double _he_so_luong)
: base(_ho_ten, _ngay_sinh, _ngay_vao_lam, _gioi_tinh, _he_so_luong)
{ }
public NVVP(string _ho_ten, DateTime _ngay_sinh, DateTime _ngay_vao_lam,
Gioi_tinh _gioi_tinh, double _he_so_luong,int _so_ngay_vang)
: base(_ho_ten, _ngay_sinh, _ngay_vao_lam, _gioi_tinh, _he_so_luong)
{
So_ngay_vang = _so_ngay_vang;
}
public double Tinh_phat()
{
double tien = 0;
if (So_ngay_vang > base.Dinh_muc_vang)
tien = (So_ngay_vang - base.Dinh_muc_vang) * Don_gia_phat;
return tien;
}
public override double Tinh_thuong()
{
return base.Tinh_luong() * 0.1;
}
public override double Tinh_luong()
{
retun base.Tinh_luong() + (base.Tinh_luong() * 0.1) - Tinh_phat();
}
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 31/64
public override string ToString()
{
return string.Format("{0}nLoại nhân viên: Nhân viên văn phòngnTiền thưởng:
{1}n"+ "Tiền phạt: {2} n"+ "Tiền lương: {3} n" +"Còn lãnh: {4}"
,base.ToString(), Tinh_thuong().ToString("#,##0.00"),Tinh_phat().ToString("#,##0.00"),
base.Tinh_luong().ToString("#,##0.00"), this.Tinh_luong().ToString("#,##0.00"));
}
}
- Tương tự, xây dựng lớp NVSX theo mô tả trên
class NVSX : Nhan_vien
{
int mSo_san_pham;
int mSo_ngay_vang;
static int mDinh_muc_san_pham = 1000;
static double mDon_gia_san_pham = 10000;
public static int Dinh_muc_san_pham
{
get { return mDinh_muc_san_pham; }
set { mDinh_muc_san_pham = value; }
}
public static double Don_gia_san_pham
{
get { return mDon_gia_san_pham; }
set { mDon_gia_san_pham = value; }
}
//Tiếp tục cho các khai báo còn lại
…
}
- Xây dựng màn hình có giao diện sau:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 32/64
- Xử lý sự kiện Load của Form
txtluong_co_ban.Text = Nhan_vien.luong_co_ban.ToString();
- Xử lý sự kiện Click của Button “Đồng ý”
string ho_ten = txtho_ten.Text;
DateTime ngay_sinh = DateTime.Parse(txtngay_sinh.Text);
DateTime ngay_vao_lam = DateTime.Parse(txtngay_vao_lam.Text);
Gioi_tinh gioi_tinh = cbgioi_tinh.Checked == true ? Gioi_tinh.Nữ : Gioi_tinh.Nam;
double he_so_luong = double.Parse(txthe_so_luong.Text);
int so_ngay_vang = int.Parse(txtgia_tri.Text);
Nhan_vien nv;
if (rbnvvp.Checked == true)
nv = new NVVP(ho_ten, ngay_sinh, ngay_vao_lam, gioi_tinh, he_so_luong,
so_ngay_vang);
else
{
int so_san_pham = int.Parse(txtSosp.Text);
nv = new NVSX(ho_ten, ngay_sinh, ngay_vao_lam, gioi_tinh, he_so_luong,
so_ngay_vang, so_san_pham);
}
MessageBox.Show(nv.ToString());
 Kết quả kết xuất
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 33/64
6.2. Quản lý danh sách máy tính (Bài về nhà)
 Mục tiêu: Xây dựng class kế thừa và áp dụng tính chất đa hình
 Yêu cầu: Xây dựng chương trình nhập và xuất danh sách Máy tính. Trong đó máy tính có 2 loại là Máy
tính để bàn và Máy tính xách tay
- Máy tính để bàn gồm các thông tin: Số hiệu, Đơn giá và Hãng sản xuất, CPU và RAM
- Máy tính xách tay gồm các thông tin: Số hiệu, Đơn giá và Hãng sản xuất, Trọng lượng, Thời gian
PIN và Kích thước màn hình
 Hướng dẫn:
- Xây dựng class MAY_TINH với các thông tin: Số hiệu, Đơn giá và Hãng sản xuất
o Xây dựng phương thức Hiển thị thông tin: cho phép ghi đè (virtual) và trả về chuỗi gồm các
thông tin: Số hiệu, Đơn giá và Hãng sản xuất
- Xây dựng class MAY_TINH_DE_BAN được dẫn xuất từ lớp MAY_TINH gồm 2 thông tin: CPU, RAM
o Phương thức khởi tạo (không có cũng được)
o Xây dựng phương thức Hiển thị thông tin: cài đặt lại phương thức tính Hiển thị thông tin của
class MAY_TINH, cộng thêm vào chuỗi trả về thông tin: CPU và RAM
- Xây dựng class MAY_TINH_XACH_TAY được dẫn xuất từ lớp MAY_TINH các thông tin: Trọng
lượng, Thời gian PIN, Kích thước màn hình
o Phương thức khởi tạo (không có cũng được)
o Xây dựng phương thức Hiển thị thông tin: cài đặt lại phương thức tính Hiển thị thông tin của
class MAY_TINH, cộng thêm vào chuỗi trả về thông tin: Trọng lượng, Thời gian PIN và Kích
thước màn hình.
- Giao diện gợi ý:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 34/64
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 35/64
BÀI 7: Delegate và Event
Khai báo và sử dụng Delegate
Khai báo và phát sinh Event
7.1. Quản lý thông tin nhân viên
 Mục tiêu:
- Xây dựng class và sử dụng từ khóa public static. Sử dụng thuộc tính Read-only
- Xây dựng và sử dụng sự kiện
 Mô tả: Xây dựng chương trình quản lý thông tin nhân viên cho công ty X
 Yêu cầu:
- Xây dựng class Nhân viên bao gồm các thông tin: Họ tên nhân viên, Giới tính, Ngày sinh, Ngày
vào làm, Hệ số lương, Lương cơ bản và Thâm niên. Trong đó:
o Lương cơ bản dùng chung cho tất cả các nhân viên trong công ty
o Thâm niên được tính bằng công thức: Năm hiện hành – Năm vào làm
- Xây dựng phương thức tính tiền lương, biết rằng: Tiền lương = Lương cơ bản * Hệ số lương
- Xây dựng phương thức tính tiền thưởng, biết rằng: Tiền thưởng = Thâm niên * 500000
- Phát ra thông báo nếu Hệ số lương có thay đổi
 Hướng dẫn:
- Sử dụng lại class Nhanvien đã xây dựng trong Bài 6.1, bổ sung thêm:
 Khai báo sự kiện:
public delegate void Xuly(string chuoi);
public event Xuly Tang_luong;
//Học viên có thể dùng delegate của hệ thống
 Phát sinh sự kiện
public double He_so_luong
{
get { return mHe_so_luong; }
set {
mHe_so_luong = value;
if (Tang_luong != null)
Tang_luong("Bạn đã được tăng lương");
}
}
- Màn hình gợi ý:

TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 36/64
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 37/64
BÀI 8: Lớp trừu tượng, lớp giao tiếp
Xây dựng và sử dụng các class trừu tượng, lớp giao tiếp
Sử dụng các lớp giao tiếp được xây dựng sẵn trong C#
8.1. Quản lý các lớp hình học
 Mục tiêu: Xây dựng và sửng dụng class trừu tượng (Abstract)
 Yêu cầu: Xây dựng chương trình nhập, tính toán và xuất Chu vi, Diện tính của Hình tròn, hình chữ
nhật và hình tam giác
o Thông tin của hình tròn: Bán kính
o Thông tin của chữ nhật: Chiều dài và chiều rộng
o Thông tin của hình tam giác: Cạnh A, cạnh B và cạnh C
 Hướng dẫn
- Xây dựng class trừu tượng HinhHoc với hai phương thức trừu tượng tính diện tích và chu vi như
sau:
abstract class HinhHoc
{
public abstract double Dien_tich();
public abstract double Chu_vi();
public virtual string Xuat_thong_tin()
{
return "Thông tin của hình ";
}
}
- Xây dựng lớp HinhTron được dẫn xuất từ lớp HinhHoc:
class HinhTron : HinhHoc
{
public double Bankinh { get; set; }
public override double Chu_vi()
{
return Math.PI * 2 * Bankinh;
}
public override double Dien_tich()
{
return Math.PI * Bankinh * Bankinh;
}
public override string Xuat_thong_tin()
{

TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 38/64
return base.Xuat_thong_tin() + "Tròn";
}
}
- Tương tự, học viên xây dựng lớp HinhChuNhat, HinhTamGiac được dẫn xuất từ lớp HinhHoc
- Xây dựng màn hình có giao diện sau:
- Xử lý sự kiện click của nút Tính:
HinhHoc h;
if (rbhinh_tron.Checked == true)
{
double bankinh = double.Parse(txtBk.Text);
h = new HinhTron { Bankinh = bankinh };
}
else if (rbhinh_chu_nhat.Checked == true)
{
double dai = double.Parse(txtCd.Text);
double rong = double.Parse(txtCr.Text);
h = new HinhChuNhat { Chieudai = dai, Chieurong = rong };
}
else
{
double a = double.Parse(txtCa.Text);
double b = double.Parse(txtCb.Text);
double c = double.Parse(txtCc.Text);
h = new HinhTamGiac { CanhA = a, CanhB = b, CanhC = c };
}
lblThongtin.Text = h.Xuat_thong_tin();
txtCv.Text = h.Chu_vi().ToString("#,##0.00");
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 39/64
txtDt.Text = h.Dien_tich().ToString("#,##0.00");
8.2. Quản lý đối tượng hình học
 Mục tiêu: Sử dụng lớp giao tiếp được xây dựng sẵn trong C#
 Yêu cầu:
- Xây dựng chương trình nhập, tính toán và xuất Chu vi, Diện tính của Hình tròn, hình chữ nhật và
hình tam giác
o Thông tin của hình tròn: Bán kính
o Thông tin của chữ nhật: Chiều dài và chiều rộng
o Thông tin của hình tam giác: Cạnh A, cạnh B và cạnh C
o Xuất các thông tin hình ra màn hình, có sắp xếp theo Chu vi hoặc Diện tích
 Hướng dẫn:
- Xây dựng lớp các lớp HinhHoc, HinhTron, HinhChuNhat, HinhTamGiac: giống bài 8.1
- Sau đó, bổ sung vào lớp HinhHoc như sau:
abstract class HinhHoc : IComparable
{
…
public int CompareTo(object obj)
{
HinhHoc hh = (HinhHoc)obj;
//if (ChuVi() > hh.ChuVi())
// return 1;
//else if (ChuVi() < hh.ChuVi())
// return -1;
if (DienTich() > hh.DienTich())
return 1;
else if (DienTich() < hh.DienTich())
return -1;
return 0;
}
}
- Xây dựng màn hình có dạng sau:
So sánh theo diện tích
So sánh theo chu vi
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 40/64
o Khai báo các biến toàn cục trong màn hình
HinhHoc[] h;
int sopt=0;
o Xử lý Form_Load
h=new HinhHoc[sopt];
o Xử lý xuất danh sách hình học
public void Xuat()
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < h.Length; i++)
sb.AppendLine(h[i].Xuat_thong_tin());
txtkq.Text = sb.ToString();
}
o Xử lý Button Thêm hình tròn
Array.Resize<HinhHoc>(ref h, sopt + 1);
double bankinh = double.Parse(txtbankinh.Text);
h[sopt] = new HinhTron { Bankinh = bankinh };
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 41/64
sopt++;
Xuat();
o Xử lý Button Thêm hình chữ nhật
Array.Resize<HinhHoc>(ref h, sopt + 1);
double dai = double.Parse(txtdai.Text);
double rong = double.Parse(txtrong.Text);
h[sopt] = new HinhChuNhat { Chieudai= dai, Chieurong= rong };
sopt++;
Xuat();
o Xử lý Button Thêm hình tam giác
Array.Resize<HinhHoc>(ref h, sopt + 1);
double a = double.Parse(txta.Text);
double b = double.Parse(txtb.Text);
double c = double.Parse(txtc.Text);
h[sopt] = new HinhTamGiac { CanhA=a, CanhB=b, CanhC=c };
sopt++;
Xuat();
o Xử lý Button Sắp xếp
Array.Sort(h);
Xuat();
Lưu ý: Học viên sửa lại phương thức Xuat_thong_tin cho phù hợp với bài tập này
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 42/64
BÀI 9: Collections và Generic
Sử dụng các lớp Collection và Generic Collection trong C#
9.1. Quản lý danh sách học viên
 Mục tiêu: Tạo và sử dụng đối tượng kiểu ArrayList
 Yêu cầu:
- Xây dựng chương trình thêm danh sách học viên (DSHV) mới vào danh sách cũ. Cách thêm như
sau: Thêm DSHV mới vào cuối DSHV cũ, sau đó sắp xếp lại (Hình 2)
- Thiết kế màn hình với giao diện như sau:
Hình 1: Lúc mới mở màn hình
 Hướng dẫn:
- Khai báo 2 biến toàn cục lưu danh sách học viên
ArrayList hocvien = new ArrayList();
ArrayList hocvienmoi = new ArrayList();
- Xử lý sự kiện Form Load:
//Khởi tạo ArrayList chứa danh sách tên các học viên trong lớp
hocvien.Add("Nguyễn Bảo Anh");
hocvien.Add("Phạm Chi Bảo");
hocvien.Add("Phạm Lan Chi");
hocvien.Add("Trần Văn Hùng");

TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 43/64
hocvien.Add("Nguyễn Dung");
hocvien.Add("Hoàng Ngọc Linh");
hocvien.Add("Trần Anh Tài");
// hiển thị danh sách học viên cũ
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hocvien.Count; i++)
sb.AppendLine(hocvien[i].ToString());
txtdanhsachcu.Text = sb.ToString();
// Khởi tạo ArrayList chứa danh sách tên của các học viên mới
hocvienmoi.Add("Đỗ Thiên Nga");
hocvienmoi.Add("Phạm Quỳnh Anh");
hocvienmoi.Add("Lê Quỳnh Hoa");
hocvienmoi.Add("Lý Thiên Thanh");
hocvienmoi.Add("Nguyễn Dung");
// hiển thị danh sách học viên mới
sb = new StringBuilder();
for (int i = 0; i < hocvienmoi.Count; i++)
sb.AppendLine(hocvienmoi[i].ToString());
txtdanhsachmoi.Text = sb.ToString()
- Nút Thêm HV mới:
//thêm mới và sắp xếp
for (int i = 0; i < hocvienmoi.Count; i++)
hocvien.Add(hocvienmoi[i]);
hocvien.Sort();
//Xuất ra màn hình
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hocvien.Count; i++)
sb.AppendLine(hocvien[i].ToString());
txtdanhsachcu.Text = sb.ToString();
- Kết quả sau khi chèn danh sách học viên mới:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 44/64
Hình 2: Kết quả sau khi chèn
9.2. Quản lý danh sách học viên
 Mục tiêu: Tạo và sử dụng đối tượng kiểu SortedList
 Yêu cầu:
- Xây dựng chương trình thêm danh sách học viên (DSHV) mới vào danh sách cũ. Thông tin học viên
gồm có: Mã học viên và Họ tên học viên
- Xây dựng màn hình như sau:
- Sau khi thêm DSHV mới vào:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 45/64
 Hướng dẫn:
- Khai báo 2 biến SortedList toàn cục lưu 2 danh sách học viên
SortedList hocvien = new SortedList();
SortedList hocvienmoi = new SortedList();
- Xử lý sự kiện Form Load:
// Tạo danh sách học viên cũ
hocvien.Add("001","Nguyễn Bảo Anh");
hocvien.Add("003","Phạm Chi Bảo");
……
// Tạo danh sách học viên mới
hocvienmoi.Add("002","Đỗ Thiên Nga");
hocvienmoi.Add("005","Phạm Quỳnh Anh");
…..
// Xuất danh sách học viên ra màn hình
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hocvien.Count; i++)
sb.AppendLine(hocvien.GetKey(i).ToString()+"
"+hocvien.GetByIndex(i).ToString());
txtdanhsachcu.Text = sb.ToString();
//Tương tự xuất danh sách học viên mới
…..
- Xử lý nút Thêm HV mới:
for (int i=0; i < hocvienmoi.Count; i++)
hocvien.Add(hocvienmoi.GetKey(i).ToString(), hocvienmoi.GetByIndex(i).ToString());
StringBuilder sb = new StringBuilder();
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 46/64
for (int i = 0; i < hocvien.Count; i++)
sb.AppendLine(hocvien.GetKey(i).ToString()+" " + hocvien.GetByIndex(i).ToString());
txtdanhsachcu.Text = sb.ToString();
9.3. Chuyển số thành chữ
 Mục tiêu: Tạo và sử dụng đối tượng kiểu HashTable
 Yêu cầu:
- Xây dựng chương trình chuyển đổi số thành chuỗi (Ví dụ: 3541  Ba năm bốn một)
- Xây dựng màn hình như sau:
 Hướng dẫn:
- Xử lý nút Đồng ý
//Khai báo mảng chuỗi các ký số:
string[] kyso ={"0","1","2","3","4","5","6","7","8","9" };
//Khai báo mảng chuỗi các chuỗi ký tự tương ứng với các ký số
string[] kytu = { "Không", "Một", "Hai", "Ba", "Bốn", "Năm", "Sáu", "Bảy", "Tám", "Chín" };
//Tạo HashTable với mảng chuỗi ký số là key và chuỗi ký tự là value
Hashtable h = new Hashtable();
for (int i = 0; i < kyso.Length; i++)
h.Add(kyso[i], kytu[i]);
string chuoiso = txtso.Text;
string chuoi = "";
for (int i = 0; i < chuoiso.Length; i++)
chuoi += h[chuoiso[i].ToString()]+" ";
txtchuoi.Text = chuoi;
9.4. Đọc 3 số (Bài về nhà)
 Mục tiêu: Tạo và sử dụng đối tượng HashTable kết hợp với cấu trúc điều khiển
 Yêu cầu:
- Xây dựng chương trình đọc 1 số (tối đa là 3 ký số) thành chuỗi (Ví dụ: 341  Ba trăm bốn mươi
mốt)
- Màn hình gợi ý:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 47/64
9.5. Bài về nhà
 Mục tiêu: Sử dụng đối tượng kiểu Generic Colections
 Yêu cầu: Thực hiện lại các bài tập trên, sử dụng Generic Collections.
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 48/64
BÀI 10: Các kiến thức cơ bản về SQL Server
 Sử dụng tiện ích SQL Server Management Studio (SSMS)
 Tạo cơ sở dữ liệu, tạo các bảng và các quan hệ ràng buộc khóa ngoại
 Viết các câu lệnh truy vấn dữ liệu trên các bảng
 Viết các câu lệnh cập nhật dữ liệu trên các bảng
10.1.Tạo cơ sở dữ liệu QLSV (bằng tiện ích SSMS)
 Mô tả
Cơ sở dữ liệu Quản lý Sinh viên cho phép lưu trữ thông tin các sinh viên trong các khoa và kết quả
học tập của các sinh viên theo môn học
 Tạo cấu trúc các bảng
Các Field được gạch dưới và in đậm là khóa chính của bảng
Khoa – Danh mục khoa
Field Name Field Type Field Size Format Description
KhoaID Char 2 Mã khoa
TenKhoa NVarchar 50 Tên khoa
MonHoc – Danh mục môn học
Field Name Field Type Field Size Format Description
MonHocID Char 2 Mã môn
TenMonHoc NVarchar 50 Tên môn
SinhVien – Danh mục sinh viên
Field Name Field Type Field Size Format Description
SinhVienID Char 3 Mã sinh viên
HoSinhVien NVarchar 30 Họ
TenSinhVien NVarchar 20 Tên
NgaySinh DateTime Ngày sinh
GioiTinh Bit True: Nam; False: Nữ
DiaChi NVarchar 50 Địa chỉ
HocBong Int Học bổng
KhoaID Char 2 Mã khoa
KetQua – Kết quả học tập
Field Name Field Type Field Size Format Description
SinhVienID Char 3 Mã sinh viên
MonHocID Char 2 Mã môn
Diem Real Điểm
 Tạo Database Diagram với các quan hệ theo mô tả sau:
Bảng cha Khoa và bảng con SinhVien quan hệ theo cột KhoaID
Bảng cha SinhVien và bảng con KetQua quan hệ theo cột SinhVienID
Bảng cha MonHoc và bảng con KetQua quan hệ theo cột MonHocID

TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 49/64
 Nhập dữ liệu mẫu
Khoa
Mã khoa Tên khoa
CN Khoa Công nghệ thông tin
TO Khoa Toán
VL Khoa Lý
MonHoc
Mã môn Tên môn
CO Cơ lý thuyết
CS Cơ sở dữ liệu
CT Cấu trúc dữ liệu
LT Lượng tử
RR Toán rời rạc
TC Toán cao cấp
TT Trí tuệ nhân tạo
SinhVien
Mã Họ Tên Ngày sinh Giới tính Học bổng Mã khoa
C00 Nguyễn Thị Trang 13/8/1991 False 100000 CN
C01 Hà Tuấn 24/2/1991 True 0 CN
C02 Trần Ngọc Hoà 11/6/1990 False 120000 CN
C03 Bùi Thị Thảo 26/2/1990 False 100000 CN
C04 Nguyễn Hoàng Hưng 19/3/1990 True 150000 CN
T00 Lê Tuấn 15/2/1991 True 0 TO
T01 Bùi Minh Khánh 9/4/1990 True 120000 TO
T02 Trần Thị Lan 4/3/1990 False 100000 TO
T03 Lê Thiện 18/5/1990 True 0 TO
T04 Lê Thị Thảo 27/3/1990 False 120000 TO
KetQua
Mã sinh viên Mã môn học Điểm
C00 CS 10
C00 CT 9
C00 TT 7
C00 RR 8.5
C01 CS 7
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 50/64
C01 CT 6
C01 TT 7
C01 RR 9
C02 CS 7.5
C02 CT 4
C02 TT 5
C02 RR 3
C03 CS 9
C03 CT 1
C03 TT 8.5
C03 RR 9
C04 CS 2
C04 CT 1
10.2.Truy vấn dữ liệu (bằng câu lệnh)
Ghi chú: các bài có đánh dấu (*) là bài về nhà
 Truy vấn đơn giản
a. Liệt kê danh sách sinh viên gồm các cột Mã, Họ và Tên, Ngày sinh, Giới tính, Học bổng. Có sắp
tăng theo cột học bổng
Mẫu:
Mã Họ tên Ngày sinh Phái Học bổng
C00 Nguyễn Thị Trang 8/13/1991 Nữ 100000
C04 Nguyễn Hoàng Hưng 3/19/1990 Nam 150000
…
Hướng dẫn: thể hiện cột Phái là Nam/Nữ
CASE WHEN GioiTinh='true' THEN 'Nam' ELSE N'Nữ' END
b. Liệt kê danh sách sinh viên gồm các cột Mã, Họ, Tên, Ngày sinh, Giới tính, Học bổng. Chỉ liệt kê
các sinh viên học khoa “Công nghệ thông tin” và có học bổng >3,000,000
c. Liệt kê danh sách sinh viên gồm các cột Mã, Họ, Tên, Ngày sinh, Giới tính, Học bổng. Chỉ liệt kê
các sinh viên có tên bắt đầu là ‘T’
d. Liệt kê danh sách sinh viên gồm các cột Mã, Họ, Tên, Ngày sinh, Giới tính, Học bổng. Chỉ liệt kê
các sinh viên có học bổng từ 100000 đến 120000
e. Liệt kê danh sách sinh viên gồm các cột Mã, Họ, Tên, Ngày sinh, Học bổng. Chỉ liệt kê các sinh
viên có học bổng và ngày sinh nằm trong khoảng [1/6/1990, 30/6/1991]
f. Hiển thị danh sách 10 sinh viên đầu tiên có học bổng từ cao đến thấp (Hướng dẫn: dùng TOP 10
và ORDER BY … DESC)
 Truy vấn trên nhiều bảng
a. Liệt kê danh sách sinh viên gồm các cột mã, họ, tên, ngày sinh, giới tính, mã khoa, tên khoa
b. Liệt kê kết quả học tập gồm các cột mã sinh viên, họ và tên, mã môn học, điểm
c. Liệt kê danh sách các sinh viên (gồm các cột mã, họ tên, ngày sinh) có học môn ‘Cơ sở dữ liệu’
d. Liệt kê danh sách các sinh viên (gồm các cột mã, họ tên, ngày sinh) đạt điểm 10 trong bài thi
e. Liệt kê danh sách các sinh viên (gồm các cột mã, họ tên, ngày sinh) có điểm thi môn ‘Toán cao
cấp’ nhỏ hơn 5 (*)
f. Cho biết danh sách các môn học chưa có sinh viên đăng ký (*)
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 51/64
g. Cho biết danh sách các sinh viên (gồm các cột mã, họ tên, ngày sinh) chưa đăng ký học môn học
nào (*)
 Truy vấn có nhóm
a. Thống kê tổng số sinh viên theo khoa. Có sắp tăng theo tổng số sinh viên
Mẫu:
Mã khoa Tổng số sinh viên
TO 30
CN 40
…
b. Thống kê tổng học bổng theo khoa. Chỉ hiển thị những khoa có tổng học bổng >=3,000,000
Mẫu:
Mã khoa Tên khoa Tổng học bổng
CN Khoa Công nghệ thông tin 3,500,000
…
c. Hiển thị danh sách sinh viên gồm mã, họ tên và điểm trung bình các môn học mà sinh viên có
đăng ký học
d. Hiển thị danh sách khoa gồm mã khoa, tên khoa và điểm trung bình của tất cả các sinh viên trong
khoa
e. Hiển thị danh sách sinh viên gồm mã, họ tên, điểm trung bình và kết quả xếp loại học tập của sinh
viên, trong đó kết quả xếp loại học tập được xét dựa trên điểm trung bình theo quy tắc sau: (*)
Điều kiện Xếp loại
Điểm trung bình < 5 Yếu
5 <= Điểm trung bình < 6.5 Trung bình
6.5 <= Điểm trung bình < 8 Khá
Điểm trung bình >= 8 Giỏi
f. Hiển thị danh sách các môn học cùng với điểm thi cao nhất mà sinh viên đã đạt được trong môn
học đó, kết quả trả về gồm mã môn, tên môn, điểm thi cao nhất của sinh viên (*)
g. Hiển thị danh sách các môn học cùng với số lượng sinh viên đã đăng ký học các môn học đó, kết
quả trả về gồm mã môn, tên môn, số lượng sinh viên đã đăng ký (*)
h. Hiển thị danh sách các môn học có số lượng sinh viên đăng ký học đông nhất, kết quả trả về gồm
mã môn, tên môn và số lượng sinh viên đăng ký (*)
i. Thống kê số lượng sinh viên đậu và rớt của từng môn, biết rằng sinh viên rớt khi điểm thi nhỏ hơn
5, kết quả trả về gồm mã môn, tên môn, số sinh viên đậu, số sinh viên rớt (*)
10.3.Truy vấn cập nhật dữ liệu
 Thêm mẩu tin
a. Thêm một khoa mới vào bảng Khoa với các thông tin sau:
Mã khoa: HO
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 52/64
Tên khoa: Khoa Hoá
b. Thêm một sinh viên mới vào bảng SinhVien với các thông tin sau:
Mã sinh viên: H01
Họ và tên: Lê Thanh Tùng
Ngày sinh: 23/1/1992
Giới tính: Nam
Địa chỉ: 122 Lý Chính Thắng
Học bổng: 100,000
Mã khoa: HO
c. Thêm các điểm thi của sinh viên có mã ‘H01’ vào bảng KetQua với các thông tin sau:
Mỗi điểm thi sẽ tương ứng với một mã môn học trong bảng MonHoc
Mặc định điểm thi là 6
 Sửa mẩu tin
a. Cập nhật ngày sinh của sinh viên ‘Hà Tuấn’ thành 05/07/1980
b. Tăng học bổng lên 5% cho các sinh viên học khoa ‘Công nghệ thông tin’ và có học bổng >0
c. Cập nhật học bổng là 50,000 cho các sinh viên nữ học khoa ‘Công nghệ thông tin’ và chưa có học
bổng
d. Cộng thêm 5 điểm môn ‘Trí Tuệ Nhân Tạo’ cho các sinh viên thuộc khoa ‘Anh văn’. Điểm tối đa của
môn là 10
 Xóa mẩu tin
a. Xoá các kết quả học tập của sinh viên có mã ‘H01’
b. Xoá sinh viên có mã ‘H01’
c. Xóa tất cả nam sinh viên của khoa Tin học trong bảng SinhVien (nhận xét: có xóa được không?)
d. Xóa các kết quả học tập của những sinh viên nào có điểm các môn < 5
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 53/64
Phụ lục
Bài làm thêm
1. Bài 2: Kiểu dữ liệu và biến
1. Mã hóa và giải mã
 Mục tiêu: Ứng dụng vào bài toán thực tế
 Mô tả:
Một công ty muốn truyền dữ liệu qua đường mạng tuy nhiên họ sợ rằng dữ liệu sẽ bị đánh cắp.
Công ty thuê một lập trình viên để giải quyết vấn đề này. Sau khi xem xét lập trình viên quyết định
lựa chọn chiến lược sẽ mã hóa (encrypt) dữ liệu trước khi truyền trên mạng bởi vì nếu dữ liệu đã
được mã hóa thì nếu có bị đánh cắp thì cũng không biết nó có ý nghĩa gì. Dữ liệu được gởi đi được
chia thành nhóm gồm 4 chữ số.
Ứng dụng của lập trình viên sẽ đọc một số nguyên có 4 chữ số. Sau đó số này được mã hóa
theo các bước như sau:
(1) thay thế mỗi ký số bởi tổng của nó với 7 và lấy phần dư cho 10
(2) Đảo vị trí của ký số thứ 1 với kí số thứ 3, kí số thứ 2 và kí số thứ 4.
Ví dụ: số ban đầu là 1093 sẽ được mã hóa thành 6087. Kết quả mã hóa sau đó được in ra màn
hình
 Yêu cầu: Xây dựng chương trình mã hóa và giải mã một số nguyên, gồm 2 chức năng:
- Chức năng 1: mã hóa một số được nhập vào chương trình
- Chức năng 2: giải mã (decryption) số đã được mã hóa để xuất ra giá trị ban đầu
2. Bài 3: Cấu trúc điều khiển
1. Tính thuế thu nhập cá nhân
 Mục tiêu: Sử dụng cấu trúc if … else
 Yêu cầu:
- Nhập vào mức lương và số người phụ thuộc
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 54/64
- Tính và xuất ra mức thuế thu nhập cá nhân cần phải đóng theo các bước:
o Bước 1: tính thu nhập chịu thuế, biết rằng:
Thu nhập chịu thuế = Mức lương – 4,000,000 - Số người phụ thuộc * 1,600,000
o Bước 2: tính thuế thu nhập cá nhân theo quy tắc sau:
Thu nhập chịu thuế (TNCT) Thuế thu nhập cá nhân
TNCT<5 triệu TNCT*5%
5 triệu<=TNCT<10 triệu TNCT*10%
10 triệu <=TNCT<18 triệu TNCT*15%
18 triệu <=TNCT<32 triệu TNCT*20%
32 triệu <=TNCT<50 triệu TNCT*25%
TNCT>50 triệu TNCT*30%
- Màn hình gợi ý:
2. Kiểm tra số nguyên tố
 Mục tiêu: Sử dụng cấu trúc for
 Mô tả: số nguyên tố là số tự nhiên chỉ chia hết cho 1 và chính nó, 0 và 1 không được xem là số
nguyên tố. (Số 2 là số nguyên tố nhỏ nhất, và 2 cũng là số nguyên tố chẵn duy nhất)
 Yêu cầu:
- Nhập vào số nguyên n cần kiểm tra
- Kiểm tra xem số nguyên n có phải là số nguyên tố hay không và xuất thông báo ra màn hình
- Sau đó tìm và xuất ra danh sách các số nguyên tố nhỏ hơn số cần kiểm tra
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 55/64
3. Craps Game
 Mục tiêu: Sử dụng kết hợp các cấu trúc điều khiển và const
 Mô tả:
- Craps Game là một trò chơi phổ biến liên quan đến các con súc sắc được chơi tại các Casino.
Craps được chơi chỉ với hai viên súc sắc. Một cách trùng hợp là người thua trong trò chơi được
gọi là Craps
- Quy tắc chơi: Người chơi có hai con súc sắc, mỗi con súc sắc có 6 mặt, mỗi mặt mang số chấm
tương ứng là 1, 2, 3, 4, 5, 6. Người chơi sẽ gieo hai con súc sắc, sau đó tổng số điểm của hai
mặt ngửa được tính:
o Trong lần gieo đầu tiên, nếu tổng là 7 hoặc 11 thì người chơi thắng
o Trong lần gieo đầu tiên, nếu tổng là 2, 3 hoặc 12 (gọi là "Craps") thì người chơi thua
o Trong lần gieo đầu tiên, nếu tổng là 4, 5, 6, 8, 9 hoặc 10 thì số điểm này được lưu lại và
gọi là "Point", để giành chiến thắng, người chơi phải gieo lại hai con súc sắc cho đến khi
đạt được giá trị point lần nữa. Tuy nhiên, từ lần gieo thứ hai trở đi, nếu tổng điểm đạt
được 7 thì người chơi bị thua
- Các thuật ngữ của trò chơi này như sau:
o Point: các giá trị đạt được trong lần đầu tiên mà không thắng hay thua gồm có: 4, 5,
6, 8, 9 hoặc 10
o Snake Eyes: số 2
o Trey: số 3
o Box Cars: số 12
o Seven: số 7
o Yo Leven: số 11
 Yêu cầu: Viết chương trình thực hiện trò chơi Craps được mô tả như trên
 Hướng dẫn:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 56/64
- Sử dụng const để khai báo các giá trị lưu trữ các thuật ngữ trên
- Giao diện Form gợi ý như sau:
3. Bài 5: Tổng quan về lập trình hướng đối tượng
1. Xếp loại học tập học sinh
 Mục tiêu: Áp dụng class vào bài toán thực tế
 Yêu cầu: Trường trung học ANZ muốn ghi nhận thông tin kết quả học tập của học sinh vào cuối
mỗi học kỳ. Bạn hãy xây dựng ứng dụng nhập thông tin học sinh và kết quả các điểm kiểm tra
trong kỳ và điểm thi cuối học kỳ. Sau đó xuất thông tin kết quả học tập
- Thông tin kết quả học tập của học sinh cần ghi nhận gồm có: Họ tên học sinh, Lớp, Học kỳ
và năm học
- Kết quả học tập các môn học gồm: Tên môn, điểm 15 phút, điểm 1 tiết, điểm thi cuối học
kỳ
- Điểm trung bình học kỳ với điểm trung bình được tính theo công thức sau:
Điểm trung bình học kỳ=Tổng điểm trung bình các môn / số môn học
Trung bình môn học=(điểm 15 phút + điểm 1 tiết x 2 + điểm học kỳ x 2)/5
- Xếp loại học lực của học sinh theo quy tắc sau:
o Điểm trung bình học kỳ <5: yếu
o 5 <= Điểm trung bình học kỳ < 6.5: trung bình
o 6.5<= Điểm trung bình học kỳ < 8: khá
o Điểm trung bình học kỳ >=8: giỏi
 Hướng dẫn:
- Màn hình gợi ý
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 57/64
2. Trò chơi đấu giá sản phẩm
 Mục tiêu: Áp dụng class vào bài toán thực tế
 Yêu cầu: Xây dựng chương trình Trò chơi đấu giá sản phẩm với luật đấu giá sau:
- Người thắng cuộc sẽ là người có “Giá đấu” nhỏ nhất
- Nếu có nhiều người chơi đấu cùng giá: người thắng cuộc là người có “Số dự đoán cùng
giá” thấp nhất trong số những người chơi đấu cùng giá.
- Nếu có nhiều người chơi đấu cùng giá và cùng số dự đoán: kết quả là “Không có người
thắng cuộc”
- Lưu ý: Mỗi số điện thoại có thể thực hiện nhắn tin đấu giá nhiều lần
 Hướng dẫn:
- Màn hình gợi ý:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 58/64
- Các xử lý:
o Form load:
 Tạo Danh sách người chơi mặc định và hiển thị lên TextBox
 Hiển thị thông tin của người chơi đầu tiên lên Thông tin người đấu giá
o Button <: hiển thị thông tin người chơi phía trước người chơi hiện tại trong danh sách
o Button >: hiển thị thông tin người chơi phía sau người chơi hiện tại trong danh sách
o Người chơi mới: xóa rỗng các TextBox để chuẩn bị nhập thông tin người chơi mới
o Thêm vào danh sách: thêm người chơi mới vào Danh sách người chơi
o Tìm người thắng cuộc: tìm người thắng cuộc dựa vào luật của trò chơi đấu giá sản
phẩm và xuất thông tin người thắng cuộc lên màn hình
3. Thi trắc nghiệm
 Mục tiêu: xây dựng và sử dụng class, phối hợp các class, kết hợp kiến thức mảng, …
 Yêu cầu: xây dựng ứng dụng hỗ trợ thi trắc nghiệm theo mô tả sau
- Trước khi bắt đầu thi, thí sinh nhập Họ tên, Ngày sinh và Nơi sinh
- Sau đó bắt đầu làm bài. Thí sinh đọc nội dung câu hỏi và chọn 1 trong 4 câu trả lời bên dưới
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 59/64
- Nhấn nút di chuyển để sang một câu hỏi mới hoặc lùi về câu trước đó
- Sau khi làm bài xong, thí sinh nhấn nút Nộp bài và sẽ nhận được kết quả (Hình 4.5b)
Hình 1: Màn hình đang thi
Hình 2: Màn hình kết quả
 Hướng dẫn:
- Tạo lớp Cauhoi, gồm các thông tin: Nội dung câu hỏi, chọn lựa 1, chọn lựa 2, chọn lựa 3, chọn
lựa 4, đáp án, chọn đáp án. Có một phương thức Chấm điểm
- Tạo lớp Thisinh, gồm các thông tin: Họ tên, ngày sinh, nơi sinh và một phương thức Xuất
thông tin
- Tạo lớp Baithi, gồm các thông tin: Thông tin của thí sinh và mảng các câu hỏi. Phương thức
Chấm bài và Xuất thông tin
- Khai báo các biến dùng chung trên Form: 1 biến mảng kiểu Cauhoi, 1 biến kiểu int (dùng lưu
trữ số thứ tự câu hỏi)
- Sự kiện load form: Khởi tạo các câu hỏi (số câu tùy vào người lập trình)
4. Bài 8: Lớp trừu tượng, lớp giao tiếp
1. Xử lý phân số
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 60/64
 Mục tiêu: Xây dựng và sử dụng lớp giao tiếp tự định nghĩa
 Yêu cầu: Xây dựng chương trình nhập các phân số và xuất ra danh sách các phân số, có sắp xếp
 Hướng dẫn:
- Tạo interface IXuat, khai báo hàm hàm xuất phân số trả về 1 chuỗi
interface IXuat
{ string Xuat(); }
- Xây dựng lớp PhanSo (tương tự bài 5.2) và cài đặt Interface Ixuat và IComparable cho lớp này
như sau:
public class PhanSo: Ixuat, IComparable
{
public int TUSO { get; set; }
public int MAUSO { get; set; }
public PhanSo() { }
public PhanSo(int tu, int mau) { TUSO = tu; MAUSO = mau; }
…
public string Xuat()
{
return string.Format("{0}/{1}", TUSO, MAUSO);
}
public int CompareTo(object obj)
{
PhanSo p = (PhanSo)obj;
double giatri1 = 1.0 * TUSO / MAUSO;
double giatri2 = 1.0 * p.TUSO / p.MAUSO;
if (giatri1 > giatri2)
return 1;
else if (giatri1 < giatri2)
return -1;
else
return 0;
}
}
- Xây dựng màn hình có dạng sau:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 61/64
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 62/64
MỤC LỤC
BÀI 1: Tổng quan .................................................................................................. 2
1.1. Làm quen môi trường phát triển ứng dụng .............................................................................2
1.2. Xây dựng màn hình xuất câu chào .........................................................................................2
BÀI 2: Kiểu dữ liệu và biến.................................................................................... 4
2.1. Tính chu vi và diện tích hình tròn...........................................................................................4
2.2. Tính chu vi và diện tích hình chữ nhật (Bài về nhà) .................................................................5
2.3. Tính chu vi và diện tích tam giác............................................................................................6
2.4. Tính số nút của 1 số nguyên (Bài về nhà)...............................................................................6
2.5. Tách chuỗi họ tên.................................................................................................................7
2.6. Sử dụng kiểu tham chiếu.......................................................................................................7
BÀI 3: Cấu trúc điều khiển................................................................................... 10
3.1. Xếp loại học tập .................................................................................................................10
3.2. Tìm ngày trước, ngày sau của một ngày...............................................................................11
3.3. Tính tiền điện (bài về nhà) ..................................................................................................11
3.4. Tính năm âm lịnh ...............................................................................................................12
3.5. Tính số ngày trong tháng ....................................................................................................13
3.6. Tính ngày của mẹ, ngày của cha (Bài về nhà).......................................................................13
3.7. In bảng cửu chương của một số ..........................................................................................13
3.8. In bảng cửu chương từ số đến số ........................................................................................14
3.9. Tính lãi suất ngân hàng (Bài về nhà)....................................................................................15
3.10. Thực hiện lại các bài 3.8, 3.9 và 3.10 bằng cách dùng vòng lặp while, do..while (Bài về nhà)..16
BÀI 4: Kiểu struct và kiểu Array .......................................................................... 17
4.1. Tạo và sử dụng kiểu Nhan_vien...........................................................................................17
4.2. Làm việc với mảng..............................................................................................................19
BÀI 5: Tổng quan Lập trình hướng đối tượng ...................................................... 21
5.1. Giải phương trình bậc nhất Ax + B = 0.................................................................................21
5.2. Xử lý phân số.....................................................................................................................23
5.3. Xử lý phân số nâng cao.......................................................................................................25
5.4. Nhập xuất thông tin hóa đơn (Bài về nhà) ............................................................................26
BÀI 6: Tính Thừa kế và Đa hình........................................................................... 28
6.1. Quản lý thông tin nhân viên ................................................................................................28
6.2. Quản lý danh sách máy tính (Bài về nhà)..............................................................................33
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 63/64
BÀI 7: Delegate và Event..................................................................................... 35
7.1. Quản lý thông tin nhân viên ................................................................................................35
BÀI 8: Lớp trừu tượng, lớp giao tiếp.................................................................... 37
8.1. Quản lý các lớp hình học.....................................................................................................37
8.2. Quản lý đối tượng hình học .................................................................................................39
BÀI 9: Collections và Generic .............................................................................. 42
9.1. Quản lý danh sách học viên.................................................................................................42
9.2. Quản lý danh sách học viên.................................................................................................44
9.3. Chuyển số thành chữ..........................................................................................................46
9.4. Đọc 3 số (Bài về nhà) .........................................................................................................46
9.5. Bài về nhà..........................................................................................................................47
BÀI 10: Các kiến thức cơ bản về SQL Server........................................................ 48
10.1. Tạo cơ sở dữ liệu QLSV (bằng tiện ích SSMS)......................................................................48
10.2. Truy vấn dữ liệu (bằng câu lệnh) .......................................................................................50
 Truy vấn trên nhiều bảng....................................................................................................50
 Truy vấn có nhóm ..............................................................................................................51
10.3. Truy vấn cập nhật dữ liệu..................................................................................................51
 Thêm mẩu tin ....................................................................................................................51
 Sửa mẩu tin .......................................................................................................................52
 Xóa mẩu tin .......................................................................................................................52
Phụ lục ................................................................................................................ 53
Bài làm thêm ....................................................................................................... 53
1. Bài 2: Kiểu dữ liệu và biến ......................................................................... 53
1. Mã hóa và giải mã ..............................................................................................................53
2. Bài 3: Cấu trúc điều khiển.......................................................................... 53
1. Tính thuế thu nhập cá nhân ................................................................................................53
2. Kiểm tra số nguyên tố.........................................................................................................54
3. Craps Game .......................................................................................................................55
3. Bài 5: Tổng quan về lập trình hướng đối tượng.......................................... 56
1. Xếp loại học tập học sinh ....................................................................................................56
2. Trò chơi đấu giá sản phẩm..................................................................................................57
3. Thi trắc nghiệm..................................................................................................................58
4. Bài 8: Lớp trừu tượng, lớp giao tiếp ........................................................... 59
1. Xử lý phân số.....................................................................................................................59
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Bài tập
Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 64/64
MỤC LỤC ............................................................................................................. 62
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí

More Related Content

What's hot

Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)
lieu_lamlam
 
Thuật toán Nhân Bình Phương - demo
Thuật toán Nhân Bình Phương - demoThuật toán Nhân Bình Phương - demo
Thuật toán Nhân Bình Phương - demo
Công Thắng Trương
 
Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#
Văn Dũng
 
Tài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhTài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tính
Jojo Kim
 
Các lỗi trong lập trình C
Các lỗi trong lập trình CCác lỗi trong lập trình C
Các lỗi trong lập trình C
thanhhd
 
Đồ án tốt nghiệp : Xậy dựng hệ thống quản lý doanh nghiệp đa nền tảng
Đồ án tốt nghiệp : Xậy dựng hệ thống quản lý doanh nghiệp đa nền tảng Đồ án tốt nghiệp : Xậy dựng hệ thống quản lý doanh nghiệp đa nền tảng
Đồ án tốt nghiệp : Xậy dựng hệ thống quản lý doanh nghiệp đa nền tảng
Lương Bá Hợp
 

What's hot (20)

Phương pháp tham lam
Phương pháp tham lamPhương pháp tham lam
Phương pháp tham lam
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
 
Mô hình mạng pert
Mô hình mạng pertMô hình mạng pert
Mô hình mạng pert
 
Trí tuệ nhân tạo "Game cờ Caro"
Trí tuệ nhân tạo "Game cờ Caro"Trí tuệ nhân tạo "Game cờ Caro"
Trí tuệ nhân tạo "Game cờ Caro"
 
Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)
 
Bai giang-toan-kinh-te-tin-hoc
Bai giang-toan-kinh-te-tin-hocBai giang-toan-kinh-te-tin-hoc
Bai giang-toan-kinh-te-tin-hoc
 
Thuật toán Nhân Bình Phương - demo
Thuật toán Nhân Bình Phương - demoThuật toán Nhân Bình Phương - demo
Thuật toán Nhân Bình Phương - demo
 
Báo cáo UML hệ thống cho thuê nhà
Báo cáo UML hệ thống cho thuê nhàBáo cáo UML hệ thống cho thuê nhà
Báo cáo UML hệ thống cho thuê nhà
 
Ch3 ma tran
Ch3 ma tranCh3 ma tran
Ch3 ma tran
 
Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#Thêm sửa-xóa-combobox - c#
Thêm sửa-xóa-combobox - c#
 
Đề tài: Xây dựng phần mềm quản lý thông tin nhân sự ĐH Hải Phòng
Đề tài: Xây dựng phần mềm quản lý thông tin nhân sự ĐH Hải PhòngĐề tài: Xây dựng phần mềm quản lý thông tin nhân sự ĐH Hải Phòng
Đề tài: Xây dựng phần mềm quản lý thông tin nhân sự ĐH Hải Phòng
 
Mô hình hóa Use Case 03
Mô hình hóa Use Case 03Mô hình hóa Use Case 03
Mô hình hóa Use Case 03
 
Đề tài: Xây dựng hệ thống tìm kiếm âm thanh theo nội dung, HOT
Đề tài: Xây dựng hệ thống tìm kiếm âm thanh theo nội dung, HOTĐề tài: Xây dựng hệ thống tìm kiếm âm thanh theo nội dung, HOT
Đề tài: Xây dựng hệ thống tìm kiếm âm thanh theo nội dung, HOT
 
Tài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhTài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tính
 
Các lỗi trong lập trình C
Các lỗi trong lập trình CCác lỗi trong lập trình C
Các lỗi trong lập trình C
 
Bao cao UML phan tich he thong nha cho thue
Bao cao UML phan tich he thong nha cho thueBao cao UML phan tich he thong nha cho thue
Bao cao UML phan tich he thong nha cho thue
 
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPTBài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
 
MATMA - Chuong2
MATMA - Chuong2MATMA - Chuong2
MATMA - Chuong2
 
Phân tích và thiết kế hệ thống quản lý quán Internet
Phân tích và thiết kế hệ thống quản lý quán InternetPhân tích và thiết kế hệ thống quản lý quán Internet
Phân tích và thiết kế hệ thống quản lý quán Internet
 
Đồ án tốt nghiệp : Xậy dựng hệ thống quản lý doanh nghiệp đa nền tảng
Đồ án tốt nghiệp : Xậy dựng hệ thống quản lý doanh nghiệp đa nền tảng Đồ án tốt nghiệp : Xậy dựng hệ thống quản lý doanh nghiệp đa nền tảng
Đồ án tốt nghiệp : Xậy dựng hệ thống quản lý doanh nghiệp đa nền tảng
 

Similar to [Top tailieu.com] bai tap nen tang va lap trinh huong doi tuong voi ngon ngu c#

Hdth01 ltudql2-lap tinhduongdoituong-vb
Hdth01 ltudql2-lap tinhduongdoituong-vbHdth01 ltudql2-lap tinhduongdoituong-vb
Hdth01 ltudql2-lap tinhduongdoituong-vb
Dũng Đinh
 
Phan 2 chuong 9 (cau truc)
Phan 2   chuong 9 (cau truc)Phan 2   chuong 9 (cau truc)
Phan 2 chuong 9 (cau truc)
Trần Văn Nam
 
Thực tập (ccdc))
Thực tập (ccdc))Thực tập (ccdc))
Thực tập (ccdc))
soanxu
 
Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010
Nhat Linh Luong
 
Chuong 1. tong quan
Chuong 1. tong quanChuong 1. tong quan
Chuong 1. tong quan
Vũ Nam
 
Cq lt hdt-th2011-01-tuan05
Cq lt hdt-th2011-01-tuan05Cq lt hdt-th2011-01-tuan05
Cq lt hdt-th2011-01-tuan05
. .
 

Similar to [Top tailieu.com] bai tap nen tang va lap trinh huong doi tuong voi ngon ngu c# (20)

Hdth01 ltudql2-lap tinhduongdoituong-vb
Hdth01 ltudql2-lap tinhduongdoituong-vbHdth01 ltudql2-lap tinhduongdoituong-vb
Hdth01 ltudql2-lap tinhduongdoituong-vb
 
Bai tap thuc hanh
Bai tap thuc hanhBai tap thuc hanh
Bai tap thuc hanh
 
Chuong 1
Chuong 1Chuong 1
Chuong 1
 
Giaotrinh vb
Giaotrinh vbGiaotrinh vb
Giaotrinh vb
 
Giáo trình visual basic
Giáo trình visual basicGiáo trình visual basic
Giáo trình visual basic
 
Cơ bản về visual basic
Cơ bản về visual basicCơ bản về visual basic
Cơ bản về visual basic
 
De kiem tra 1 tiet tin 7
De kiem tra 1 tiet tin 7De kiem tra 1 tiet tin 7
De kiem tra 1 tiet tin 7
 
Phan 2 chuong 9 (cau truc)
Phan 2   chuong 9 (cau truc)Phan 2   chuong 9 (cau truc)
Phan 2 chuong 9 (cau truc)
 
Bai 1 tong quan ve ctdl&amp;gt
Bai 1   tong quan ve ctdl&amp;gtBai 1   tong quan ve ctdl&amp;gt
Bai 1 tong quan ve ctdl&amp;gt
 
Giao trinh thuc hanh - Delphi 7
Giao trinh thuc hanh - Delphi 7Giao trinh thuc hanh - Delphi 7
Giao trinh thuc hanh - Delphi 7
 
Bao cao de tai thi trac nghiem tieng anh
Bao cao de tai thi trac nghiem tieng anhBao cao de tai thi trac nghiem tieng anh
Bao cao de tai thi trac nghiem tieng anh
 
Bao cao de tai thi trac nghiem tieng anh
Bao cao de tai thi trac nghiem tieng anhBao cao de tai thi trac nghiem tieng anh
Bao cao de tai thi trac nghiem tieng anh
 
Adobe illustrator 2018
Adobe illustrator 2018Adobe illustrator 2018
Adobe illustrator 2018
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
 
Thực tập (ccdc))
Thực tập (ccdc))Thực tập (ccdc))
Thực tập (ccdc))
 
Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010
 
Chuong 1. tong quan
Chuong 1. tong quanChuong 1. tong quan
Chuong 1. tong quan
 
Cq lt hdt-th2011-01-tuan05
Cq lt hdt-th2011-01-tuan05Cq lt hdt-th2011-01-tuan05
Cq lt hdt-th2011-01-tuan05
 
Pdf bai tap_nen_tang_lap_trinh_-_c#-mastercode.vn
Pdf bai tap_nen_tang_lap_trinh_-_c#-mastercode.vnPdf bai tap_nen_tang_lap_trinh_-_c#-mastercode.vn
Pdf bai tap_nen_tang_lap_trinh_-_c#-mastercode.vn
 
10 bai tap
10 bai tap10 bai tap
10 bai tap
 

[Top tailieu.com] bai tap nen tang va lap trinh huong doi tuong voi ngon ngu c#

  • 1. TRUNG TÂM TIN HỌC – ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM 227 Nguyễn Văn Cừ - Quận 5- Tp.Hồ Chí Minh Tel: 8351056 – Fax 8324466 – Email: ttth@hcmuns.edu.vn Mã tài liệu: DT_NCM_HP2_BT_LTHDTC# Phiên bản 4.1 – Tháng 07/2013 BÀI TẬP CHƯƠNG TRÌNH KỸ THUẬT VIÊN NGÀNH LẬP TRÌNH Học phần 2 --- NỀN TẢNG VÀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI C# 4.0 TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 2. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 BÀI 1: Tổng quan Thực hành một số thao tác cơ bản trong môi trường C# và ứng dụng dạng Windows Application. Sử dụng các điều khiển cơ bản trên Form 1.1. Làm quen môi trường phát triển ứng dụng  Mục tiêu:  Tạo Project, tổ chức cây thư mục  Sử dụng các đối tượng trong ứng dụng Windows Application  Thực hiện các thao tác: tạo, thêm, xoá các đối tượng  Thực thi một ứng dụng  Yêu cầu:  Tạo một ứng dụng dạng Windows Forms Application có tên Bai_Tap lưu tại thư mục làm việc  Lần lượt tạo các thư mục dùng để lưu trữ bài tập (hình 1)  Thực hiện thêm và xóa một đối tượng trong ứng dụng (Trên cửa sổ Solution Explorer, nhấn chuột phải trên Project chọn Add để thêm một đối tượng, nhấn chuột phải trên đối tượng cần xóa và chọn Delete)  Thực thi ứng dụng (nhấn phím F5 hoặc nhấn nút Start Debugging) Hình 1: Tổ chức thư mục trong Project 1.2. Xây dựng màn hình xuất câu chào  Mục tiêu:  Sử dụng ba thành phần chính của một chương trình (Input, Process, Output)  Yêu cầu:  Xây dựng Form có tên MH_Cau_chao lưu tại thư mục Bai_01 (hình 2)  Nhập vào họ tên của bạn  TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 3. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0  Xuất ra màn hình câu chào “Chào bạn <Họ tên>, chúc mừng bạn đến với Ngôn ngữ lập trình C# 4.0” Hình 2: màn hình in câu chào TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 4. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 BÀI 2: Kiểu dữ liệu và biến Sử dụng kiểu dữ liệu trong C#, ứng dụng các kiểu dữ liệu để khai báo biến. Áp dụng các kỹ thuật chuyển kiểu dữ liệu trong C# Sử dụng các toán tử trong C#  Sử dụng kiểu giá trị  Mục tiêu:  Sử dụng các kiểu dữ liệu loại giá trị, kỹ thuật chuyển đổi kiểu dữ liệu và sử dụng các toán tử 2.1. Tính chu vi và diện tích hình tròn  Mục tiêu: Sử dụng các phương thức và thuộc tính của lớp Math  Yêu cầu: Xây dựng chương trình tính diện tích và chu vi hình tròn, gồm các chức năng:  Nhập vào bán kính của hình tròn: kiểu số thực double  Xuất ra diện tích và chu vi của hình tròn: kiểu số thực double  Hướng dẫn  Xây dựng màn hình có giao diện như sau: Điều khiển Thuộc tính Sự kiện Xử lý Label Text: TÍNH CHU VI, DIỆN TÍCH HÌNH TRÒN Label Text: Bán kính Label Text: Chu vi Label Text: Diện tích TextBox Name: txtban_kinh TextBox Name: txtchu_vi ReadOnly: true TextBox Name: txtdien_tich  TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 5. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 ReadOnly: true Button Name: btntinh Text: Tính Click Button Name: btnlam_lai Text: Làm lại Click  Xử lý sự kiện Click của Button “Tính” private void btntinh_Click(object sender, EventArgs e) { double ban_kinh=double.Parse(txtban_kinh.Text); double chu_vi=Math.PI*2*ban_kinh; double dien_tich=Math.PI*ban_kinh*ban_kinh; txtchu_vi.Text = Math.Round(chu_vi,2).ToString(); txtdien_tich.Text = Math.Round(dien_tich,2).ToString(); }  Xử lý sự kiện Click của Button “Làm lại” private void btnlam_lai_Click(object sender, EventArgs e) { txtban_kinh.Text=””; txtchu_vi.Text=””; txtdien_tich.Text=””; } 2.2. Tính chu vi và diện tích hình chữ nhật (Bài về nhà)  Yêu cầu: Xây dựng chương trình tính chu vi và diện tích hình chữ nhật, gồm các chức năng:  Nhập vào chiều dài vào chiều rộng của hình chữ nhật: kiểu số thực double  Xuất ra diện tích và chu vi của hình chữ nhật: kiểu số thực double TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 6. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 2.3. Tính chu vi và diện tích tam giác  Yêu cầu 1  Nhập vào chiều dài 3 cạnh của hình tam giác: kiểu số thực double  Tính và xuất chu vi, diện tích của hình tam giác: kiểu số thực double  Yêu cầu 2  Nhập vào chiều dài 3 cạnh của hình tam giác: kiểu số nguyên int  Tính và xuất chu vi, diện tích của hình tam giác: kiểu số thực double  Yêu cầu 3  Nhập vào chiều dài 3 cạnh của hình tam giác: kiểu số nguyên int  Tính và xuất chu vi, diện tích của hình tam giác: kiểu số thực float 2.4. Tính số nút của 1 số nguyên (Bài về nhà)  Mục tiêu: Sử dụng toán tử %  Yêu cầu:  Nhập vào 1 số nguyên n có 4 chữ số  Tính và xuất ra số nút của số nguyên n  Ví dụ: n = 1234  số nút = 0 n = 2023  số nút = 7 TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 7. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0  Sử dụng kiểu tham chiếu  Mục tiêu: Sử dụng các kiểu dữ liệu loại tham chiếu 2.5. Tách chuỗi họ tên  Mục tiêu: - Sử dụng kiểu string với các phương thức và thuộc tính của kiểu này - Ứng dụng vào bài toán thực tế  Yêu cầu: - Nhập vào 1 chuỗi họ tên - Tách chuỗi và xuất ra phần họ, phần lót, phần tên của chuỗi họ tên. 2.6. Sử dụng kiểu tham chiếu  Mục tiêu: Sử dụng kiểu tham chiếu StringBuilder  Yêu cầu: - Nhập vào 2 giá trị từ 2 ô TextBox, sau đó cập nhật 2 giá trị này vào 2 biến có kiểu StringBuilder - Tiếp theo, gán biến 1 bằng biến 2, sau đó cập nhật giá trị của một trong 2 biến, xuất kết quả của biến còn lại ra màn hình - Giao diện Form như sau: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 8. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0  Hướng dẫn: - Khai báo 2 biến kiểu StringBuilder dùng chung trong Form StringBuilder strb1; StringBuilder strb2; - Xử lý sự kiện Load của Form strb1 = new StringBuilder("Hoa Lan"); strb2 = new StringBuilder("Hoa Hồng"); txtMot.Text = strb1.ToString(); txtHai.Text = strb2.ToString(); - Xử lý sự kiện Click của Button “Gán bằng” strb1 = strb2; txtMot.Text = strb1.ToString(); txtHai.Text = strb2.ToString(); - Xử lý sự kiện Click của Button “Cập nhật vào biến 1” strb1.Remove(0, strb1.Length); strb1.Append(txtMot.Text); //xuất xem biến 2 txtHai.Text = strb2.ToString(); // Quan sát giá trị của 2 biến và nhận xét - Xử lý sự kiện Click của Button “Cập nhật vào biến 2” strb2.Remove(0, strb2.Length); strb2.Append(txtHai.Text); //xuất xem biến 1 txtMot.Text = strb1.ToString(); // Quan sát giá trị của 2 biến và nhận xét - Xử lý sự kiện Click của Button “Làm lại” TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 9. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 strb1 = new StringBuilder("Hoa Lan"); strb2 = new StringBuilder("Hoa Hồng"); txtMot.Text = strb1.ToString(); txtHai.Text = strb2.ToString(); TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 10. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 BÀI 3: Cấu trúc điều khiển Sử dụng các cấu trúc điều khiển, cách bẫy lỗi và xử lý lỗi trong C#. 3.1. Xếp loại học tập  Mục tiêu: Sử dụng cấu trúc IF  Yêu cầu: - Nhập vào điểm học kỳ I, điểm học kỳ 2 - Tính Điểm trung bình, theo công thức: Điểm trung bình = (Điểm HKI + Điểm HKII*2)/3 - Tính Xếp loại học tập, theo quy tắc sau: o Điểm trung bình <5: yếu o 5 <= Điểm trung bình <6.5: trung bình o 6.5 <= Điểm trung bình < 8: khá o Điểm trung bình >=8: giỏi  Hướng dẫn: - Xây dựng màn hình có giao diện sau: - Xử lý sự kiện Click của Button “Đồng ý” private void btndong_y_Click(object sender, EventArgs e){ float diem_hki=float.Parse(txtdiem_hki.Text); float diem_hk2=float.Parse(txtdiem_hki.Text); float dtb=(diem_hki+diem_hkii*2)/3; dtb=(float)Math.Round(dtb,2); string xep_loai=””; if (dtb<5) xep_loai=”Yếu”; else if (dtb<6.5)  TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 11. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 xep_loai=”Trung bình”; else if (dtb<8) xep_loai=”Khá”; else xep_loai=”Giỏi”; txtxep_loai.Text=xep_loai; } - Xử lý sự kiện Click của Button “Làm lại” private void btndong_y_Click(object sender, EventArgs e){ txtdiem_hki.Text=””; txtdiem_hkii.Text=””; txtxep_loai.Text=””; } 3.2. Tìm ngày trước, ngày sau của một ngày  Mục tiêu: Sử dụng cấu trúc if và các phương thức của lớp DateTime  Yêu cầu: - Nhập vào ngày tháng (DateTime) cần tìm ngày trước và ngày sau - Tính và xuất ra ngày trước, ngày sau của ngày vừa nhập với giao diện sau: - Ví dụ: Ngày hiện tại: 01/01/2009  Ngày trước = 31/12/2008, ngày sau= 02/01/2009 3.3. Tính tiền điện (bài về nhà)  Mục tiêu: Sử dụng cấu trúc IF  Yêu cầu: - Nhập vào chỉ số đầu, chỉ số cuối của điện kế - Tính và xuất tiền điện phải trả dựa vào lượng điện năng tiêu thụ (tính bằng KW) theo quy tắc sau (có tính lũy tiến): KW Giá tiền TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 12. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 0 < KW <=100 500 100 < KW <=250 600 250 < KW <=300 800 KW > 300 1.000 3.4. Tính năm âm lịnh  Mục tiêu: Sử dụng cấu trúc switch  Yêu cầu: - Nhập vào năm dương lịch (Nam_duong) - Tính và xuất ra năm âm lịch ứng với năm dương lịch được nhập vào với quy ước tính năm âm lịch: Năm âm lịch được tính dự vào CAN + CHI trong đó CAN và CHI được tính theo quy tắc sau: Nam_duong % 10 0 1 2 3 4 5 6 7 8 9 CAN Canh Tân Nhâm Quý Giáp Ất Bính Đinh Mậu Kỷ Nam_duong % 12 0 1 2 3 4 5 6 7 8 9 10 11 CHI Thân Dậu Tuất Hợi Tí Sử Dần Mẹo Thìn Tỵ Ngọ Mùi - Ví dụ: năm dương lịch: 2009  năm âm lịch: Kỷ sửu TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 13. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 3.5. Tính số ngày trong tháng  Mục tiêu: Sử dụng cấu trúc switch  Yêu cầu: - Nhập vào tháng và năm dương lịch cần tìm số ngày - Tính và xuất ra số ngày của tháng năm đó 3.6. Tính ngày của mẹ, ngày của cha (Bài về nhà)  Mục tiêu: Sử dụng cấu trúc switch và các thuộc tính, phương thức của kiểu DateTime  Yêu cầu: - Nhập vào năm dương lịch - Xuất ra màn hình ngày của mẹ và ngày của cha trong năm, biết rằng: o Ngày của mẹ là ngày chủ nhật thứ 2 của tháng 5 o Ngày của cha là ngày chủ nhật thứ 3 của tháng 6 hàng năm. - Màn hình gợi ý: 3.7. In bảng cửu chương của một số  Mục tiêu: Sử dụng cấu trúc for  Yêu cầu: - Nhập vào một số nguyên TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 14. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 - In bảng cửa chương của số nguyên đó - Giao diện Form như sau:  Hướng dẫn: - Xử lý sự kiện Click của nút In bảng cửu chương: int cc = int.Parse(txtSo.Text); StringBuilder strb = new StringBuilder(); for (int i = 1; i <= 10; i++) { strb.AppendLine(cc.ToString("00") + " x " + i.ToString("00") + " = " + ((int)(cc * i)).ToString("00") ); } lblBang.Text = strb.ToString(); 3.8. In bảng cửu chương từ số đến số  Mục tiêu: Sử dụng cấu trúc for  Yêu cầu: - Nhập vào Từ số và Đến số - Xử lý và xuất Bảng cửu chương có dạng sau: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 15. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 3.9. Tính lãi suất ngân hàng (Bài về nhà)  Mục tiêu: sử dụng cấu trúc for  Yêu cầu: - Nhập vào số tiền gởi, lãi suất ngân hàng (tính theo năm) và số tháng gởi - Tính và xuất Số dư cuối kỳ và tiền lãi cuối kỳ, biết rằng: o Lãi suất tháng = (Lãi suất năm / 12) /100 o Tiền lãi tháng = Tiền gốc * Lãi suất tháng o Tiền lãi mỗi tháng sẽ được gộp chung vào tiền gốc o Tiền lãi cuối kỳ sẽ được tính lũy tiến từ tiền lãi mỗi tháng + tiền gốc Ví dụ: Nếu bạn gởi 10 triệu với lãi suất 12%/năm và gởi trong 6 tháng, thì tiền lãi cuối kỳ được tính như sau: o Lãi suất tháng = (12/12)/100  0.01 Tháng Tiển gốc + Lãi Tiền lãi tháng 1 10,000,000 100,000 2 10,100,000 101,000 3 10,201,000 102,010 4 10,303,010 103,030.1 5 10,406,040.1 104,060.401 6 10,510,100.5 105,101.005  Số dư cuối kỳ = 10,615,201.51  Tiền lãi cuối kỳ = 615,201.51 - Màn hình gợi ý: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 16. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 3.10. Thực hiện lại các bài 3.8, 3.9 và 3.10 bằng cách dùng vòng lặp while, do..while (Bài về nhà) TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 17. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 BÀI 4: Kiểu struct và kiểu Array Xây dựng và sử dụng kiểu dữ liệu do người dùng định nghĩa (struct). Khai báo và sử dụng mảng trong C# 4.1. Tạo và sử dụng kiểu Nhan_vien  Mục tiêu: Tạo và sử dụng kiểu cấu trúc (struct)  Yêu cầu: - Tạo kiểu Nhan_vien, với các thành phần: họ tên, Ngày sinh, hệ số lương, lương cơ bản và số con o Xây dựng hàm khởi tạo các thành phần trên o Xây dựng phương thức tính tiền lương, với: Tiền lương = Lương cơ bản + ( Số con * 100000) o Xây dựng phương thức xuất thông tin nhân viên ra màn hình có dạng: “Nguyễn Thanh Thúy – 32 tuổi – Số con: 2 – Tiền lương: 2500000 - Nhập thông tin nhân viên và xuất ra màn hình  Hướng dẫn: - Tạo cấu trúc Nhan_vien với các thành phần được khai báo Public + Họ tên nhân viên: string + Ngày sinh: DateTime + Lương cơ bản: double + Hệ số lương: double + Số con: int (cho phép chứa giá trị NULL) struct Nhan_vien { public string ho_ten; public DateTime ngay_sinh; public double he_so_luong; public double luong_co_ban; public int? so_con; } - Xây dựng phương thức khởi tạo cho cấu trúc Nhan_vien public Nhan_vien(string pHo_ten, DateTime pNgay_sinh, double pLuong_co_ban, double pHe_so_luong, int? pSo_con) { ho_ten = pHo_ten; ngay_sinh = pNgay_sinh; he_so_luong = pHe_so_luong;  TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 18. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 luong_co_ban = pLuong_co_ban; so_con = pSo_con; } - Xây dựng phương thức tính tiền lương cho nhân viên: public double Tinh_luong() { double tienluong = luong_co_ban * he_so_luong; tienluong += so_con.HasValue ? so_con.Value * 100000 : 0; return tienluong; } - Xây dựng phương thức ToString để hiển thị thông tin của nhân viên: public new string ToString() { int tuoi = DateTime.Now.Year - ngay_sinh.Year; return string.Format("{0} - {1} tuổi – Số con: {2} – Tiền lương: {3}", ho_ten, tuoi, so_con.HasValue ? so_con.Value : 0, Tinh_luong()); } - Xây dựng màn hình có giao diện sau: - Xử lý sự kiện Click của Button “Đồng ý” private void btndong_y_Click(object sender, EventArgs e) { Nhan_vien nv; nv.ho_ten = txtho_ten.Text; nv.ngay_sinh = DateTime.Parse(txtngay_sinh.Text); nv.luong_co_ban = double.Parse(txtluong_co_ban.Text); nv.he_so_luong = double.Parse(txthe_so_luong.Text); nv.so_con = txtso_con.Text != "" ? (int?)int.Parse(txtso_con.Text) : null; MessageBox.Show(nv.ToString()); TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 19. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 } - Xử lý sự kiện Click của Button “Làm lại” private void btnlamlai_Click(object sender, EventArgs e){ txtho_ten.Text = ""; txtngay_sinh.Text = ""; txthe_so_luong.Text = ""; txtluong_co_ban.Text = ""; txtso_con.Text = ""; } 4.2. Làm việc với mảng  Mục tiêu: - Sử dụng mảng và các thao tác xử lý thông dụng trên mảng - Sử dụng lớp Random và các phương thức của lớp này - Sử dụng các phương thức của lớp Array  Yêu cầu: - Nhập vào số phần tử - Tạo một Mảng số nguyên có số phần tử được nhập vào. Sau đó phát sinh giá trị cho từng phần tử, biết rằng giá trị được phát sinh ngẫu nhiên nằm trong khoảng [-50, 100] - Thực hiện các xử lý sau trên Mảng số nguyên, xuất kết quả ra MessageBox: 1. Tìm phần tử lớn nhất, phần tử nhỏ nhất trong mảng 2. Sắp xếp mảng tăng dần/ giảm dần 3. Tính tổng các phần tử trong mảng 4. Nhập vào 1 số nguyên X, tìm giá trị X ở trong mảng  Hướng dẫn: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 20. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 - Khai báo biến mảng số nguyên a toàn cục int[] a; - Xử lý sự kiện Click của Button “Tạo mảng” // Tạo mảng số nguyên a với kích thước bằng số phần tử vừa nhập int n = int.Parse(txtso_phan_tu.Text);a = new int[n]; // Khởi tạo mảng số nguyên a với các phần tử có giá trị ngẫu nhiên từ 50 đến 100 Random ngau_nhien=new Random(); for (int i=0;i<a.Length;i++) a[i]=ngau_nhien.Next(-50,101); // Xuất mảng số nguyên a lên màn hình string chuoi_a=a[0].ToString(); for (int i=1;i<a.Length;i++) chuoi_a=string.Format("{0} {1}",chuoi_a,a[i]); txtmang_so_nguyen_a.Text=chuoi_a; TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 21. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 BÀI 5: Tổng quan Lập trình hướng đối tượng Xây dựng và sử dụng các class cũng như các thành phần của class trong môi trường C# 5.1. Giải phương trình bậc nhất Ax + B = 0  Mục tiêu: Xây dựng class đơn giản với 1 phương thức  Yêu cầu: - Tạo class Phương trình bậc 1, gồm các thành phần sau: o Các thuộc tính: Hệ số a, hệ số b o Phương thức Giải phương trình. - Tạo form, trong đó: o Nhập Hệ số a và b o Giải phương trình và xuất ra nghiệm  Hướng dẫn: - Nhấn chuột phải lên project và chọn Add  Class - Trong cửa sổ Add New Item, nhập tên cho class là PHUONG_TRINH_BAC_I.CS - Khai báo các thành phần trong class: o Biến thành viên (Field): lưu trữ thông tin về hệ số a và hệ số b private float mHe_so_a; private float mHe_so_b; o Thuộc tính (Property): Truy xuất đến giá trị của các biến thành viên trong class public float He_so_a { get { return mHe_so_a; } set { mHe_so_a=value; } } public float He_so_b { get { return mHe_so_b; } set { mHe_so_b=value; } } o Phương thức khởi tạo (Constructor): Khởi tạo các giá trị ban đầu cho hệ số A và B public PHUONG_TRINH_BAC_I()  TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 22. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 { } public PHUONG_TRINH_BAC_I(float pHe_so_a, float pHe_so_b) { He_so_a=pHe_so_a; He_so_b=pHe_so_b; } o Phương thức giải phương trình tìm nghiệm public string Giaipt() { string kq; //lưu kết quả nghiệm của pt //Xét nghiệm của phương trình theo hệ số a if (mHe_so_a == 0) if (mHe_so_b == 0) kq ="PT có vô số nghiệm"; else kq = "PT vô nghiệm"; else kq = string.Format("Phương trình có nghiệm: x = {0}", - He_so_b / He_so_a); //trả về giá trị cho hàm return kq; } - Xây dựng màn hình có giao diện sau: o Xử lý sự kiện Click của Button “Giải PT” private void btngiai_pt_Click(object sender, EventArgs e){ float a=float.Parse(txthe_so_a.Text); float b=float.Parse(txthe_so_b.Text); PHUONG_TRINH_BAC_I pt_bac_1=new PHUONG_TRINH_BAC_I(a,b); txtnghiem.Text=pt_bac_1.Giaipt(); } o Xử lý sự kiện Click của Button “Làm lại” TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 23. Bài tập Nền tảng và lập trình hướng đối tượng với C# 4.0 private void btnlam_lai_Click(object sender, EventArgs e){ txthe_so_a.Text=””; txthe_so_b.Text=””; txtnghiem.Text=””; } 5.2. Xử lý phân số  Mục tiêu: xây dựng class và các phương thức tính toán khác nhau  Mô tả: xây dựng chương trình hỗ trợ người dùng thực hiện các phép toán cộng, trừ, nhân, chia trên các phân số  Yêu cầu: - Xây dựng class Phân số với các thành phần sau: o Thuộc tính: Tử số và Mẫu số o Phương thức khởi tạo không có tham số: gán giá trị mặc định cho Tử số và mẫu số là 1 o Phương thức khởi tạo có 2 tham số là Tử số và Mẫu số Các phương thức tính toán: o Phương thức Tối giản phân số: dùng để tối giản phân số (ví dụ: 2/4 tối giản thành 1/2) o Phương thức Cộng: tính tổng của 2 phân số và trả về phân số kết quả sau khi đã được tối giản o Phương thức Trừ: tính hiệu của 2 phân số và trả về phân số kết quả sau khi đã được tối giản o Phương thức Nhân: tính tích của 2 phân số và trả về phân số kết quả sau khi đã được tối giản o Phương thức Chia: tính thương của 2 phân số và trả về phân số kết quả sau khi đã được tối giản o Phương thức Xuất: xuất phân số kết quả ra màn hình có dạng <Tử số>/<Mẫu số> Trong đó: db cbda d c b a * **   db cbda d c b a * **   db ca d c b a * * *  cb da d c b a * * :   Hướng dẫn: - Tạo class PhanSo, gồm các thành phần yêu cầu trên o Xây dựng phương thức Tối giản như sau: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 24. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 24/64 private PhanSo Toigian(PhanSo pso) { PhanSo ps = new PhanSo(); int us = uscln(pso.Tuso, pso.Mauso); ps.Tuso = pso.Tuso / us; ps.Mauso = pso.Mauso / us; return ps; } private int uscln(int so_1, int so_2) { int a = Math.Abs(so_1), b = Math.Abs(so_2); while (a != b) { if (a > b) a -= b; else b -= a; } return a; } //Lưu ý: Học viên phải kiểm tra tính hợp lệ của tử số và mẫu số trước khi gọi hàm này - Xây dựng phương thức Cộng như sau: public PhanSo Cong(PhanSo p) { PhanSo kq = new PhanSo(); kq.Tuso = Tuso * p.Mauso + Mauso * p.Tuso; kq.Mauso = Mauso * p.Mauso; return Toigian(kq); } //Tương tự, học viên xây dựng 3 phương thức còn lại - Xây dựng màn hình có giao diện sau: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 25. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 25/64 o Xây dựng phương thức Tạo phân số: xử lý chuỗi nhập của Phân số và trả về Phân số //Phương thức này được xây dựng trong class Form private PhanSo Tao_phan_so(string chuoi) { string[] s = chuoi.Split('/'); int tu = int.Parse(s[0]); int mau = int.Parse(s[1]); return new PhanSo(tu, mau); } o Xử lý sự kiện Click của Button “Cộng” PhanSo p1 = Tao_phan_so(txtphan_so_1.Text); PhanSo p2 = Tao_phan_so(txtphan_so_2.Text); PhanSo kq = p1.Cong(p2); txtket_qua.Text = kq.Xuat(); //Tương tự, xử lý các nút còn lại 5.3. Xử lý phân số nâng cao  Mục tiêu: xây dựng class và các phương thức nạp chồng toán tử  Yêu cầu: - Giống yêu cầu của bài 4.2, nhưng viết lại (hoặc bổ sung) các phương thức nạp chồng toán tử +, -, *, /, ==, != - Bổ sung nút So sánh 2 phân số trên Form, dùng để so sánh hai phân số nhập vào có bằng nhau không TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 26. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 26/64 - Mở rộng: Học viên có thể bổ sung các nút So sánh lớn hơn, So sánh nhỏ hơn 5.4. Nhập xuất thông tin hóa đơn (Bài về nhà)  Mục tiêu: - Xây dựng class và tổng hợp các kiến thức đã học (Array, Class, string, StringBuilder …) - Ứng dụng bài toán thực tế  Yêu cầu: xây dựng ứng dụng hỗ trợ nhập xuất thông tin Hóa đơn bán hàng theo mô tả sau: - Thông tin hóa đơn gồm có: Số hóa đơn, Ngày lập hóa đơn, Khách hàng và Danh sách các sản phẩm được mua - Thông tin sản phẩm gồm có: Tên sản phẩm, Đơn giá sản phẩm, Số lượng mua và Thành tiền. - Sau khi nhập đầy đủ Thông tin hóa đơn và Chi tiết hóa đơn, người dùng được phép xem thông tin của Hóa đơn bán hàng  Hướng dẫn: - Xây dựng hai class: HoaDon và SanPham - Khai báo các biến dùng chung trên Form: 1 biến kiểu HoaDon, 1 biến mảng kiểu SanPham, 1 biến kiểu int (dùng lưu trữ số sản phẩm, cũng là số phần tử của mảng) - Gợi ý giao diện của Form: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 27. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 27/64 TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 28. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 28/64 BÀI 6: Tính Thừa kế và Đa hình Xây dựng và sử dụng các class kế thừa từ class khác Sử dụng tính đa hình của class 6.1. Quản lý thông tin nhân viên  Mục tiêu: Xây dựng class kế thừa và áp dụng kỹ thuật Late Binding  Mô tả: Xây dựng ứng dụng quản lý lương của công ty Z. - Thông tin của nhân viên gồm: Họ tên nhân viên, Giới tính, Ngày sinh, Ngày vào làm, Hệ số lương, Lương cơ bản, Thâm niên và Định mức số ngày vắng (mặc định là 3 ngày). Trong đó: o Lương cơ bản: dùng chung cho tất cả các nhân viên trong công ty o Thâm niên = Năm hiện hành – Năm vào làm - Nhân viên của công ty được chia làm 2 loại: o Nhân viên văn phòng: có thêm thông tin về Số ngày vắng và Đơn giá phạt cho từng ngày vắng (mặc định là 100.000/ngày). Các khoản phạt, thưởng và lương như sau:  Tiền phạt: Tiền phạt = đơn giá phạt x Số ngày vắng vượt quá định mức.  Tiền thưởng: 10% của (Lương cơ bản * Hệ số lương)  Lương: (Lương cơ bản * Hệ số lương) + Tiền thưởng – Tiền phạt o Nhân viên sản xuất: có thêm thông tin về Số ngày vắng , Số lượng sản phẩm, Định mức sản phẩm (mặc định là 1,000), và Đơn giá sản phẩm (mặc định là 10,000/sản phẩm). Riêng Định mức số ngày vắng sẽ tăng lên 2 ngày. Các khoản thưởng và lương như sau:  Tiền thưởng: Số sản phẩm vượt định mức x đơn giá sản phẩm x 0.05 Tuy nhiên, nếu Số ngày vắng > Định mức vắng thì: Tiền thưởng = Tiền thưởng - Số ngày vắng vượt quá định mức * (Tiền thưởng *0.01)  Lương: (Lương cơ bản * Hệ số lương) + Tiền thưởng  Yêu cầu: xây dựng chương trình hỗ trợ nhập thông tin nhân viên, tính các khoản phạt, thưởng, lương và xuất kết quả ra màn hình  Hướng dẫn: - Xây dựng lớp Nhan_vien class Nhan_vien { private string mHo_ten; private DateTime mNgay_sinh; private DateTime mNgay_vao_lam; private double mHe_so_luong; private Gioi_tinh mGioi_tinh; public static double mLuong_co_ban = 830000; protected int Dinh_muc_vang = 3;  TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 29. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 29/64 public string Ho_ten { get { return mHo_ten; } set { mHo_ten = value; } } public DateTime Ngay_sinh { get { return mNgay_sinh; } set { mNgay_sinh = value; } } public DateTime Ngay_vao_lam { get { return mNgay_vao_lam; } set { mNgay_vao_lam = value; } } public double He_so_luong { get { return mHe_so_luong; } set { mHe_so_luong = value; } } public Gioi_tinh Gioi_tinh { get { return mGioi_tinh; } set { mGioi_tinh = value; } } public Nhan_vien() { } public Nhan_vien(string _ho_ten, DateTime _ngay_sinh, DateTime _ngay_vao_lam, Gioi_tinh _gioi_tinh, double _he_so_luong) { Ho_ten = _ho_ten; Ngay_sinh = _ngay_sinh; Ngay_vao_lam = _ngay_vao_lam; Gioi_tinh = _gioi_tinh; He_so_luong = _he_so_luong; } public virtual double Tinh_luong() { double tienluong = mLuong_co_ban * He_so_luong; return tienluong; } public int Tham_nien { get { return DateTime.Today.Year - Ngay_vao_lam.Year; } } public virtual double Tinh_thuong() { return Tham_nien * 500000; } public override string ToString() { return string.Format("Thông tin lương của {0}", Ho_ten); } TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 30. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 30/64 } - Xây dựng class NVVP kế thừa từ class Nhan_vien: class NVVP : Nhan_vien { int mSo_ngay_vang; private static double mDon_gia_phat = 100000; public int So_ngay_vang { get { return mSo_ngay_vang; } set { mSo_ngay_vang = value; } } public static double Don_gia_phat { get { return mDon_gia_phat; } set { mDon_gia_phat = value; } } public NVVP(string _ho_ten, DateTime _ngay_sinh, DateTime, ngay_vao_lam, Gioi_tinh _gioi_tinh, double _he_so_luong) : base(_ho_ten, _ngay_sinh, _ngay_vao_lam, _gioi_tinh, _he_so_luong) { } public NVVP(string _ho_ten, DateTime _ngay_sinh, DateTime _ngay_vao_lam, Gioi_tinh _gioi_tinh, double _he_so_luong,int _so_ngay_vang) : base(_ho_ten, _ngay_sinh, _ngay_vao_lam, _gioi_tinh, _he_so_luong) { So_ngay_vang = _so_ngay_vang; } public double Tinh_phat() { double tien = 0; if (So_ngay_vang > base.Dinh_muc_vang) tien = (So_ngay_vang - base.Dinh_muc_vang) * Don_gia_phat; return tien; } public override double Tinh_thuong() { return base.Tinh_luong() * 0.1; } public override double Tinh_luong() { retun base.Tinh_luong() + (base.Tinh_luong() * 0.1) - Tinh_phat(); } TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 31. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 31/64 public override string ToString() { return string.Format("{0}nLoại nhân viên: Nhân viên văn phòngnTiền thưởng: {1}n"+ "Tiền phạt: {2} n"+ "Tiền lương: {3} n" +"Còn lãnh: {4}" ,base.ToString(), Tinh_thuong().ToString("#,##0.00"),Tinh_phat().ToString("#,##0.00"), base.Tinh_luong().ToString("#,##0.00"), this.Tinh_luong().ToString("#,##0.00")); } } - Tương tự, xây dựng lớp NVSX theo mô tả trên class NVSX : Nhan_vien { int mSo_san_pham; int mSo_ngay_vang; static int mDinh_muc_san_pham = 1000; static double mDon_gia_san_pham = 10000; public static int Dinh_muc_san_pham { get { return mDinh_muc_san_pham; } set { mDinh_muc_san_pham = value; } } public static double Don_gia_san_pham { get { return mDon_gia_san_pham; } set { mDon_gia_san_pham = value; } } //Tiếp tục cho các khai báo còn lại … } - Xây dựng màn hình có giao diện sau: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 32. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 32/64 - Xử lý sự kiện Load của Form txtluong_co_ban.Text = Nhan_vien.luong_co_ban.ToString(); - Xử lý sự kiện Click của Button “Đồng ý” string ho_ten = txtho_ten.Text; DateTime ngay_sinh = DateTime.Parse(txtngay_sinh.Text); DateTime ngay_vao_lam = DateTime.Parse(txtngay_vao_lam.Text); Gioi_tinh gioi_tinh = cbgioi_tinh.Checked == true ? Gioi_tinh.Nữ : Gioi_tinh.Nam; double he_so_luong = double.Parse(txthe_so_luong.Text); int so_ngay_vang = int.Parse(txtgia_tri.Text); Nhan_vien nv; if (rbnvvp.Checked == true) nv = new NVVP(ho_ten, ngay_sinh, ngay_vao_lam, gioi_tinh, he_so_luong, so_ngay_vang); else { int so_san_pham = int.Parse(txtSosp.Text); nv = new NVSX(ho_ten, ngay_sinh, ngay_vao_lam, gioi_tinh, he_so_luong, so_ngay_vang, so_san_pham); } MessageBox.Show(nv.ToString());  Kết quả kết xuất TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 33. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 33/64 6.2. Quản lý danh sách máy tính (Bài về nhà)  Mục tiêu: Xây dựng class kế thừa và áp dụng tính chất đa hình  Yêu cầu: Xây dựng chương trình nhập và xuất danh sách Máy tính. Trong đó máy tính có 2 loại là Máy tính để bàn và Máy tính xách tay - Máy tính để bàn gồm các thông tin: Số hiệu, Đơn giá và Hãng sản xuất, CPU và RAM - Máy tính xách tay gồm các thông tin: Số hiệu, Đơn giá và Hãng sản xuất, Trọng lượng, Thời gian PIN và Kích thước màn hình  Hướng dẫn: - Xây dựng class MAY_TINH với các thông tin: Số hiệu, Đơn giá và Hãng sản xuất o Xây dựng phương thức Hiển thị thông tin: cho phép ghi đè (virtual) và trả về chuỗi gồm các thông tin: Số hiệu, Đơn giá và Hãng sản xuất - Xây dựng class MAY_TINH_DE_BAN được dẫn xuất từ lớp MAY_TINH gồm 2 thông tin: CPU, RAM o Phương thức khởi tạo (không có cũng được) o Xây dựng phương thức Hiển thị thông tin: cài đặt lại phương thức tính Hiển thị thông tin của class MAY_TINH, cộng thêm vào chuỗi trả về thông tin: CPU và RAM - Xây dựng class MAY_TINH_XACH_TAY được dẫn xuất từ lớp MAY_TINH các thông tin: Trọng lượng, Thời gian PIN, Kích thước màn hình o Phương thức khởi tạo (không có cũng được) o Xây dựng phương thức Hiển thị thông tin: cài đặt lại phương thức tính Hiển thị thông tin của class MAY_TINH, cộng thêm vào chuỗi trả về thông tin: Trọng lượng, Thời gian PIN và Kích thước màn hình. - Giao diện gợi ý: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 34. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 34/64 TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 35. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 35/64 BÀI 7: Delegate và Event Khai báo và sử dụng Delegate Khai báo và phát sinh Event 7.1. Quản lý thông tin nhân viên  Mục tiêu: - Xây dựng class và sử dụng từ khóa public static. Sử dụng thuộc tính Read-only - Xây dựng và sử dụng sự kiện  Mô tả: Xây dựng chương trình quản lý thông tin nhân viên cho công ty X  Yêu cầu: - Xây dựng class Nhân viên bao gồm các thông tin: Họ tên nhân viên, Giới tính, Ngày sinh, Ngày vào làm, Hệ số lương, Lương cơ bản và Thâm niên. Trong đó: o Lương cơ bản dùng chung cho tất cả các nhân viên trong công ty o Thâm niên được tính bằng công thức: Năm hiện hành – Năm vào làm - Xây dựng phương thức tính tiền lương, biết rằng: Tiền lương = Lương cơ bản * Hệ số lương - Xây dựng phương thức tính tiền thưởng, biết rằng: Tiền thưởng = Thâm niên * 500000 - Phát ra thông báo nếu Hệ số lương có thay đổi  Hướng dẫn: - Sử dụng lại class Nhanvien đã xây dựng trong Bài 6.1, bổ sung thêm:  Khai báo sự kiện: public delegate void Xuly(string chuoi); public event Xuly Tang_luong; //Học viên có thể dùng delegate của hệ thống  Phát sinh sự kiện public double He_so_luong { get { return mHe_so_luong; } set { mHe_so_luong = value; if (Tang_luong != null) Tang_luong("Bạn đã được tăng lương"); } } - Màn hình gợi ý:  TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 36. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 36/64 TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 37. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 37/64 BÀI 8: Lớp trừu tượng, lớp giao tiếp Xây dựng và sử dụng các class trừu tượng, lớp giao tiếp Sử dụng các lớp giao tiếp được xây dựng sẵn trong C# 8.1. Quản lý các lớp hình học  Mục tiêu: Xây dựng và sửng dụng class trừu tượng (Abstract)  Yêu cầu: Xây dựng chương trình nhập, tính toán và xuất Chu vi, Diện tính của Hình tròn, hình chữ nhật và hình tam giác o Thông tin của hình tròn: Bán kính o Thông tin của chữ nhật: Chiều dài và chiều rộng o Thông tin của hình tam giác: Cạnh A, cạnh B và cạnh C  Hướng dẫn - Xây dựng class trừu tượng HinhHoc với hai phương thức trừu tượng tính diện tích và chu vi như sau: abstract class HinhHoc { public abstract double Dien_tich(); public abstract double Chu_vi(); public virtual string Xuat_thong_tin() { return "Thông tin của hình "; } } - Xây dựng lớp HinhTron được dẫn xuất từ lớp HinhHoc: class HinhTron : HinhHoc { public double Bankinh { get; set; } public override double Chu_vi() { return Math.PI * 2 * Bankinh; } public override double Dien_tich() { return Math.PI * Bankinh * Bankinh; } public override string Xuat_thong_tin() {  TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 38. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 38/64 return base.Xuat_thong_tin() + "Tròn"; } } - Tương tự, học viên xây dựng lớp HinhChuNhat, HinhTamGiac được dẫn xuất từ lớp HinhHoc - Xây dựng màn hình có giao diện sau: - Xử lý sự kiện click của nút Tính: HinhHoc h; if (rbhinh_tron.Checked == true) { double bankinh = double.Parse(txtBk.Text); h = new HinhTron { Bankinh = bankinh }; } else if (rbhinh_chu_nhat.Checked == true) { double dai = double.Parse(txtCd.Text); double rong = double.Parse(txtCr.Text); h = new HinhChuNhat { Chieudai = dai, Chieurong = rong }; } else { double a = double.Parse(txtCa.Text); double b = double.Parse(txtCb.Text); double c = double.Parse(txtCc.Text); h = new HinhTamGiac { CanhA = a, CanhB = b, CanhC = c }; } lblThongtin.Text = h.Xuat_thong_tin(); txtCv.Text = h.Chu_vi().ToString("#,##0.00"); TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 39. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 39/64 txtDt.Text = h.Dien_tich().ToString("#,##0.00"); 8.2. Quản lý đối tượng hình học  Mục tiêu: Sử dụng lớp giao tiếp được xây dựng sẵn trong C#  Yêu cầu: - Xây dựng chương trình nhập, tính toán và xuất Chu vi, Diện tính của Hình tròn, hình chữ nhật và hình tam giác o Thông tin của hình tròn: Bán kính o Thông tin của chữ nhật: Chiều dài và chiều rộng o Thông tin của hình tam giác: Cạnh A, cạnh B và cạnh C o Xuất các thông tin hình ra màn hình, có sắp xếp theo Chu vi hoặc Diện tích  Hướng dẫn: - Xây dựng lớp các lớp HinhHoc, HinhTron, HinhChuNhat, HinhTamGiac: giống bài 8.1 - Sau đó, bổ sung vào lớp HinhHoc như sau: abstract class HinhHoc : IComparable { … public int CompareTo(object obj) { HinhHoc hh = (HinhHoc)obj; //if (ChuVi() > hh.ChuVi()) // return 1; //else if (ChuVi() < hh.ChuVi()) // return -1; if (DienTich() > hh.DienTich()) return 1; else if (DienTich() < hh.DienTich()) return -1; return 0; } } - Xây dựng màn hình có dạng sau: So sánh theo diện tích So sánh theo chu vi TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 40. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 40/64 o Khai báo các biến toàn cục trong màn hình HinhHoc[] h; int sopt=0; o Xử lý Form_Load h=new HinhHoc[sopt]; o Xử lý xuất danh sách hình học public void Xuat() { StringBuilder sb = new StringBuilder(); for (int i = 0; i < h.Length; i++) sb.AppendLine(h[i].Xuat_thong_tin()); txtkq.Text = sb.ToString(); } o Xử lý Button Thêm hình tròn Array.Resize<HinhHoc>(ref h, sopt + 1); double bankinh = double.Parse(txtbankinh.Text); h[sopt] = new HinhTron { Bankinh = bankinh }; TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 41. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 41/64 sopt++; Xuat(); o Xử lý Button Thêm hình chữ nhật Array.Resize<HinhHoc>(ref h, sopt + 1); double dai = double.Parse(txtdai.Text); double rong = double.Parse(txtrong.Text); h[sopt] = new HinhChuNhat { Chieudai= dai, Chieurong= rong }; sopt++; Xuat(); o Xử lý Button Thêm hình tam giác Array.Resize<HinhHoc>(ref h, sopt + 1); double a = double.Parse(txta.Text); double b = double.Parse(txtb.Text); double c = double.Parse(txtc.Text); h[sopt] = new HinhTamGiac { CanhA=a, CanhB=b, CanhC=c }; sopt++; Xuat(); o Xử lý Button Sắp xếp Array.Sort(h); Xuat(); Lưu ý: Học viên sửa lại phương thức Xuat_thong_tin cho phù hợp với bài tập này TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 42. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 42/64 BÀI 9: Collections và Generic Sử dụng các lớp Collection và Generic Collection trong C# 9.1. Quản lý danh sách học viên  Mục tiêu: Tạo và sử dụng đối tượng kiểu ArrayList  Yêu cầu: - Xây dựng chương trình thêm danh sách học viên (DSHV) mới vào danh sách cũ. Cách thêm như sau: Thêm DSHV mới vào cuối DSHV cũ, sau đó sắp xếp lại (Hình 2) - Thiết kế màn hình với giao diện như sau: Hình 1: Lúc mới mở màn hình  Hướng dẫn: - Khai báo 2 biến toàn cục lưu danh sách học viên ArrayList hocvien = new ArrayList(); ArrayList hocvienmoi = new ArrayList(); - Xử lý sự kiện Form Load: //Khởi tạo ArrayList chứa danh sách tên các học viên trong lớp hocvien.Add("Nguyễn Bảo Anh"); hocvien.Add("Phạm Chi Bảo"); hocvien.Add("Phạm Lan Chi"); hocvien.Add("Trần Văn Hùng");  TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 43. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 43/64 hocvien.Add("Nguyễn Dung"); hocvien.Add("Hoàng Ngọc Linh"); hocvien.Add("Trần Anh Tài"); // hiển thị danh sách học viên cũ StringBuilder sb = new StringBuilder(); for (int i = 0; i < hocvien.Count; i++) sb.AppendLine(hocvien[i].ToString()); txtdanhsachcu.Text = sb.ToString(); // Khởi tạo ArrayList chứa danh sách tên của các học viên mới hocvienmoi.Add("Đỗ Thiên Nga"); hocvienmoi.Add("Phạm Quỳnh Anh"); hocvienmoi.Add("Lê Quỳnh Hoa"); hocvienmoi.Add("Lý Thiên Thanh"); hocvienmoi.Add("Nguyễn Dung"); // hiển thị danh sách học viên mới sb = new StringBuilder(); for (int i = 0; i < hocvienmoi.Count; i++) sb.AppendLine(hocvienmoi[i].ToString()); txtdanhsachmoi.Text = sb.ToString() - Nút Thêm HV mới: //thêm mới và sắp xếp for (int i = 0; i < hocvienmoi.Count; i++) hocvien.Add(hocvienmoi[i]); hocvien.Sort(); //Xuất ra màn hình StringBuilder sb = new StringBuilder(); for (int i = 0; i < hocvien.Count; i++) sb.AppendLine(hocvien[i].ToString()); txtdanhsachcu.Text = sb.ToString(); - Kết quả sau khi chèn danh sách học viên mới: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 44. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 44/64 Hình 2: Kết quả sau khi chèn 9.2. Quản lý danh sách học viên  Mục tiêu: Tạo và sử dụng đối tượng kiểu SortedList  Yêu cầu: - Xây dựng chương trình thêm danh sách học viên (DSHV) mới vào danh sách cũ. Thông tin học viên gồm có: Mã học viên và Họ tên học viên - Xây dựng màn hình như sau: - Sau khi thêm DSHV mới vào: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 45. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 45/64  Hướng dẫn: - Khai báo 2 biến SortedList toàn cục lưu 2 danh sách học viên SortedList hocvien = new SortedList(); SortedList hocvienmoi = new SortedList(); - Xử lý sự kiện Form Load: // Tạo danh sách học viên cũ hocvien.Add("001","Nguyễn Bảo Anh"); hocvien.Add("003","Phạm Chi Bảo"); …… // Tạo danh sách học viên mới hocvienmoi.Add("002","Đỗ Thiên Nga"); hocvienmoi.Add("005","Phạm Quỳnh Anh"); ….. // Xuất danh sách học viên ra màn hình StringBuilder sb = new StringBuilder(); for (int i = 0; i < hocvien.Count; i++) sb.AppendLine(hocvien.GetKey(i).ToString()+" "+hocvien.GetByIndex(i).ToString()); txtdanhsachcu.Text = sb.ToString(); //Tương tự xuất danh sách học viên mới ….. - Xử lý nút Thêm HV mới: for (int i=0; i < hocvienmoi.Count; i++) hocvien.Add(hocvienmoi.GetKey(i).ToString(), hocvienmoi.GetByIndex(i).ToString()); StringBuilder sb = new StringBuilder(); TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 46. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 46/64 for (int i = 0; i < hocvien.Count; i++) sb.AppendLine(hocvien.GetKey(i).ToString()+" " + hocvien.GetByIndex(i).ToString()); txtdanhsachcu.Text = sb.ToString(); 9.3. Chuyển số thành chữ  Mục tiêu: Tạo và sử dụng đối tượng kiểu HashTable  Yêu cầu: - Xây dựng chương trình chuyển đổi số thành chuỗi (Ví dụ: 3541  Ba năm bốn một) - Xây dựng màn hình như sau:  Hướng dẫn: - Xử lý nút Đồng ý //Khai báo mảng chuỗi các ký số: string[] kyso ={"0","1","2","3","4","5","6","7","8","9" }; //Khai báo mảng chuỗi các chuỗi ký tự tương ứng với các ký số string[] kytu = { "Không", "Một", "Hai", "Ba", "Bốn", "Năm", "Sáu", "Bảy", "Tám", "Chín" }; //Tạo HashTable với mảng chuỗi ký số là key và chuỗi ký tự là value Hashtable h = new Hashtable(); for (int i = 0; i < kyso.Length; i++) h.Add(kyso[i], kytu[i]); string chuoiso = txtso.Text; string chuoi = ""; for (int i = 0; i < chuoiso.Length; i++) chuoi += h[chuoiso[i].ToString()]+" "; txtchuoi.Text = chuoi; 9.4. Đọc 3 số (Bài về nhà)  Mục tiêu: Tạo và sử dụng đối tượng HashTable kết hợp với cấu trúc điều khiển  Yêu cầu: - Xây dựng chương trình đọc 1 số (tối đa là 3 ký số) thành chuỗi (Ví dụ: 341  Ba trăm bốn mươi mốt) - Màn hình gợi ý: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 47. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 47/64 9.5. Bài về nhà  Mục tiêu: Sử dụng đối tượng kiểu Generic Colections  Yêu cầu: Thực hiện lại các bài tập trên, sử dụng Generic Collections. TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 48. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 48/64 BÀI 10: Các kiến thức cơ bản về SQL Server  Sử dụng tiện ích SQL Server Management Studio (SSMS)  Tạo cơ sở dữ liệu, tạo các bảng và các quan hệ ràng buộc khóa ngoại  Viết các câu lệnh truy vấn dữ liệu trên các bảng  Viết các câu lệnh cập nhật dữ liệu trên các bảng 10.1.Tạo cơ sở dữ liệu QLSV (bằng tiện ích SSMS)  Mô tả Cơ sở dữ liệu Quản lý Sinh viên cho phép lưu trữ thông tin các sinh viên trong các khoa và kết quả học tập của các sinh viên theo môn học  Tạo cấu trúc các bảng Các Field được gạch dưới và in đậm là khóa chính của bảng Khoa – Danh mục khoa Field Name Field Type Field Size Format Description KhoaID Char 2 Mã khoa TenKhoa NVarchar 50 Tên khoa MonHoc – Danh mục môn học Field Name Field Type Field Size Format Description MonHocID Char 2 Mã môn TenMonHoc NVarchar 50 Tên môn SinhVien – Danh mục sinh viên Field Name Field Type Field Size Format Description SinhVienID Char 3 Mã sinh viên HoSinhVien NVarchar 30 Họ TenSinhVien NVarchar 20 Tên NgaySinh DateTime Ngày sinh GioiTinh Bit True: Nam; False: Nữ DiaChi NVarchar 50 Địa chỉ HocBong Int Học bổng KhoaID Char 2 Mã khoa KetQua – Kết quả học tập Field Name Field Type Field Size Format Description SinhVienID Char 3 Mã sinh viên MonHocID Char 2 Mã môn Diem Real Điểm  Tạo Database Diagram với các quan hệ theo mô tả sau: Bảng cha Khoa và bảng con SinhVien quan hệ theo cột KhoaID Bảng cha SinhVien và bảng con KetQua quan hệ theo cột SinhVienID Bảng cha MonHoc và bảng con KetQua quan hệ theo cột MonHocID  TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 49. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 49/64  Nhập dữ liệu mẫu Khoa Mã khoa Tên khoa CN Khoa Công nghệ thông tin TO Khoa Toán VL Khoa Lý MonHoc Mã môn Tên môn CO Cơ lý thuyết CS Cơ sở dữ liệu CT Cấu trúc dữ liệu LT Lượng tử RR Toán rời rạc TC Toán cao cấp TT Trí tuệ nhân tạo SinhVien Mã Họ Tên Ngày sinh Giới tính Học bổng Mã khoa C00 Nguyễn Thị Trang 13/8/1991 False 100000 CN C01 Hà Tuấn 24/2/1991 True 0 CN C02 Trần Ngọc Hoà 11/6/1990 False 120000 CN C03 Bùi Thị Thảo 26/2/1990 False 100000 CN C04 Nguyễn Hoàng Hưng 19/3/1990 True 150000 CN T00 Lê Tuấn 15/2/1991 True 0 TO T01 Bùi Minh Khánh 9/4/1990 True 120000 TO T02 Trần Thị Lan 4/3/1990 False 100000 TO T03 Lê Thiện 18/5/1990 True 0 TO T04 Lê Thị Thảo 27/3/1990 False 120000 TO KetQua Mã sinh viên Mã môn học Điểm C00 CS 10 C00 CT 9 C00 TT 7 C00 RR 8.5 C01 CS 7 TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 50. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 50/64 C01 CT 6 C01 TT 7 C01 RR 9 C02 CS 7.5 C02 CT 4 C02 TT 5 C02 RR 3 C03 CS 9 C03 CT 1 C03 TT 8.5 C03 RR 9 C04 CS 2 C04 CT 1 10.2.Truy vấn dữ liệu (bằng câu lệnh) Ghi chú: các bài có đánh dấu (*) là bài về nhà  Truy vấn đơn giản a. Liệt kê danh sách sinh viên gồm các cột Mã, Họ và Tên, Ngày sinh, Giới tính, Học bổng. Có sắp tăng theo cột học bổng Mẫu: Mã Họ tên Ngày sinh Phái Học bổng C00 Nguyễn Thị Trang 8/13/1991 Nữ 100000 C04 Nguyễn Hoàng Hưng 3/19/1990 Nam 150000 … Hướng dẫn: thể hiện cột Phái là Nam/Nữ CASE WHEN GioiTinh='true' THEN 'Nam' ELSE N'Nữ' END b. Liệt kê danh sách sinh viên gồm các cột Mã, Họ, Tên, Ngày sinh, Giới tính, Học bổng. Chỉ liệt kê các sinh viên học khoa “Công nghệ thông tin” và có học bổng >3,000,000 c. Liệt kê danh sách sinh viên gồm các cột Mã, Họ, Tên, Ngày sinh, Giới tính, Học bổng. Chỉ liệt kê các sinh viên có tên bắt đầu là ‘T’ d. Liệt kê danh sách sinh viên gồm các cột Mã, Họ, Tên, Ngày sinh, Giới tính, Học bổng. Chỉ liệt kê các sinh viên có học bổng từ 100000 đến 120000 e. Liệt kê danh sách sinh viên gồm các cột Mã, Họ, Tên, Ngày sinh, Học bổng. Chỉ liệt kê các sinh viên có học bổng và ngày sinh nằm trong khoảng [1/6/1990, 30/6/1991] f. Hiển thị danh sách 10 sinh viên đầu tiên có học bổng từ cao đến thấp (Hướng dẫn: dùng TOP 10 và ORDER BY … DESC)  Truy vấn trên nhiều bảng a. Liệt kê danh sách sinh viên gồm các cột mã, họ, tên, ngày sinh, giới tính, mã khoa, tên khoa b. Liệt kê kết quả học tập gồm các cột mã sinh viên, họ và tên, mã môn học, điểm c. Liệt kê danh sách các sinh viên (gồm các cột mã, họ tên, ngày sinh) có học môn ‘Cơ sở dữ liệu’ d. Liệt kê danh sách các sinh viên (gồm các cột mã, họ tên, ngày sinh) đạt điểm 10 trong bài thi e. Liệt kê danh sách các sinh viên (gồm các cột mã, họ tên, ngày sinh) có điểm thi môn ‘Toán cao cấp’ nhỏ hơn 5 (*) f. Cho biết danh sách các môn học chưa có sinh viên đăng ký (*) TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 51. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 51/64 g. Cho biết danh sách các sinh viên (gồm các cột mã, họ tên, ngày sinh) chưa đăng ký học môn học nào (*)  Truy vấn có nhóm a. Thống kê tổng số sinh viên theo khoa. Có sắp tăng theo tổng số sinh viên Mẫu: Mã khoa Tổng số sinh viên TO 30 CN 40 … b. Thống kê tổng học bổng theo khoa. Chỉ hiển thị những khoa có tổng học bổng >=3,000,000 Mẫu: Mã khoa Tên khoa Tổng học bổng CN Khoa Công nghệ thông tin 3,500,000 … c. Hiển thị danh sách sinh viên gồm mã, họ tên và điểm trung bình các môn học mà sinh viên có đăng ký học d. Hiển thị danh sách khoa gồm mã khoa, tên khoa và điểm trung bình của tất cả các sinh viên trong khoa e. Hiển thị danh sách sinh viên gồm mã, họ tên, điểm trung bình và kết quả xếp loại học tập của sinh viên, trong đó kết quả xếp loại học tập được xét dựa trên điểm trung bình theo quy tắc sau: (*) Điều kiện Xếp loại Điểm trung bình < 5 Yếu 5 <= Điểm trung bình < 6.5 Trung bình 6.5 <= Điểm trung bình < 8 Khá Điểm trung bình >= 8 Giỏi f. Hiển thị danh sách các môn học cùng với điểm thi cao nhất mà sinh viên đã đạt được trong môn học đó, kết quả trả về gồm mã môn, tên môn, điểm thi cao nhất của sinh viên (*) g. Hiển thị danh sách các môn học cùng với số lượng sinh viên đã đăng ký học các môn học đó, kết quả trả về gồm mã môn, tên môn, số lượng sinh viên đã đăng ký (*) h. Hiển thị danh sách các môn học có số lượng sinh viên đăng ký học đông nhất, kết quả trả về gồm mã môn, tên môn và số lượng sinh viên đăng ký (*) i. Thống kê số lượng sinh viên đậu và rớt của từng môn, biết rằng sinh viên rớt khi điểm thi nhỏ hơn 5, kết quả trả về gồm mã môn, tên môn, số sinh viên đậu, số sinh viên rớt (*) 10.3.Truy vấn cập nhật dữ liệu  Thêm mẩu tin a. Thêm một khoa mới vào bảng Khoa với các thông tin sau: Mã khoa: HO TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 52. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 52/64 Tên khoa: Khoa Hoá b. Thêm một sinh viên mới vào bảng SinhVien với các thông tin sau: Mã sinh viên: H01 Họ và tên: Lê Thanh Tùng Ngày sinh: 23/1/1992 Giới tính: Nam Địa chỉ: 122 Lý Chính Thắng Học bổng: 100,000 Mã khoa: HO c. Thêm các điểm thi của sinh viên có mã ‘H01’ vào bảng KetQua với các thông tin sau: Mỗi điểm thi sẽ tương ứng với một mã môn học trong bảng MonHoc Mặc định điểm thi là 6  Sửa mẩu tin a. Cập nhật ngày sinh của sinh viên ‘Hà Tuấn’ thành 05/07/1980 b. Tăng học bổng lên 5% cho các sinh viên học khoa ‘Công nghệ thông tin’ và có học bổng >0 c. Cập nhật học bổng là 50,000 cho các sinh viên nữ học khoa ‘Công nghệ thông tin’ và chưa có học bổng d. Cộng thêm 5 điểm môn ‘Trí Tuệ Nhân Tạo’ cho các sinh viên thuộc khoa ‘Anh văn’. Điểm tối đa của môn là 10  Xóa mẩu tin a. Xoá các kết quả học tập của sinh viên có mã ‘H01’ b. Xoá sinh viên có mã ‘H01’ c. Xóa tất cả nam sinh viên của khoa Tin học trong bảng SinhVien (nhận xét: có xóa được không?) d. Xóa các kết quả học tập của những sinh viên nào có điểm các môn < 5 TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 53. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 53/64 Phụ lục Bài làm thêm 1. Bài 2: Kiểu dữ liệu và biến 1. Mã hóa và giải mã  Mục tiêu: Ứng dụng vào bài toán thực tế  Mô tả: Một công ty muốn truyền dữ liệu qua đường mạng tuy nhiên họ sợ rằng dữ liệu sẽ bị đánh cắp. Công ty thuê một lập trình viên để giải quyết vấn đề này. Sau khi xem xét lập trình viên quyết định lựa chọn chiến lược sẽ mã hóa (encrypt) dữ liệu trước khi truyền trên mạng bởi vì nếu dữ liệu đã được mã hóa thì nếu có bị đánh cắp thì cũng không biết nó có ý nghĩa gì. Dữ liệu được gởi đi được chia thành nhóm gồm 4 chữ số. Ứng dụng của lập trình viên sẽ đọc một số nguyên có 4 chữ số. Sau đó số này được mã hóa theo các bước như sau: (1) thay thế mỗi ký số bởi tổng của nó với 7 và lấy phần dư cho 10 (2) Đảo vị trí của ký số thứ 1 với kí số thứ 3, kí số thứ 2 và kí số thứ 4. Ví dụ: số ban đầu là 1093 sẽ được mã hóa thành 6087. Kết quả mã hóa sau đó được in ra màn hình  Yêu cầu: Xây dựng chương trình mã hóa và giải mã một số nguyên, gồm 2 chức năng: - Chức năng 1: mã hóa một số được nhập vào chương trình - Chức năng 2: giải mã (decryption) số đã được mã hóa để xuất ra giá trị ban đầu 2. Bài 3: Cấu trúc điều khiển 1. Tính thuế thu nhập cá nhân  Mục tiêu: Sử dụng cấu trúc if … else  Yêu cầu: - Nhập vào mức lương và số người phụ thuộc TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 54. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 54/64 - Tính và xuất ra mức thuế thu nhập cá nhân cần phải đóng theo các bước: o Bước 1: tính thu nhập chịu thuế, biết rằng: Thu nhập chịu thuế = Mức lương – 4,000,000 - Số người phụ thuộc * 1,600,000 o Bước 2: tính thuế thu nhập cá nhân theo quy tắc sau: Thu nhập chịu thuế (TNCT) Thuế thu nhập cá nhân TNCT<5 triệu TNCT*5% 5 triệu<=TNCT<10 triệu TNCT*10% 10 triệu <=TNCT<18 triệu TNCT*15% 18 triệu <=TNCT<32 triệu TNCT*20% 32 triệu <=TNCT<50 triệu TNCT*25% TNCT>50 triệu TNCT*30% - Màn hình gợi ý: 2. Kiểm tra số nguyên tố  Mục tiêu: Sử dụng cấu trúc for  Mô tả: số nguyên tố là số tự nhiên chỉ chia hết cho 1 và chính nó, 0 và 1 không được xem là số nguyên tố. (Số 2 là số nguyên tố nhỏ nhất, và 2 cũng là số nguyên tố chẵn duy nhất)  Yêu cầu: - Nhập vào số nguyên n cần kiểm tra - Kiểm tra xem số nguyên n có phải là số nguyên tố hay không và xuất thông báo ra màn hình - Sau đó tìm và xuất ra danh sách các số nguyên tố nhỏ hơn số cần kiểm tra TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 55. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 55/64 3. Craps Game  Mục tiêu: Sử dụng kết hợp các cấu trúc điều khiển và const  Mô tả: - Craps Game là một trò chơi phổ biến liên quan đến các con súc sắc được chơi tại các Casino. Craps được chơi chỉ với hai viên súc sắc. Một cách trùng hợp là người thua trong trò chơi được gọi là Craps - Quy tắc chơi: Người chơi có hai con súc sắc, mỗi con súc sắc có 6 mặt, mỗi mặt mang số chấm tương ứng là 1, 2, 3, 4, 5, 6. Người chơi sẽ gieo hai con súc sắc, sau đó tổng số điểm của hai mặt ngửa được tính: o Trong lần gieo đầu tiên, nếu tổng là 7 hoặc 11 thì người chơi thắng o Trong lần gieo đầu tiên, nếu tổng là 2, 3 hoặc 12 (gọi là "Craps") thì người chơi thua o Trong lần gieo đầu tiên, nếu tổng là 4, 5, 6, 8, 9 hoặc 10 thì số điểm này được lưu lại và gọi là "Point", để giành chiến thắng, người chơi phải gieo lại hai con súc sắc cho đến khi đạt được giá trị point lần nữa. Tuy nhiên, từ lần gieo thứ hai trở đi, nếu tổng điểm đạt được 7 thì người chơi bị thua - Các thuật ngữ của trò chơi này như sau: o Point: các giá trị đạt được trong lần đầu tiên mà không thắng hay thua gồm có: 4, 5, 6, 8, 9 hoặc 10 o Snake Eyes: số 2 o Trey: số 3 o Box Cars: số 12 o Seven: số 7 o Yo Leven: số 11  Yêu cầu: Viết chương trình thực hiện trò chơi Craps được mô tả như trên  Hướng dẫn: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 56. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 56/64 - Sử dụng const để khai báo các giá trị lưu trữ các thuật ngữ trên - Giao diện Form gợi ý như sau: 3. Bài 5: Tổng quan về lập trình hướng đối tượng 1. Xếp loại học tập học sinh  Mục tiêu: Áp dụng class vào bài toán thực tế  Yêu cầu: Trường trung học ANZ muốn ghi nhận thông tin kết quả học tập của học sinh vào cuối mỗi học kỳ. Bạn hãy xây dựng ứng dụng nhập thông tin học sinh và kết quả các điểm kiểm tra trong kỳ và điểm thi cuối học kỳ. Sau đó xuất thông tin kết quả học tập - Thông tin kết quả học tập của học sinh cần ghi nhận gồm có: Họ tên học sinh, Lớp, Học kỳ và năm học - Kết quả học tập các môn học gồm: Tên môn, điểm 15 phút, điểm 1 tiết, điểm thi cuối học kỳ - Điểm trung bình học kỳ với điểm trung bình được tính theo công thức sau: Điểm trung bình học kỳ=Tổng điểm trung bình các môn / số môn học Trung bình môn học=(điểm 15 phút + điểm 1 tiết x 2 + điểm học kỳ x 2)/5 - Xếp loại học lực của học sinh theo quy tắc sau: o Điểm trung bình học kỳ <5: yếu o 5 <= Điểm trung bình học kỳ < 6.5: trung bình o 6.5<= Điểm trung bình học kỳ < 8: khá o Điểm trung bình học kỳ >=8: giỏi  Hướng dẫn: - Màn hình gợi ý TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 57. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 57/64 2. Trò chơi đấu giá sản phẩm  Mục tiêu: Áp dụng class vào bài toán thực tế  Yêu cầu: Xây dựng chương trình Trò chơi đấu giá sản phẩm với luật đấu giá sau: - Người thắng cuộc sẽ là người có “Giá đấu” nhỏ nhất - Nếu có nhiều người chơi đấu cùng giá: người thắng cuộc là người có “Số dự đoán cùng giá” thấp nhất trong số những người chơi đấu cùng giá. - Nếu có nhiều người chơi đấu cùng giá và cùng số dự đoán: kết quả là “Không có người thắng cuộc” - Lưu ý: Mỗi số điện thoại có thể thực hiện nhắn tin đấu giá nhiều lần  Hướng dẫn: - Màn hình gợi ý: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 58. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 58/64 - Các xử lý: o Form load:  Tạo Danh sách người chơi mặc định và hiển thị lên TextBox  Hiển thị thông tin của người chơi đầu tiên lên Thông tin người đấu giá o Button <: hiển thị thông tin người chơi phía trước người chơi hiện tại trong danh sách o Button >: hiển thị thông tin người chơi phía sau người chơi hiện tại trong danh sách o Người chơi mới: xóa rỗng các TextBox để chuẩn bị nhập thông tin người chơi mới o Thêm vào danh sách: thêm người chơi mới vào Danh sách người chơi o Tìm người thắng cuộc: tìm người thắng cuộc dựa vào luật của trò chơi đấu giá sản phẩm và xuất thông tin người thắng cuộc lên màn hình 3. Thi trắc nghiệm  Mục tiêu: xây dựng và sử dụng class, phối hợp các class, kết hợp kiến thức mảng, …  Yêu cầu: xây dựng ứng dụng hỗ trợ thi trắc nghiệm theo mô tả sau - Trước khi bắt đầu thi, thí sinh nhập Họ tên, Ngày sinh và Nơi sinh - Sau đó bắt đầu làm bài. Thí sinh đọc nội dung câu hỏi và chọn 1 trong 4 câu trả lời bên dưới TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 59. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 59/64 - Nhấn nút di chuyển để sang một câu hỏi mới hoặc lùi về câu trước đó - Sau khi làm bài xong, thí sinh nhấn nút Nộp bài và sẽ nhận được kết quả (Hình 4.5b) Hình 1: Màn hình đang thi Hình 2: Màn hình kết quả  Hướng dẫn: - Tạo lớp Cauhoi, gồm các thông tin: Nội dung câu hỏi, chọn lựa 1, chọn lựa 2, chọn lựa 3, chọn lựa 4, đáp án, chọn đáp án. Có một phương thức Chấm điểm - Tạo lớp Thisinh, gồm các thông tin: Họ tên, ngày sinh, nơi sinh và một phương thức Xuất thông tin - Tạo lớp Baithi, gồm các thông tin: Thông tin của thí sinh và mảng các câu hỏi. Phương thức Chấm bài và Xuất thông tin - Khai báo các biến dùng chung trên Form: 1 biến mảng kiểu Cauhoi, 1 biến kiểu int (dùng lưu trữ số thứ tự câu hỏi) - Sự kiện load form: Khởi tạo các câu hỏi (số câu tùy vào người lập trình) 4. Bài 8: Lớp trừu tượng, lớp giao tiếp 1. Xử lý phân số TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 60. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 60/64  Mục tiêu: Xây dựng và sử dụng lớp giao tiếp tự định nghĩa  Yêu cầu: Xây dựng chương trình nhập các phân số và xuất ra danh sách các phân số, có sắp xếp  Hướng dẫn: - Tạo interface IXuat, khai báo hàm hàm xuất phân số trả về 1 chuỗi interface IXuat { string Xuat(); } - Xây dựng lớp PhanSo (tương tự bài 5.2) và cài đặt Interface Ixuat và IComparable cho lớp này như sau: public class PhanSo: Ixuat, IComparable { public int TUSO { get; set; } public int MAUSO { get; set; } public PhanSo() { } public PhanSo(int tu, int mau) { TUSO = tu; MAUSO = mau; } … public string Xuat() { return string.Format("{0}/{1}", TUSO, MAUSO); } public int CompareTo(object obj) { PhanSo p = (PhanSo)obj; double giatri1 = 1.0 * TUSO / MAUSO; double giatri2 = 1.0 * p.TUSO / p.MAUSO; if (giatri1 > giatri2) return 1; else if (giatri1 < giatri2) return -1; else return 0; } } - Xây dựng màn hình có dạng sau: TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 61. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 61/64 TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 62. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 62/64 MỤC LỤC BÀI 1: Tổng quan .................................................................................................. 2 1.1. Làm quen môi trường phát triển ứng dụng .............................................................................2 1.2. Xây dựng màn hình xuất câu chào .........................................................................................2 BÀI 2: Kiểu dữ liệu và biến.................................................................................... 4 2.1. Tính chu vi và diện tích hình tròn...........................................................................................4 2.2. Tính chu vi và diện tích hình chữ nhật (Bài về nhà) .................................................................5 2.3. Tính chu vi và diện tích tam giác............................................................................................6 2.4. Tính số nút của 1 số nguyên (Bài về nhà)...............................................................................6 2.5. Tách chuỗi họ tên.................................................................................................................7 2.6. Sử dụng kiểu tham chiếu.......................................................................................................7 BÀI 3: Cấu trúc điều khiển................................................................................... 10 3.1. Xếp loại học tập .................................................................................................................10 3.2. Tìm ngày trước, ngày sau của một ngày...............................................................................11 3.3. Tính tiền điện (bài về nhà) ..................................................................................................11 3.4. Tính năm âm lịnh ...............................................................................................................12 3.5. Tính số ngày trong tháng ....................................................................................................13 3.6. Tính ngày của mẹ, ngày của cha (Bài về nhà).......................................................................13 3.7. In bảng cửu chương của một số ..........................................................................................13 3.8. In bảng cửu chương từ số đến số ........................................................................................14 3.9. Tính lãi suất ngân hàng (Bài về nhà)....................................................................................15 3.10. Thực hiện lại các bài 3.8, 3.9 và 3.10 bằng cách dùng vòng lặp while, do..while (Bài về nhà)..16 BÀI 4: Kiểu struct và kiểu Array .......................................................................... 17 4.1. Tạo và sử dụng kiểu Nhan_vien...........................................................................................17 4.2. Làm việc với mảng..............................................................................................................19 BÀI 5: Tổng quan Lập trình hướng đối tượng ...................................................... 21 5.1. Giải phương trình bậc nhất Ax + B = 0.................................................................................21 5.2. Xử lý phân số.....................................................................................................................23 5.3. Xử lý phân số nâng cao.......................................................................................................25 5.4. Nhập xuất thông tin hóa đơn (Bài về nhà) ............................................................................26 BÀI 6: Tính Thừa kế và Đa hình........................................................................... 28 6.1. Quản lý thông tin nhân viên ................................................................................................28 6.2. Quản lý danh sách máy tính (Bài về nhà)..............................................................................33 TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 63. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 63/64 BÀI 7: Delegate và Event..................................................................................... 35 7.1. Quản lý thông tin nhân viên ................................................................................................35 BÀI 8: Lớp trừu tượng, lớp giao tiếp.................................................................... 37 8.1. Quản lý các lớp hình học.....................................................................................................37 8.2. Quản lý đối tượng hình học .................................................................................................39 BÀI 9: Collections và Generic .............................................................................. 42 9.1. Quản lý danh sách học viên.................................................................................................42 9.2. Quản lý danh sách học viên.................................................................................................44 9.3. Chuyển số thành chữ..........................................................................................................46 9.4. Đọc 3 số (Bài về nhà) .........................................................................................................46 9.5. Bài về nhà..........................................................................................................................47 BÀI 10: Các kiến thức cơ bản về SQL Server........................................................ 48 10.1. Tạo cơ sở dữ liệu QLSV (bằng tiện ích SSMS)......................................................................48 10.2. Truy vấn dữ liệu (bằng câu lệnh) .......................................................................................50  Truy vấn trên nhiều bảng....................................................................................................50  Truy vấn có nhóm ..............................................................................................................51 10.3. Truy vấn cập nhật dữ liệu..................................................................................................51  Thêm mẩu tin ....................................................................................................................51  Sửa mẩu tin .......................................................................................................................52  Xóa mẩu tin .......................................................................................................................52 Phụ lục ................................................................................................................ 53 Bài làm thêm ....................................................................................................... 53 1. Bài 2: Kiểu dữ liệu và biến ......................................................................... 53 1. Mã hóa và giải mã ..............................................................................................................53 2. Bài 3: Cấu trúc điều khiển.......................................................................... 53 1. Tính thuế thu nhập cá nhân ................................................................................................53 2. Kiểm tra số nguyên tố.........................................................................................................54 3. Craps Game .......................................................................................................................55 3. Bài 5: Tổng quan về lập trình hướng đối tượng.......................................... 56 1. Xếp loại học tập học sinh ....................................................................................................56 2. Trò chơi đấu giá sản phẩm..................................................................................................57 3. Thi trắc nghiệm..................................................................................................................58 4. Bài 8: Lớp trừu tượng, lớp giao tiếp ........................................................... 59 1. Xử lý phân số.....................................................................................................................59 TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
  • 64. Bài tập Nền tảng và Lập Trình Hướng Đối Tượng với C# Trang 64/64 MỤC LỤC ............................................................................................................. 62 TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí