Skip to content

alienXXVI/subject-manager

Repository files navigation

Academic Subject Manager

Description

This project is a desktop management utility designed to organize academic infrastructure. It handles the registration of courses, subjects, and professors, specifically managing the associations between them for different academic years. Unlike volatile memory versions, this system implements a binary file storage system to maintain a persistent database of all academic records.

Technologies

  • C11
  • File I/O (Binary Mode)
  • Standard Libraries (stdio.h, stdlib.h, string.h)
  • GCC (GNU Compiler Collection)

Features

  • Binary Data Persistence: Automatically saves and loads Courses, Subjects, and Professors using .bin files.
  • Entity Management: Full CRUD-like capabilities for academic entities and their relationships.
  • Batch Processing: Supports high-volume data entry through external .txt file loading.
  • Interactive CLI: Comprehensive menu-driven interface for system navigation.
  • Advanced Reporting: Options to print detailed lists of associations, subjects, and faculty.

How to Run

1. Compilation

Compile the source modules into an executable using GCC:

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

2. Execution

Run the executable:

./academic_manager

3. Usage Instructions

  • Initialization: Upon startup, the system looks for existing .bin files to restore previous data.
  • Manual Entry: Use the "Fazer Insercao" menu to add records individually.
  • Batch Load: Select "Carregar Arquivo em Lote" and provide a filename (e.g., lotes.txt) to import data.
  • Save & Exit: Selecting "Finalizar o Programa" ensures all current data is safely written to the binary files.

Project Structure

  • main.c: Entry point that coordinates system startup, the main loop, and final resource cleanup.
  • sistema.c / .h: The core engine managing data structures and logic for binary file read/write operations.
  • menu.c / .h: Manages the command-line interface and user interaction logic.
  • lotes.c / .h: Contains the parser for automated data entry from text files.
  • *.bin files: Binary database files (cursos.bin, disciplinas.bin, etc.) used for persistent storage.

What I Learned

  • Binary Serialization: Implementing manual serialization and deserialization of structs to and from binary files.
  • Persistent Data Management: Handling file pointers and state management to prevent data loss during system crashes.
  • Buffer Handling: Managing character buffers and string tokens when parsing batch input files.
  • Modular Architecture: Organizing code into distinct modules (Logic, UI, I/O) to manage increasing project complexity.

Future Improvements

  • Encryption: Implement basic encryption for .bin files to protect sensitive faculty and student data.
  • Search Optimization: Add indexing or a search function to quickly find subjects by specific criteria (e.g., all subjects for a specific professor).
  • Relational Integrity: Improve automated checks to ensure a subject cannot be associated with a non-existent professor.

About

A C-based management system for academic subjects, courses, and professors. It features a custom binary file persistence layer, allowing data to be saved and reloaded across sessions, ensuring long-term record keeping for educational departments.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages