Skip to content

ilkerefeipek/Stock_Management_System

Repository files navigation

Stock Management System

İzmir Ekonomi Üniversitesi Bilgisayar Programcılığı bölümü kapsamında C# WinForms + SQL Server ile geliştirilmiş, katmanlı mimari ile yazılmış stok ve sipariş yönetim masaüstü uygulaması.

🌐 Portfolio: https://ilkerefeipek.github.io/ilkerefeipek-portfolio/ 📧 İletişim: ilkerefeipek00@gmail.com


Hakkında

Küçük ve orta ölçekli işletmeler için ürün, stok, tedarikçi, sipariş ve kullanıcı yönetimi sağlayan masaüstü uygulaması. Solution; UI / BLL / DAL / Entities olmak üzere 4 katmanlı mimari ile organize edilmiştir. Veri erişimi için ADO.NET (SqlConnection, SqlCommand) kullanılır; veritabanı bağlantısı Windows Authentication ile sağlanır (Connection string'de parola yoktur).

Teknoloji

Katman Teknoloji
UI C# WinForms (.NET Framework 4.8)
BLL Business Logic Layer — manager pattern
DAL Data Access Layer — ADO.NET (SqlConnection, SqlCommand, SqlDataReader)
Entities POCO model class'ları
Veritabanı Microsoft SQL Server Express (.\SQLEXPRESS)
Auth Windows Authentication (Trusted_Connection=True)
IDE Visual Studio 2022

Mimari

turgayhoca/
├── ilkerefeipek_20232425024.UI/                  ← WinExe entry point
│   ├── ilkerefeipek_20232425024.UI.sln           ← Solution file
│   ├── LoginForm.cs / MainForm.cs
│   ├── ProductForm / ProductAddForm / ProductUpdateForm
│   ├── OrderForm / OrderAddForm / OrderUpdateForm
│   ├── SupplierForm / SupplierAddForm / SupplierUpdateForm
│   ├── UserForm / UserAddForm / UserUpdateForm
│   ├── Resources/                                ← logo + ikonlar
│   └── App.config                                ← connection string
│
├── ilkerefeipek_20232425024.BLL/                 ← Class Library (→ DAL, Entities)
│   ├── AddressManager.cs
│   ├── DataLoader.cs
│   ├── OrderManager.cs
│   ├── ProductManager.cs
│   ├── StatusManager.cs
│   ├── SupplierManager.cs
│   └── UserManager.cs
│
├── ilkerefeipek_20232425024.DAL/                 ← Class Library (→ Entities)
│   ├── DatabaseConnection.cs   (DbHelper static)
│   ├── AddressDAL.cs
│   ├── OrderDAL.cs
│   ├── OrderDetailDAL.cs
│   ├── ProductDAL.cs
│   ├── StatusDAL.cs
│   ├── SupplierDAL.cs
│   └── UserDAL.cs
│
├── ilkerefeipek_20232425024.Entities/            ← POCO models
│   ├── Address / Category / Comment / Message
│   ├── Order / OrderDetail / OrderView
│   ├── Product / Status / Supplier
│   └── User / UserTelephone
│
├── img/                                          ← Brand assets
├── README.md
└── .gitignore

Dependency akışı: UI → BLL → DAL → Entities (UI Entities'i de referansla — model tipleri için).

Özellikler

  • Kullanıcı yönetimi: kullanıcı ekle / düzenle / listele, e-posta tabanlı giriş
  • Ürün yönetimi: CRUD, kategori-tedarikçi ilişkisi
  • Sipariş işlemleri: sipariş oluştur / güncelle, OrderDetail tablosunda kalemler, OrderView ile aggregate görüntüleme
  • Tedarikçi yönetimi: marka bazlı tedarikçi kayıtları
  • Adres yönetimi: kullanıcı adres bilgileri (Address entity, AddressManager)
  • Durum lookup: sipariş yaşam döngüsü (Status entity)
  • Layered separation: her CRUD işlemi UI form → BLL manager → DAL → SQL pattern'inden geçer

Veritabanı

Database adı: ilkerefeipek_20232425024 Auth: Windows Authentication — Trusted_Connection=True Bağlantı: App.config içinde DefaultConnection adıyla saklanır:

<connectionStrings>
  <add name="DefaultConnection"
       connectionString="Server=.\SQLEXPRESS;Database=ilkerefeipek_20232425024;Trusted_Connection=True;"
       providerName="System.Data.SqlClient" />
</connectionStrings>

DAL'da DbHelper static class'ı bu connection string'i ConfigurationManager.ConnectionStrings["DefaultConnection"] üzerinden okur — kaynak kodda hardcoded credential yoktur.

Entity-Tablo Eşleştirmesi

Entities katmanındaki POCO model'lere karşılık gelen SQL tabloları:

Entity Tipik kolonlar
User UserID, UserName, UserSurname, EmailAddress, Role, Active
UserTelephone PhoneID, UserID, PhoneNumber, PhoneType, IsPrimary
Address AddressID, UserID, AddressLine, City, District, PostalCode
Category CategoryID, CategoryName, ParentCategoryID
Supplier SupplierID, CompanyName, ContactName, Email, Phone, Country
Product ProductID, ProductName, CategoryID, SupplierID, UnitPrice, Stock
Order OrderID, UserID, AddressID, StatusID, OrderDate
OrderDetail OrderDetailID, OrderID, ProductID, Quantity, UnitPrice
OrderView (denormalized join view — Order + User + Status snapshot)
Status StatusID, StatusName
Comment CommentID, UserID, ProductID, Rating, CommentText
Message MessageID, SenderID, ReceiverID, Subject, Body

Tablolar arasındaki FK ilişkileri DAL sınıflarında somutlaştırılmıştır. Şema referansı olarak proje2 — Multi-Layered E-Commerce DB Design repo'su kullanılabilir (aynı entity model dünyası, MSSQL T-SQL ile birebir).

Kurulum

Önkoşullar

  • Visual Studio 2022 (Community veya üstü)
  • SQL Server Express (yerel \SQLEXPRESS instance) veya LocalDB
  • .NET Framework 4.8 (Visual Studio installer ile otomatik gelir)

Adımlar

  1. Repo'yu klonla:

    git clone https://github.com/ilkerefeipek/proje1.git
    cd proje1
  2. Veritabanını oluştur:

    • SSMS açın, .\SQLEXPRESS instance'a bağlanın
    • Yeni database oluşturun: ilkerefeipek_20232425024
    • Entity model'lere uygun tabloları manuel oluşturun (yukarıdaki Entity-Tablo Eşleştirmesi'ne göre) veya proje2 schema'sını referans alarak adapte edin
  3. Solution'ı aç:

    ilkerefeipek_20232425024.UI/ilkerefeipek_20232425024.UI.sln
    
  4. NuGet restore: Visual Studio paketleri otomatik geri yükler (System.Configuration.ConfigurationManager 9.0.5 tek bağımlılık).

  5. Build → Run (F5): LoginForm açılır. Giriş için DB'deki herhangi bir kayıtlı User.EmailAddress kullanılır (sistem e-posta tabanlı, parola alanı yoktur — akademik kapsam).

Akademik Not

Bu proje eğitim amaçlıdır:

  • Login mekanizması e-posta tabanlı, parola hash'lenmesi yok (production'a uygun değildir)
  • Connection string yerel makine instance'ına bağımlı
  • Birim test suite yok (akademik teslim kapsamında değildi)
  • Hedef: katmanlı mimari, ADO.NET ile CRUD, transaction temelleri

Production-grade gereksinim olduğunda yapılacaklar: parola hash + tuzlama (BCrypt/PBKDF2), Entity Framework veya Dapper migration, unit + integration testler, parametreli SQL'in saklı yordamla pekiştirilmesi, role-based authorization.

Bağlantılı Projeler

Lisans

MIT — Eğitim ve kişisel kullanım amaçlı açık.

Geliştirici

İlker Efe İpek İzmir Ekonomi Üniversitesi · Bilgisayar Programcılığı · 20232425024 ilkerefeipek00@gmail.com

About

Desktop inventory management application for small businesses — handles products, stock movements, customers, and orders with transactional integrity. Built with C# WinForms and SQL Server.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages