This repository contains the Final Project for the Data Structures course at the Instituto Tecnológico de Sonora (ITSON). The main goal is to apply the data structures learned during the semester by developing a Java-based system for managing students, courses, and enrollments. Versión Español
Develop a modular system that allows:
- Registering and managing students.
- Managing courses and their capacity.
- Controlling enrollments, waiting lists, and roles.
- Processing grade requests.
- Implementing undo functionality.
All of this using data structures implemented from scratch and applying generic programming in Java (<T>).
- Register students with full data.
- Store in a Binary Search Tree (BST) by enrollment number.
- Search by enrollment number and display grades.
- Sort students by average grade using an AVL Tree.
- Add and remove courses using a Generic Dictionary (hash table with linked lists).
- List all available courses.
- Enroll students in courses with capacity verification.
- Store in singly linked lists.
- Manage waiting lists (doubly circular linked lists).
- Rotate roles (tutor/leader) using singly circular linked lists.
- Send requests through a generic queue (FIFO).
- Process requests and update grades (dynamic arrays).
- Recursively calculate the average grade.
- Log actions (registration, enrollment, grading) in a generic stack (LIFO).
- Option to undo the last performed action.
TreeBST<T>TreeAVL<T>LinkedList<T>CircularDoubleLinkedList<T>LinkedList<T>Stack<T>Queue<T>Dictionary<K, V>DynamicArray<T>
All structures are implemented using generic programming (<T>) for reusability and flexibility.
- Java JDK 23
- Recommended IDE: NetBeans or IntelliJ IDEA
- Draw.io for visualizing class diagrams (optional)
This project is licensed under the MIT License. See the LICENSE file for more details.