銀行管理システム(Java + MySQL + Swing)

Other

概要

このリポジトリは「BANK MANAGEMENT SYSTEM」と名付けられた、Javaデスクトップ向けの銀行管理アプリケーションです。GUIはJava Swingで構築され、データ永続化にはMySQLを使用、JDBCで接続します。ユーザーは登録(signup)→ログイン→口座種別選択→入金・出金・PIN変更といった一連のATM風ワークフローを操作できます。日付選択にjcalendar.jarが使われており、学習目的やローカル環境でのプロトタイプ検証に適した設計になっています。

GitHub

リポジトリの統計情報

  • スター数: 13
  • フォーク数: 0
  • ウォッチャー数: 13
  • コミット数: 4
  • ファイル数: 4
  • メインの言語: Java

主な特徴

  • GUIベースの操作フロー: Java SwingでATM風の多段階画面を実装し、初心者でも操作しやすいUI構成。
  • 基本的な口座管理機能: ユーザー登録、ログイン、入金・出金、PIN(暗証番号)変更をサポート。
  • MySQL + JDBC連携: データはMySQLに保存され、JDBCを介してCRUD操作が行われる。
  • 外部ライブラリ利用: 日付入力にJCalendarを利用し、日付選択UIを簡潔に提供。

技術的なポイント

本プロジェクトは学習目的のデスクトップアプリとして、以下の技術的ポイントが注目できます。GUIはSwingで構成されており、画面遷移はフレームやパネルの切り替えで実現している想定です。データ層はMySQLに委ねられ、JDBCドライバ経由で接続してSQL文を発行します。jcalendar.jarを用いることで、ユーザーが簡単に生年月日や取引日を選べるようになっている点も有用です。

コード面では、ユーザー認証や口座残高の更新といったトランザクション性を意識する必要がありますが、学習用実装では単純なSQL更新で済ませている可能性があります。実運用を想定する場合は次の改善が考えられます:パスワード/PINのハッシュ化保存、SQLインジェクション対策としてPreparedStatementの徹底、入出金処理の原子性を担保するためのトランザクション管理(commit/rollback)、同時更新に対する適切なロック戦略や残高チェックの二重化。さらに、DB接続情報をハードコードしない(設定ファイルや環境変数の利用)こと、適切なログ出力と例外ハンドリングを追加することが望まれます。

開発環境はJDK(バージョン明記なし)、MySQL、そしてjcalendar.jarの配置が前提です。ビルドはIDE(IntelliJ等)やjavac/jarで可能ですが、現状ではGradle/Maven等のビルド管理は含まれていないため、依存ライブラリの手動設定が必要です。GUIの拡張、モジュール分割、ユニットテスト導入(DB操作はモック化)などを行えば、学習から実務レベルへ移行しやすくなります。

プロジェクトの構成

主要なファイルとディレクトリ:

  • Bank.iml: file(IDE設定ファイル。IntelliJ向けのモジュール情報)
  • README.md: file(プロジェクトの説明・セットアップ・使い方の抜粋)
  • out: dir(コンパイル済みの出力が格納されている可能性あり)
  • src: dir(ソースコード本体。Swingの画面クラスやJDBC接続処理が含まれる)

※ 実行のためにはMySQLに適切なテーブルを作成し、jcalendar.jarをクラスパスに追加する必要があります。READMEには接続方法や依存ライブラリに関するヒントが記載されています。

まとめ

学習用・プロトタイプとして分かりやすく、実運用にはセキュリティとトランザクション強化が必要。

リポジトリ情報:

READMEの抜粋:

🏦 BANK MANAGEMENT SYSTEM - JAVA SWING + JDBC + MYSQL

📋 DESCRIPTION

This is a Java-based Bank Management System built using Swing for the GUI and JDBC for database operations. The system allows users to register, select account types, perform deposits, withdrawals, and change their PIN.

It connects to a MySQL database and uses the JCalendar library (jcalendar.jar) for date selection.

🛠 TECHNOLOGIES USED