This project is a specialized management tool designed to organize academic data including courses, subjects (disciplines), and faculty members. Its primary focus is managing the associations between these entities, such as assigning professors to specific subjects within a given academic year. The system is built for performance, utilizing tree-based architectures to handle insertions, removals, and multiple traversal methods for data printing.
- C11
- Standard I/O Libraries
- GCC (GNU Compiler Collection)
- Comprehensive Registration: Modular insertion for Courses, Subjects, Professors, and Subject Associations.
- Advanced Tree Traversals: Supports printing Subject Associations by levels (Breadth-First) or In-Order (Depth-First).
- Batch Processing: Ability to load large amounts of data automatically from formatted text files.
- Targeted Removal: Efficiently removes specific subject associations using key identifiers like subject codes and academic years.
- Resource Management: Dedicated functions for system memory cleanup and "free registers" reporting.
Use a C compiler to link all project modules:
gcc main.c sistema.c menu.c lotes.c -o subject_manager
Run the compiled binary:
./subject_manager
- Main Menu: Navigate through options 1-5 to insert, print, remove, load batch files, or exit.
- Insertion: Select "Fazer Insercao" to register new academic entities individually.
- Printing: Access "Fazer Impressao" to view data. You can choose specific tree traversal methods for associations.
- Removal: Choose "Fazer Remocao" and provide the Subject Code and Academic Year to delete an association.
- Batch Loading: Select "Carregar Arquivo em Lote" and type the filename of your data source.
main.c: The entry point that initializes the system and starts the user interface loop.sistema.c / .h: Contains the core logic for tree management, data structures, and entity manipulation.menu.c / .h: Handles the command-line interface, input validation, and menu navigation.lotes.c / .h: Manages the logic for reading and parsing external text files for batch data entry.readme.md: Project documentation.
- Tree Data Structures: Implementing and managing non-linear data structures for hierarchical academic records.
- File I/O and Parsing: Developing robust batch loading logic to handle external data inputs without manual entry.
- Modular Programming in C: Organizing a system into separate logical units (System, UI, Batch) for better maintainability and code clarity.
- Pointer-Based Associations: Managing complex relationships between different entities (e.g., linking a Professor to a Subject) using pointers.
-
Self-Balancing Trees: Implement AVL or Red-Black tree logic to ensure
$O(\log n)$ performance regardless of input order. - Data Persistence: Add functionality to save the current tree state back into a file upon exiting.
- Search Filters: Implement advanced searching to find all subjects taught by a specific professor across different years.