Quản lý hệ thống học trực tuyến (Bài 3 - 5)

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài

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:

  1. 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.

  1. Lớp Instructor:

Thuộc tính:

String instructorID

String name

List<Course> coursesTaught

  1. 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

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.