Case study · 2025
Book&Go
Library lending system
Desktop application to manage loans, returns, penalties and stock replenishment in a physical library. I built it end to end as the final project of my Systems Analyst degree.
- C#
- .NET Framework 4.8.1
- WinForms
- SQL Server
- UML
- Role
- End-to-end development: analysis, design, implementation and documentation
- Scope
- 2 business processes · 5 user roles
- Interface
- WinForms on .NET Framework 4.8.1, with language switching without restarting
- Database
- SQL Server 2022, with check digits, event log and backup
Context
What it is and where it came from.
Book&Go digitises the daily operation of a physical library: who takes each copy, when it comes back, what happens if it is late or damaged, and how stock is replenished when a title runs low.
It began as the final project of the third year of my Systems Analyst degree, with a closed scope: two complete processes including their edge cases, instead of a catalogue of half-finished screens.
It is a desktop application in C# with WinForms on .NET Framework 4.8.1, backed by SQL Server 2022. It includes the data model, the layered architecture, the technical documentation and the user manuals.
Scope
The two processes the system covers and the roles that run them.
Processes
Loans and returns
Customer registration, availability checks, deposit collection in cash or by card, return registration with the state of the copy, and penalties for late or damaged returns.
Stock and replenishment
Stock by state (available, on loan, damaged, missing), automatic purchase orders when stock hits the minimum, supplier records and registering new copies on delivery.
Roles
-
Librarian
Loans, returns, penalties and customer registration.
-
Replenishment manager
Stock queries, purchase orders and registering new copies.
-
Stock clerk
Checking invoices and orders, and registering incoming deliveries.
-
Administrator
Users, profiles, families and permissions.
-
End user
Sign in and change password.
Architecture
Five projects in the solution, one responsibility each.
- Presentation GUI
WinForms forms grouped by process: loans, replenishment, master data, reports and administration.
- Business BLL
Loan, penalty, replenishment, check-digit and event-log rules.
- Entities BE
Objects that travel between layers and know nothing about the database.
- Data DAL
SQL Server access through Microsoft.Data.SqlClient over a shared base class.
- Services Services
Cross-cutting: design patterns, session, language, encryption and events.
The cross-cutting services live in their own project on purpose: neither business logic nor data access depend on them, and the interface never runs SQL. Entities travel between layers without knowing where the data comes from.
Decisions
The five that shaped the system.
Permissions as a tree, not a list
Profiles, families and permissions are modelled with the Composite pattern: a profile holds families and each family holds permissions. Authorisation walks the tree instead of keeping hard-coded conditions per screen.
A single session, reachable from any layer
The logged-in user lives in a thread-safe lazy Singleton, so any form can query the session without receiving it as a parameter. The login result is modelled with LoginResult and LoginException rather than loose codes.
Language switching without restarting
The Observer pattern connects the forms to a LanguageManager: when the language changes, the manager notifies every subscribed form and each one reloads its texts from JSON files. The application runs in Spanish and English, online help included.
The connection string is not in the code
The data layer base class reads the connection string from an external JSON file and fails with an explicit message when it is missing or incomplete. No credentials travel inside the build.
Detecting changes in the database
Every sensitive record stores horizontal and vertical check digits, computed on save. A dedicated form recalculates and repairs the table when the control finds a mismatch.
Outcome
What was delivered and working.
- Both processes complete on SQL Server 2022: loans with deposit, returns with the state of the copy, penalties, stock by state and automatic purchase orders.
- Role-based access control with profiles, families and permissions, and passwords stored with SHA-256.
- Event log, plus database backup and restore from inside the application.
- Delivery documentation: UML diagrams in Enterprise Architect, an installation manual and per-screen online help, in Spanish and English.
- Public repository with the code of all five layers.
The whole project, with its code, diagrams and manuals, is in the repository.