Professional Documents
Culture Documents
Lớp: 64KTPM5
Mã sinh viên: 2251172303
BÀI 6: QUẢN LÝ DỰ ÁN
Khai bảo lớp Nhân viên (mã NV, Họ tên, Địa chỉ, Số ĐT, chuyên môn), mã NV là một số
nguyên có 5 chữ số, tự động tăng.
Khai bảo lớp Dự án gồm các thuộc tính (mã dự án, Tên dự án, Kiểu dự án, Tổng kinh phí)
– trong đó kiểu dự án có thể gồm: nhỏ, trung bình hoặc lớn. Mã dự án là một số nguyên có 5
chữ số, tự động tăng.
Khai bảo lớp Bảng phân công có quan hệ kết hợp (association) với lớp Nhân viên và lớp
Dự án trong đó một nhân viên có thể được gán cho một hoặc nhiều dự án một lúc với số
ngày tham gia khác nhau và vị trí công việc khác nhau.
2. Nhập danh sách nhân viên. In ra danh sách nhân viên đã có.
3. Nhập danh sách phân công dự án cho mỗi nhân viên đã có và in danh sách ra màn hình.
(chú ý: cũng một nhân viên thì không thể tham gia cũng một dự án với hai vị trí khác
nhau nhưng có thể tham gia cùng lúc vào nhiều dự án).
5. Tìm kiếm và hiển thị danh sách phân công theo tên nhân viên.
SOURCE CODE
XỬ LÝ CÁC YÊU CẦU ĐỀ BÀI
# main.cpp
1. #include <vector>
2. #include <algorithm>
3. #include "HamPhu.h"
4.
5. int main()
6. {
7. // 1. BANG DANH SACH DU AN
8. vector<DuAn> ListDA;
9. int SLDA;
10. cout << "Nhap so luong du an: "; cin >> SLDA; cin.ignore();
11. ListDA.resize(SLDA);
12. for (int i = 0; i < SLDA; i++)
13. {
14. cout << "Du an thu " << i+1 << ": " << endl;
15. ListDA[i].NhapDA();
16. }
17. if (SLDA > 0) XuatDuAn();
18. for (int i = 0; i < SLDA; i++)
19. {
20. ListDA[i].XuatDA();
21. }
22. system("pause");
23. system("cls");
24.
25.
26. // 2. BANG DANH SACH SINH VIEN
27. vector<NhanVien> ListNV;
28. int SLNV;
29. cout << "Nhap so luong nhan vien: "; cin >> SLNV; cin.ignore();
30. ListNV.resize(SLNV);
31. for (int i = 0; i < SLNV; i++)
32. {
33. cout << "Nhan vien thu" << i + 1 << ": " << endl;
34. ListNV[i].NhapNV();
35. }
36. if (SLNV > 0) XuatNhanVien();
37. for (int i = 0; i < SLNV; i++)
38. {
39. ListNV[i].XuatNV();
40. }
41. system("pause");
42. system("cls");
43.
44.
45. // 3. BANG PHAN CONG
46. vector<PhanCong> ListPC(0);
47. for (int i = 0; i < SLNV; i++)
48. {
49. cout << "Phan cong viec cho " << ListNV[i].getHoTenNV() << endl;
50. for (int j = 0; j < SLDA; j++)
51. {
52. cout << "Du an " << ListDA[j].getTenDA() << endl;
53. int x;
54. cout << "Neu chon du an thi bam 1, huy thi bam 2: "; cin >> x; cin.ignore();
55. if (x == 1)
56. {
57. PhanCong PC;
58. PC.NhapPC(ListNV[i], ListDA[j]);
59. PC.NhapCV();
60. ListPC.push_back(PC);
61. }
62. }
63. }
64. if (ListPC.size() > 0) XuatPhanCong();
65. for (int i = 0; i < ListPC.size(); i++)
66. {
67. ListPC[i].getDL();
68. }
69. system("pause");
70. system("cls");
71.
72.
73. // 4.a Sap xep theo ten nhan vien
74. cout << "Sap xep Bang phan cong theo ten nhan vien: " << endl;
75. sort(ListPC.begin(), ListPC.end(), Tang);
76. if (ListPC.size()>0)XuatPhanCong();
77. for (int i = 0; i < ListPC.size(); i++)
78. {
79. ListPC[i].getDL();
80. }
81. system("pause");
82. system("cls");
83.
84.
85. // 4.b Sap xep theo so ngay tham gia
86. cout << "Sap xep Bang phan cong theo so ngay tham gia: " << endl;
87. sort(ListPC.begin(), ListPC.end(), Giam);
88. XuatPhanCong();
89. for (int i = 0; i < ListPC.size(); i++)
90. {
91. ListPC[i].getDL();
92. }
93. system("pause");
94. system("cls");
95.
96.
97. // 5. Tim phan cong theo ten
98. string namefind;
99. cout << "Nhap ten ban muon xem phan cong: "; getline(cin, namefind);
100. XuatPhanCong();
101. for (int i = 0; i < ListPC.size(); i++)
102. {
103. if (ListPC[i].getDLNV().getHoTenNV() == namefind)
104. {
105. ListPC[i].getDL();
106. }
107. }
108. system("pause");
109.
110.
111. return 0;
112. }
# DuAn.h
1. #include <iostream>
2. #include <string>
3. #include <iomanip>
4.
5. using namespace std;
6.
7. class DuAn
8. {
9. private:
10. static int MaDuAn_BD;
11. int MaDuAn;
12. string TenDuAn;
13. string KieuDuAn;
14. int KinhPhi;
15. public:
16. // Khoi tao gia tri ban dau
17. DuAn();
18.
19. // Nhap du lieu cho du an
20. void NhapDA();
21.
22. // Xuat cac du lieu cua du an
23. void XuatDA() const;
24.
25. // Lay ra ma du an
26. int getMaDA();
27.
28. // Lay ra ten du an
29. string getTenDA();
30.
31. };
# DuAn.cpp
1. #include "DuAn.h"
2.
3. int DuAn::MaDuAn_BD = 10000;
4.
5. DuAn::DuAn()
6. {
7. MaDuAn = MaDuAn_BD++;
8. TenDuAn = "Unknown";
9. KieuDuAn = "Unknown";
10. KinhPhi = 0;
11. }
12. void DuAn::NhapDA()
13. {
14. cout << " Ten du an: "; getline(cin, TenDuAn);
15. cout << " Kieu du an: "; getline(cin, KieuDuAn);
16. cout << " Tong kinh phi: "; cin >> KinhPhi; cin.ignore();
17. }
18. void DuAn::XuatDA() const
19. {
20. cout << setw(20) << left << MaDuAn << setw(20) << left << TenDuAn;
21. cout << setw(20) << left << KieuDuAn << setw(20) << left << KinhPhi;
22. cout << endl;
23.
24. }
25. int DuAn::getMaDA()
26. {
27. return MaDuAn;
28. }
29. string DuAn::getTenDA()
30. {
31. return TenDuAn;
32. }
# NhanVien.cpp
1. #include "NhanVien.h"
2.
3. int NhanVien::MaNV_BD = 10000;
4.
5. NhanVien::NhanVien()
6. {
7. MaNhanVien = MaNV_BD++;
8. HoTen = "Unknown";
9. DiaChi = "Unknown";
10. SDT = "Unknown";
11. ChuyenMon = "Unkown";
12. }
13.
14. void NhanVien::NhapNV()
15. {
16.
17. cout << " Ho ten nhan vien: "; getline(cin, HoTen);
18. cout << " Dia chi: "; getline(cin, DiaChi);
19. cout << " So dien thoai: "; getline(cin, SDT);
20. cout << " Chuyen mon: "; getline(cin, ChuyenMon);
21. }
22. void NhanVien::XuatNV() const
23. {
24. cout << setw(20) << left << MaNhanVien << setw(20) << left << HoTen;
25. cout << setw(20) << left << DiaChi << setw(20) << left << SDT;
26. cout << setw(20) << left << ChuyenMon << endl;
27. }
28. int NhanVien::getMaNV()
29. {
30. return MaNhanVien;
31. }
32. string NhanVien::getHoTenNV()
33. {
34. return HoTen;
35. }
LỚP BẢNG PHÂN CÔNG (class PhanCong)
# PhanCong.h
1. #include "DuAn.h"
2. #include "NhanVien.h"
3.
4. class PhanCong
5. {
6. private:
7. NhanVien NV;
8. DuAn DA;
9. int SoNgay;
10. string ViTri;
11. public:
12. // Lay du lieu phan cong tu nhan vien a, du an b
13. void NhapPC(NhanVien a, DuAn b);
14.
15. // Them ngay lam va vi tri lam viec
16. void NhapCV();
17.
18. // Lay ra du lieu bang phan cong
19. void getDL();
20.
21. // Truy cap vao nhan vien de lay ten nhan vien
22. NhanVien getDLNV();
23.
24. // Lay ra so ngay lam
25. int getSoNgay();
26.
27. };
# PhanCong.cpp
1. #include "PhanCong.h"
2.
3. void PhanCong::NhapPC(NhanVien a, DuAn b)
4. {
5. NV = a;
6. DA = b;
7. }
8. void PhanCong::NhapCV()
9. {
10. cout << " So ngay: "; cin >> SoNgay; cin.ignore();
11. cout << " Vi tri: "; getline(cin, ViTri);
12. }
13. void PhanCong::getDL()
14. {
15. cout << setw(20) << left << NV.getMaNV() << setw(20) << left << NV.getHoTenNV();
16. cout << setw(20) << left << DA.getMaDA() << setw(20) << left << DA.getTenDA();
17. cout << setw(20) << left << SoNgay << setw(20) << left << ViTri << endl;
18. }
19. NhanVien PhanCong::getDLNV()
20. {
21. return NV;
22. }
23. int PhanCong::getSoNgay()
24. {
25. return SoNgay;
26. }
ĐÁP ÁN
# Nhập và in danh sách