BÀI TẬP 1 – QUẢN LÝ CÁN BỘ
Mục tiêu
Vận dụng các tính chất của lập trình hướng đối tượng trong Python (Encapsulation, Inheritance, Polymorphism) để xây dựng hệ thống quản lý cán bộ bao gồm Công nhân, Kỹ sư và Nhân viên.
Yêu cầu kỹ thuật
1. Xây dựng các lớp
Lớp CanBo
(Lớp cha)
-
Thuộc tính:
ho_ten
(str)tuoi
(int)gioi_tinh
(str): Nam, Nữ, Khácdia_chi
(str)
-
Phương thức:
hien_thi_thong_tin()
– Hiển thị thông tin cơ bản của cán bộ (phương thức có thể được ghi đè ở lớp con)
Lớp CongNhan
(kế thừa CanBo
)
- Thuộc tính thêm:
bac
(int): giá trị từ 1 đến 10
Lớp KySu
(kế thừa CanBo
)
- Thuộc tính thêm:
nganh_dao_tao
(str)
Lớp NhanVien
(kế thừa CanBo
)
- Thuộc tính thêm:
cong_viec
(str)
2. Xây dựng lớp QLCB
(Quản lý cán bộ)
Chứa danh sách cán bộ và các phương thức quản lý cán bộ.
-
Thuộc tính:
danh_sach_can_bo
: danh sách chứa đối tượng từ lớpCanBo
hoặc lớp con
-
Phương thức:
them_can_bo(cb: CanBo)
– Thêm cán bộ mớitim_kiem_theo_ho_ten(ten: str)
– Trả về danh sách cán bộ có họ tên trùng khớphien_thi_danh_sach()
– Hiển thị toàn bộ danh sách cán bộxoa_can_bo_theo_ten(ten: str)
– (Tùy chọn nâng cao)luu_file()
/doc_file()
– (Tùy chọn nâng cao)
Chương trình chính
Xây dựng chương trình console có menu với các chức năng:
- Thêm mới cán bộ (hỏi loại cán bộ: Công nhân, Kỹ sư, Nhân viên, sau đó nhập thông tin tương ứng)
- Tìm kiếm cán bộ theo họ tên
- Hiển thị toàn bộ danh sách cán bộ
- Thoát chương trình
Yêu cầu về OOP
- Kế thừa:
CongNhan
,KySu
,NhanVien
kế thừa từCanBo
- Bao đóng: Thuộc tính đặt ở chế độ private/protected, sử dụng getter/setter nếu cần
- Đa hình: Ghi đè phương thức
hien_thi_thong_tin()
ở từng lớp con - Trừu tượng (tùy chọn nâng cao): Có thể sử dụng module
abc
để bắt buộc các lớp con phải định nghĩahien_thi_thong_tin()
Gợi ý nâng cao (tuỳ chọn)
- Lưu và đọc danh sách cán bộ từ file (sử dụng JSON hoặc Pickle)
- Kiểm tra nhập trùng tên hoặc tên rỗng
- Giao diện đồ hoạ (Tkinter hoặc PyQt)
- Sử dụng
isinstance
để phân loại khi hiển thị