https://github.com/cihat-kose/library-management-system
A console-based library management system built with C#, featuring media catalog management, role-based access control, and loan tracking.
https://github.com/cihat-kose/library-management-system
clean-code console-app csharp dotnet library-management-system object-oriented-design oop
Last synced: about 17 hours ago
JSON representation
A console-based library management system built with C#, featuring media catalog management, role-based access control, and loan tracking.
- Host: GitHub
- URL: https://github.com/cihat-kose/library-management-system
- Owner: cihat-kose
- License: mit
- Created: 2026-04-23T21:04:40.000Z (2 months ago)
- Default Branch: master
- Last Pushed: 2026-04-23T21:04:58.000Z (2 months ago)
- Last Synced: 2026-04-23T21:31:39.429Z (2 months ago)
- Topics: clean-code, console-app, csharp, dotnet, library-management-system, object-oriented-design, oop
- Language: C#
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# 📚 Library Management System



A console-based library management system built with C#, featuring media catalog management, role-based access control, and loan lifecycle tracking through clean object-oriented design.
## Features
- Manage role-based users (`Member`, `Employee`) with distinct borrowing limits.
- Maintain a media catalog with specialized item types:
- `Book`
- `Audiobook`
- `EBook`
- `Journal`
- Borrow and return media with business-rule validation.
- Track due dates using media-specific loan periods.
- View active user loans, full loan history, and overdue loans.
- Receive clear runtime feedback for input and validation errors.
## Tech Stack
- **Language:** C#
- **Framework:** .NET 8 (`net8.0`)
- **Application Type:** Console application
- **Data Storage:** In-memory collections (`List`)
## OOP / Design Principles Demonstrated
- **Abstraction:** `User` and `Media` are abstract base classes.
- **Inheritance:** Concrete user and media types extend shared base models.
- **Polymorphism:** Core behaviors are executed through base-type contracts.
- **Encapsulation:** Entities enforce internal validation and state transitions.
- **Single Responsibility:** Domain entities and orchestration logic are separated by purpose.
## How to Run
```bash
dotnet restore
dotnet build
dotnet run --project LibraryManagementSystem
```
## Project Structure
```text
LibraryManagementSystem/
├── Core/
│ └── Library.cs
├── Loans/
│ └── Loan.cs
├── MediaItems/
│ ├── Media.cs
│ ├── Book.cs
│ ├── Audiobook.cs
│ ├── EBook.cs
│ └── Journal.cs
├── Users/
│ ├── User.cs
│ ├── Member.cs
│ └── Employee.cs
└── Program.cs
```
## Roadmap
- Add persistent storage (for example SQLite).
- Add unit and integration test coverage.
- Add CI automation for build and test validation.
- Add reporting/export capabilities for inventory and loan analytics.
- Add API and web front-end options.
## Contributing
Contributions are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request.
## Security
For vulnerability reporting guidance, see [SECURITY.md](SECURITY.md).
## License
This project is licensed under the MIT License. See [LICENSE](LICENSE) for details.