A robust and efficient Library Management System developed in C. This project demonstrates advanced file handling techniques by using CSV files as a relational database to manage books, authors, students, and borrowing transactions.
- Relational Data Management: Manages complex relationships (Many-to-Many) between Books and Authors using
KitapYazar.csv. - CRUD Operations: Create, Read, Update, and Delete records for:
- Books (
kitap.csv) - Authors (
yazarlar.csv) - Students (
ogrenciler.csv)
- Books (
- Borrowing System: Tracks borrowed books, due dates, and return status via
KitapOdunc.csv. - Data Persistence: All data is stored permanently in CSV files, ensuring no data loss after the program closes.
- Dynamic Reporting: Generates reports on borrowed books, student history, and library inventory.
The project is built with a focus on low-level memory management and structured programming:
- Structs & Pointers: Used to define data models (Book, Student, Transaction) and manipulate data efficiently in memory.
- File I/O: Custom parsers to read/write CSV files, handling delimiters and newlines manually.
- Memory Management: Efficient use of buffers for string processing and record handling.
- Algorithm Logic: Implements search algorithms to link Student IDs with Book ISBNs.
The system operates on a file-based database architecture:
| File | Description |
|---|---|
kitap.csv |
Stores book details (ISBN, Title, Publisher). |
yazarlar.csv |
Stores author information. |
ogrenciler.csv |
Stores student details. |
KitapYazar.csv |
Junction Table linking Books and Authors (Relational Logic). |
KitapOdunc.csv |
Transaction logs for borrowing and returning books. |
This project is compatible with GCC (GNU Compiler Collection).
-
Clone the repository:
git clone [https://github.com/zeynelbyhn/Library-Management-System-C.git](https://github.com/zeynelbyhn/Library-Management-System-C.git) cd Library-Management-System-C -
Compile the code:
gcc src/main.c -o library_system
-
Run the application:
- Windows:
library_system.exe - Linux/Mac:
./library_system
- Windows:
Note: Ensure that the
data/folder containing CSV files is in the same directory as the executable, or update the file paths in the source code.
- Implement a GUI using GTK or Windows API.
- Add hashing for faster search operations.
- Migrate data storage to SQL (SQLite).
Developed as a Computer Engineering project demonstrating C programming proficiency.