Back to projects

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
View repository
Book&Go start screen, the library management system built in C# WinForms
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
01

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.

02

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.

03

Architecture

Five projects in the solution, one responsibility each.

  1. Presentation GUI

    WinForms forms grouped by process: loans, replenishment, master data, reports and administration.

  2. Business BLL

    Loan, penalty, replenishment, check-digit and event-log rules.

  3. Entities BE

    Objects that travel between layers and know nothing about the database.

  4. Data DAL

    SQL Server access through Microsoft.Data.SqlClient over a shared base class.

  5. 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.

04

Decisions

The five that shaped the system.

01

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.

02

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.

03

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.

04

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.

05

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.

05

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.