fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <iomanip>
  5.  
  6. using namespace std;
  7.  
  8. struct Date {
  9. int day, month, year;
  10. };
  11.  
  12. class Person {
  13. private:
  14. string name;
  15. Date dob;
  16. public:
  17. Person() {
  18. }
  19. Person(string name, Date dob) {
  20. this->name = name;
  21. this->dob = dob;
  22. }
  23. void input() {
  24. cout << "\nTen: "; getline(cin, name);
  25. cout << "Ngay sinh: "; cin >> dob.day >> dob.month >> dob.year; cin.ignore();
  26. }
  27. void print() {
  28. cout << name << " - " << dob.day << "/" << dob.month << "/" << dob.year;
  29. }
  30. };
  31. class Student: public Person {
  32. private:
  33. string address;
  34. string email;
  35. string telephone;
  36. public:
  37. Student() {
  38. }
  39. Student(string name, Date dob, string address, string email, string telephone):Person(name, dob) {
  40. this->address = address;
  41. this->email = email;
  42. this->telephone = telephone;
  43. }
  44. void input() {
  45. Person::input();
  46. cout << "Nhap dia chi: "; getline(cin, address);
  47. cout << "Nhap email: "; getline(cin, email);
  48. cout << "Nhap SDT: "; getline(cin, telephone);
  49. }
  50. void print() {
  51. Person::print();
  52. cout << " - " << address << " - " << email << " - " << telephone;
  53. }
  54. };
  55. class Undergrad: public Student {
  56. private:
  57. string school, major;
  58. Person parent;
  59. public:
  60. Undergrad() {
  61. }
  62. Undergrad(string name, Date dob, string address,string email, string telephone, string school, string major,Person parent):Student(name, dob, address, email, telephone) {
  63. this->school = school;
  64. this->major = major;
  65. this->parent = parent;
  66. }
  67. void input() {
  68. Student::input();
  69. cout << "Nhap truong: "; getline(cin, school);
  70. cout << "Nhap chuyen nganh: "; getline(cin, major);
  71. cout << "Nhap thong tin phu huynh: "; parent.input();
  72. }
  73. void print() {
  74. Student::print();
  75. cout << " - " << school << " - " << major << " - [";
  76. parent.print();
  77. cout << "]";
  78. }
  79. string getMajor() {
  80. return major;
  81. }
  82. string getSchool() {
  83. return school;
  84. }
  85. };
  86. class Degree {
  87. private:
  88. string university, discipline;
  89. Date awarded;
  90. public:
  91. Degree() {
  92. }
  93. Degree(string university, string discipline, Date awarded) {
  94. this->university = university;
  95. this->discipline = discipline;
  96. this->awarded = awarded;
  97. }
  98. void input() {
  99. cout << "\nTruong dai hoc: "; getline(cin, university);
  100. cout << "Nganh hoc: "; getline(cin, discipline);
  101. cout << "Thoi gian nhan bang: "; cin >> awarded.day >> awarded.month >> awarded.year; cin.ignore();
  102. }
  103. void print() {
  104. cout << "[ " << university << "-" << discipline << "-" << awarded.day << "/" << awarded.month << "/" << awarded.year << " ]";
  105. }
  106. string getDiscipline() {
  107. return discipline;
  108. }
  109. Date getAwarded() {
  110. return awarded;
  111. }
  112. };
  113. class GradStudent: public Student {
  114. private:
  115. string dept;
  116. Degree lastDegree;
  117. public:
  118. GradStudent() {
  119. }
  120. GradStudent(string name, Date dob, string address, string email, string telephone, string dept, Degree lastDegree):Student(name, dob, address, email, telephone) {
  121. this->dept = dept;
  122. this->lastDegree = lastDegree;
  123. }
  124. void input() {
  125. Student::input();
  126. cout << "Nhap khoa: "; getline(cin, dept);
  127. cout << "Nhap bang cap: "; lastDegree.input();
  128. }
  129. void print() {
  130. Student::print();
  131. cout << " - " << dept << " - ";
  132. lastDegree.print();
  133. }
  134. Degree getLastDegree() {
  135. return lastDegree;
  136. }
  137. string getDept() {
  138. return this->dept;
  139. }
  140. };
  141.  
  142. int main () {
  143. int n;
  144. vector<Undergrad> undergrads;
  145.  
  146. cout << "Nhap so luong sinh vien dai hoc: ";
  147. cin >> n; cin.ignore();
  148. undergrads.resize(n);
  149.  
  150. // Nhap n sv dai hoc;
  151. cout << "\n--Nhap " << n << " sinh vien dai hoc--";
  152. for (int i=0; i<n; i++) {
  153. undergrads[i].input();
  154. }
  155. // In sv cntt
  156. cout << "\n---- Danh sach sinh vien nganh CNTT ----";
  157. for (int i=0; i<undergrads.size(); i++) {
  158. if (undergrads[i].getMajor() == "CNTT") {
  159. cout << endl;
  160. undergrads[i].print();
  161. }
  162. }
  163. cout << "\n----------------------------------------\n";
  164. // Tim sv theo truong
  165. string searchText;
  166. cout << "\nNhap ten truong can tim: "; getline(cin, searchText);
  167. cout << ">> Danh sach sinh vien thuoc truong: " << searchText;
  168. for (int i=0; i<undergrads.size(); i++) {
  169. if (undergrads[i].getSchool() == searchText) {
  170. cout << endl;
  171. undergrads[i].print();
  172. }
  173. }
  174. // Nhap ds hoc vien cao hoc
  175. int m;
  176. vector<GradStudent> gradStudents;
  177.  
  178. cout << "\n\n\nNhap so luong hoc vien cao hoc: "; cin >> m; cin.ignore();
  179. gradStudents.resize(m);
  180.  
  181. // Nhap m sv cao hoc
  182. cout << "\n--Nhap " << m << " hoc vien cao hoc--";
  183. for (int i=0; i<gradStudents.size(); i++) {
  184. gradStudents[i].input();
  185. }
  186. // In sv cao hoc
  187. cout << "\n---- Danh sach hoc vien cao hoc ----";
  188. for (int i=0; i<gradStudents.size(); i++) {
  189. cout << endl;
  190. gradStudents[i].print();
  191. }
  192. cout << "\n----------------------------------------\n";
  193. //
  194. cout << "\n---- Danh sach hoc vien co bang CNTT cap sau nam 2010 ----";
  195. for (int i=0; i<gradStudents.size(); i++) {
  196. if (gradStudents[i].getLastDegree().getDiscipline() == "CNTT" && gradStudents[i].getLastDegree().getAwarded().year >= 2010) {
  197. cout << endl;
  198. gradStudents[i].print();
  199. }
  200. }
  201. // In ds hoc vien khoa cntt
  202. cout << "\n\n---- Danh sach hoc vien thuoc khoa CNTT ----";
  203. for (int i=0; i<gradStudents.size(); i++) {
  204. if (gradStudents[i].getDept() == "CNTT") {
  205. cout << endl;
  206. gradStudents[i].print();
  207. }
  208. }
  209.  
  210.  
  211. return 0;
  212. }
Success #stdin #stdout 0.01s 5536KB
stdin
3
Nguyen Van A
15 4 2004
Cau Giay, Ha Noi
nguyenvana@gmail.com
0123485423
GTVT
CNTT
Nguyen Van B
16 7 1994
Tran Van B
13 4 2004
Cau Giay, Ha Noi
tranvanb@gmail.com
0123585323
GTVT
Toan UD
Tran Van C
16 12 1996
Tran Van C
23 6 2003
Gia Lam, Ha Noi
tranvanc@gmail.com
0123585323
Luat
CNTT
Tran Van D
6 11 1995
GTVT
2
Nguyen Van X
1 10 1999
Long Bien, Ha Noi
nguyenvanx@gmail.com
0145248634
CNTT
GTVT
CNTT
14 5 2021
Nguyen Van Y
11 4 2000
Long Bien, Ha Noi
nguyenvany@gmail.com
0145248334
CNTT
GTVT
CNTT
14 5 2009
stdout
Nhap so luong sinh vien dai hoc: 
--Nhap 3 sinh vien dai hoc--
Ten: Ngay sinh: Nhap dia chi: Nhap email: Nhap SDT: Nhap truong: Nhap chuyen nganh: Nhap thong tin phu huynh: 
Ten: Ngay sinh: 
Ten: Ngay sinh: Nhap dia chi: Nhap email: Nhap SDT: Nhap truong: Nhap chuyen nganh: Nhap thong tin phu huynh: 
Ten: Ngay sinh: 
Ten: Ngay sinh: Nhap dia chi: Nhap email: Nhap SDT: Nhap truong: Nhap chuyen nganh: Nhap thong tin phu huynh: 
Ten: Ngay sinh: 
---- Danh sach sinh vien nganh CNTT ----
Nguyen Van A - 15/4/2004 - Cau Giay, Ha Noi - nguyenvana@gmail.com - 0123485423 - GTVT - CNTT - [Nguyen Van B - 16/7/1994]
Tran Van C - 23/6/2003 - Gia Lam, Ha Noi - tranvanc@gmail.com - 0123585323 - Luat - CNTT - [Tran Van D - 6/11/1995]
----------------------------------------

Nhap ten truong can tim: >> Danh sach sinh vien thuoc truong: GTVT
Nguyen Van A - 15/4/2004 - Cau Giay, Ha Noi - nguyenvana@gmail.com - 0123485423 - GTVT - CNTT - [Nguyen Van B - 16/7/1994]
Tran Van B - 13/4/2004 - Cau Giay, Ha Noi - tranvanb@gmail.com - 0123585323 - GTVT - Toan UD - [Tran Van C - 16/12/1996]


Nhap so luong hoc vien cao hoc: 
--Nhap 2 hoc vien cao hoc--
Ten: Ngay sinh: Nhap dia chi: Nhap email: Nhap SDT: Nhap khoa: Nhap bang cap: 
Truong dai hoc: Nganh hoc: Thoi gian nhan bang: 
Ten: Ngay sinh: Nhap dia chi: Nhap email: Nhap SDT: Nhap khoa: Nhap bang cap: 
Truong dai hoc: Nganh hoc: Thoi gian nhan bang: 
---- Danh sach hoc vien cao hoc ----
Nguyen Van X - 1/10/1999 - Long Bien, Ha Noi - nguyenvanx@gmail.com - 0145248634 - CNTT - [ GTVT-CNTT-14/5/2021 ]
Nguyen Van Y - 11/4/2000 - Long Bien, Ha Noi - nguyenvany@gmail.com - 0145248334 - CNTT - [ GTVT-CNTT-14/5/2009 ]
----------------------------------------

---- Danh sach hoc vien co bang CNTT cap sau nam 2010 ----
Nguyen Van X - 1/10/1999 - Long Bien, Ha Noi - nguyenvanx@gmail.com - 0145248634 - CNTT - [ GTVT-CNTT-14/5/2021 ]

---- Danh sach hoc vien thuoc khoa CNTT ----
Nguyen Van X - 1/10/1999 - Long Bien, Ha Noi - nguyenvanx@gmail.com - 0145248634 - CNTT - [ GTVT-CNTT-14/5/2021 ]
Nguyen Van Y - 11/4/2000 - Long Bien, Ha Noi - nguyenvany@gmail.com - 0145248334 - CNTT - [ GTVT-CNTT-14/5/2009 ]