You are on page 1of 13

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM TP,HCM


KHOA TOÁN – TIN HỌC
http://math.hcmup.edu.vn

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG


Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Mục lục

1. Phần 1: Struct .............................................................................................................. 3


1.1. Quản lý học sinh ................................................................................................... 3
1.2. Quản lý học sinh - lớp........................................................................................... 3
1.3. Quản lý học sinh - lớp - khối lớp.......................................................................... 4
2. Phần 2: Làm quen với lập trình hướng đối tượng ................................................... 5
2.1. Quản lý học sinh ................................................................................................... 5
2.2. Quản lý học sinh - lớp........................................................................................... 6
2.3. Quản lý học sinh - lớp - khối lớp.......................................................................... 7
2.4. Thiết kế và cài đặt lớp Phân số............................................................................. 7
2.5. Thiết kế và cài đặt lớp Ngày ................................................................................. 9
3. Phần 3: Làm quen với Contructor, Destructor, Operator ...................................... 9
3.1. Lớp Phân số .......................................................................................................... 9
3.2. Lớp Ngày ............................................................................................................. 10
4. Phần 4: Làm quen với kế thừa ................................................................................. 10
4.1. Quản lý “Lương nhân viên” .............................................................................. 10
4.2. Quản lý các đối tượng hình học ......................................................................... 11
5. Phần 5: Bài tập tổng hợp .......................................................................................... 11
5.1. Lớp Phân số ........................................................................................................ 11
5.2. Trò chơi Caro ...................................................................................................... 12
5.3. Trò chơi Minesweeper ........................................................................................ 12
5.4. Trò chơi Cờ tướng .............................................................................................. 13
5.5. Trò chơi TETRIS ................................................................................................ 13

Ths Trần Ngọc Bảo Trang 2/13


Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

1. Phần 1: Struct
1.1. Quản lý học sinh
1.1.1. Đề bài
Viết chương trình nhập thông tin họ tên học sinh, điểm thi 2 môn Văn, Toán.
Tính điểm trung bình, in kết quả ra màn hình theo format sau

CHUONG TRINH MINH HOA 1


Nhap ho ten hoc sinh: Nguyen Van A
Toan: 8
Van: 7
Ket qua
Ho ten Van Toan Trung binh
Nguyen Van A 7.0 8.0 7.5
1.1.2. Hướng dẫn gợi ý
Tổ chức cấu trúc dữ liệu được lưu trữ như sau

Struct HocSinh
{
char HoTen[30];
float Van, Toan, DTB;
}

a. Viết hàm nhập thông tin học sinh theo prototype sau
void Nhap(HocSinh &hs);
b. Viết hàm xuất thông tin học sinh theo prototype sau
void Xuat(HocSinh hs);
c. Viết hàm tính điểm trung bình học sinh theo prototype sau
void TinhTB(HocSinh &hs);
d. Viết chương trình nhập thông tin học sinh, tính điểm trung bình và in kết quả học
sinh ra màn hình.
1.2. Quản lý học sinh - lớp
1.2.1. Đề bài
Viết chương trình nhập thông tin của một lớp học gồm N học sinh (N<=50), với
mỗi học sinh nhập họ tên học sinh, điểm thi 2 môn Văn, Toán.
Tính điểm trung bình của mỗi học sinh và in kết quả ra màn hình theo format sau

CHUONG TRINH MINH HOA 2


Nhap thong tin hoc sinh thu 1:
Ho ten hoc sinh: Nguyen Van A
Toan: 8

Ths Trần Ngọc Bảo Trang 3/13


Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Van: 7
Nhap thong tin hoc sinh thu 2:
Ho ten hoc sinh: Nguyen Van B
Toan: 8.5
Van: 7.5
KET QUA
Ho ten Van Toan Trung binh
Nguyen Van A 7.0 8.0 7.5
Nguyen Van B 7.5 8.5 8.0

1.2.2. Hướng dẫn cài đặt


Tổ chức cấu trúc dữ liệu được lưu trữ như sau
Struct HocSinh
{
char HoTen[30];
float Van, Toan, DTB;
}

Struct LopHoc
{
char TenLop[30];
HocSinh hs[50];
int SiSo;
}

Bổ sung thêm bài tập “Quản lý học sinh” các hàm sau
a. Viết hàm nhập thông tin lớp theo prototype sau
void Nhap(LopHoc &l);
b. Viết hàm xuất thông tin lớp học theo prototype sau
void Xuat(LopHoc l);
c. Viết hàm tính điểm trung bình học sinh của một lớp học theo prototype sau
void TinhTB(LopHoc &l);
d. Viết chương trình nhập thông tin học sinh, tính điểm trung bình và in kết quả học
sinh của một lớp học ra màn hình.

1.3. Quản lý học sinh - lớp - khối lớp


1.3.1. Đề bài
Viết chương trình nhập thông tin của một khối gồm có N (N<50) lớp học, mỗi lớp
học gồm N học sinh (N<=50), với mỗi học sinh nhập họ tên học sinh, điểm thi 2 môn
Văn, Toán.
Tính điểm trung bình của mỗi học sinh và in kết quả ra màn hình
1.3.2. Hướng dẫn gợi ý
Bổ sung thêm bài tập “Quản lý học sinh - lớp” cấu trúc Khoi và các hàm sau

Ths Trần Ngọc Bảo Trang 4/13


Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Struct Khoi
{
char TenKhoi[30];
LopHoc lh[50];
int SiSo;
}

a. Viết hàm nhập thông tin một khối theo prototype sau
void Nhap(Khoi &k);
b. Viết hàm xuất thông tin một khối theo prototype sau
void Xuat(Khoi k);
c. Viết hàm tính điểm trung bình học sinh của một khối theo prototype sau
void TinhTB(Khoi &k);
d. Viết chương trình nhập thông tin học sinh, tính điểm trung bình và in kết quả học
sinh của một khối ra màn hình.

2. Phần 2: Làm quen với lập trình hướng đối tượng


2.1. Quản lý học sinh
2.1.1. Đề bài
Viết chương trình nhập thông tin họ tên học sinh, điểm thi 2 môn Văn, Toán.
Tính điểm trung bình, in kết quả ra màn hình theo format sau

CHUONG TRINH MINH HOA 1


Nhap ho ten hoc sinh: Nguyen Van A
Toan: 8
Van: 7
Ket qua
Ho ten Van Toan Trung binh
Nguyen Van A 7.0 8.0 7.5
2.1.2. Hướng dẫn gợi ý
Tổ chức class HocSinh

class HocSinh
{
Protected:
char HoTen[30];
float Van, Toan, DTB;
public:
void Nhap();
void Xuat();
void TinhTB();
}

Ths Trần Ngọc Bảo Trang 5/13


Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

a. Viết hàm nhập thông tin học sinh trong class HocSinh
b. Viết hàm xuất thông tin học sinh trong class HocSinh
c. Viết hàm tính điểm trung bình học sinh trong class HocSinh
d. Viết chương trình sử dụng class HocSinh để nhập thông tin học sinh, tính điểm
trung bình và in kết quả học sinh ra màn hình.
2.2. Quản lý học sinh - lớp
2.2.1. Đề bài
Viết chương trình nhập thông tin của một lớp học gồm N học sinh (N<=50), với
mỗi học sinh nhập họ tên học sinh, điểm thi 2 môn Văn, Toán.
Tính điểm trung bình của mỗi học sinh và in kết quả ra màn hình theo format sau

CHUONG TRINH MINH HOA 2


Nhap thong tin hoc sinh thu 1:
Ho ten hoc sinh: Nguyen Van A
Toan: 8
Van: 7
Nhap thong tin hoc sinh thu 2:
Ho ten hoc sinh: Nguyen Van B
Toan: 8.5
Van: 7.5
KET QUA
Ho ten Van Toan Trung binh
Nguyen Van A 7.0 8.0 7.5
Nguyen Van B 7.5 8.5 8.0

2.2.2. Hướng dẫn cài đặt


Bổ sung thêm bài tập “Quản lý học sinh” class LopHoc như sau:

class LopHoc
{
Protected:
char TenLop[30];
HocSinh hs[50];
int SiSo;
public:
void Nhap();
void Xuat();
void TinhTB();
}
Bổ sung thêm bài tập “Quản lý học sinh” các hàm sau
a. Viết hàm nhập thông tin học sinh của một lớp lớp trong class LopHoc
b. Viết hàm xuất thông tin học sinh của một lớp lớp trong class LopHoc
c. Viết hàm tính điểm trung bình học sinh một lớp lớp trong class LopHoc

Ths Trần Ngọc Bảo Trang 6/13


Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

d. Viết chương trình sử dụng class LopHoc để nhập thông tin học sinh, tính điểm
trung bình và in kết quả học sinh của một lớp học ra màn hình.
2.3. Quản lý học sinh - lớp - khối lớp
2.3.1. Đề bài
Viết chương trình nhập thông tin của một khối gồm có N (N<50) lớp học, mỗi lớp
học gồm N học sinh (N<=50), với mỗi học sinh nhập họ tên học sinh, điểm thi 2 môn
Văn, Toán.
Tính điểm trung bình của mỗi học sinh và in kết quả ra màn hình
2.3.2. Hướng dẫn gợi ý
Bổ sung thêm bài tập “Quản lý học sinh - lớp” class Khoi và các hàm sau

class Khoi
{
Protected:
char TenKhoi[30];
LopHoc lh[50];
int SiSo;
public:
void Nhap();
void Xuat();
void TinhTB();
}

a. Viết hàm nhập thông tin học sinh của một khối trong class Khoi
b. Viết hàm xuất thông tin học sinh của một khối trong class Khoi
c. Viết hàm tính điểm trung bình học sinh của một khối trong class Khoi
d. Viết chương trình sử dụng class Khoi để nhập thông tin học sinh, tính điểm trung
bình và in kết quả học sinh của một khối ra màn hình.
2.4. Thiết kế và cài đặt lớp Phân số
2.4.1. Đề bài
Thiết kế và cài đặt lớp phân số
Viết chương trình minh họa từng bước bốn phép toán cộng, trừ, nhân, chia 2 phân số.
2.4.2. Hướng dẫn gợi ý
Thiết kế và cài đặt lớp phân số với các thành phần như sau:

a. Thành phần thuộc tính


- Tử số: số nguyên
- Mẫu số: số nguyên
b. Thành phần xử lý
- Nhóm khởi tạo
• Nhập từ bàn phím

Ths Trần Ngọc Bảo Trang 7/13


Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

• Khởi tạo từ danh sách tham số tử sổ, mẫu số


• Khởi tạo từ đối tượng thuộc lớp phân số
- Nhóm cung cấp thông tin
• Đọc giá trị tử số
• Đọc giá trị mẫu số
• Xuất phân số ra màn hình
- Nhóm cập nhật
• Cập nhật tử số
• Cập nhật mẫu số
• Rút gọn phân số
- Nhóm xử lý tính toán
• Cộng hai phân số
• Trừ hai phân số
• Nhân hai phân số
• Chia hai phân số

2.4.3. Tổ chức project


a. Lưu trữ lớp phân số
- Tập tin header: Phanso.h
- Tập tin source: Phanso.cpp
b. Tập tin chứa hàm main: psmain.cpp
c. Tập tin hỗ trợ khác:
- Tập tin uscln.h: chứa khai báo prototype các hàm ước chung lớn nhất, bội
chung nhỏ nhất,…
- Tập tin ucsln.cpp: chức cài đặt các hàm khai báo trong tập tin uscln.h
d. Tập tin project: PS.prj chứa các tập tin
- Tập tin source của lớp phân số: Phanso.cpp
- Tập tin chứa hàm main: psmain.cpp
- Tập tin ucsln.cpp
2.5. Thiết kế và cài đặt lớp mảng 1 chiều
2.5.1. Đề bài
Thiết kế và cài đặt lớp mảng một chiều có n phần tử (số lượng phần tử được cấp phát
động), mỗi phần tử là một số nguyên
Viết chương trình minh họa các thao tác cơ bản trong mảng.
- Nhập mảng
- Phát sinh mảng
- Đọc từ file
- Xuất mảng
- Ghi ra file
- Tìm kiếm một phần tử trong mảng
• Tìm tuần tự
• Tìm nhị phân
- Sắp xếp các phần tử trong mảng theo thứ tự tăng/giảm

Ths Trần Ngọc Bảo Trang 8/13


Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

• Sắp xếp đổi chỗ trực tiếp


• Sắp xếp chọn trực tiếp
• Sắp xếp chèn trực tiếp
• ….
- Thêm/chèn phần tử
- Xóa phần tử trong mảng
- Kiểm tra mảng con
- Nối mảng
- Tính toán
• Tổng các phần tử
• Tổng các phần tử chẵn
• Tổng các phần tử lẻ
• Tổng các phần tử nguyên tố
• ….
2.5.2. Hướng dẫn gợi ý

2.6. Thiết kế và cài đặt lớp Ngày


2.6.1. Đề bài
Thiết kế và cài đặt lớp Ngày
Viết chương trình minh họa hiển thị lịch của một tháng, lịch của 1 năm.
2.6.2. Hướng dẫn gợi ý

3. Phần 3: Làm quen với Contructor, Destructor, Operator


3.1. Lớp Phân số
3.1.1. Đề bài
Bổ sung các xử lý thuộc loại Constructor, Destructor, Operator
3.1.2. Hướng dẫn gợi ý

3.2. Lớp mảng một chiều


3.2.1. Đề bài
Bổ sung các xử lý thuộc loại Constructor, Destructor, Constructor copy, Operator
3.2.2. Hướng dẫn gợi ý

Ths Trần Ngọc Bảo Trang 9/13


Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

3.3. Lớp Ngày


3.3.1. Đề bài
Bổ sung các xử lý thuộc loại Constructor, Destructor, Operator
3.3.2. Hướng dẫn gợi ý

4. Phần 4: Làm quen với kế thừa


4.1. Quản lý “Lương nhân viên”
4.1.1. Đề bài
Một công ty cần tin học hóa công việc tính tiền thưởng trong năm cho nhân viên trong
toàn công ty. Nội dung yêu cầu như sau:
Cần lưu danh sách các nhân viên (tối đa 200 nhân viên), trong đó mỗi nhân viên có ít
nhất các thông tin:
- Mã số nhân viên
- Họ tên
- Mức lương
- Loại nhân viên: nhân viên văn phòng, nhân viên bán hàng, nhân viên sản xuất.
Tiền thưởng cho mỗi nhân viên trong công ty được tính theo quy tắc sau:
- Đối với nhân viên văn phòng
o Nếu thời gian công tác < 6 tháng thì
ƒ Tiền thưởng = 100000
o Nếu thời gian công tác ≥ 6
ƒ Tiền thưởng = 200000 + Mức lương *10% * thời gian công tác/6
Trong đó thời gian công tác (được tính theo đơn vị tháng) là số tháng mà
nhân viên làm việc tại công ty
- Đối với nhân viên bán hàng
o Tiền thưởng = 150000 * hệ số thưởng
Mỗi nhân viên bán hàng có một hệ số thưởng riêng.
- Đối với nhân viên sản xuất
o Tiền thưởng = 20000 * tổng số sản phẩm tính từ đầu năm

Với những mô tả trên, yêu cầu:


a) Khai báo các lớp dữ liệu cần cho bài toán, biểu diễn cây kế thừa (nếu có).
b) Trong mỗi lớp ở câu a),
a. Khai báo và cài đặt phương phức tính tiền thưởng cho mỗi nhân viên.
b. Khai báo và cài đặt phương thức hiển thị thông tin của mỗi nhân viên
c) Cài đặt một hàm hiển thị danh sách nhân viên với prototype như sau:
void HienThi(NHANVIEN *pnv[], int n) ;
Trong đó:
- pnv là một mảng các con trỏ mà mỗi phần tử lưu địa chỉ của một đối tượng
thuộc 1 trong 3 loại nhân viên kể trên.
- n là tổng số nhân viên.

Ths Trần Ngọc Bảo Trang 10/13


Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

4.1.2. Hướng dẫn gợi ý

4.2. Quản lý các đối tượng hình học


4.2.1. Đề bài

Xây dựng (vẽ) cây kế thừa biểu diễn các lớp Hình chữ nhật, ellipse, hình tròn, hình trụ,
hình cầu.
a. Định nghĩa các lớp bao gồm các thành sau:
- Thuộc tính
- 1 constructor
- Hàm tính diện tích

b. Viết hàm tính tổng diện tích với tham số là mảng các hình ở mức tổng quát, cho
phép tính tổng diện tích hình chữ nhật, ellipse, hình tròn, hình trụ, hình cầu.
4.2.2. Hướng dẫn gợi ý

5. Phần 5: Bài tập tổng hợp


5.1. Lớp Phân số
5.1.1. Đề bài
Xây dựng chương trình minh họa các phép toán cộng, trừ, nhân, chia trên phân số

5.1.2. Hướng dẫn gợi ý

Ths Trần Ngọc Bảo Trang 11/13


Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

5.2. Trò chơi Caro


5.2.1. Đề bài
Viết chương trình trò chơi Caro cho phép 2 người cùng chơi, máy tính đóng vai trò
trọng tài

5.2.2. Hướng dẫn gợi ý

5.3. Trò chơi Minesweeper


5.3.1. Đề bài
Viết chương trình trò chơi gỡ mìn tương tự trò chơi gỡ mìn trong Windows.

Ths Trần Ngọc Bảo Trang 12/13


Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

5.3.2. Hướng dẫn gợi ý

5.4. Trò chơi Cờ tướng


5.4.1. Đề bài
Viết chương trình trò chơi Cờ tướng cho phép 2 người cùng chơi, máy tính đóng vai
trò trọng tài

5.4.2. Hướng dẫn gợi ý

5.5. Trò chơi TETRIS


5.5.1. Đề bài
Viết chương trình trò chơi TETRIS cho phép người chơi chọn nhiều mức độ khác
nhau
5.5.2. Hướng dẫn gợi ý

Ths Trần Ngọc Bảo Trang 13/13

You might also like