Chương trình quản lý danh sách các lớp học trong trường học

MỤC LỤC

TRÊN MẢNG CẤU TRÚC

  • Nhập danh sách lớp học 1. Chương trình con
    • Xuất danh sách lớp 1. Chương trình con

      - Void xuat_1_lop(DSLOP& ds): Hàm được khởi tạo nhằm mục đích xuất thông tin cho 1 đối tượng lớp học. - Void printline(int& num): Giúp thông tin xuất ra được ngăn cách có tính thẩm mỹ. - int Linearysearch(DSLOP ds[], int n, char x[]): Chương trình tìm kiếm MaLop tuyến tính. 11) Hàm tìm kiếếm Linearysearch(Ln).

      Void Binarysearch(DSLOP ds[], int n, char x[]): Chương trình con với thuật toán hỗ trợ tìm kiếm đối tượng

      Kiểm tra

      - Vì hàm sắp xếp Binarysearch chỉ thực hiện được chức năng tìm kiếm của mình khi thông tin đã được sắp xếp tăng dần nên ta cần dùng hàm if để trả về không tìm thấy thông tin nếu đối tượng cần tìm chưa được sắp xếp.

        Để sắp xếp danh sách lớp theo MaLop từ thấp – cao cần xây dựng một chương trình con gồm

        Để có thể sắp xếp danh sach một cách có hiệu quả ta xây dựng một chương trình con

        Kết quả chạy

        Trình thông báo hoàn thành chương trình 1. Chương trình con

          - Void Finish(int& key): Chương trình với mục đích thông báo đã hoàn thành nhiệm vụ được chọn và đưa người dùng về trang menu.

          LIÊN KẾT

          • Xây dựng hàm tạo node và list
            • Hàm nhập thông tin 1. Chương trình con

              Các phần tử này được lưu trữ dưới dạng các node (nút) và được kết nối với nhau thông qua các liên kết. Mỗi node trong danh sách liên kết thường chứa một giá trị dữ liệu và một con trỏ đến node tiếp theo trong danh sách. Trong khi đó, danh sách liên kết là một cấu trúc dữ liệu chứa một con trỏ đến node đầu tiên trong danh sách.

              Với cấu trúc này, chúng ta có thể thêm, xóa phần tử hoặc duyệt danh sách một cách dễ dàng và hiệu quả. Ngoài ra, danh sách liên kết còn cho phép tối ưu hóa việc sử dụng bộ nhớ, đặc biệt là khi chúng ta cần thêm hoặc xóa phần tử ở giữa danh sách. Hàm “CreateNode” được tạo ra một node mới với giá trị được truyền vào và con trỏ “next” được khởi tạo là NULL.

              Hàm tạo list được sử dụng để tạo ra một danh sách liên kết mới. Nó có thể được thực hiện bằng cách sử dụng cấp phát động, hoặc bằng cách khởi tạo một đối tượng trong C++. - void AddTail(LIST& l, NODE* p) : Dùng để tạo thông tin mới được nhập vào thành một node và thêm vào cuối danh sách.

              - void InputList(LIST& l) : Dùng để nhập thông tin cho nhiều lớp học và thêm từng lớp học vào danh sách.

              Đối với chức năng nhập thủ công

              • Hàm xuất danh sách 1. Chương trình con
                • Hàm tìm thông tin 1. Chương trình con
                  • Hàm xóa thông tin theo mã 1. Chương trình con
                    • Hàm sắp xếp (bubblesort) 1. Chương trình con
                      • Lặp lại quá trình trên cho đến khi tất cả các phần tử được sắp xếp theo yêu cầu
                        • Tiến hành sắp xếp danh sách liên kết cho đến khi tất cả các phần tử được sắp xếp theo thứ tự tăng dần
                          • Sau khi duyệt qua toàn bộ danh sách, ta thu được danh sách đã được sắp xếp

                            Khởi tạo một node temp để lưu trữ giá trị của phần tử được chọn để so sánh với các phần tử khác trong danh sách. Duyệt danh sách và tìm phần tử có giá trị nhỏ nhất hoặc lớn nhất (tuỳ thuộc vào yêu cầu sắp xếp) bằng cách so sánh giá trị của node temp với các node khác. Tiếp tục tìm kiếm phần tử nhỏ nhất hoặc lớn nhất trong danh sách còn lại bằng cách bỏ qua node temp đã được sắp xếp.

                            Các phép toán chèn, xóa node và duyệt danh sách sẽ được sử dụng trong quá trình thực hiện hàm selectionsort. Sau khi duyệt hết danh sách từ phần tử đầu tiên đến phần tử cuối cùng, ta quay lại bước 1 và tiếp tục thực hiện phân tích. Nó chỉ nên được sử dụng cho danh sách liên kết nhỏ vì nếu danh sách quá lớn thì thời gian để sắp xếp danh sách liên kết sẽ rất lâu.

                            Nếu phần tử hiện tại lớn hơn hoặc bằng phần tử đã được sắp xếp, tiếp tục duyệt qua danh sách đã được sắp xếp. Khi chèn một phần tử vào danh sách đã được sắp xếp, ta cần sử dụng một con trỏ để chỉ đến phần tử trước phần tử đang xét trong danh sách đã được sắp xếp. Điều này tương tự như khi chèn một phần tử vào một danh sách đã được sắp xếp bằng mảng, nhưng một lợi thế của danh sách liên kết là ta có thể chèn phần tử mới mà không ảnh hưởng đến toàn bộ danh sách.

                            Hàm quicksort trong danh sách liên kết sử dụng phương pháp chia để trị (divide and conquer) để sắp xếp các phần tử trong danh sách. Sau đó, danh sách được chia thành hai phần: một phần chứa tất cả các phần tử nhỏ hơn hoặc bằng pivot, và một phần chứa tất cả các phần tử lớn hơn pivot. Khi quá trình sắp xếp đã hoàn thành, các phần tử trong danh sách được sắp xếp theo thứ tự tăng dần hoặc giảm dần.

                            Tuy nhiên, để sử dụng hàm quicksort trong danh sách liên kết, cần phải chú ý đến việc thực hiện các thao tác cập nhật các liên kết giữa các nút trong danh sách khi chia danh sách và ghép lại các danh sách con. Xây dựng menu chọn trong chương trình C++ có mục đích là để giúp người dùng tương tác với chương trình dễ dàng hơn. Menu chọn cho phép người dùng lựa chọn các tùy chọn khác nhau trong chương trình, từ đó giúp tối ưu hóa trải nghiệm người dùng và giúp người dùng tiết kiệm thời gian và công sức khi sử dụng chương trình.

                            Để sử chương trình được trực quan ta cần 2 hàm menu và Finish để giúp người dùng chọn các chức năng cũng như hàm finish để thông báo chức năng và gọi lại menu tùy chọn. - Void Finish(int& key) : thông báo kết thúc hàm chức năng và gọi lại menu để người dùng tiếp tục hoặc thoát tùy nhu cầu.