Engineering Students' Banking Project
Engineering Students' Banking Project
Submitted by
AKASH.R (20P301)
HARISH.S (20P316)
SHINAS.H (20P345)
SAKTHIVEL.S (21P705)
BACHELOR OF ENGINEERING
in
COMPUTER SCIENCE AND ENGINEERING
APRIL 2023
KARPAGAM COLLEGE OF ENGINERING
(Autonomous)
COIMBATORE – 641 032
BACHELOR OF ENGINEERING
APRIL 2023
Certified that the candidate was examined in the viva-voce examination held
on ………………….
……………………..
(Internal Examiner)
ACKNOWLEDGEMENT
We express our sincere thanks to Karpagam educational and charitable trust for
providing necessary facilities to bring out the project successfully. We felt greatness
to record our thanks to the chairman Dr. R.VASANTHAKUMAR, B.E.,(Hons),
D.Sc. for all his support and ray of strengthening hope extended.
It is the moment of immense pride for us to reveal our profound thanks to our
respected Principal, Dr. P. KARTHIGAIKUMAR, M.E., Ph.D. who happens to be
striving force in all our endeavors.
We express our sincere thanks to our Dr. T. RAVICHANDRAN, M.E., PhD. Head
of the Department of Computer Science and Engineering for providing an
opportunity to work on this project. His valuable suggestions helped us a lot to do
this project.
A word of thanks would not be sufficient for the work of our project guide
Dr. N. RATHINA KUMAR, ASP/CSE, Department of Computer Science and
Engineering whose efforts and inspiration lead us through every trying circumstance.
We would also like to recollect the courage and enthusiasm that was inculcated in us
by our mini project coordinator, Ms. SUBHASHREE K, M.E. Department of
Computer Science and Engineering for valuable guidance and support through the
tenure of our project.
We deeply express our gratitude to all the members of the faculty of the Department
of Computer Science and Engineering for the encouragement, which we received
throughout the semester.
TABLE OF CONTENTS
CHAPTER
TITLE PAGE NO.
NO.
ABSTRACT 1
LIST OF FIGURES 2
LIST OF ABBREVIATIONS 3
1. INTRODUCTION 4
1.1 DEFINITION 4
1.2 OBJECTIVE 4
2. SYSTEM OVERVIEW 5
2.1 EXISTING SYSTEM 5
2.2 PROPOSED SYSTEM 5
3. REQUIREMENTS 6
3.1 DEVELOPER REQUIREMENTS 6
3.2 USER REQUIREMENTS 6
4. SYSTEM DESIGN 7
4.1 SYSTEM ARCHITECTURE DESIGN 7
4.2 SCHEMA DIAGRAM 8
4.3 ER DIAGRAM 9
5. SYSTEM ANALYSIS 10
5.1 MODULES 10
5.1.1 CUSTOMER 10
5.1.2 ACCOUNT 11
5.1.3 TRANSACTION 11
6. IMPLEMENTATION 12
7. SCREENSHOTS 37
8. CONCLUSION 41
9. REFERENCES 32
ABSTRACT
1
LIST OF FIGURES
2
LIST OF ABBREVIATIONS
3
CHAPTER 1
INTRODUCTION
1.1 DEFINITION
Bank’s main purpose behind the online banking system is to secure the
customers money and to gain their trust. While keeping customer money safe
they also charge some amount of rate of interest on the deposited money. We
have implemented most of the feature of online banking in it. User can create
an account, do withdrawal, request a Deposit amount, check his/her current
balance, and view reports of all the transaction.
1.2 OBJECTIVE
4
CHAPTER 2
SYSTEM OVERVIEW
The branch availability is poor in Rural areas. They don’t cater to small
clients and there is a correct feeling that these Private commercial Banks are
only for the Rich & elite. The cost of servicing a customer in a private bank is
quite high. They even charge the SMS on a monthly basis from every customer.
These banks do not bother to follow any Government Schemes.
The ability to bank wherever and however you want is one of the main
benefits of mobile and online banking solutions. Our smartphones and
computers are typically readily available, allowing 24/7 account access to take
care of any number of banking tasks quickly. Digital banking also offers
longer-tail conveniences, such as the ability to go cashless. Digital banking
offers a host of important benefits for consumers that can make their lives
easier and make them better stewards of their money.
5
CHAPTER 3
REQUIREMENTS
6
CHAPTER 4
SYSTEM DESIGN
7
4.2 SCHEMA DIAGRAM
8
4.3 ER DIAGRAM
9
CHAPTER 5
SYSTEM ANALYSIS
5.1 MODULE
The system after careful analysis has been identified to be presented with
the following modules and roles. The modules involved are:
Customer
Account
Transaction
5.1.1 CUSTOMER
The main aim for developing this module is provide all the functionality
related to customer. It tracks all the information and details of the customer.
We have developed all type of CRUD (Create, Read, Update and Delete)
operations of the customer.
10
5.1.2 ACCOUNT
The main objective for developing this module is to manage the account
type. So all account company will be managed by admin and customer will be
able to see the account type.
5.1.3 TRANSACTION
The main aim for developing this module is to manage the transaction
data wise. All transactions will be managed by admin and vendor will be able
to see transaction. Admin can see the list of all the transaction and filter it
according to the vendors.
11
CHAPTER 6
IMPLEMENTATION
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import java.text.*;
import java.io.*;
import java.awt.PrintJob.*;
import javax.swing.plaf.metal.*;
12
private JMenuItem oneByOne, allCustomer; //View Menu
Options.
private JMenuItem change, style, theme; //Option
Menu Options.
private JMenuItem close, closeAll; //Window
Menu Options.
private JMenuItem content, keyHelp, about; //Help Menu
Options.
//PopupMenu of Program.
private JPopupMenu popMenu = new JPopupMenu ();
//Main Form StatusBar where Program's Name & Welcome Message Display.
private JPanel statusBar = new JPanel ();
//Labels for Displaying Program's Name & saying Welcome to Current User on
StatusBar.
private JLabel welcome;
private JLabel author;
13
private ButtonGroup group = new ButtonGroup ();
private JRadioButtonMenuItem radio[] = new
JRadioButtonMenuItem[strings.length];
//Variable use in Reading the BankSystem Records File & Store it in an Array.
private int count = 0;
private int rows = 0;
private int total = 0;
public BankSystem () {
14
//Creating the MenuBar.
bar = new JMenuBar ();
15
mnuHelp.setMnemonic ((int)'H');
16
delRec = new JMenuItem ("Delete Customer", new ImageIcon
("Images/Delete.gif"));
delRec.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_D,
Event.CTRL_MASK));
delRec.setMnemonic ((int)'D');
delRec.addActionListener (this);
search = new JMenuItem ("Search By No.", new ImageIcon
("Images/find.gif"));
search.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_S,
Event.CTRL_MASK));
search.setMnemonic ((int)'S');
search.addActionListener (this);
searchName = new JMenuItem ("Search By Name");
searchName.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_M,
Event.CTRL_MASK));
searchName.setMnemonic ((int)'M');
searchName.addActionListener (this);
17
change.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_B,
Event.CTRL_MASK));
change.setMnemonic ((int)'B');
change.addActionListener (this);
//Menu For Changing the Program's Layout.
style = new JMenu ("Change Layout Style");
style.setMnemonic ((int)'L');
for( int i = 0; i < radio.length ; i++ ) { //Creating the
subMenus of Style Menu.
radio[i] = new JRadioButtonMenuItem (strings[i]); //Build an
Array of Layouts to Apply.
radio[i].addItemListener (this); //Setting their
Actions.
group.add (radio[i]); //Making them
Grouped.
style.add (radio[i]); //Adding to
Style MenuOption.
}
//SubMenu of Theme For Applying different Themes to Program By
Building an Array of Themes to Apply.
MetalTheme[] themes = { new DefaultMetalTheme(), new GreenTheme(),
new AquaTheme(),
new SandTheme(), new SolidTheme(), new
MilkyTheme(), new GrayTheme() };
theme = new MetalThemeMenu ("Apply Theme", themes); //Putting
the Themes in ThemeMenu.
theme.setMnemonic ((int)'M');
18
closeAll.addActionListener (this);
19
mnuEdit.add (delRec);
mnuEdit.addSeparator ();
mnuEdit.add (search);
mnuEdit.add (searchName);
20
bar.add (mnuHelp);
21
public void mousePressed (MouseEvent me) { checkMouseTrigger
(me); }
public void mouseReleased (MouseEvent me) { checkMouseTrigger
(me); }
private void checkMouseTrigger (MouseEvent me) {
if (me.isPopupTrigger ())
popMenu.show (me.getComponent (), me.getX (),
me.getY ());
}
}
);
22
btnKey = new JButton (new ImageIcon ("Images/Keys.gif"));
btnKey.setToolTipText ("Shortcut Keys of BankSystem");
btnKey.addActionListener (this);
23
//Setting the Contents of Programs.
getContentPane().add (toolBar, BorderLayout.NORTH);
getContentPane().add (desktop, BorderLayout.CENTER);
getContentPane().add (statusBar, BorderLayout.SOUTH);
}
else if (obj == printRec || obj == btnRec || obj == report) {
getAccountNo ();
}
else if (obj == end) {
quitApp ();
24
}
else if (obj == deposit || obj == dep || obj == btnDep) {
}
else if (obj == withdraw || obj == with || obj == btnWith) {
}
else if (obj == delRec || obj == del || obj == btnDel) {
}
else if (obj == search || obj == find || obj == btnSrch) {
25
boolean b = openChildWindow ("Search Customer [By No.]");
if (b == false) {
FindAccount fndAcc = new FindAccount ();
desktop.add (fndAcc);
fndAcc.show ();
}
}
else if (obj == searchName) {
}
else if (obj == oneByOne) {
}
else if (obj == allCustomer || obj == all) {
26
viewCus.show ();
}
}
else if (obj == change) {
}
else if (obj == close) {
try {
desktop.getSelectedFrame().setClosed(true);
}
catch (Exception CloseExc) { }
}
else if (obj == closeAll) {
27
catch (Exception CloseExc) { } //if we can't close it
then we have a problem.
}
}
else if (obj == content || obj == btnHelp) {
}
else if (obj == keyHelp || obj == btnKey) {
}
else if (obj == about) {
28
}
try {
//Show a Confirmation Dialog.
int reply = JOptionPane.showConfirmDialog (this,
"Are you really want to exit\nFrom BankSystem?",
"BankSystem - Exit",
JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE);
//Check the User Selection.
if (reply == JOptionPane.YES_OPTION) {
setVisible (false); //Hide the Frame.
dispose(); //Free the System Resources.
System.out.println ("Thanks for Using BankSystem\n");
System.exit (0); //Close the Application.
}
else if (reply == JOptionPane.NO_OPTION) {
29
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
}
}
catch (Exception e) {}
try {
UIManager.setLookAndFeel (looks[val].getClassName());
SwingUtilities.updateComponentTreeUI (this);
}
catch (Exception e) { }
30
//Following Functions use for Printing Records & Report of BankSystem.
void getAccountNo () {
String printing;
rows = 0;
boolean b = populateArray ();
if (b == false) { }
else {
try {
printing = JOptionPane.showInputDialog (this, "Enter
Account No. to Print Customer Balance.\n" +
"(Tip: Account No. Contains only Digits)", "BankSystem -
PrintRecord", JOptionPane.PLAIN_MESSAGE);
if (printing == null) { }
if (printing.equals ("")) {
JOptionPane.showMessageDialog (this, "Provide
Account No. to Print.",
"BankSystem - EmptyField",
JOptionPane.PLAIN_MESSAGE);
getAccountNo ();
}
else {
findRec (printing);
}
}
catch (Exception e) { }
}
//Function use to load all Records from File when Application Execute.
boolean populateArray () {
31
boolean b = false;
try {
fis = new FileInputStream ("Bank.dat");
dis = new DataInputStream (fis);
//Loop to Populate the Array.
while (true) {
for (int i = 0; i < 6; i++) {
records[rows][i] = dis.readUTF ();
}
rows++;
}
}
catch (Exception ex) {
total = rows;
if (total == 0) {
JOptionPane.showMessageDialog (null, "Records File is
Empty.\nEnter Records First to Display.",
"BankSystem - EmptyFile",
JOptionPane.PLAIN_MESSAGE);
b = false;
}
else {
b = true;
try {
dis.close();
fis.close();
}
catch (Exception exp) { }
}
}
return b;
32
//Function use to Find Record by Matching the Contents of Records Array with
InputBox.
String data;
String data0 = " Blasters Bank [Pvt] Limited. \n"; //Page
Title.
String data1 = " Customer Balance Report. \n\n"; //Page
Header.
String data2 = " Account No.: " + records[rec][0] + "\n";
String data3 = " Customer Name: " + records[rec][1] + "\n";
33
String data4 = " Last Transaction: " + records[rec][2] + ", " +
records[rec][3] + ", " + records[rec][4] + "\n";
String data5 = " Current Balance: " + records[rec][5] + "\n\n";
String sep0 = " -----------------------------------------------------------\n";
String sep1 = " -----------------------------------------------------------\n";
String sep2 = " -----------------------------------------------------------\n";
String sep3 = " -----------------------------------------------------------\n";
String sep4 = " -----------------------------------------------------------\n\n";
data = data0 + sep0 + data1 + data2 + sep1 + data3 + sep2 + data4 + sep3 +
data5 + sep4;
return data;
if (pJob != null) {
Graphics gr = pJob.getGraphics ();
if (gr != null) {
FontMetrics fm = gr.getFontMetrics (typeface);
int margin = 20;
int pageHeight = pJob.getPageDimension().height - margin;
int fontHeight = fm.getHeight();
int fontDescent = fm.getDescent();
34
int curHeight = margin;
String nextLine;
gr.setFont (typeface);
try {
do {
nextLine = lnr.readLine ();
if (nextLine != null) {
if ((curHeight + fontHeight) >
pageHeight) { //New Page.
gr.dispose();
gr = pJob.getGraphics ();
curHeight = margin;
}
curHeight += fontHeight;
if (gr != null) {
gr.setFont (typeface);
gr.drawString (nextLine,
margin, curHeight - fontDescent);
}
}
}
while (nextLine != null);
}
catch (EOFException eof) { }
catch (Throwable t) { }
}
gr.dispose();
}
if (pJob != null)
pJob.end ();
}
}
35
CHAPTER 7
SCREENSHOTS
36
Fig. 7.3. View All Account Holders
37
Fig.7.5. Background color
Fig.7.6. Print
38
Fig. 7.7. Print Details
39
CHAPTER 8
CONCLUSION
Awareness of the risks and problems enables him to take precautions for
a more secure online banking experience. The e-Banking system is not only
popular nationally, but also internationally, where a person can transfer money
through any part of the world. The e-banking system is useful for bankers as
well as customers of banks.
40
CHAPTER 9
REFERENCES
[2] Java: A Beginner’s Guide. Author: Herbert Schildt: It covers all the
fundamentals of Java, followed by tests and puzzles to test your knowledge.
[3] Spring in Action. Author: Craig Walls and Ryan Breidenbach: Spring in Action
is by far the most wide-spread and widely utilized book on the Java framework in
today’s programming landscape
[4] Thinking in Java. Author: Bruce Eckel: Thinking in Java is no beginner’s book,
but it’s a fantastic resource for intermediate to advance developers with a desire to
learn.
41