A Windows desktop application that simulates a real-world driving license department.
Built with C# WinForms, SQL Server, and a classic 3-layer architecture (Presentation, Business, Data Access) as part of my journey learning desktop application development and backend system design.
Note This is a learning project built while studying desktop application development. It is not production-ready, and several limitations are intentionally documented below.
The solution follows a classic 3-tier architecture to separate responsibilities between the UI, business logic, and database access.
Presentation Layer (WinForms)
│
Business Logic Layer
│
Data Access Layer (ADO.NET)
│
SQL Server
Projects:
- DVLD — WinForms presentation layer.
- DVLD_BusinessLayer — Business logic and business rules.
- DVLD_DataAccessLayer — Database access using ADO.NET.
- User login
- Add, edit, delete, and search people
- Driver management
- Local driving license applications
- International driving license applications
- Issue licenses
- Renew licenses
- Replace lost or damaged licenses
- Detain licenses
- Release detained licenses
- Schedule vision tests
- Schedule written tests
- Schedule street tests
- User management
- C#
- .NET Framework 4.8
- WinForms
- SQL Server
- ADO.NET
- Windows
- Visual Studio 2022
- SQL Server 2022 (Express, Developer, or Standard)
- Restore the database backup located at:
Database/DVLD.bak
- Update the connection string in:
DVLD_DataAccessLayer/DAL_Settings.cs
- Open
DVLD.sln. - Build and run the project.
This project significantly changed how I think about building business applications.
Some of the concepts I practiced throughout the project include:
- 3-Tier Architecture
- SQL Server & ADO.NET
- Business workflow modeling
- Database normalization
- Generalization & Specialization
- Object-Oriented Programming
- Separation of Concerns
- Desktop application development
This project focuses on learning the fundamentals and therefore has several limitations.
- Passwords are stored as plain text (no hashing).
- No SQL transactions for multi-step operations.
- No dependency injection.
- No centralized exception handling.
- No ORM (Entity Framework / Dapper).
- Basic UI validation only.
These are acknowledged limitations rather than overlooked issues.
This project was built while learning desktop application development with C#, SQL Server, WinForms, and layered architecture.
The goal wasn't to build a production-ready system, but to understand how medium-sized business applications are structured, how different layers communicate, and how real-world business workflows can be translated into code.
It represents one of the biggest learning milestones in my software engineering journey so far.