Code của lớp NhanVien bao gồm các thuộc tính và phương thức: Hinh 1.. Code của lớp QuanLy bao gồm các thuộc tính và phương thức: 9| Page... Code của lớp KySu bao gồm các thuộc tính và ph
Trang 1DAI HOC QUOC GIA THANH PHO HO CHI MINH TRUONG DAI HOC CONG NGHE THONG TIN KHOA CONG NGHE PHAN MEM
MON LAP TRINH HUONG DOI TUONG
BAI TAP THUC HANH X
GVHD: Nguyễn Ngọc Qui
Sinh viên thực hiện: Nguyễn Hoàn Triều - 23521657
Trang 2IT002 - LAP TRINH HUONG BOI TUQNG
Uf Tp Hồ Chí Minh, 02/2024 I0
2|Page
Trang 3IT002 - LAP TRINH HUONG BOI TUQNG
NHAN XET CUA GIAO VIEN HUONG DAN
, gdp tháng năm 2024
Người nhận xét (Ký tên và ghi rõ họ tên)
3|Page
Trang 4IT002 - LAP TRINH HUONG BOI TUQNG
MUC LUC
1 Bài tập 1: Quan lý thông tin nhân viên
2 Bai tap 2: Quan ly thong tin khách sạn 2c 22222222 sey 13
3 Bai tap 3: Quan ly nông trại
4|Page
Trang 5IT002 - LAP TRINH HUONG BOI TUQNG
DANH MỤC HÌNH ẢNH Hinh 1 1: Class diapram của bài Ì 2 22212112211 221151 1112211111 11111 11128151112 cay 8 Hinh 1 2: Các thuộc tính và phương thức trons lớp NhanViIen .c c2 cc s52 8 Hinh 1 3: Các thuộc tính và phương thức của lớp QuanLy - 5c 2222222 9 Hinh 1 4: Các thuộc tính và phương thức của lớp KySu 2c Sen 9
Hinh 1 5: Phương thức nhập thông tin nhân vIÊn - c5 2215612212122 22x 9 Hình 1 6: Phương thức xuất thông tin nhân viên đã nhập +22 10
Hinh 1 7: Phương thức nhập thông tin quản Ìý - 2c 2212222111121 1115511281 ce 10 Hình 1 8: Phương thức xuất thông tin quản lý - + s21 S111 2111522112121 x0 11 Hình 1 9: Phương thức tính tiền thưởng của lớp QuanLy - 2 seSz2scEz 222222 11 Hinh 1 10: Phuong thức nhập thông tin kỹ sư 222 2212222122221 1352 212 re 11
Hinh 1 11: Phương thire xuat thong tin KY SU ccc cccecc css cseeeseseeseeeeseesseseseeesseees 12 Hình 1 12: Phương thức tính tiền thưởng của lớp KySu 552222 12 Hình 1 13: Kết quả của nhập vào và xuất ra thông tin của quản lý và kỹ sư 13 Hình 1 14: Kết quả của các hàm tính tiền thưởng 2 22222 22EE£E22E2£E22E22222 252 13
Hinh 2 1: Class diapram của bài 2 0 22122112111 21 1211211111111 11111 115111111111 kg 14 Hinh 2 2: Các thuộc tính và phương thức của lớp Phong - 22 2222222 ssss 14 Hinh 2 3: Các thuộc tính và phương thức của lop Deluxe cee cette eee 15 Hinh 2 4: Các thuộc tính và phương thức của lớp Premium : +5 22s s53 15 Hinh 2 5: Các thuộc tính và phương thức của lớp Business - c2 s2 15 Hinh 2 6: Phương thức tạo ra phòng - 2 22 211121122211 11 151111111111111 1518111811 re 16 Hình 2 7: Phương thức xuất ra thông tin phòng -2- 225222 121211115 15111122 2xe 16 Hinh 2 8: Phương thức tạo ra loại phòng DelÌuxe - 0 222122122 1221222 16 Hình 2 9: Phương thức xuất ra thông tin phòng của lớp Deluxe 2 5z 17
Trang 6IT002 - LAP TRINH HUONG BOI TUQNG
Hinh 2 10: Phương thức tính doanh thu phòng của lớp Deluxe - - 17 Hinh 2 11: Phương thức tạo ra loại phòng Premium 2 22 2222222 cay 18 Hình 2 12: Phương thức xuất ra thông tin phòng của lớp Premium - 18 Hinh 2 13: Phương thức tính doanh thu phòng của lớp Premrum - - 18 Hinh 2 14: Phương thức tạo ra loại phòng BusIness 5 2c 2 2222222222 xses 19 Hình 2 15: Phương thức xuất ra thông tin phòng của lớp Business - 19 Hinh 2 16: Phương thức tính doanh thu phòng của lớp Business 20 Hinh 2 17: Nội dung cách tạo ra các phòng trong hàm matn() - 2c 5c sc 5+ 20 Hình 2 18: Các hàm dùng để tìm ra loại phòng có doanh thu cao nhất 20 Hình 2 19: Kết quả sau khi tìm loại phòng có doanh thu lớn nhất - - z2 21
Hinh 3 1: Class diapram của bài 3 220122012111 21 1211211111111 111 011151111121 1 kg 22 Hinh 3 2: Các thuộc tính và phương thức của lớp GiaSuc c c2 se 23 Hinh 3 3: Các thuộc tính và phương thức của lớp Bo - 22c 2221222 rsey 23 Hinh 3 4: Các thuộc tính và phương thức của lớp uu - 0 2222222212 sey 24 Hinh 3 5: Các thuộc tính và phương thức của lớp De - 222 22222222122 sey 24 Hinh 3 6: Phương thức tạo ra Ø1a SÚC - L2 2 22121211211 121 112111111111 1821 101111811 kg 25 Hình 3 7: Phương thức nhập vào số lượng ban đầu của gia SÚC 5s 25 Hình 3 8: Phương thức xuất ra thông tin của gia SÚC 2 2 2212221511111 x6 25 Hinh 3 9: Phương thức tạo ra p1a súc bÒ L0 2012112112211 112 1118110111281 11g ườ 25 Hình 3 10: Phương thức nhập vào số lượng gia súc bò ban đầu - scss 26 Hình 3 11: Phương thức xuất ra thông tin của gia súc bò -¿ 22222 S222 xe 26 Hình 3 12: Phương thức tiếng kêu của gia súc bò 2 St 2221111221511 1112 6 26
Hinh 3 13: Phương thức cho sữa của ø1a súc ĐÒ - S 2n Sn 1n H2 SH HH hy 27 Hinh 3 14: Phương thức sinh con của gia súc bÒ - n SH 1 9H T19 1121 Hư 28
Hinh 3 15: Phương thức tạo ra Ø1a SÚC CỪU - 2 2 2 20112 1121211121111 11 11181 tr àg 28
Trang 7IT002 - LAP TRINH HUONG BOI TUQNG
27: Kết quả tiếng kêu khi bị bỏ đói - 5-5 2s 2 1211 1E1121271211121 1 c2 33
28: Kết quả việc thông kê số lượng sữa và con sau | dot cho stra va sinh 34
7|Page
Trang 8IT002 - LAP TRINH HUONG BOI TUQNG
NOI DUNG BAI LAM
1 Bai tap 1: Quan ly thong tin nhan vién
Viết một chương trình C++ đề quản lý thông tin nhân viên trong một công ty Sử dụng tính kế thừa để tạo lớp cơ sở NhanVien và hai lớp con Quản lý và Kỹ sư Mỗi loại
nhân
viên có các thuộc tính như sau:
« Nhân viên: Mã số nhân viên, Tên, Lương cơ bản
« Quản lý: Thừa kế từ Nhân viên với thêm thuộc tính là Tỷ lệ thưởng Phương thức TienThuong () tính toán tiền thưởng dựa trên tỷ lệ thướng va lương cơ bản
- Kỹ sư: Thừa kế từ Nhân viên với thêm thuộc tính là Số giờ làm thêm Phương thức TienThuong () tính toán tiền thưởng dựa trên số giờ làm thêm (mỗi giờ làm thêm được trả 100.000)
Chương trình cần thực hiện các công việc sau:
» Cho phép người dùng nhập thông tin của một quan ly va một kỹ sư
+ Hién thi thông tin chỉ tiết của cả hai nhân viên, bao gồm mã số, tên, lương cơ bản
và tiền thưởng tính được
* Sử dụng tính kế thừa đề thực hiện việc tính toán tiền thưởng dựa trên loại nhân viên
+ Su dung ham Xuat() dé hiển thị thông tin của nhân viên
Bài làm
Class diagram cua bai 1:
8|Page
Trang 9IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
NhanVien
# Luong: int + Nhap(): void + Xuat(): void
Extends Extends
- TyLeThuong: float - SoGioLamThem: float + Nhap(): void + Nhap(): void + Xuat(): void + Xuat(): void + TienThuong(): float + TienThuong(): float
Hinh 1 1; Class diagram cua bai 1
Code của lớp NhanVien bao gồm các thuộc tính và phương thức:
Hinh 1 2: Cae thuée tinh va phuong thitc trong lop NhanVien
Code của lớp QuanLy bao gồm các thuộc tính và phương thức:
9| Page
Trang 10IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
vcLass QuanLy : public NhanVien { Postel e
Hình ï 3: Các thuộc tỉnh và phương thức của lớp QuanLy
Code của lớp KySu bao gồm các thuộc tính và phương thức:
xcLass KySu : public NhanVien {
Tình ï 4: Các thuộc tỉnh và phương thức của lớp KySu
Nội dung các phương thức trong lớp NhanVien:
- Phương thức nhập thông tin nhân viên:
vvoid NhanVien: :Nhap() { cout << "Nhap MSNV: "; cin >> MSNV; cin.ignore();
cout << "Nhap Ten: ";
Trang 11IT002 - LAP TRINH HUONG BOI TUQNG
- Phương thức xuất thông tin nhân viên đã nhập:
::Xuat() { cout << "MSNV: " << MSNV << endl;
cout << "Ten: " << Ten << endL;
cout << uong: " << Luong << endl;
Hình 1 6: Phương thức xuất thông tin nhân viên đã nhập
Nội dung các phương thức trong lớp QuanLy:
- Phương thức nhập thông tin quản lý:
® - Hướng xử ly của phương thức nhập thông tin quan ly
o_ Dùng tính kế thừa để sử dụng hàm nhập của lớp NhanVien để nhập vào thông tin của 1 nhân viên
o_ Vi lớp QuanLy có thêm thuộc tính là TyLeThuong nên ta sẽ bố sung thêm việc nhập tỷ lệ thưởng
::Nhap(C) { ::Nhap(C);
cout << "Nhap ty Le thuong: "; cin >> TyLeThuong;
Tình 1 7: Phương thức nhập thông tin quan lý
- Phương thức xuất thông tin quản lý đã nhập:
e - Hướng xử lý của phương thức xuất thông tin quản lý
o_ Dùng tính kế thừa để sử dụng hàm xuất của lớp NhanVien để xuất ra thông tin của 1 nhân viên
o_ Vi lớp QuanLy có thêm tiền thưởng nên ta sẽ bô sung thêm việc xuất tiền thưởng
11|Page
Trang 12IT002 - LẬP TRÌNH HƯỚNG ĐỚI TƯỢNG
::Xuat() { ::Xuat();
cout << "Tien thuong: " << TienThuong() << endl;
Hình 1 8: Phương thức xuất thông tin quản lý
- Phương thức tính tiền thưởng (Tien Thuong()):
e Đầu vào: Tỷ lệ thưởng
© - Đầu ra: Tiền thưởng ứng với tý lệ thưởng nhập vào
e - Hướng xử lý của phương thức tính tiền thưởng:
o_ Vi tý lệ thưởng là I số tính theo phần trăm (%), nên ta lấy tỷ lệ thưởng
nhập vào chia cho 100
o_ Sau đó lấy lương đã nhập vào ban đầu nhân với tỷ lệ thưởng đã chia cho
100 và trả về kết quả
::TienThuong() { TyLeThuong = TyLeThuong / 100;
return Luong * TyLeThuong;
Hinh 1 9: Phuong thite tinh tiần thưởng của lớp Quanly
Nội dung các phương thức của lớp KySu:
- Phương thức nhập thông tin của kỹ sư:
® Hướng xử ly của phương thức nhập thông tin kỹ sư
o_ Dùng tính kế thừa để sử dụng hàm nhập của lớp NhanVien để nhập vào thông tin của 1 nhân viên
o_ Vi lớp KySu có thêm thuộc tính là SoGioLamThem nên ta sẽ bô sung thêm việc nhập sô giờ làm thêm
::Nhap() { ::Nhap(C);
cout << "Nhap so gio Lam them: "; cin >> SoGioLamThem;
Hinh 1 10: Phương thức nhập thông tín kỹ sư
12|Page
Trang 13IT002 - LẬP TRÌNH HUONG DOI TUQNG
- Phuong thirc xuat thong tin cua kỹ sư đã nhập vào:
e Hướng xử lý của phương thức xuất thông tin kỹ sư
o_ Dùng tính kế thừa để sử dụng hàm xuất của lớp NhanVien để xuất ra thông tin của 1 nhân viên
o_ Vi lớp KySu có thêm tiền thưởng nên ta sẽ bố sung thêm việc xuất tiền thưởng
::Xuat() f
ap (VF 1 8 ƒ- cout << "Tien thuong: " << TienThuong() << endl;
Hinh 1 11; Phuong thive xudt thong tin If su
- Phương thức tính tiền thuong (TienThuong()):
e Đầu vào: Số giờ làm thêm
e Đầu ra: Tiền thưởng dựa trên số giờ làm thêm nhập vào
e - Hướng xử lý của phương thức tính tiền thưởng:
o_ Vi tiền thưởng của kỹ sư dựa trên số giờ làm thêm và 1 giờ làm thêm sẽ
nhận được 100.000 tiền thưởng
o Ta lay s6 giờ làm thêm đã nhập vào nhân cho 100.000 và trả về kết quả
::TienThuong() {
return SoGioLamThem * 100000;
Hinh 1 12: Phương thúc tính tiền thưởng cia lop KySu
Ket qua cua cac ham trong bai 1:
- Kết quả cua nhập vào và xuất ra thông tin của quản lý và kỹ sư:
13|Page
Trang 14IT002 - LẬP TRÌNH HƯỚNG ĐỚI TƯỢNG
Nhap thong tin quan Ly
Nhap MSNV: 23521657
Nhap Ten: Nguyen Hoan Trieu
: 120000 Thong tin quan ly
Hinh 1 13: Két quả của nhập vào và xuất ra thông tin của quản lý và kỹ sư
- Kêt quả của các hàm tính tiên thưởng:
[Ej D\OOP\Thực hành\ab4\235
Nhap thong tin quan ly
Hinh 1 14: Két quả của các hàm tính tiền thưởng
2 Bài tập 2: Quản lý thông tin khách sạn
Khách sạn SOFITEL có 3 loại phòng với doanh thu phòng của tháng được
tính như sau:
* Loại Deluxe: doanh thu phòng = Số đêm * 750000 + Phí dịch vụ + Phí phục vụ
14|Page
Trang 15IT002 - LAP TRINH HUONG BOI TUQNG
+ Loại Premium: doanh thu phòng = Số đêm * 500000 + Phi dich vụ
« Loại Business: doanh thu phòng = Số đêm * 300000
Yêu cầu: Hàm main: khởi tạo 5 phòng: Ví dụ: Deluxe ặ ); Deluxe b( ); Premium c( ); Premium d( ); Business e( ) Hãy cho biết doanh thu của loại phòng nào nhiều nhất? (lưu ý: mỗi loại phòng có thê khới tạo nhiều phòng)
Bài làm
Class diagram cua bai 2:
Hinh 2 1: Class diagram của bài 2
Code của lớp Phong bao gồm các thuộc tính và phương thức:
Hinh 2 2: Cae thuéc tinh va phương thức của lớp Phong
Code của lớp Deluxe bao gồm các thuộc tính và phương thức:
15|Page
Trang 16IT002 - LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG
DeLuxe( sodem, DoanhThuPhong() ; Xuat();
Hinh 2 3: Các thuộc tính và phương thức cua lop Deluxe
Code của lớp Premium bao gồm các thuộc tính và phương thức:
DoanhThuPhong();
Xuat();
Hinh 2 4: Cae thuée tinh va phuong thite cua lop Premium
Code của lớp Business bao gồm các thuộc tính và phương thức:
Business( sode bệ
i DoanhThuPhong(
Xuat();
Hinh 2 5: Các thuộc tỉnh và phương thức của lớp Business
Nội dung các phương thức của lớp Phong:
- Phương thức tạo ra phòng với các thông tin được tạo sắn:
® - Hướng xử ly của phương thức tạo ra phòng
o_ Tạo ra l constructor có truyền các tham số vào như số đêm (sodem), phí dịch vụ (phidichvu), phí phục vụ (phiphucvu)
16|Page
Trang 17IT002 - LAP TRINH HUONG BOI TUQNG
o_ Các thông tin trên sẽ được nhập vào bằng các tham số truyền vào từ ban đâu
Hinh 2 6: Phương thức tạo ra pHÒHg
- Phương thức xuất ra thông tin phòng đã tạo:
::XuatQ) {
cout << "so dem: " << SoDem << endl;
cout << "phi dich vu: " << PhiDichVu << endl; cout << "phi phuc vu: " << PhiPhucVu << endl;
Hình 2 7: Phương thức xuất ra thông tín phòng
Nội dung các phương thức của lớp Deluxe:
- Phương thức tạo ra loại phòng deluxe với các thông tin có sẵn:
® Hướng xử lý của phương thức tạo ra loại phòng Deluxe
o Sw dung tinh kế thừa đề sử dụng các thuộc tính của lớp Phone, bởi thuộc tính của lớp Deluxe có thuộc tính giống với lớp Phong
o_ Tạo ra l constructor có truyền các tham số vào như số đêm (sodem), phí dịch vụ (phidichvu), phí phục vụ (phiphucvu)
o_ Các thông tin trên sẽ được nhập vào bằng các tham số truyền vào từ ban đầu
Hinh 2 8: Phương thức tạo ra loại phòng Deluwe
- Phương thức xuất ra thông tin loại phòng Deluxe đã nhập:
e - Hướng xử lý của phương thức xuất thông tin phòng Deluxe
o Sw dung tính kế thừa dé sử dụng hàm xuất của lớp Phong
17|Page
Trang 18IT002 - LAP TRINH HUONG BOI TUQNG
o Boi lép Deluxe co thém thuéc tinh doanh thu phong nén ta bé sung thém viéc xuat ra doang thu phong
::Xuat() { ::Xuat();
cout << "Doanh tl hong: " << DoanhThuPhong() << endL;
Tình 2.9: Phương thức xuất ra thông tin phòng của lớp Deluxe
- Phương thức tính doanh thu phòng
e - Đầu vào: Số đêm, phí phục vụ, phí dịch vụ truyền từ đầu
¢ au ra: Doanh thu phòng dựa trên loại phòng và các giá trị nhập vào
® - Hướng xử ly của phương thức tính doanh thu phòng
o_ Doanh thu của loại phòng Deluxe sẽ tính bằng số đêm * 750.000 cộng
Tình 2 10: Phương thúc tính doanh thu phòng của lớp Deluxe
Nội dung các phương thức của lớp Premium:
- Phương thức tạo ra loại phòng premium với các thông tin có sẵn:
® Hướng xử lý của phương thức tạo ra loại phòng Premium
o Sw dung tinh kế thừa đề sử dụng các thuộc tính của lớp Phone, bởi thuộc
tính của lớp Premium có thuộc tính giống với lớp Phong Nhưng lớp
Premium không cần thuộc tính phí phục vụ nên ta sẽ cho nó bằng 0 o_ Tạo ra l constructor có truyền các tham số vào như số đêm (sodem), phí dich vu (phidichvu)
o_ Các thông tin trên sẽ được nhập vào bằng các tham số truyền vào từ ban đâu
18|Page