Bài tập  /  Bài đang cần trả lời

Sử dụng cây tìm kiếm nhị phân để viết chương trình quản lí danh sách học sinh của một trường trung học phổ thông. Mỗi một học sinh gồm các thông tin: mã học sinh (duy nhất), họ tên, ngày sinh. Chương trình cho phép thêm một học sinh vào danh sách với các trường thông tin kể trên, tìm kiếm học sinh theo mã và sửa đổi họ tên và ngày sinh ứng với một mã học sinh.

Sử dụng cây tìm kiếm nhị phân để viết chương trình quản lí danh sách học sinh của một trường trung học phổ thông. Mỗi một học sinh gồm các thông tin: mã học sinh (duy nhất), họ tên, ngày sinh. Chương trình cho phép thêm một học sinh vào danh sách với các trường thông tin kể trên, tìm kiếm học sinh theo mã và sửa đổi họ tên và ngày sinh ứng với một mã học sinh.

1 trả lời
Hỏi chi tiết
15
0
0
Trần Bảo Ngọc
11/09 12:00:10

Gợi ý chương trình mẫu về cách sử dụng cây tìm kiếm nhị phân để quản lí danh sách học sinh của một trường trung học phổ thông:

class Student:

    def __init__(self, student_id, name, date_of_birth):

        self.student_id = student_id

        self.name = name

        self.date_of_birth = date_of_birth

        self.left = None

        self.right = None

class StudentManager:

    def __init__(self):

        self.root = None

    def insert(self, root, student_id, name, date_of_birth):

        if root is None:

            return Student(student_id, name, date_of_birth)

        if student_id < root.student_id:

            root.left = self.insert(root.left, student_id, name, date_of_birth)

        elif student_id > root.student_id:

            root.right = self.insert(root.right, student_id, name, date_of_birth)

        return root

    def add_student(self, student_id, name, date_of_birth):

        self.root = self.insert(self.root, student_id, name, date_of_birth)

    def search(self, root, student_id):

        if root is None or root.student_id == student_id:

            return root

        if student_id < root.student_id:

            return self.search(root.left, student_id)

        return self.search(root.right, student_id)

    def find_student(self, student_id):

        return self.search(self.root, student_id)

    def update_student(self, student_id, new_name, new_date_of_birth):

        student = self.find_student(student_id)

        if student:

            student.name = new_name

            student.date_of_birth = new_date_of_birth

        else:

            print("Student not found.")

# Sử dụng chương trình

student_manager = StudentManager()

# Thêm học sinh

student_manager.add_student(1001, "Nguyen Van A", "2005-03-15")

student_manager.add_student(1002, "Tran Thi B", "2004-08-22")

student_manager.add_student(1003, "Le Van C", "2006-01-10")

# Tìm kiếm học sinh

student = student_manager.find_student(1002)

if student:

    print(f"Student found - Student ID: {student.student_id}, Name: {student.name}, Date of Birth: {student.date_of_birth}")

else:

    print("Student not found.")

# Cập nhật thông tin học sinh

student_manager.update_student(1001, "Pham Thi D", "2005-05-20")

# Kiểm tra lại thông tin sau khi cập nhật

student = student_manager.find_student(1001)

if student:

    print(f"Updated student - Student ID: {student.student_id}, Name: {student.name}, Date of Birth: {student.date_of_birth}")

else:

    print("Student not found.")

Lưu ý trong mã chương trình này:

- Lớp Student đại diện cho mỗi học sinh, với các thuộc tính là student_id (mã học sinh), name (họ tên) và date_of_birth (ngày sinh).

- Lớp StudentManager chứa các phương thức để thêm học sinh vào danh sách, tìm kiếm học sinh theo mã và cập nhật thông tin học sinh. Mỗi học sinh được lưu trữ trong một cây tìm kiếm nhị phân, với student_id làm khóa.

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm
Bài tập liên quan
Bài tập Tin học Lớp 12 mới nhất

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k