TRƯỜNG ĐẠI HỌC THƯƠNG MẠI
KHOA HỆ THỐNG THÔNG TIN KINH TẾ VÀ THƯƠNG MẠI ĐIỆN TỬ
BÀI THẢO LUẬN NHÓM
Học phần: Lập trình hướng đối tượng
Đề tài thảo luận: Xác định và xây dựng một số lớp trên C++ phục vụ các chức năng
cơ bản trong hệ thống thông tin quản lý nhân sự
Nhóm thực hiện
Giảng viên
Lớp học phần
:
:
:
Nhóm 1
Th.s Cù Nguyên Giáp
2204INFO1931
Hà Nội, 2022
Cộng hòa xã hội chủ nghĩa Việt Nam
Độc lập – Tự do – Hạnh phúc
Hà Nội, ngày 28, tháng 1, năm 2022
Biên bản họp nhóm
(Lần 1)
Nhóm 1- Mã lớp: 2204INFO1931
I. Thời gian: 20h ngày 28 tháng 1 năm 2022
II. Địa điểm: phòng họp meet
III. Thành phần tham gia:
1. Bùi Thị Lan Anh
2. Đặng Ngọc Anh
3. Lê Phương Anh
4. Nguyễn Hoàng Anh
5. Nguyễn Mai Anh
6. Nguyễn Phương Anh S1
7. Nguyễn Phương Anh S2
8. Nguyễn Thị Vân Anh
9. Trần Thị Tú Anh
10. Trần Tuấn Anh
IV. Nội dung
Thảo luận chọn ra nhóm trưởng và đề tài thảo luận
Cuộc họp kết thúc vào lúc 21 giờ cùng ngày.
Người viết biên bản
Bùi Thị Lan Anh
Cộng hòa xã hội chủ nghĩa Việt Nam
Độc lập – Tự do – Hạnh phúc
Hà Nội, ngày 15, tháng 3, năm 2022
Biên bản họp nhóm
(Lần 2)
Nhóm 1- Mã lớp: 2204INFO1931
I. Thời gian: 20h ngày 15 tháng 3 năm 2022
II. Địa điểm: phòng họp meet
III. Thành phần tham gia:
1. Bùi Thị Lan Anh
2. Đặng Ngọc Anh
3. Lê Phương Anh
4. Nguyễn Hoàng Anh
5. Nguyễn Mai Anh
6. Nguyễn Phương Anh S1
7. Nguyễn Phương Anh S2
8. Nguyễn Thị Vân Anh
9. Trần Thị Tú Anh
10. Trần Tuấn Anh
IV. Nội dung
Thảo luận về đề tài: Xác định và xây dựng một số lớp trên C++ phục vụ các chức năng
cơ bản trong hệ thống thông tin quản lý nhân sự. Trao đổi ý kiến, mỗi người đưa ra
những góp ý của mình
Phân chia cơng việc và tiến hành làm thảo luận
Cuộc họp kết thúc vào lúc 21 giờ 30 phút cùng ngày.
Người viết biên bản
Bùi Thị Lan Anh
Cộng hòa xã hội chủ nghĩa Việt Nam
Độc lập – Tự do – Hạnh phúc
Hà Nội, ngày 15, tháng 4, năm 2022
Biên bản họp nhóm
(Lần 3)
Nhóm 1- Mã lớp: 2204INFO1931
I.
II.
III.
IV.
Thời gian: 20h ngày 15 tháng 4 năm 2022
Địa điểm: phòng họp meet
Thành phần tham gia:
1. Bùi Thị Lan Anh
2. Đặng Ngọc Anh
3. Lê Phương Anh
4. Nguyễn Hoàng Anh
5. Nguyễn Mai Anh
6. Nguyễn Phương Anh S1
7. Nguyễn Phương Anh S2
8. Nguyễn Thị Vân Anh
9. Trần Thị Tú Anh
10. Trần Tuấn Anh
Nội dung
Thảo luận về đề tài: Xác định và xây dựng một số lớp trên C++ phục vụ các chức
năng cơ bản trong hệ thống thông tin quản lý nhân sự. Tổng hợp các phần code và tiến
hành chạy chương trình nhưng vẫn chưa ra được kết quả nhưng mong đợi
Các thành viên tiếp tục hoàn thiện bài
Cuộc họp kết thúc vào lúc 21 giờ 30 phút cùng ngày.
Người viết biên bản
Bùi Thị Lan Anh
Phân chia công việc
ST
T
1
Họ tên
Bùi Thị Lan Anh
Công việc
Xây dựng bài tốn và
Đánh giá của Đánh giá của
thành viên
nhóm trưởng
(thang 10)
(Thang 10)
2
3
4
5
6
7
8
9
10
tổng hợp code và làm
word
Phần class date và class
Đặng Ngọc Anh
NhanVien
Phần class CongTy,
Lê Phương Anh
hàm main
Phần class CongTy,
Nguyễn Hoàng Anh
hàm main
Phần class date và class
Nguyễn Mai Anh
NhanVien
Nguyễn Phương Anh Phần class date và class
S1
NhanVien
Nguyễn Phương Anh Phần class CongTy,
S3
hàm main
Phần class
NhanVienSX,
Nguyễn Thị Vân Anh
NhanVienVP,
NhanVienQL
Xây dựng thông tin
Trần Thị Tú Anh
NHANVIEN.txt
Phần class
NhanVienSX,
Trần Tuấn Anh
NhanVienVP,
NhanVienQL
Mục lục
Lời mở đầu,...............................................................................................................7
A. Cơ sở lý thuyết.....................................................................................................8
1. Lập trình hướng đối tượng....................................................................................................................8
1.1 Lập trình tuyến tính..........................................................................................................................8
1.2 Lập trình hướng cấu trúc.................................................................................................................8
1.3 Phương pháp lập trình hướng đối tượng.......................................................................................8
1.4 So sánh phương pháp lập trình hướng đối tượng với các phương pháp khác..........................9
2. Các khái niệm cơ bản trong OOP.......................................................................................................11
2.1 Trừu tượng hóa dữ liệu..................................................................................................................11
2.2 Đối tượng..........................................................................................................................................11
2.3 Lớp đối tượng..................................................................................................................................11
2.4 Thuộc tính & Phương thức............................................................................................................11
3. Đối tượng và lớp trong C++.................................................................................................................12
3.1 Lớp....................................................................................................................................................12
3.2 Hàm thiết lập và hủy bỏ.................................................................................................................14
3.3 Các thành phần tĩnh (static)..........................................................................................................16
3.4 Hàm bạn và lớp bạn........................................................................................................................17
B. Xác định và xây dựng một số lớp trên C++ phục vụ các chức năng cơ bản
trong hệ thống thông tin quản lý nhân sự............................................................18
Chương 1: Bài toán................................................................................................18
1.
Bài toán:.............................................................................................................................................18
2.
Yêu cầu...............................................................................................................................................18
3.
Thiết kế sơ đồ các lớp.......................................................................................................................19
Chương 2: Thông tin nhân viên trong file NHANVIEN.txt...............................20
Chương 3: Chương trình code..............................................................................27
3.1 Class date.............................................................................................................................................27
3.2 Class NhanVien...................................................................................................................................28
3.3 Class NhanVienSX..............................................................................................................................30
3.4 Class NhanVienQL.............................................................................................................................31
3.5 Class NhanVienVP..............................................................................................................................32
3.6 Class CongTy.......................................................................................................................................33
3.7
Hàm main.......................................................................................................................................39
Lời cảm ơn,.............................................................................................................40
Lời mở đầu,
“Nhân sự” là tài sản quan trọng nhất của mỗi doanh nghiệp, vì thế cả trong và sau khủng
hoảng, chúng ta có thể giảm chi phí lao động nhưng hạn chế tới mức thấp nhất việc cắt
giảm nhân sự” giáo sư ChrisBrewster nói. Trong nền kinh tế thị trườnghiện nay, trước sự
biến động mạnh mẽ của mơi trường kinh doanh, tính chất khốc liệt của sự cạnh tranh và
nhu cầu đòi hỏi được đáp ứng ngày càng cao của nhân viên, tất cả những vấn đề này đã và
đang là sức ép lớn đối với doanh nghiệp. Trong đó vấn đề quản trị nguồn nhân lực là một
trong các yếu tố mang tính chất sống cịn. Quản lý nguồn nhân lực chính là giúp cho bản
thân bạn và doanh nghiệp của bạn đi đến thành công.
Hệ thống quản lý nhân sự là nền tảng tổng hợp mọi chức năng hỗ trợ thực hiện các công
tác quản lý nhân sự bao gồm tuyển dụng, phát triển và đãi ngộ nhân sự. Thay vì triển khai
cơng tác quản lý nhân sự theo cách thủ công, truyền thống, việc áp dụng hệ thống quản lý
nhân sự khoa học theo những tiêu chuẩn thống nhất trong từng doanh nghiệp đã và đang
mang đến một bộ máy nhân sự hiệu quả cao hơn rất nhiều. Thông qua hệ thống này, công
tác quản lý nhân sự diễn ra nhanh, gọn, rõ ràng. Từ đó: Tuyển dụng nhanh và đúng người,
bố trí đúng cơng việc. Thúc đẩy, khích lệ nhân sự phát huy tối đa năng lực. Đảm bảo tính
cơng bằng, minh bạch trong vấn đề giải quyết quyền và lợi ích của người lao động
Nhận thức được tầm quan trọng của hệ thống quản lý nhân sự trong các doanh nghiệp như
vậy nên hiện nay các doanh nghiệp đều chú trọng đến vấn đề này. Sự thành công của
doanh nghiệp phụ thuộc vào tính hiệu quả của cách “quản lý con người” của bạn-bao gồm
cả cách quản lý chính bản thân, quản lý các phòng ban, các chức vụ nhân sự trong công
ty. Cách quản lý, môi trường làm việc mà bạn đem lại cho nhân viên của mình và cách
truyền đạt những giá trị và mục đích sẽ quyết định sự thành công của bạn cũng như thành
công của doanh nghiệp. Do đó, nhóm 1 chúng em cùng xác định và xây dựng một số lớp
trên C++ phục vụ các chức năng cơ bản trong hệ thống thông tin quản lý nhân sự.
A. Cơ sở lý thuyết
1. Lập trình hướng đối tượng
1.1 Lập trình tuyến tính
Chương trình được viết tuần tự với các câu lệnh được thực hiện từ đầu đến cuối
-
Chương trình thường chỉ vài trăm dịng
Phần mềm đơn giản
1.2 Lập trình hướng cấu trúc
Tư tưởng:
+ Chương trình tổ chức thành các chương trình con
+ Mỗi chương trình con đảm nhận xử lý một cơng việc nhỏ trong tồn bộ hệ thống
+ Mỗi chương trình con này lại có thể chia thành các chương trình con nhỏ hơn
+ Quá trình phân chia như vậy tiếp tục cho đến khi nhận được các chương trình con
đơn giản
Tổ chức chương trình thành các chương trình con (hàm và thủ tục)
1.3 Phương pháp lập trình hướng đối tượng
Tư tưởng:
+ Phân tích bài toán thành các thực thể được gọi là các đối tượng (Object) từ đó xây
dựng các dữ liệu và các hàm (thao tác) thể hiện các đối tượng đó (methords)
+ Chương trình sẽ được tổ chức thành các đối tượng và sự tương tác giữa các đối
tượng
Trong đó: đối tượng là sự kết hợp giữa các thuộc tính (dữ liệu) và phương thức (hàm)
thao tác trên các thuộc tính đó.
1.4 So sánh phương pháp lập trình hướng đối tượng với các phương pháp khác
Lập trình tuyến
tính
- Đơn giản: chương
trình được thực
hiện theo lối tuần
tự
- Đơn luồng: chỉ có
duy nhất một
luồng cơng việc và
các cơng việc
được thực hiện
tuần
tự
trong
luồng đó
Đặc
điểm
Ưu
điểm
Lập trình cấu trúc
- Tập trung vào cơng việc
cần thực hiện (thuật
tốn)
- Chương trình lớn được
chia thành các hàm nhỏ
hơn
- Phần lớn các hàm sử
dụng dữ liệu chung
- Các hàm (thủ tục)
truyền thông tin cho
nhau thông qua cơ chế
truyền tham số
- Dữ liệu trong hệ thống
được chuyển động từ
hàm này sang hàm khác
- Đóng gói chức năng (sử
dụng hàm/ thủ tục mà
khơng cần biết nội dung
cụ thể)
- Chương trình được thiết
kế theo cách tiếp cận từ
trên xuống (top- down)
Được ứng dụng với Chương trình dễ hiểu, dễ
các chương trình theo dõi.
đơn giản, dễ hiểu
Tư duy giải thuật rõ ràng.
Lập trình hướng đối
tượng
- Đặt trọng tâm vào đối
tượng, tập trung vào
khoanh vùng dữ liệu
thay vì hàm
- Chương trình được
chia thành các đối
tượng
- Các đối tượng tác
động và trao đổi
thông tin cho nhau
thông qua các hàm
với cơ chế thơng báo
- Đóng gói chức năng
và dữ liệu
- Các cấu trúc dữ liệu
được thiết kế để đặc
tả được các đối tượng
- Các hàm xác định
trên các vùng dữ liệu
của đối tượng được
gắn với nhau trên cấu
trúc dữ liệu đó
- Chương trình được
thiết kế theo cách tiếp
cận từ dưới lên
- Dữ liệu và các hàm
mới có thể dễ dàng bổ
sung vào đối tượng
nào đó khi cần thiết
dễ nâng cấp thành hệ
thống lớn nhất
- Dữ liệu được bao bọc,
che dấu và không cho
phép các hàm ngoại
lai truy cập tự do mà
dữ liệu của một đối
tượng chỉ có thể được
truy cập bởi chính các
hàm xác định trong
đối tượng đó
chương trình an tồn
- Mơ hình được xây
dựng gần với hệ
thống thực tế
- Thông qua nguyên lý
thừa kế loại bỏ
đoạn chương trình lặp
lại khi khai báo lớp
và mở rộng khả năng
sử dụng các lớp
ngắn gọn, tiết kiệm
thời gian
- Cách thiết kế đặt
trọng tâm vào dữ liệu
xây dựng mơ hình
chi tiết và cài đặt dễ
hơn
- Khó phân chia - Có hàm có thể truy cập
cơng việc
và thay đổi dữ liệu
- Viết chương trình
chung Khó kiểm sốt
dài dịng và mất
(nhất là đối với chương
thời gian, khó
trình lớn, phức tạp)
kiểm sốt các - Nếu thay đổi cấu trúc
chương trình
dữ liệu dùng chung cho
- Khó áp dụng cho
một số hàm thì phải
các bài tốn lớn và
thay đổi các hàm liên
phức
tạp
quan dữ liệu đó. Khó
Nhượ
mở rộng chương trình
c điểm
- Mơ hình được xây dựng
theo cách tiếp cận này
không mô tả được đầy
đủ và trung thực hệ
thống trong thực tế
(phân tích, thiết kế)
Khơng thích hợp để
xây dựng những phẩn
mềm rất lớn
2. Các khái niệm cơ bản trong OOP
2.1 Trừu tượng hóa dữ liệu
Trừu tượng (Abstraction): Đây là tính trừu tượng đối tượng giống nhau có thể trừu
tượng hóa thành một lớp. chúng ta có thể bỏ tính chất phức tạp của đối tượng bằng
cách đưa ra các thuộc tính. Kèm theo đó là phương thức cần thiết của đối tượng trong
lập trình.
Các kỹ thuật trừu tượng hóa
-
-
Đóng gói ( Encapsulation): là tiến trình che dấu việc thực thi chi tiết đối tượng
Ẩn thông tin (Information Hiding): Đóng gói Khơng rõ thuộc tính lưu trữ hay
phương thức được cài đặt như thế nào được che giấu đi từ các đối tượng
Tính thừa kế (Inheritance):
Thừa kế nghĩa là các phương thức và các thuộc tính được định nghĩa trong một lớp
có thể được thừa kế hoặc được sử dụng lại bởi lớp khác
Hệ thống hướng đối tượng cho phép các lớp được định nghĩa thừa kế từ các lớp
khác
Tính đa hình (polymorphism): Đa hình “nhiều hình thức”, hành động cùng tên có
thể được thực hiện khác nhau đối với các đối tượng/ các lớp khác nhau.
Ngữ cảnh khác kết quả khác
2.2 Đối tượng
- Đối tượng là chìa khóa để hiểu được kỹ thuật hướng đối tượng. Trong hệ thống
hướng đối tượng, mọi thứ đều là đối tượng.
- Đối tượng thế giới thực là một thực thể cụ thể mà thông thường bạn có thể sờ, nhìn
thấy hay cảm nhận được. Có trạng thái và hành động.
- Đối tượng phần mềm có thể được dùng để biểu diễn các đối tượng thế giới thực.
Cũng có trạng thái và hoạt động nhưng trạng thái là thuộc tính, hành động là
phương thức.
- Đối tượng (object) là một thực thể phần mềm bao bọc các thuộc tính và các
phương thức liên quan
- Thuộc tính được xác định bởi giá trị cụ thể gọi là thuộc tính thể hiện. Một đối
tượng cụ thể được gọi là một thể hiện.
2.3 Lớp đối tượng
- Một lớp là một thiết kế (blueprint) hay mẫu (prototype) cho các đối tượng cùng
kiểu
- Lớp định nghĩa các thuộc tính và các phương thức chung tất cả các đối tượng của
cùng một loại nào đó
- Một đối tượng là một thể hiện cụ thể của một lớp
- Mỗi thể hiện có thể có những thuộc tính thể hiện khác nhau
2.4 Thuộc tính & Phương thức
- Thuộc tính (attribute): là dữ liệu trình bày các đặc điểm về một đối tượng
- Phương thức (method): có liên quan tới những thứ mà đối tượng có thể làm. Một
phương thức đáp ứng một chức năng tác động lên dữ liệu của đối tượng.
- Thuộc tính lớp (class attribute) là một hạng mục dữ liệu liên kết với một lớp cụ thể
mà không liên kết với các thể hiện của lớp. Nó được định nghĩa bên trong định
nghĩa lớp và được chia sẻ bởi tất cả các thể hiện của lớp
-
-
Phương thức lớp (class method) là một phương thức được triệu gọi mà không tham
khảo tới bất kỳ một đối tượng nào. Tất cả các phương thức lớp ảnh hưởng đến tồn
bộ lớp chứ khơng ảnh hưởng đến một lớp riêng rẽ nào.
Thông điệp: là một lời yêu cầu một hoạt động bao gồm: đối tượng nhận thông điệp,
tên của các phương thức thực hiện, các tham số mà phương thức cần.
Truyền thông điệp: một đối tượng triệu gọi một hay nhiều phương thức của đối
tượng khác để yêu cầu thông tin.
3. Đối tượng và lớp trong C++
3.1 Lớp
3.1.1 Khái niệm
Lợi ích của việc đóng gói:
- Nhìn từ bên ngồi, một đối tượng chỉ được biết tới bởi các mô tả về các phương thức
của nó, cách cài đặt dữ liệu như thế nào không quan trọng.
- Các phương thức đóng vai trị là giao diện bắt buộc giữa các đối tượng và người sử dụng
- Nâng cao chất lượng của chương trình.
- Bảo trì chương trình thuận lợi hơn: một sự thay đổi cấu trúc của một đối tượng chỉ ảnh
hưởng đến bản thân đối tượng, người sử dụng đối tượng ko cần biết sự thay đổi này (với
lập trình cấu trúc thì người sử dụng phải tự quản lý sự thay đổi này)
- Các thông điệp gửi tới đối tượng nào sẽ gắn chặt với đối tượng đó và chỉ đối tượng nào
nhận được thông điệp(message) mới phải thực hiện theo thơng điệp đó
3.1.2 Khai báo lớp
Cấu trúc:
class <tên lớp>{
private:
< Khai báo các thành phần riêng trong từng đối tượng >
public:
< Khai báo các thành phần public của từng đối tượng >
};
< Định nghĩa của các hàm thành phần có thể được định nghĩa bên trong khai báo hoặc
không >
3.1.3 Đối tượng
* Tạo đối tượng:
<tên lớp> <tên đối tượng>; // khai báo một đối tượng
- Vùng nhớ được cấp phát cho một biến kiểu lớp sẽ cho một khung của đối tượng bao
gồm dữ liệu là các thể hiện cụ thể của các mô tả dữ liệu trong khai báo lớp cùng với các
thông điệp gửi tới các hàm thành phần.
- Mỗi đối tượng sở hữu một tập các biến tương ứng với tên và kiểu của các thành phần dữ
liệu định nghĩa trong lớp. Chúng là các biến thể hiện của đối tượng.
* Lớp: là một kiểu dữ liệu do đó có thể khai báo con trỏ hay tham chiếu đến một đối
tượng thuộc lớp và có thể truy nhập gián tiếp đến đối tượng.
* Nhưng con trỏ và tham chiếu không phải là một thể hiện của lớp
* Khởi tạo & gán các đối tượng:
Có thể thực hiện phép gán giữa hai đối tượng cùng lớp
3.1.4 Các thành phần dữ liệu và hàm
Thành phần dữ liệu:
Khai báo
<type> <tên thành phần>
Một thành phần dữ liệu có thể là một biến kiểu cơ sở, kiểu người dùng định nghĩa, kiểu
lớp đã được khai báo trước.
Không thể dùng trực tiếp các lớp để khai báo kiểu thành phần dữ liệu thuộc vào bản thân
lớp đang được định nghĩa. Tuy nhiên, có thể dùng con trỏ hoặc tham chiếu đến các đối
tượng của chính lớp đó.
Khơng thể khai báo và khởi đầu giá trị cho các thành phần dữ liệu.
Hàm thành phần:
Hàm được khai báo trong định nghĩa lớp được gọi là hàm thành phần.
Các hàm thành phần có thể truy nhập đến các thành phần dữ liệu và các hàm thành phần
khác trong lớp.
Sử dụng đối tượng như tham số của hàm thành phần:
Truy nhập đến các thành phần private trong đối tượng:Hàm thành phần có quyền truy
nhập đến các thành phần private của đối tượng gọi nó.
Truy nhập đến các thành phần private trong các tham số là đối tượng truyền cho hàm
thành phần: Hàm thành phần có quyền truy nhập đến tất cả các thành phần private của các
đối tượng, tham chiếu đối tượng hay con trỏ đối tượng có cùng kiểu lớp khi được dùng là
tham số hình thức của nó
Con trỏ this:
Từ khố this trong định nghĩa của các hàm thành phần lớp dùng để xác định địa chỉ của
đối tượng dùng làm tham số ngầm định cho hàm thành phần. Con trỏ this tham chiếu đến
đối tượng đang gọi hàm thành phần.
3.1.5 Phạm vi lớp và cách truy xuất
Trong định nghĩa lớp ta có thể xác định khả năng truy xuất thành phần của một lớp nào đó
từ bên ngoài phạm vi lớp.
Private và public là các từ khố xác định thuộc tính truy xuất. Mọi thành phần được liệt
kê trong phần public đều có thể truy xuất trong bất kỳ hàm nào. Những thành phần liệt kê
trong phần private chỉ được truy xuất bên trong phạm vi lớp
Hàm inline:
Cải thiện tốc độ thực thi
Tốn bộ nhớ (dành cho mã lệnh) khi thực thi.
3.2 Hàm thiết lập và hủy bỏ
3.2.1 Hàm thiết lập
Chức năng của hàm thiết lập
Khởi tạo các giá trị thành phần dữ liệu của đối tượng, xin cấp phát bộ nhớ cho các thành
phần dữ liệu động
Một số đặc điểm quan trọng của hàm thiết lập
1. Hàm thiết lập có cùng tên với tên của lớp
2. Hàm thiết lập phải có thuộc tính public
3. Hàm thiết lập khơng có giá trị trả về
4. Có thể có nhiều hàm thiết lập trong cùng một lớp
5. Khi một lớp có nhiều hàm thiết lập, việc tạo các đối tượng phải kèm theo các tham số
phù hợp với một trong số các hàm thiết lập đã khai báo
6. Hàm thiết lập có thể được khai báo với các tham số có giá trị ngầm định
Hàm thiết lập ngầm định
Do chương trình dịch cung cấp khi trong lớp khơng định nghĩa hàm thiết lập nào (khơng
làm gì cả).
Con trỏ đối tượng
Khai báo: point *ptr, p;
Nhận giá trị là địa chỉ của các đối tượng có cùng kiểu lớp: ptr=&p
Cách gọi: ptr->move(1,1)
Cấp phát ô nhớ new: ptr=new point(5,10) // gọi hàm thiết lập
Tham chiếu đối tượng
point a(1,10);
point &p=a;
p.move(1,1);
p.display();
3.2.2 Hàm hủy bỏ
Hàm huỷ bỏ (destructor)
Chức năng: Hàm huỷ được gọi khi đối tượng tương ứng bị xoá khỏi bộ nhớ
Các tính chất
Tên của hàm huỷ bỏ bắt đầu bằng ~ theo sau là tên của lớp tương ứng
Hàm huỷ bỏ phải có thuộc tính public
Hàm huỷ bỏ khơng có tham số, mỗi lớp chỉ có một hàm huỷ bỏ
Khi khơng định nghĩa hàm huỷ bỏ chương trình dịch tự động sản sinh một hàm huỷ bỏ
ngầm định
Hàm huỷ bỏ khơng có giá trị trả về
3.2.3 Hàm thiết lập sao chép và tốn tử gán
Các tính chất
Khởi tạo một đối tượng bằng việc khởi tạo nó từ một đối tượngcùng lớp, mà đã được tạo
trước đó.
Hàm thiết lập sao chép được sử dụng để:
Khởi tạo một đối tượng từ đối tượng khác với cùng kiểu.
Sao chép một đối tượng để truyền nó như là một tham số tới một hàm.
Sao chép một đối tượng để trả về nó từ một hàm.
Cú pháp:
ten_lop (const ten_lop &obj) {
// phan than cua constructor
}
3.3 Các thành phần tĩnh (static)
3.3.1 Thành phần dữ liệu tĩnh
Thành phần dữ liệu tĩnh:
Nhiều đối tượng cùng chia xẻ dữ liệu bằng việc đặt từ khoá static trước khai báo thành
phần dữ liệu tương ứng
Thành phần tĩnh chiếm giữ vùng nhớ ngay cả khi không khai báo bất kỳ đối tượng nào.
3.3.2 Khai báo thành phần dữ liệu tĩnh
Cấu trúc khai báo:
class example{
static int n;
float x;
void display();
};
example p, p1;
3.3.3 Hàm thành phần tĩnh
Hàm được khai báo bắt đầu bằng static được gọi là hàm thành phần tĩnh được
Hàm thành phần tĩnh có thể được gọi cho dù có khai báo đối tượng của lớp đó hay khơng
3.4 Hàm bạn và lớp bạn
3.4.1 Khái niệm hàm bạn
Hàm bạn (friend function) là hàm có thể truy cập thành phần private hoặc protected của
lớp xem nó là bạn.
Lớp bạn (friend class) là lớp có thể truy cập các thành phần private hoặc protected của lớp
xem nó là bạn.
Khi định nghĩa lớp có thể khai báo các hàm bạn của lớp
Khai báo hàm bạn cho phép hàm truy nhập đến các thành phần private của lớp giống như
các hàm thành phần của lớp đó
Các kiểu bạn bè
Hàm tự do là bạn của một lớp
Hàm bạn của nhiều lớp
Hàm thành phần của một lớp là bạn của một lớp khác
Tất cả các hàm thành phần của một lớp là bạn của một lớp khác
3.4.2 Các kiểu bạn bè khác
Hàm thành phần của một lớp là bạn của một lớp khác
Hàm bạn của nhiều lớp
Tất cả các hàm thành phần của một lớp là bạn của một lớp khác
B. Xác định và xây dựng một số lớp trên C++ phục vụ các chức năng cơ bản trong
hệ thống thơng tin quản lý nhân sự
Chương 1: Bài tốn
1. Bài tốn:
Giả sử cơng ty giày da Minh Đức có 3 loại nhân viên: nhân viên sản xuất, nhân viên văn
phòng và nhân viên quản lý
- Mỗi nhân viên cần quản lý các thông tin sau:
Mã nhân viên
Họ tên nhân viên
Ngày sinh
Địa chỉ
Hệ số lương
Lương cơ bản
Lương thưởng
- Lương của nhân viên được tính như sau:
+ Đối với nhân viên sản xuất: Lương=lương căn bản * hệ số lương + tiền tăng ca
+ Đối nhân viên văn phòng: lương = lương căn bản * hệ số lương + tiền thưởng thêm
+ Đối với nhân viên quản lý: lương= Lương căn bản* hệ số lương + tiền thưởng thêm
- Định dạng file NHANVIEN.TXT như sau:
Dòng đầu tiên chứa số lượng nhân viên trong công ty
Các dịng tiếp theo mỗi dịng là thơng tin của từng nhân viên
2.
1)
2)
3)
4)
5)
6)
7)
8)
u cầu
Đọc thơng tin nhân viên từ file NHANVIEN.txt
Tính lương và xuất thông tin nhân viên
Thêm thông tin nhân viên sản xuất
Thêm thông tin nhân viên quản lý
Thêm thông tin nhân viên văn phịng
Tìm kiếm thơng tin nhân viên bằng mã nhân viên
Xóa thơng tin nhân viên
Thơng kê lương
3. Thiết kế sơ đồ các lớp
Chương 2: Thông tin nhân viên trong file NHANVIEN.txt
120
S100, Nguyen Lan Nhi, 19/12/1997, TDP Tru 5 Co Nhue 2 Bac Tu Liem Ha Noi, 2.42,
1490000, 0
S101, Vu Thi Hue, 13/09/2002, PTNT VN Nghia do Cau Giay Ha Noi, 2.42, 1490000, 0
S102, Pham Quynh Mai, 11/12/2002, Dai Dong Dại Mach Dong Anh Ha Noi, 2.42,
1490000, 0
S103, Nguyen Thi Dung, 25/07/2002, Trach Vinh Ngoc Dong Anh Ha Noi, 2.42,
1490000, 0
S104, Hoang Thi Thanh Phuong, 02/12/2003, Ap To Uy No Dong Anh Ha Noi, 2.42,
1490000, 0
S105, Nguyen Thi Thao, 01/01/2002, 298/20 Ngoc Lam Ngoc Lam Long Bien Ha Noi,
2.42, 1490000, 0
S106, Nguyen Minh Tra My, 11/04/2000, Trieu Xuyen 3 Long Xuyen Phu Tho Ha Noi,
2.42, 1490000, 0
S107, Tran Thi Ngoc Anh, 16/10/2000, Lien Xuan Nam Son Soc Son Ha Noi, 2.42,
1490000, 0
S108, Ung Thu Ha, 10/11/2002, To 18 Dong Mai Ha Dong Ha Noi, 2.42, 1490000, 0
S109, Trieu Thu Hang, 31/07/2001, Do Dong Thanh Oai Ha Noi, 2.42, 1490000, 0
S110, Nguyen Thi Kim Hue, 15/10/1998, TDP Tru 5 Co Nhue 2 Bac Tu Liem Ha Noi,
2.42, 1490000, 0
S111, Vuong Thuy Huong, 17/03/2001, TDP Tru 5 Co Nhue 2 Bac Tu Liem Ha Noi,
2.42, 1490000, 0
S112, Trieu Thi Yen, 28/10/2001, PTNT VN Nghia do Cau Giay Ha Noi, 2.42, 1490000, 0
S113, Phan Thi Duyen, 05/10/2002, Dai Dong Dai Mach Dong Anh Ha Noi, 2.42,
1490000, 0
S114, Tran Thi Thu Huong, 10/02/2002, PTNT VN Nghia do Cau Giay Ha Noi, 2.42,
1490000, 0
S115, Trinh Thu Phuong, 31/08/2000, PTNT VN Nghia do Cau Giay Ha Noi, 2.42,
1490000, 0
S116, Nguyen Thi Hai Yen, 07/10/2001, Tuy Loc Cam Khe Phu Tho, 2.42, 1490000, 0
S117, Nguyen Thi Thuong, 19/04/2000, Thuy Dien Tan Lap Song Lo Vinh Phuc, 2.42,
1490000, 0
S118, Nguyen Thi Van Anh, 12/11/2002, Cam Vien Dai Tu Yen Lac Vinh Phuc, 2.42,
1490000, 0
S119, Nguyen Thi Tam, 01/01/2002, Trach Vinh Ngoc Dong Anh Ha Noi, 2.42, 1490000,
0
S120, Bui Phuong Anh, 09/08/2002, Dai Dong Dai Mach Dong Anh Ha Noi, 2.42,
1490000, 0
S121, Nguyen Trang Nhung, 04/08/1999, Trach Vinh Ngoc Dong Anh Ha Noi, 2.42,
1490000, 0
S122, Luu Khanh Linh, 19/06/1998, PTNT VN Nghia do Cau Giay Ha Noi, 2.42,
1490000, 0
S123, Luong Minh Huyen, 30/12/2002, PTNT VN Nghia do Cau Giay Ha Noi, 2.42,
1490000, 0
S124, Nguyen Hoai Thu Thuy, 13/09/2002, Ap To Uy No Dong Anh Ha Noi, 2.42,
1490000, 0
S125, Nguyen Thi Thu Hau, 14/01/2002, Trach Vinh Ngoc Dong Anh Ha Noi, 2.42,
1490000, 0
S126, Pham Thi Ngoc Huyen, 02/11/1998, 298/20 Ngoc Lam Ngoc Lam Long Bien Ha
Noi, 2.42, 1490000, 0
S127, Tran Thi Kieu Trang, 02/10/2002, Trach Vinh Ngoc Dong Anh Ha Noi, 2.42,
1490000, 0
S128, Nguyen Hong Van, 26/03/2000, Thon 4 Van Nam Phuc Tho Ha Noi, 2.42, 1490000,
0
S129, Pham Phuong Mai, 06/06/2002, Cum 4 Lien Hiep Phuc Tho Ha Noi, 2.42,
1490000, 0
S130, Tran Hai Van, 20/07/1999, Ap To Uy No Dong Anh Ha Noi, 2.42, 1490000, 0
S131, Kieu Thi Van, 06/10/2002, PTNT VN Nghia do Cau Giay Ha Noi, 2.42, 1490000, 0
S132, Doan Khanh Hoa, 18/10/2002, Thon 4 Van Nam Phuc Tho Ha Noi, 2.42, 1490000,
0
S133, Ngo Thi My Tam, 30/10/1990, Thon 4 Van Nam Phuc Tho Ha Noi, 2.42, 1490000,
0
S134, Bui Lan Huong, 07/05/2002, Khu B Lam Y Yen Nam Dinh, 2.42, 1490000, 0
S135, Vu Thi Phuong Oanh, 14/08/2002, 298/20 Ngoc Lam Ngoc Lam Long Bien Ha
Noi, 2.42, 1490000, 0
S136, Nguyen Thi Nguyet Nga, 30/10/2001, Thon 4 Van Nam Phuc Tho Ha Noi, 2.9,
1490000, 0
S137, Phung Thi Nguyet Han, 30/09/2000, PTNT VN Nghia do Cau Giay Ha Noi, 2.9,
1490000, 0
S138, Pham Thi Nguyet Nga, 07/07/2002, Trach Vinh Ngoc Dong Anh Ha Noi, 2.9,
1490000, 0
S139, Doan Thu Ha, 15/06/2001, Trach Vinh Ngoc Dong Anh Ha Noi, 2.9, 1490000, 0
S140, Pham Khanh Linh, 18/02/2002, Trach Vinh Ngoc Dong Anh Ha Noi, 2.9, 1490000,
0
S141, Bui Thi Linh, 10/01/2002, Thon 4 Van Nam Phuc Tho Ha Noi, 2.9, 1490000, 0
S142, Ngo Kim Hong, 01/06/2002, Thon 4 Van Nam Phuc Tho Ha Noi, 2.9, 1490000, 0
S143, Nguyen Thi Lan Huong, 02/03/2000, PTNT VN Nghia do Cau Giay Ha Noi, 2.9,
1490000, 0
S144, Ngo Thi Ngoc Anh, 12/02/2002, Son Da Ba Vi Ha Noi, 2.9, 1490000, 0
S145, Bui Thi Kim Ngan, 20/03/2002, Co Loa Dong Anh Ha Noi, 2.9, 1490000, 0
S146, Nguyen Thanh Huong, 08/02/2000, Boi Khe Chuyen My Phu Xuyen Ha Noi, 2.9,
1490000, 0
S147, Thinh Quoc Khanh, 02/12/2000, Cum 4 Lien Hiep Phuc Tho Ha Noi, 2.9, 1490000,
0
S148, Pham Hong Cong, 28/10/2002, Cum 10 Sen Phuong Phuc Tho Ha Noi, 2.9,
1490000, 2000000
S149, Nguyen Dinh Cat Diem, 23/04/1995, Ngo Dao Tan Hung Soc Son Ha Noi, 2.9,
1490000, 2000000
S150, Ta Hoang Anh, 02/12/1998, Tu Duong To Hieu Thuong Tin Ha Noi, 2.9, 1490000,
2000000
S151, Hoang Manh Hoa, 03/10/1997, Thon 4 Van Nam Phuc Tho Ha Noi, 2.9, 1490000,
2000000
S152, Bui Tien Vuong, 27/05/1996, TT Vien thiet ke hoa chat Hang Bot Dong Da pho Ha
Noi, 2.9, 1490000, 2000000
S153, Nguyen Dinh Hoa, 22/10/1993, Hien Le Cao Minh Phuc Yen Vinh Phuc, 2.9,
1490000, 2000000
S154, Hoang Ngoc Hieu, 13/12/1999, Trach Vinh Ngoc Dong Anh Ha Noi, 2.9, 1490000,
2000000
S155, Bui Phuong Nam, 25/12/2000, TT Vien thiet ke hoa chat Hang Bot Dong Da pho
Ha Noi, 2.9, 1490000, 2000000
S156, Nguyen Duc Thanh, 11/05/2002, Du Tien Thanh Thuy Thanh Oai Ha Noi, 2.9,
1490000, 2000000
S157, Le Duc Hieu, 02/03/2001, Cum 4 Lien Hiep Phuc Tho Ha Noi, 2.42, 1490000,
2000000
S158, Vu Hoang Long, 15/07/2000, Cum 4 Lien Hiep Phuc Tho Ha Noi, 2.42, 1490000,
2000000
S159, Ngo Van Thuyet, 12/07/1998, Cum 4 Lien Hiep Phuc Tho Ha Noi, 2.42, 1490000,
2000000
S160, Nguyen Duc Truong Thinh, 12/10/2000, Hien Le Cao Minh Phuc Yen Vinh Phuc,
2.42, 1490000, 2000000
S161, Dang Tien Dat, 17/10/2000, Thieu To Trung Nguyen Yen Lac Vinh Phuc, 2.42,
1490000, 2000000
S162, Tran Manh Tuan, 03/06/2001, Thon 7 Trung Ha Yen Lac Vinh Phuc, 2.42, 1490000,
2000000
S163, Tran Viet Duc, 14/06/1988, Thon 7 Trung Ha Yen Lac Vinh Phuc, 2.42, 1490000,
2000000
S164, Tran Tuan Anh, 30/03/1997, Trach Vinh Ngoc Dong Anh Ha Noi, 2.42, 1490000,
2000000
S166, Nguyen Van Vinh, 21/08/2000, Du Tien Thanh Thuy Thanh Oai Ha Noi, 2.42,
1490000, 2000000
S167, Nguyen Minh Duc, 01/01/1999, Du Tien Thanh Thuy Thanh Oai Ha Noi, 2.42,
1490000, 2000000
S168, Tran Huy Viet, 26/10/2000, Trach Vinh Ngoc Dong Anh Ha Noi, 2.42, 1490000,
2000000
S169, Nguyen Duy Tung, 11/03/2001, Xuan Hoa 2 Cao Minh Phuc Yen Vinh Phuc, 2.42,
1490000, 2000000
S170, Hoang Cong Anh, 09/01/2000, Hien Le Cao Minh Phuc Yen Vinh Phuc, 2.42,
1490000, 2000000
S171, Vuong Nhat Linh, 31/08/2000, Hien Le Cao Minh Phuc Yen Vinh Phuc, 2.42,
1490000, 2000000
S172, Pham Quoc Thinh, 13/01/1999, Xom 4 My Thanh My Loc Nam Dinh, 2.42,
1490000, 2000000
S174, Do Van Luan, 03/04/2000, Ngoc Dong Truc Thanh Truc Ninh Nam Dinh, 2.42,
1490000, 0
S175, Nguyen Hoang Khang, 10/09/1992, 41 Xuan Canh Dong Anh Ha Noi, 2.42,
1490000, 0
S176, Nguyen Nhu Duy, 13/09/1986, Xuan Hoa 2 Cao Minh Phuc Yen Vinh Phuc, 2.42,
1490000, 0
S177, Do Xuan Nhat, 01/12/1990, 41 Xuan Canh Dong Anh Ha Noi, 2.42, 1490000,
2000000
S178, Nguyen Tien Hung, 09/01/2002, Lap Thanh Dong Xuan Quoc Oai Ha Noi, 2.42,
1490000, 2000000
S179, Vu Ngoc Nam, 17/08/2000, TDP Tru 5 Co Nhue 2 Bac Tu Liem Ha Noi, 2.42,
1490000, 2000000
S180, Vu Van Tu, 01/01/1998, Du Tien Thanh Thuy Thanh Oai Ha Noi, 2.42, 1490000,
2000000
S181, Nguyen Hoai Nam, 17/09/2000, Lap Thanh Dong Xuan Quoc Oai Ha Noi, 2.42,
1490000, 2000000
S182, Tran Thanh Phong, 30/11/1997, 14 Tho Cuong Trieu Son Thanh Hoa, 2.9, 1490000,
2000000
S183, Nguyen Van Hanh, 12/05/2000, TDP Tru 5 Co Nhue 2 Bac Tu Liem Ha Noi, 2.9,
1490000, 2000000
S184, Nguyen Duc Hieu, 17/03/2001, Lap Thanh Dong Xuan Quoc Oai Ha Noi, 2.9,
1490000, 2000000
S185, Nguyen Manh Dung, 01/07/2001, 41 Xuan Canh Dong Anh Ha Noi, 2.9, 1490000,
2000000
S186, Nguyen Hoang Tan, 19/04/2001, to 7 Cu Khoi Long Bien Ha Noi, 2.9, 1490000,
2000000
S187, Nguyen Duy Thang, 05/07/2000, Lap Thanh Dong Xuan Quoc Oai Ha Noi, 2.9,
1490000, 2000000
S188, Nguyen Truong Thinh, 10/01/2000, Cu than Do Dong Thanh Oai Ha Noi, 2.9,
1490000, 2000000
S189, Pham Ngoc Long, 30/11/2000, Du Tien Thanh Thuy Thanh Oai Ha Noi, 2.9,
1490000, 2000000
S190, Nguyen Tuan Minh, 12/03/1996, Lap Thanh Dong Xuan Quoc Oai Ha Noi, 2.9,
1490000, 2000000
S191, Dao Quoc Quan, 07/02/2002, TDP Tru 5 Co Nhue 2 Bac Tu Liem Ha Noi, 2.9,
1490000, 2000000
S192, Nguyen Ba Duong, 13/05/2000, TDP Tru 5 Co Nhue 2 Bac Tu Liem Ha Noi, 2.9,
1490000, 2000000
S193, Luong Dac Nhat, 09/11/1996, Lap Thanh Dong Xuan Quoc Oai Ha Noi, 2.9,
1490000, 2000000
S194, Nguyen Huu Manh, 11/10/2002, 41 Xuan Canh Dong Anh Ha Noi, 2.9, 1490000,
2000000
S195, To Quang Hau, 12/08/1995, Boi Khe Chuyen My Phu Xuyen Ha Noi, 2.9,
1490000, 2000000
S196, Pham Minh Tuong Anh, 17/10/2000, TDP Tru 5 Co Nhue 2 Bac Tu Liem Ha Noi,
2.9, 1490000, 2000000
S197, Nguyen Duy Quang Truong, 24/02/2000, Khu 6 Ngo Xa Cam Khe Phu Tho, 2.9,
1490000, 2000000
S198, Nguyen Ha Tan, 28/10/2000, Huong Canh Binh Xuyen Vinh Phuc, 2.9, 1490000,
2000000
S199, Tran Ngoc Tu, 16/01/1994, TDP Tru 5 Co Nhue 2 Bac Tu Liem Ha Noi, 2.9,
1490000, 2000000
S200, Nguyen Tien Thang, 01/10/1993, Du Tien Thanh Thuy Thanh Oai Ha Noi, 2.9,
1490000, 2000000
Q300, Tran Chi Duc, 19/10/1992, TDP Tru 5 Co Nhue 2 Bac Tu Liem Ha Noi, 4.2,
1490000, 2500000
Q301, Nguyen Duc Ngoc, 08/02/2000, TDP Tru 5 Co Nhue 2 Bac Tu Liem Ha Noi, 4.2,
1490000, 2500000
Q302, Kieu Van Thai, 20/03/1996, Boi Khe Chuyen My Phu Xuyen Ha Noi, 4.2,
1490000, 2500000
Q303, Truong Van Hoan, 13/10/1999, 41 Xuan Canh Dong Anh Ha Noi, 4.2, 1490000,
2500000
Q304, Trinh Ngoc Son, 21/10/2000, TDP Tru 5 Co Nhue 2 Bac Tu Liem Ha Noi, 4.2,
1490000, 2500000
Q305, Nguyen Hoang Duc, 16/09/1993, Du Tien Thanh Thuy Thanh Oai Ha Noi, 4.2,
1490000, 2500000
Q306, Nguyen Cong Cuong, 20/05/1992, To 7 Cu Khoi Long Bien Ha Noi, 4.2, 1490000,
2500000