Skip to content

MahmoudZarad/DVLD-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš— DVLD Management System

Windows Desktop Application – .NET | SQL Server

πŸŽ₯ System Demo (LinkedIn) : [LinkedIn Video Link]


πŸ“Œ Overview

The DVLD Management System is a full-scale Windows Desktop Application that simulates real-world operations of a Driving License & Vehicle Department.

The system is designed as a production-level administrative application, focusing on:

  • Clean and scalable architecture
  • Strong separation of concerns
  • Robust validation and data integrity
  • Maintainability and long-term scalability

This is not a simple CRUD project.
It represents a real governmental-style desktop system with complex workflows and strict business rules.


❓ Problem Statement

Many desktop applications suffer from:

  • Mixing UI logic with business logic and database access
  • Weak validation and poor error handling
  • Difficult maintenance and scalability
  • Lack of workflow control and traceability
  • Absence of logging and monitoring

This project was built to solve these problems by applying proper layered architecture and clean software engineering principles from the ground up.


🧱 System Architecture

πŸ”Ή 3-Layered Architecture Diagram

flowchart TB
    UI[Presentation Layer<br/>Windows Forms]
    BL[Business Layer<br/>Rules β€’ Validation β€’ Workflows]
    DAL[Data Access Layer<br/>ADO.NET β€’ Transactions]
    DB[(SQL Server)]

    UI --> BL
    BL --> DAL
    DAL --> DB
Loading

🧱 Layer Responsibilities

πŸ”Ή Presentation Layer

  • Windows Forms user interface
  • Handles user interaction and input only
  • No business logic
  • No direct database access

πŸ”Ή Business Layer

  • Core business rules
  • Centralized validation logic
  • License lifecycle management
  • Application and workflow processing

πŸ”Ή Data Access Layer

  • SQL Server access using ADO.NET
  • Parameterized queries
  • Transaction-based operations (Commit / Rollback)
  • Secure and centralized data handling
DVLD/
β”‚
β”œβ”€β”€ PresentationLayer/
β”‚   β”‚
β”‚   β”œβ”€β”€ Applications/
β”‚   β”‚   β”œβ”€β”€ Application Types/
β”‚   β”‚   β”‚   β”œβ”€β”€ frmEditApplicationType.cs
β”‚   β”‚   β”‚   └── frmListApplicationTypes.cs
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ Controllers/
β”‚   β”‚   β”‚   β”œβ”€β”€ ctrlApplicationBasicInfo.cs
β”‚   β”‚   β”‚   └── ctrlDrivingLicenseApplicationInfo.cs
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ Local Driving License/
β”‚   β”‚   β”‚   β”œβ”€β”€ frmAddUpdateLocalDrivingLicenseApplication.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ frmListLocalDrivingLicenseApplications.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ frmLocalDrivingLicenseApplicationInfo.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ frmRenewLocalDrivingLicenseApplication.cs
β”‚   β”‚   β”‚   └── frmReplaceLostOrDamagedLicenseApplication.cs
β”‚   β”‚   β”‚
β”‚   β”‚   └── International License/
β”‚   β”‚       β”œβ”€β”€ frmListInternationalLicenseApplications.cs
β”‚   β”‚       └── frmNewInternationalLicenseApplication.cs
β”‚   β”‚
β”‚   β”œβ”€β”€ Drivers/
β”‚   β”‚   └── frmListDrivers.cs
β”‚   β”‚
β”‚   β”œβ”€β”€ Global Classes/
β”‚   β”‚   β”œβ”€β”€ clsGlobal.cs
β”‚   β”‚   └── clsValidation.cs
β”‚   β”‚
β”‚   β”œβ”€β”€ Licenses/
β”‚   β”‚   β”œβ”€β”€ Controllers/
β”‚   β”‚   β”‚   β”œβ”€β”€ ctrlDriverInternationalLicenseInfo.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ ctrlDriverLicenseInfo.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ ctrlDriverLicenseInfoWithFilter.cs
β”‚   β”‚   β”‚   └── ctrlDriverLicenses.cs
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ Detain License/
β”‚   β”‚   β”‚   β”œβ”€β”€ frmDetainLicenseApplication.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ frmListDetainedLicenses.cs
β”‚   β”‚   β”‚   └── frmReleaseDetainedLicenseApplication.cs
β”‚   β”‚   β”‚
β”‚   β”‚   └── Local Licenses/
β”‚   β”‚       β”œβ”€β”€ frmShowLicenseInfo.cs
β”‚   β”‚       β”œβ”€β”€ frmIssueDriverLicenseFirstTime.cs
β”‚   β”‚       β”œβ”€β”€ frmShowInternationalLicenseInfo.cs
β”‚   β”‚       └── frmShowPersonLicenseHistory.cs
β”‚   β”‚
β”‚   β”œβ”€β”€ Login/
β”‚   β”‚   └── frmLogin.cs
β”‚   β”‚
β”‚   β”œβ”€β”€ People/
β”‚   β”‚   β”œβ”€β”€ UserControllers/
β”‚   β”‚   β”‚   β”œβ”€β”€ ctrlPersonCardWithFilter.cs
β”‚   β”‚   β”‚   └── ctrlShowPersonInfo.cs
β”‚   β”‚   β”œβ”€β”€ FrmAddUpdateNewPerson.cs
β”‚   β”‚   β”œβ”€β”€ frmFindPerson.cs
β”‚   β”‚   β”œβ”€β”€ FrmManagePeople.cs
β”‚   β”‚   └── FrmShowPersonDetails.cs
β”‚   β”‚
β”‚   β”œβ”€β”€ Tests/
β”‚   β”‚   β”œβ”€β”€ Controllers/
β”‚   β”‚   β”‚   β”œβ”€β”€ ctrlScheduleTest.cs
β”‚   β”‚   β”‚   └── ctrlScheduledTest.cs
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ Test Types/
β”‚   β”‚   β”‚   β”œβ”€β”€ frmEditTestType.cs
β”‚   β”‚   β”‚   └── frmListTestTypes.cs
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ frmListTestAppointments.cs
β”‚   β”‚   β”œβ”€β”€ frmScheduleTest.cs
β”‚   β”‚   └── frmTakeTest.cs
β”‚   β”‚
β”‚   β”œβ”€β”€ Users/
β”‚   β”‚   β”œβ”€β”€ ctrlUserCard.cs
β”‚   β”‚   β”œβ”€β”€ frmAddUpdateUser.cs
β”‚   β”‚   β”œβ”€β”€ frmChangePassword.cs
β”‚   β”‚   β”œβ”€β”€ frmListUsers.cs
β”‚   β”‚   └── frmUserInfo.cs
β”‚   β”‚
β”‚   β”œβ”€β”€ FrmMain.cs
β”‚   β”œβ”€β”€ Program.cs
β”‚   β”œβ”€β”€ App.config
β”‚   └── app.manifest
β”‚
β”œβ”€β”€ BusinessLayer/
β”‚   β”œβ”€β”€ clsApplication.cs
β”‚   β”œβ”€β”€ clsApplicationType.cs
β”‚   β”œβ”€β”€ clsCountry.cs
β”‚   β”œβ”€β”€ clsDetainedLicense.cs
β”‚   β”œβ”€β”€ clsDriver.cs
β”‚   β”œβ”€β”€ clsGlobalBusiness.cs
β”‚   β”œβ”€β”€ clsInternationalLicense.cs
β”‚   β”œβ”€β”€ clsLicense.cs
β”‚   β”œβ”€β”€ clsLicenseClass.cs
β”‚   β”œβ”€β”€ clsLocalDrivingLicenseApplication.cs
β”‚   β”œβ”€β”€ clsLogger.cs
β”‚   β”œβ”€β”€ clsPerson.cs
β”‚   β”œβ”€β”€ clsTest.cs
β”‚   β”œβ”€β”€ clsTestAppointment.cs
β”‚   β”œβ”€β”€ clsTestType.cs
β”‚   └── clsUser.cs
β”‚
└── DataAccessLayer/
    β”œβ”€β”€ clsApplicationData.cs
    β”œβ”€β”€ clsApplicationTypeData.cs
    β”œβ”€β”€ clsCountryData.cs
    β”œβ”€β”€ clsDataAccessSettings.cs
    β”œβ”€β”€ clsDetainedLicenseData.cs
    β”œβ”€β”€ clsDriverData.cs
    β”œβ”€β”€ clsInternationalLicenseData.cs
    β”œβ”€β”€ clsLicenseClassData.cs
    β”œβ”€β”€ clsLicenseData.cs
    β”œβ”€β”€ clsLocalDrivingLicenseApplicationData.cs
    β”œβ”€β”€ clsLoggerData.cs
    β”œβ”€β”€ clsPersonData.cs
    β”œβ”€β”€ clsTestAppointmentData.cs
    β”œβ”€β”€ clsTestData.cs
    β”œβ”€β”€ clsTestTypeData.cs
    └── clsUserData.cs

🧼 Code Quality & Design

  • Clean Code principles
  • Separation of Concerns
  • Single Responsibility Principle (SRP)
  • Reusable and maintainable components
  • Clear and readable structure

πŸ” Security & Data Integrity

  • SQL Injection prevention using parameterized queries
  • SQL Server transactions (Commit / Rollback)
  • Centralized validation across layers
  • Secure handling of sensitive data

πŸ‘₯ Core Features

  • People & Drivers Management
  • Local & International License Management
  • First-time License Issuing
  • License Renewal & Replacement
  • Detained License Handling (Detain / Release)
  • Driving Tests Scheduling and Execution
  • Application workflow tracking
  • Centralized Validation & Logging

🧾 Logging & Monitoring

  • Windows Event Logger integration
  • Error, warning, and activity logging
  • Improved debugging, auditing, and reliability

πŸͺŸ Windows Integration

  • Windows Forms UI
  • Windows Registry for application configuration
  • Desktop shortcut support
  • Native Windows Event Log usage

βš™ Technology Stack

  • C# (.NET)
  • Windows Forms
  • ADO.NET
  • Microsoft SQL Server
  • SQL Server Management Studio (SSMS)
  • Visual Studio 2022
  • Git & GitHub

β–Ά How to Run the Project

1️⃣ Requirements

  • Windows Operating System
  • Visual Studio 2022
  • .NET Framework / .NET (based on project version)
  • Microsoft SQL Server
  • SQL Server Management Studio (SSMS)

2️⃣ Database Setup

  1. Create a new SQL Server database (e.g. DVLD_DB)
  2. Execute the provided SQL scripts
  3. Verify tables and relationships

3️⃣ Configuration

  1. Open the solution in Visual Studio
  2. Update the connection string in App.config
  3. Configure SQL Server credentials

4️⃣ Run

  • Build the solution
  • Run the application from Visual Studio or the generated executable

🎯 Project Goal

To demonstrate how to build a professional, secure, and maintainable Windows desktop system using correct architecture and real-world workflows.


πŸš€ Final Note

This project is not about writing code that only works,
but about building a system that is clean, secure, maintainable,
and ready for real production environments.

About

DVLD Management System is a Windows Desktop Application designed to manage users, roles, persons, drivers, tests, bookings, and the full driving license lifecycle including issuance, renewal, withdrawal. Built with .NET, it applies 3-Tier Architecture and Clean Code principles to deliver a scalable, secure, maintainable real-world desktop system.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages