Skip to content

Semai-Mirac/java_anlama_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Banka Yönetim Sistemi — Java Konsol & JavaFX GUI

Java 17+ Maven JavaFX 21 Jackson Windows

Java 17 ile gelistirilmis, JSON tabanli veri saklama kullanan tam kapsamli bir banka yonetim sistemidir. Hem konsol (CLI) hem de JavaFX 21 masaustu GUI arayuzu sunarak musteri yonetimi, hesap islemleri, para transferi, islem gecmisi ve raporlama gibi temel bankacilik fonksiyonlarini gerceklestirir.


Icindekiler


Ozellikler

Ozellik Aciklama
Musteri Yonetimi PIN ile kimlik dogrulama, musteri kaydi
Hesap Tipleri Vadesiz (CHECKING), Birikim (SAVINGS), Vadeli (TERM)
Para Yatirma Ucretsiz, limitsiz para yatirma
Para Cekme Islem basi 1.00 TL ucret, gunluk 5.000 TL limit
Hesaplar Arasi Transfer Islem basi 2.50 TL ucret, gunluk 10.000 TL limit
Eksi Bakiye (Overdraft) Sadece CHECKING hesaplarda 1.000 TL eksi limit
Islem Gecmisi Her hesapta tarih, tip, tutar, ucret ve bakiye kaydi
Raporlama Gunluk ve aylik ozet raporlar
CSV Disari Aktarim Raporlari data/exports/ klasorune CSV olarak kaydetme
Bildirim Logu Tum islemler data/notifications.log dosyasina yazilir
Cift Arayuz Ayni is mantigini kullanan konsol ve JavaFX GUI

Ekran Goruntusu

Uygulama koyu (dark) tema ile profesyonel bir bankacilik arayuzu sunar:

  • Sol tarafta ikon tabanli navigasyon menüsü (9 sekme)
  • Ortada form tabanli islem paneli
  • Sag tarafta bilgi paneli
  • Altta konsol ciktisi ve durum cubugu

Teknoloji Yigini

Dil ve Platform

Teknoloji Surum Kullanim Alani
Java 17+ Ana programlama dili, tum is mantigi
Maven 3.9+ Proje yonetimi, bagimlilik yonetimi, build

Kutuphaneler ve Bagimliliklar

Kutuphane Surum Kullanim Alani
JavaFX Controls 21.0.5 Masaustu GUI bilesenleri (Button, TextField, ComboBox, TabPane, GridPane, BorderPane, vb.)
Jackson Databind 2.17.2 Java nesnelerini JSON'a ve JSON'u Java nesnelerine donusturme (ObjectMapper)
Jackson JavaTime 2.17.2 LocalDateTime, LocalDate gibi Java 8+ zaman siniflarinin JSON serializasyonu

Java Standart Kutuphane Kullanimi

Paket / Sinif Kullanim Alani
java.math.BigDecimal Hassas para hesaplamalari (yuvarlatma hatasi olmadan)
java.time.LocalDateTime Islem zaman damgalari
java.time.LocalDate Gunluk limit sifirlama tarihi
java.time.YearMonth Aylik rapor periyodu
java.security.MessageDigest SHA-256 ile PIN hashleme
java.security.SecureRandom Kriptografik guvenli rastgele salt uretimi
java.util.Base64 Salt ve hash degerlerinin kodlanmasi
java.util.UUID Benzersiz islem kimlikleri
java.io.BufferedWriter CSV dosya ve log yazimi
java.util.Scanner Konsol kullanici girdileri

Build Eklentileri (Maven Plugins)

Eklenti Surum Gorevi
maven-compiler-plugin 3.13.0 Java 17 derleme
exec-maven-plugin 3.3.0 mvn exec:java ile konsol calistirma
javafx-maven-plugin 0.0.8 mvn javafx:run ile GUI calistirma
maven-jar-plugin 3.4.2 Calistirilabilir JAR paketleme

Proje Yapisi

java_anlama_test/ +-- .github/ | +-- copilot-instructions.md # Copilot proje talimatlari +-- .vscode/ | +-- tasks.json # VS Code gorev tanimlari +-- data/ | +-- bank-data.json # JSON veri dosyasi (kalici) | +-- notifications.log # Islem log dosyasi | +-- exports/ # CSV rapor ciktilari +-- src/main/java/com/example/bank/ | +-- App.java # Konsol uygulamasi giris noktasi | +-- model/ | | +-- Account.java # Hesap modeli | | +-- AccountType.java # Hesap tipi enum (CHECKING/SAVINGS/TERM) | | +-- BankData.java # Kok veri modeli (tum veriler) | | +-- Customer.java # Musteri modeli | | +-- ReportSummary.java # Rapor ozet DTO | | +-- Transaction.java # Islem kaydi modeli | | +-- TransactionType.java # Islem tipi enum | +-- repo/ | | +-- BankRepository.java # JSON okuma/yazma katmani | +-- service/ | | +-- BankService.java # Is kurallarinin tamami | | +-- NotificationService.java # Log servisi | | +-- SecurityUtil.java # PIN hashleme ve dogrulama | +-- ui/ | +-- BankGuiApp.java # JavaFX GUI uygulamasi | +-- ConsoleUI.java # Konsol menu arayuzu +-- src/main/resources/styles/ | +-- bank-theme.css # JavaFX koyu tema stilleri +-- pom.xml # Maven yapilandirmasi +-- README.md


Mimari

Uygulama katmanli mimari (Layered Architecture) prensibine uygun olarak tasarlanmistir:

+-------------------+ +-------------------+ | UI Katmani | | ConsoleUI | | (Sunum Katmani) | | BankGuiApp | +--------+----------+ +--------+----------+ | | v v +-------------------------------------------+ | Service Katmani | | BankService | SecurityUtil | | | NotificationService | +-------------------+-----------------------+ | v +-------------------------------------------+ | Repository Katmani | | BankRepository | | (Jackson ObjectMapper + JSON dosya) | +-------------------------------------------+ | v +-------------------------------------------+ | Model Katmani | | Account, Customer, Transaction, | | BankData, ReportSummary, | | AccountType, TransactionType | +-------------------------------------------+

Tasarim Desenleri (Design Patterns)

Desen Nerede Aciklama
Repository Pattern BankRepository Veri erisimini soyutlar; JSON detaylari servis katmanindan gizlenir
Service Layer BankService Tum is kurallari tek merkezde toplanir
DTO ReportSummary Rapor verisi tasima nesnesi
Dependency Injection App.java, BankGuiApp Servis ve repository bagimliliklari constructor ile enjekte edilir
MVC UI + Service + Model Arayuz yalnizca goruntuleme yapar, mantik servistedir
Type-Safe Enum AccountType, TransactionType Tip guvenligi saglayan enum sabitleri
Utility Class SecurityUtil Statik metodlar, private constructor

Kurulum ve Calistirma

Gereksinimler

  • Java 17 veya ustu (JDK)
  • Maven 3.9 veya ustu
  • Windows isletim sistemi (JavaFX win classifier kullanilmaktadir)

Derleme

�ash mvn -q -DskipTests package

Konsol Uygulamasini Calistirma

�ash mvn -q exec:java

JavaFX GUI Calistirma

�ash mvn -q javafx:run

JAR ile Calistirma (Konsol)

�ash java -jar target/bank-management-1.0.0.jar

VS Code Gorevi

VS Code icinde Ctrl+Shift+B ile "Run GUI (JavaFX)" gorevini calistirabilirsiniz.


Kullanim

Konsol Menusu

Konsol arayuzu 9 islem secenegi sunar:

  1. Musteri Olustur — Ad ve 4-6 haneli PIN ile kayit
  2. Hesap Ac — Musteri ID, hesap tipi ve baslangic bakiyesi
  3. Para Yatir — Hesap numarasi ve tutar
  4. Para Cek — Hesap numarasi, tutar ve PIN dogrulama
  5. Bakiye Sorgula — Hesap bakiyesi goruntuleme
  6. Transfer — Kaynak hesap, hedef hesap, tutar ve PIN
  7. Islem Gecmisi — Bir hesabin tum islem kayitlari
  8. Hesap Listesi — Bir musterinin tum hesaplari
  9. Raporlar — Gunluk/aylik ozet ve CSV disari aktarim
  10. Cikis

JavaFX GUI

  • Sol navigasyon cubugunda 9 sekme butonu
  • Her sekme icin ayri form sayfasi
  • Altta konsol benzeri cikti alani
  • Koyu tema ile profesyonel gorunum

Veri Saklama

Tum veriler data/bank-data.json dosyasinda JSON formatinda saklanir. Jackson ObjectMapper ile serializasyon yapilir.

JSON Yapisi

json { "customers": [ { "customerId": 500001, "name": "Ornek Musteri", "pinHash": "sha256-hash", "pinSalt": "base64-salt", "createdAt": "2026-04-04T22:28:14" } ], "accounts": [ { "accountNumber": 1000001, "customerId": 500001, "type": "CHECKING", "balance": "25000.00", "transactions": [ ... ] } ], "nextCustomerId": 500002, "nextAccountNumber": 1000002 }

Onemli detaylar:

  • Para tutarlari BigDecimal string olarak saklanir (hassasiyet icin)
  • Tarihler ISO-8601 formatindadir
  • Musteri ID'leri 500.001'den, hesap numaralari 1.000.001'den baslar
  • Islem gecmisi hesap nesnesine gomulu saklanir

Guvenlik

  • PIN'ler asla duz metin olarak saklanmaz. SHA-256 ile hashlenir.
  • Her musteri icin SecureRandom ile 16 byte'lik benzersiz salt uretilir.
  • PIN dogrulama sabit zamanli (constant-time) karsilastirma kullanir.
  • Rainbow table saldirilarina karsi korumalidir.
  • GUI'de PIN alanlari PasswordField ile maskelenir.

Lisans

Bu proje egitim amacli gelistirilmistir.

About

Bu projede asıl amaç Java dilindeki yetkinliklerimi denemedir

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors