Một tổ chức giáo dục cần xây dựng một hệ thống quản lý các khóa học trực tuyến, học viên và giảng viên. Hệ thống cần có khả năng:
Quản lý thông tin các khóa học, bao gồm tên khóa học, mã khóa học, giảng viên phụ trách, và danh sách học viên đã đăng ký.
Học viên có thể đăng ký vào các khóa học.
Giảng viên có thể được phân công giảng dạy các khóa học.
Có thể ghi nhận điểm số của học viên trong từng khóa học.
Bạn cần hiện thực các lớp và chức năng theo yêu cầu bên dưới.
Yêu cầu:
Cài đặt các lớp sau:
- Lớp Student:
a. Thuộc tính:
String studentID
String name
List<Course> coursesEnrolled
b. Phương thức:
void registerCourse(Course course): đăng ký một khóa học.
- Lớp Instructor:
Thuộc tính:
String instructorID
String name
List<Course> coursesTaught
- Lớp Course:
a. Thuộc tính:
String courseID
String courseName
Instructor instructor
List<Student> students
Map<Student, Double> grades
b. Phương thức:
void enrollStudent(Student student): thêm học viên vào khóa học.
void assignInstructor(Instructor instructor): gán giảng viên cho khóa học.
void recordGrade(Student student, double grade): ghi điểm cho học viên.
Định dạng đầu vào:
Chương trình chính (Main class) sẽ đọc dữ liệu đầu vào từ bàn phím như sau:
Dòng đầu tiên: số lượng sinh viên n, số lượng giảng viên m, số lượng khóa học k.
Tiếp theo là n dòng, mỗi dòng chứa: studentID name
Tiếp theo là m dòng, mỗi dòng chứa: instructorID name
Tiếp theo là k dòng, mỗi dòng chứa: courseID courseName
Sau đó là các lệnh quản lý hệ thống, mỗi lệnh trên một dòng, gồm:
ENROLL studentID courseID
ASSIGN instructorID courseID
GRADE studentID courseID grade
PRINT courseID — in ra danh sách học viên, tên, điểm của họ trong khóa học
Kết thúc dữ liệu bằng dòng END
Định dạng đầu ra: Với mỗi lệnh PRINT, in ra theo mẫu:
Course: <courseID> - <courseName> Instructor: <instructorName> Students: <studentName> - <grade> ...
Ràng buộc:
Tối đa 100 học viên, 50 giảng viên, 100 khóa học.
Điểm số là số thực từ 0.0 đến 10.0.
Tên không chứa dấu cách.
Ví dụ:
Input:
2 1 1
S01 Alice
S02 Bob
I01 DrSmith
C01 Java101
ENROLL S01 C01
ENROLL S02 C01
ASSIGN I01 C01
GRADE S01 C01 8.5
GRADE S02 C01 9.0
PRINT C01
END
Output:
Course: C01 - Java101
Instructor: DrSmith
Students:
Alice - 8.5
Bob - 9.0
Bình luận