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.
- C11
- File I/O (Binary Mode)
- Standard Libraries (stdio.h, stdlib.h, string.h)
- GCC (GNU Compiler Collection)
- Binary Data Persistence: Automatically saves and loads Courses, Subjects, and Professors using
.binfiles. - Entity Management: Full CRUD-like capabilities for academic entities and their relationships.
- Batch Processing: Supports high-volume data entry through external
.txtfile loading. - Interactive CLI: Comprehensive menu-driven interface for system navigation.
- Advanced Reporting: Options to print detailed lists of associations, subjects, and faculty.
Compile the source modules into an executable using GCC:
gcc main.c sistema.c menu.c lotes.c -o academic_manager
Run the executable:
./academic_manager
- Initialization: Upon startup, the system looks for existing
.binfiles 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.
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.*.binfiles: Binary database files (cursos.bin,disciplinas.bin, etc.) used for persistent storage.
- 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.
- Encryption: Implement basic encryption for
.binfiles 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.