[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í