Skip to content

alienXXVI/academic-subject-manager-tree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Academic Subject Manager

Description

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.

Technologies

  • C11
  • Standard I/O Libraries
  • GCC (GNU Compiler Collection)

Features

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

How to Run

Compilation

Use a C compiler to link all project modules:

gcc main.c sistema.c menu.c lotes.c -o subject_manager

Execution

Run the compiled binary:

./subject_manager

Operational Instructions

  1. Main Menu: Navigate through options 1-5 to insert, print, remove, load batch files, or exit.
  2. Insertion: Select "Fazer Insercao" to register new academic entities individually.
  3. Printing: Access "Fazer Impressao" to view data. You can choose specific tree traversal methods for associations.
  4. Removal: Choose "Fazer Remocao" and provide the Subject Code and Academic Year to delete an association.
  5. Batch Loading: Select "Carregar Arquivo em Lote" and type the filename of your data source.

Project Structure

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

What I Learned

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

Future Improvements

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

About

A C-based management system for academic subjects, courses, and professors. It utilizes advanced tree data structures for efficient data organization, supporting batch file processing and hierarchical information display for educational institutions.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages