Movatterモバイル変換


[0]ホーム

URL:


Open In App

This mini banking application uses JDBC to connect and interact with a database for managing user accounts and transactions. JDBC enables executing SQL operations and handling transactions reliably.

In JDBC, a transaction is treated as a single unit of work. By setting setAutoCommit(false), multiple SQL statements can be grouped and changes are only saved with commit(). If any statement fails, a rollback ensures data consistency.

The application provides a menu-driven console interface allowing users to:

Prerequisite

Step-by-Step Implementation

Step 1: Eclipse Project Setup

1. Create Java Project:

  1. Open Eclipse.
  2. File -> New -> Java Project ->Name it MiniBankingApp.

2. Create Package

  • Right-click src-> New ->Package ->Name it: banking.

3. Create Java Classes

Inside banking package, create:

  • bank.java
  • bankManagement.java
  • connection.java

Project structure:

4. Add MySQL JDBC Connector

  1. Download MySQL JDBC Connector .jar file.
  2. Create a folder lib in your project.
  3. Copy .jar into lib.
  4. Right-click project -> Build Path ->Configure Build Path -> Libraries -> Add External JARs >->select the connector.

Step 2: Database Setup (MySQL)

Create Database name bank

CREATE DATABASE BANK;

Create Table name customer

Java
CREATEDATABASEBANK;USEBANK;CREATETABLEcustomer(ac_noINTNOTNULLAUTO_INCREMENT,cnameVARCHAR(45)UNIQUENOTNULL,balanceINTDEFAULT1000,pass_codeINTNOTNULL,PRIMARYKEY(ac_no));
out
output

Step 3: Create DataBase Connection Class

This class is used to load the JDBC driver and establish DB connection.And It use DriverManager.getConnection() with MySQL credentials.

connection.java

Java
packagebanking;importjava.sql.Connection;importjava.sql.DriverManager;publicclassConnection{staticConnectioncon;publicstaticConnectiongetConnection(){try{StringmysqlJDBCDriver="com.mysql.cj.jdbc.Driver";Stringurl="jdbc:mysql://localhost:3306/BANK";Stringuser="root";Stringpass="your_mysql_password";Class.forName(mysqlJDBCDriver);con=DriverManager.getConnection(url,user,pass);}catch(Exceptione){System.out.println("Connection Failed! "+e.getMessage());}returncon;}}

Step 4: Business Logic Class

This class handles core operations like account creation and fund transfer. Use PreparedStatement for secure, parameterized queries.

bankmanagment.java

Java
packagebanking;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.sql.*;publicclassBankManagement{privatestaticfinalintNULL=0;staticConnectioncon=Connection.getConnection();// Create AccountpublicstaticbooleancreateAccount(Stringname,intpassCode){if(name.isEmpty()||passCode==NULL){System.out.println("All fields are required!");returnfalse;}try{Stringsql="INSERT INTO customer(cname, balance, pass_code) VALUES (?, 1000, ?)";PreparedStatementps=con.prepareStatement(sql);ps.setString(1,name);ps.setInt(2,passCode);introws=ps.executeUpdate();if(rows==1){System.out.println("Account created successfully! You can now login.");returntrue;}}catch(SQLIntegrityConstraintViolationExceptione){System.out.println("Username already exists! Try another one.");}catch(Exceptione){e.printStackTrace();}returnfalse;}// Login AccountpublicstaticbooleanloginAccount(Stringname,intpassCode){if(name.isEmpty()||passCode==NULL){System.out.println("All fields are required!");returnfalse;}try{Stringsql="SELECT * FROM customer WHERE cname = ? AND pass_code = ?";PreparedStatementps=con.prepareStatement(sql);ps.setString(1,name);ps.setInt(2,passCode);ResultSetrs=ps.executeQuery();BufferedReadersc=newBufferedReader(newInputStreamReader(System.in));if(rs.next()){intsenderAc=rs.getInt("ac_no");intch;while(true){System.out.println("\n Hello, "+rs.getString("cname")+"! What would you like to do?");System.out.println("1) Transfer Money");System.out.println("2) View Balance");System.out.println("3) Logout");System.out.print("Enter Choice: ");ch=Integer.parseInt(sc.readLine());if(ch==1){System.out.print("Enter Receiver A/c No: ");intreceiverAc=Integer.parseInt(sc.readLine());System.out.print("Enter Amount: ");intamt=Integer.parseInt(sc.readLine());if(transferMoney(senderAc,receiverAc,amt)){System.out.println("Transaction successful!");}else{System.out.println("Transaction failed! Please try again.");}}elseif(ch==2){getBalance(senderAc);}elseif(ch==3){System.out.println("Logged out successfully. Returning to main menu.");break;}else{System.out.println("Invalid choice! Try again.");}}returntrue;}else{System.out.println("Invalid username or password!");returnfalse;}}catch(Exceptione){e.printStackTrace();}returnfalse;}// Get BalancepublicstaticvoidgetBalance(intacNo){try{Stringsql="SELECT * FROM customer WHERE ac_no = ?";PreparedStatementps=con.prepareStatement(sql);ps.setInt(1,acNo);ResultSetrs=ps.executeQuery();System.out.println("\n-------------------------------------------------");System.out.printf("%12s %15s %10s\n","Account No","Customer Name","Balance");while(rs.next()){System.out.printf("%12d %15s %10d.00\n",rs.getInt("ac_no"),rs.getString("cname"),rs.getInt("balance"));}System.out.println("-------------------------------------------------");}catch(Exceptione){e.printStackTrace();}}// Transfer MoneypublicstaticbooleantransferMoney(intsender_ac,intreceiver_ac,intamount){if(receiver_ac==NULL||amount==NULL){System.out.println("All fields are required!");returnfalse;}try{con.setAutoCommit(false);StringcheckBalance="SELECT balance FROM customer WHERE ac_no = ?";PreparedStatementps=con.prepareStatement(checkBalance);ps.setInt(1,sender_ac);ResultSetrs=ps.executeQuery();if(rs.next()&&rs.getInt("balance")<amount){System.out.println("Insufficient Balance!");returnfalse;}Stringdebit="UPDATE customer SET balance = balance - ? WHERE ac_no = ?";PreparedStatementpsDebit=con.prepareStatement(debit);psDebit.setInt(1,amount);psDebit.setInt(2,sender_ac);psDebit.executeUpdate();Stringcredit="UPDATE customer SET balance = balance + ? WHERE ac_no = ?";PreparedStatementpsCredit=con.prepareStatement(credit);psCredit.setInt(1,amount);psCredit.setInt(2,receiver_ac);psCredit.executeUpdate();con.commit();returntrue;}catch(Exceptione){try{con.rollback();}catch(SQLExceptionex){ex.printStackTrace();}e.printStackTrace();}returnfalse;}}

Step 5: User Interface Class

This class provide a user-friendly, text-based menu to perform banking operations.

Options include.

  • create account.
  • login.
  • view balance.
  • transfer money.

bank.java

Java
packagebanking;importjava.io.BufferedReader;importjava.io.InputStreamReader;publicclassBank{publicstaticvoidmain(String[]args){BufferedReadersc=newBufferedReader(newInputStreamReader(System.in));Stringname;intpass_code;intch;while(true){System.out.println("\n===============================");System.out.println(" Welcome to InBank ");System.out.println("===============================");System.out.println("1) Create Account");System.out.println("2) Login Account");System.out.println("3) Exit");try{System.out.print("\nEnter Choice: ");ch=Integer.parseInt(sc.readLine());switch(ch){case1->{System.out.print("Enter Unique Username: ");name=sc.readLine();System.out.print("Enter Password: ");pass_code=Integer.parseInt(sc.readLine());if(BankManagement.createAccount(name,pass_code)){System.out.println("You can now login from the main menu.");}}case2->{System.out.print("Enter Username: ");name=sc.readLine();System.out.print("Enter Password: ");pass_code=Integer.parseInt(sc.readLine());if(!BankManagement.loginAccount(name,pass_code)){System.out.println("Login failed. Try again.");}}case3->{System.out.println("Thank you for using InBank! Goodbye.");System.exit(0);}default->System.out.println("Invalid input! Please try again.");}}catch(Exceptione){System.out.println("Please enter a valid input!");}}}}

Step 6: Run the Application

Run bank.java from Eclipse to launch the menu-driven interface. Test various features like account creation and money transfer.

===============================

Welcome to InBank

===============================

1) Create Account

2) Login Account

3) Exit

Enter Choice: 2

Enter Username: pritesh

Enter Password: 123

Hello, pritesh! What would you like to do?

1) Transfer Money

2) View Balance

3) Logout

Enter Choice: 2

-------------------------------------------------

Account No Customer Name Balance

112 pritesh 1000.00

-------------------------------------------------

Enter Choice: 1

Enter Receiver A/c No: 110

Enter Amount: 5000

Insufficient Balance!

Transaction failed! Please try again.

Enter Choice: 3

Logged out successfully.

Returning to main menu.

out1
out2




Improve
Improve
Article Tags :

Explore

Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences

[8]ページ先頭

©2009-2025 Movatter.jp