Bài tập ôn tập môn Công nghệ thông tin | Trường đại học kinh doanh và công nghệ Hà Nội

Phân tích bài toán:1. Mô tả Bài ToánMục tiêu: Xây dựng hệ thống quản lý thông tin sinh viên và học phần. -Tính toán và hiển thị điểm trung bình của sinh viên. -In danh sách sinh viên có điểm trung bình >= 8. Tài liệu giúp bạn tham  khảo, ôn tập và đạt kết quả cao. Mời đọc đón xem!

lOMoARcPSD| 45469857
Phân tích bài toán:
1. Mô tả Bài Toán
Mục tiêu:
- Xây dựng hệ thống quản lý thông tin sinh viên và học phần.
- Tính toán và hiển thị điểm trung bình của sinh viên.
- In danh sách sinh viên có điểm trung bình >= 8.
2. Các Yêu Cầu :
A. Lớp sinh viên
Thuộc tính:
- maSV (mã sinh viên): Định danh duy nhất cho sinh viên.
- hoTen (họ tên): Tên của sinh viên.
- ngaySinh (ngày sinh): Ngày sinh của sinh viên.
- gioiTinh (giới tính): Giới tính của sinh viên.
Phương thức:
- Nhap(): Nhập thông tin sinh viên từ người dùng.
- Hien(): Hiển thị thông tin sinh viên.
Mục đích: Đảm bảo lưu trữ và quản lý thông tin cơ bản của sinh viên.
B. Lớp học phần
Thuộc tính:
- tenHP (tên học phần): Tên của học phần.
lOMoARcPSD| 45469857
- diemCC: Điểm chuyên cần của sinh viên.
- diemKTTX: Điểm kiểm tra thường xuyên.
- diemBTL: Điểm bài tập lớn.
- diemThi: Điểm thi cuối kỳ.
Phương thức:
Nhap(): Nhập thông tin học phần từ người dùng.
Hien(): Hiển thị thông tin học phần.
Mục đích: Quản lý điểm số liên quan đến học phần mà sinh viên tham gia.
C. Lớp KetQua (
Kế thừa từ SV và HP)
Thuộc tính:
- diemTrungBinh: Điểm trung bình của sinh viên trong học phần.
Phương thức:
- Nhap ():
o Kế thừa phương thức Nhap() từ SinhVien và HocPhan để nhập
thông tin của cả sinh viên và học phần.
-Tính điểm trung bình theo công thức: DTB=(điểm chuyên cần +2*điểm
kiểm tra thường xuyên + 2*điểm bài tp lớn + 5*điểm thi)/10 - Hien ():
o Kế thừa phương thức Hien() từ SinhVien và HocPhan để hiển thị
thông tin cơ bản của sinh viên và học phần. o Hiển thị điểm
trung bình.
Mục đích: Kết hợp thông tin từ hai lớp cơ sở, tính điểm trung bình và hiển thị
thông tin tổng hợp. 3 . Chương Trình Chính
lOMoARcPSD| 45469857
- Các bước thực hiện :
1. Nhập thông tin sinh viên:
- Nhập số lượng sinh viên.
-Đối với mỗi sinh viên, nhập thông tin cơ bản (từ lớp SinhVien)
thông tin học phần (từ lớp HocPhan).
2. Hiển thị thông tin sinh viên:
- Hiển thị thông tin đầy đủ bao gồm điểm trung bình.
3. Lọc và in ra danh sách sinh viên có điểm trung bình >= 8:
-Dựa trên điểm trungnh được tính toán, lọc danh sách và hiển thị
các sinh viên có điểm trung bình >= 8.
4. Tóm Tắt
Lớp SinhVien:
-Chứa thông tin cá nhân của sinh viên và phương thức để nhập và hiển th
thông tin này.
Lớp HocPhan:
-Chứa thông tin về học phần và điểm số của sinh viên trong học phần đó,
cùng với các phương thức nhập và hiển thị thông tin.
Lớp KetQua:
-Kế thừa từ SinhVien và HocPhan, tính điểm trung bình, và cung cấp
phương thức để nhập và hiển thị thông tin bao gồm điểm trung bình.
Chương trình chính:
- Nhập danh sách sinh viên.
- Hiển thị thông tin đầy đủ của sinh viên.
- Lọc và in ra các sinh viên có điểm trung bình >= 8.
lOMoARcPSD| 45469857
Các phương thức, biến, kiểu dữ liệu và tính OOP
1. Lớp SinhVien
Biến (Thuộc tính):
-std::string masv:
+Kiểu dữ liệu: std::string
+Mô tả: Mã sinh viên, định danh duy nhất cho sinh viên.
=std::string hoten:
+Kiểu dữ liệu: std::string +Mô
tả: Họ và tên của sinh viên.
-std::string ngaysinh:
+Kiểu dữ liệu: std::string +Mô
tả: Ngày sinh của sinh viên.
-std::string gioitinh:
+Kiểu dữ liệu: std::string
+Mô tả: Giới tính của sinh viên.
Phương thức:
void Nhap():
Mô tả: Nhập thông tin sinh viên từ người dùng.
Thực hiện:
Sao chép mã void
SinhVien::Nhap() { cout <<
"Nhap ma sinh vien: ";
lOMoARcPSD| 45469857
getline(cin, maSV); cout <<
"Nhap ho ten: "; getline(cin,
hoTen);
cout << "Nhap ngay sinh (dd/mm/yyyy): ";
getline(cin, ngaySinh);
scout << "Nhap gioi tinh: ";
getline(cin, gioiTinh);
}
void Hien() const:
Mô tả: Hiển thị thông tin sinh viên.
Thực hiện:
Sao chép mã void SinhVien::Hien() const {
cout << "Ma sinh vien: " << maSV << endl;
cout << "Ho ten: " << hoTen << endl;
cout << "Ngay sinh: " << ngaySinh << endl;
cout << "Gioi tinh: " << gioiTinh << endl;
}
2 . Lớp HocPhan
Biến (Thuộc tính):
string tenHocPhan: Kiểu dữ
liệu: std::string Mô t: Tên
học phần. float
diemChuyenCan:
Kiểu dữ liệu: float
Mô tả: Điểm chuyên cần.
float diemKiemTraThuongXuyen:
lOMoARcPSD| 45469857
Kiểu dữ liệu: float
Mô tả: Điểm kiểm tra thường xuyên.
float diemBaiTapLon:
Kiểu dữ liệu: float
Mô tả: Điểm bài tập lớn.
float diemThi: Kiểu dữ liệu:
float
Mô tả: Điểm thi.
Phương thức:
void Nhap():
Mô tả: Nhập thông tin học phần từ người dùng.
Thực hiện:
Sao chép mã void HocPhan:Nhap() {
cout << "Nhap ten hoc phan: ";
getline(cin, tenHocPhan); cout <<
"Nhap diem chuyen can: "; cin >>
diemChuyenCan;
cout << "Nhap diem kiem tra thuong xuyen: "; cin
>> diemKiemTraThuongXuyen; cout << "Nhap
diem bai tap lon: "; cin >> diemBaiTapLon; cout
<< "Nhap diem thi: "; cin >> diemThi;
cin.ignore(); // Để bỏ qua newline sau khi nhập điểm. }
void Hien() const: o Mô tả: Hiển th
thông tin học phần. o Thực hiện:
Sao chép mã
void HocPhan::Hien() const { cout << "Ten hoc phan: " <<
tenHocPhan << endl; cout << "Diem chuyen can: " <<
lOMoARcPSD| 45469857
diemChuyenCan << endl; cout << "Diem kiem tra thuong
xuyen: " << diemKiemTraThuongXuyen << endl;
cout << "Diem bai tap lon: " << diemBaiTapLon << endl;
cout << "Diem thi: " << diemThi << endl;
}
3 . Lớp KetQua (Kế thừa từ SinhVien và HocPhan )
Biến (Thuộc tính):
float diemTrungBinh:
Kiểu dữ liệu: float
Mô tả: Điểm trung bình của sinh viên trong học phần.
Phương thức:
void Nhap():
Mô tả: Kế thừa và mở rộng Nhap() từ SinhVien và HocPhan. Tính
toán điểm trung bình sau khi nhập thông tin.
Thực hiện:
Sao chép mã void
KetQua::Nhap() {
SinhVien::Nhap();
HocPhan::Nhap();
diemTrungBinh = (diemChuyenCan + 2 *
diemKiemTraThuongXuyen + 2 * diemBaiTapLon + 5 * diemThi) /
10 ;
}
void Hien() const:
Mô tả: Kế thừa và mở rộng Hien() từ SinhVien và HocPhan. Hiển thị
điểm trung bình.
Thực hiện:
lOMoARcPSD| 45469857
Sao chép mã void
KetQua::Hien() const {
SinhVien::Hien();
HocPhan::Hien();
std::cout << "Diem trung binh: " << diemTrungBinh << std::endl;
}
Tính OOP (Hướng Đối Tượng)
1. Kế thừa (Inheritance):
- KetQua kế thừa từ cả lớp SV và HP.
-Lớp KetQua có thể truy cập các biến và phương thức của cả lớp cơ
sở, giúp tổ chức và tái sử dụng mã nguồn hiệu quả.
2. Đóng gói (Encapsulation):
-Các thuộc tính của lớp được bảo vệ khỏi việc truy cập trực tiếp từ bên
ngoài, thông qua các phương thức công cộng (Nhap(), Hien()).
-Chỉ các phương thức công cộng có thể tương tác với các thuộc tính
của lớp, bảo đảm tính toàn vẹn dữ liệu.
3. Đa hình (Polymorphism):
Các phương thức Nhap() và Hien() được định nghĩa lại trong lớp
KetQua để thực hiện nhiệm vụ cụ thể.
-Lớp KetQua có thể gọi các phương thức ca lớp cơ sở để thực hiện
các hành động liên quan đến sinh viên và học phần.
4. Tính trừu tượng (Abstraction):
- Lớp SV và HP cung cấp một giao diện để quản lý thông tin mà
không cần biết chi tiết về cách lưu trữ hoặc xử lý.
-Lớp KetQua trừu tượng hóa việc tính điểm trung bình và cung cấp
phương thức để nhập và hiển thị thông tin.
| 1/8

Preview text:

lOMoAR cPSD| 45469857
Phân tích bài toán: 1. Mô tả Bài Toán Mục tiêu:
- Xây dựng hệ thống quản lý thông tin sinh viên và học phần.
- Tính toán và hiển thị điểm trung bình của sinh viên.
- In danh sách sinh viên có điểm trung bình >= 8. 2. Các Yêu Cầu : A.
Lớp sinh viên Thuộc tính:
- maSV (mã sinh viên): Định danh duy nhất cho sinh viên.
- hoTen (họ tên): Tên của sinh viên.
- ngaySinh (ngày sinh): Ngày sinh của sinh viên.
- gioiTinh (giới tính): Giới tính của sinh viên. Phương thức:
- Nhap(): Nhập thông tin sinh viên từ người dùng.
- Hien(): Hiển thị thông tin sinh viên.
Mục đích: Đảm bảo lưu trữ và quản lý thông tin cơ bản của sinh viên. B.
Lớp học phần Thuộc tính:
- tenHP (tên học phần): Tên của học phần. lOMoAR cPSD| 45469857
- diemCC: Điểm chuyên cần của sinh viên.
- diemKTTX: Điểm kiểm tra thường xuyên.
- diemBTL: Điểm bài tập lớn.
- diemThi: Điểm thi cuối kỳ. Phương thức:
Nhap(): Nhập thông tin học phần từ người dùng.
Hien(): Hiển thị thông tin học phần.
Mục đích: Quản lý điểm số liên quan đến học phần mà sinh viên tham gia. C. Lớp KetQua (
Kế thừa từ SV và HP) Thuộc tính:
- diemTrungBinh: Điểm trung bình của sinh viên trong học phần. Phương thức: - Nhap ():
o Kế thừa phương thức Nhap() từ SinhVien và HocPhan để nhập
thông tin của cả sinh viên và học phần.
-Tính điểm trung bình theo công thức: DTB=(điểm chuyên cần +2*điểm
kiểm tra thường xuyên + 2*điểm bài tập lớn + 5*điểm thi)/10 - Hien ():
o Kế thừa phương thức Hien() từ SinhVien và HocPhan để hiển thị
thông tin cơ bản của sinh viên và học phần. o Hiển thị điểm trung bình.
Mục đích: Kết hợp thông tin từ hai lớp cơ sở, tính điểm trung bình và hiển thị
thông tin tổng hợp. 3 . Chương Trình Chính lOMoAR cPSD| 45469857
- Các bước thực hiện :
1. Nhập thông tin sinh viên:
- Nhập số lượng sinh viên.
-Đối với mỗi sinh viên, nhập thông tin cơ bản (từ lớp SinhVien) và
thông tin học phần (từ lớp HocPhan).
2. Hiển thị thông tin sinh viên:
- Hiển thị thông tin đầy đủ bao gồm điểm trung bình.
3. Lọc và in ra danh sách sinh viên có điểm trung bình >= 8:
-Dựa trên điểm trung bình được tính toán, lọc danh sách và hiển thị
các sinh viên có điểm trung bình >= 8. 4. Tóm Tắt Lớp SinhVien:
-Chứa thông tin cá nhân của sinh viên và phương thức để nhập và hiển thị thông tin này. Lớp HocPhan:
-Chứa thông tin về học phần và điểm số của sinh viên trong học phần đó,
cùng với các phương thức nhập và hiển thị thông tin. Lớp KetQua:
-Kế thừa từ SinhVien và HocPhan, tính điểm trung bình, và cung cấp
phương thức để nhập và hiển thị thông tin bao gồm điểm trung bình.
Chương trình chính:
- Nhập danh sách sinh viên.
- Hiển thị thông tin đầy đủ của sinh viên.
- Lọc và in ra các sinh viên có điểm trung bình >= 8. lOMoAR cPSD| 45469857
Các phương thức, biến, kiểu dữ liệu và tính OOP 1. Lớp SinhVien
Biến (Thuộc tính): -std::string masv:
+Kiểu dữ liệu: std::string
+Mô tả: Mã sinh viên, định danh duy nhất cho sinh viên. =std::string hoten:
+Kiểu dữ liệu: std::string +Mô
tả: Họ và tên của sinh viên. -std::string ngaysinh:
+Kiểu dữ liệu: std::string +Mô
tả: Ngày sinh của sinh viên. -std::string gioitinh:
+Kiểu dữ liệu: std::string
+Mô tả: Giới tính của sinh viên. Phương thức: void Nhap():
Mô tả: Nhập thông tin sinh viên từ người dùng. Thực hiện: Sao chép mã void
SinhVien::Nhap() { cout << "Nhap ma sinh vien: "; lOMoAR cPSD| 45469857
getline(cin, maSV); cout << "Nhap ho ten: "; getline(cin, hoTen);
cout << "Nhap ngay sinh (dd/mm/yyyy): "; getline(cin, ngaySinh);
scout << "Nhap gioi tinh: "; getline(cin, gioiTinh); } void Hien() const:
Mô tả: Hiển thị thông tin sinh viên. Thực hiện:
Sao chép mã void SinhVien::Hien() const {
cout << "Ma sinh vien: " << maSV << endl;
cout << "Ho ten: " << hoTen << endl;
cout << "Ngay sinh: " << ngaySinh << endl;
cout << "Gioi tinh: " << gioiTinh << endl; } 2 . Lớp HocPhan
Biến (Thuộc tính):
string tenHocPhan: Kiểu dữ
liệu: std::string Mô tả: Tên học phần. float diemChuyenCan:
Kiểu dữ liệu: float
Mô tả: Điểm chuyên cần.
float diemKiemTraThuongXuyen: lOMoAR cPSD| 45469857
Kiểu dữ liệu: float
Mô tả: Điểm kiểm tra thường xuyên. float diemBaiTapLon:
Kiểu dữ liệu: float
Mô tả: Điểm bài tập lớn.
float diemThi: Kiểu dữ liệu: float Mô tả: Điểm thi. Phương thức: void Nhap():
Mô tả: Nhập thông tin học phần từ người dùng. Thực hiện:
Sao chép mã void HocPhan:Nhap() {
cout << "Nhap ten hoc phan: ";
getline(cin, tenHocPhan); cout <<
"Nhap diem chuyen can: "; cin >> diemChuyenCan;
cout << "Nhap diem kiem tra thuong xuyen: "; cin
>> diemKiemTraThuongXuyen; cout << "Nhap
diem bai tap lon: "; cin >> diemBaiTapLon; cout
<< "Nhap diem thi: "; cin >> diemThi;
cin.ignore(); // Để bỏ qua newline sau khi nhập điểm. }
void Hien() const: o Mô tả: Hiển thị
thông tin học phần. o Thực hiện: Sao chép mã
void HocPhan::Hien() const { cout << "Ten hoc phan: " <<
tenHocPhan << endl; cout << "Diem chuyen can: " << lOMoAR cPSD| 45469857
diemChuyenCan << endl; cout << "Diem kiem tra thuong
xuyen: " << diemKiemTraThuongXuyen << endl;
cout << "Diem bai tap lon: " << diemBaiTapLon << endl;
cout << "Diem thi: " << diemThi << endl; }
3 . Lớp KetQua (Kế thừa từ SinhVien và HocPhan )
Biến (Thuộc tính): float diemTrungBinh:
Kiểu dữ liệu: float
Mô tả: Điểm trung bình của sinh viên trong học phần. Phương thức: void Nhap():
Mô tả: Kế thừa và mở rộng Nhap() từ SinhVien và HocPhan. Tính
toán điểm trung bình sau khi nhập thông tin. Thực hiện: Sao chép mã void KetQua::Nhap() { SinhVien::Nhap(); HocPhan::Nhap();
diemTrungBinh = (diemChuyenCan + 2 *
diemKiemTraThuongXuyen + 2 * diemBaiTapLon + 5 * diemThi) / 10 ; } void Hien() const:
Mô tả: Kế thừa và mở rộng Hien() từ SinhVien và HocPhan. Hiển thị điểm trung bình. Thực hiện: lOMoAR cPSD| 45469857 Sao chép mã void KetQua::Hien() const { SinhVien::Hien(); HocPhan::Hien();
std::cout << "Diem trung binh: " << diemTrungBinh << std::endl; }
Tính OOP (Hướng Đối Tượng) 1. Kế thừa (Inheritance):
- KetQua kế thừa từ cả lớp SV và HP.
-Lớp KetQua có thể truy cập các biến và phương thức của cả lớp cơ
sở, giúp tổ chức và tái sử dụng mã nguồn hiệu quả.
2. Đóng gói (Encapsulation):
-Các thuộc tính của lớp được bảo vệ khỏi việc truy cập trực tiếp từ bên
ngoài, thông qua các phương thức công cộng (Nhap(), Hien()).
-Chỉ các phương thức công cộng có thể tương tác với các thuộc tính
của lớp, bảo đảm tính toàn vẹn dữ liệu. 3. Đa hình (Polymorphism):
Các phương thức Nhap() và Hien() được định nghĩa lại trong lớp
KetQua để thực hiện nhiệm vụ cụ thể.
-Lớp KetQua có thể gọi các phương thức của lớp cơ sở để thực hiện
các hành động liên quan đến sinh viên và học phần.
4. Tính trừu tượng (Abstraction):
- Lớp SV và HP cung cấp một giao diện để quản lý thông tin mà
không cần biết chi tiết về cách lưu trữ hoặc xử lý.
-Lớp KetQua trừu tượng hóa việc tính điểm trung bình và cung cấp
phương thức để nhập và hiển thị thông tin.