C# · WPF · MySQL · ER Modeling · Role-Based Access · Academic Project

Banking Management System
A Complete Database Design & Desktop Client

An end-to-end academic project pairing a 9-entity Entity-Relationship design for a retail bank with a working WPF desktop client on MySQL. The schema is modeled in two clusters — Customer Data (country, city, address, customer) and Branch (employee, store, account, payment, loan) — then implemented as operational tables (LoginInformation, clientinfo, Depositor, AllTransaction) driving a 24-window WPF application with role-based dashboards for Admin, Employee, and User.

C# .NET 4.0 WPF XAML MySQL MS Access ER Modeling Normalization CRUD Role-Based Academic Project
Domain
Database design · banking desktop application
Platform
WPF · .NET Framework 4.0 · Visual Studio
Database
MySQL (localhost · MySql.Data) · MS Access & SSMS used in design phase
Roles
Admin · Employee · User (routed from LoginInformation)
Scope
9-entity ER design · 24 XAML windows · 4 reports
01About

The project takes a retail-banking scenario through the full database design lifecycle — requirements gathering, ER modeling, normalization, SQL DDL, and finally a desktop client that exercises the schema with real CRUD flows. The emphasis is on the design itself being complete and traceable, not just the front-end working.

The ER design is organized into two clusters. Customer Data (country → city → address → customer) captures who the bank's customers are and where they live; Branch (employee, store, account, payment, loan) captures the bank's internal operations. The two clusters connect through customer → account and employee/store relationships.

The WPF client implements the design with a simplified operational schema — LoginInformation, clientinfo, Depositor, currentaccount, and AllTransaction — accessed via MySql.Data with direct ADO-style commands. Every form maps to a real banking action: opening an account, choosing an account type (savings / current / fixed), depositing, withdrawing, transferring, applying for a loan, and reviewing the full transaction history.

Login routes by the Role column in LoginInformation: Admin opens the admin dashboard with full CRUD plus AdminShowAll reporting; Employee and User get scoped dashboards tailored to their day-to-day tasks. The result is a small but coherent design → code → UI walkthrough that demonstrates how a normalized schema becomes a working application.

02Design Lifecycle

The project moves through the six classical stages of database design and then a full client implementation: requirements → ER model → normalized tables → SQL DDL → MySQL operational schema → WPF client. Each stage produces a concrete artifact in the repository (ER diagrams, schema reports, .mdf snapshots, XAML windows, C# data code).

01
Requirements — retail bank operations
Capture the bank's day-to-day flows: open / close accounts, deposit and withdraw cash, transfer between accounts, apply for loans, search customers, run transaction reports, and manage role-based access for admin, employees, and end-users.
requirements → use cases → entity candidates
02
ER modeling — two clusters, nine entities
Customer Data cluster — country, city, address, customer. Branch cluster — Employee, store, Account, payment, Loan. Relationships and cardinalities are diagrammed (orange + green ER diagram in the repo).
9 entities · 2 clusters · 1:N / N:1 relationships
03
Normalization & keys
Each entity gets a primary key (customer_id, staff_id, store_id, loan_id, …) and foreign keys to its neighbours (address.city_id, customer.address_id, payment.customer_id). Indexes are defined for join-heavy paths (idx_fk_store_id, idx_fk_address_id, idx_last_name).
3NF · PK / FK / indexes per entity
04
SQL DDL & data — SSMS & MS Access
The design is realized as SQL DDL plus sample data (MyDataBase.mdf and the SaleCo MS Access database in the repo's Initial DataBase Design folder), with snapshots covering CREATE, INSERT, UPDATE, and a Customer × Account cross-join query.
CREATE · INSERT · UPDATE · DELETE · SELECT
05
MySQL operational schema
For the runtime client the schema is collapsed into operational tables — LoginInformation (role-based auth), clientinfo (customer master), Depositor (account balances and types), currentaccount (current-account specifics), and AllTransaction (chronological transaction log) — all served from a local MySQL instance.
LoginInformation · clientinfo · Depositor · AllTransaction
06
WPF client — 24 XAML windows, role-routed
A WPF .NET Framework 4.0 desktop app with 24 XAML windows grouped into seven modules — Login & Access, Dashboards, Account Management, Transactions, Lending, Reports & Views, Misc. Data access is direct MySql.Data ADO (MySqlConnection / MySqlCommand / MySqlDataReader), with login routing to AdminMainWindow, EmployeMainWindow, or UserMainWindow based on the user's role.
WPF · MySql.Data · role-based routing
03Interactive Charts
Interactive · Plotly.js

Two views of the project's structure rendered with Plotly.js. The first shows the ER schema breakdown — attributes per entity, colored by cluster (orange = Customer Data, green = Branch). The second shows the WPF client breakdown — how the 24 XAML windows distribute across the application's seven functional modules.

ER Schema — Attributes per Entity 9 entities · 2 clusters · attribute counts from ER diagram
WPF Client — Windows by Module 24 XAML windows · counted from the repo's Bankmanagment folder

ⓘ Attribute counts are taken from the ER diagram included in the repo (Initial DataBase Design / Database snapshots / Untitled1111.jpg) — a few entities show "n more" in the diagram, so counts are rounded to the nearest visible attribute. Window counts are direct file counts from the Bankmanagment/ directory.

04Key Numbers
ER Entities
9
Customer Data + Branch clusters
WPF Windows
24
XAML forms across 7 modules
User Roles
3
Admin · Employee · User dashboards
CRUD Tables
5
LoginInformation · clientinfo · Depositor · currentaccount · AllTransaction
  • 01 Complete design lifecycle — every stage from requirements through ER, normalization, SQL, and WPF UI is preserved as an artifact in the repo (ER diagrams, schema reports, .mdf snapshots, 24 XAML windows, C# data-access code).
  • 02 Two-cluster ER architecture — separating Customer Data (country / city / address / customer) from Branch (employee / store / account / payment / loan) keeps the schema readable and makes the join paths between people and operations explicit.
  • 03 Role-based routing from a single auth table — login reads the Role column from LoginInformation and dispatches to AdminMainWindow, EmployeMainWindow, or UserMainWindow, giving each role its own scoped dashboard.
  • 04 Full transaction coverage — deposit, withdraw, cash withdraw, transfer, loan, and balance / equity reporting are each their own XAML window, all writing through to Depositor and appending to AllTransaction for an auditable history.
  • 05 Design / implementation drift, on purpose — the conceptual ER design uses a richer model (customer · employee · store · payment · loan), while the runtime schema collapses to operational tables more suited to a small client. The repo documents both, making the trade-off teachable.
05Contributions
LanguageC# · XAML
FrameworkWPF · .NET Framework 4.0
IDEVisual Studio
DatabaseMySQL (localhost · MySql.Data ADO) · MS Access & SSMS in design phase
Design9-entity ER (Customer Data + Branch clusters) · normalization · indexes
UI24 XAML windows across 7 modules · role-based routing
RolesAdmin · Employee · User
AuthRole lookup from LoginInformation

Browse the full repository

ER diagrams, schema reports, database snapshots, and the WPF client are all on GitHub.