Library Management System Using Java: ASHUTOSH PATRA (2001229024) LALAJI PRASAD PANDA (2001229088) BINAYAK BAL (2001229025)
Library Management System Using Java: ASHUTOSH PATRA (2001229024) LALAJI PRASAD PANDA (2001229088) BINAYAK BAL (2001229025)
Submitted by
ASHUTOSH PATRA(2001229024)
LALAJI PRASAD PANDA(2001229088)
BINAYAK BAL(2001229025)
ARABINDA RATH
Asst. Professor, Dept. of CSE
Certificate
This is to certify that this is a bonafide Project report, titled “LIBRARY MANAGEMENT
SYSTEM USING JAVA”, done satisfactory by Ashutosh Patra (2001229024),LALAJI
PRASAD PANDA(2001229088),BINAYAK BAL(2001229025in
partial fulfillment of requirements for the degree of B.Tech. in Computer Science &
Engineering under Biju Patnaik University of Technology (BPUT).
This Project report on the above mentioned topic has not been submitted for any other
examination earlier before in this institution and does not form part of any other course
undergone by the candidate.
I am grateful to all the teachers of Computer Science & Engineering department, DRIEMS,
for their encouragement, advice and help.
At the outset, I would like to express my sincere gratitude to Surajit Mohanty, H.O.D of
Computer Science & Engineering department for his moral support extended towards me
throughout the duration of this Project.
I am also thankful to my friends who have helped me directly or indirectly for the success
of this Project.
ASHUTOSH PATRA(2001229024)
LALAJI PRASAD PANDA(2001229088)
BINAYAK BAL(2001229025)
Department of Computer Science & Engineering
DRIEMS Autonomous Engineering College
ABSTRACT
CHAPTER 2
FEATURES 4
ADVANCED FEATURES 5
STEPS ON HOW TO CREATE A LIBRARY
MANAGEMENT SYSTEM PROJECT 6
PROJECT OUTPUT 8
CHAPTER 3
SOURCE CODE 11
CONCLUSION 21
FUTURE SCOPE 22
REFERENCES 23
CHAPTER 1
INTRODUCTION
This project boasts a wide array of features, making it an indispensable tool for
both library administrators and patrons. Users can securely log in, view their
borrowed books, and access information on the library's collection. Meanwhile,
administrators wield full control over the system, with the ability to add, edit, or
delete books and users, generate reports, and manage database integrity. The
system also incorporates real-time error messaging, ensuring swift issue
resolution.
Notably, the user interface has been designed with a user-friendly approach,
making it accessible to individuals with varying levels of technical proficiency.
Additionally, stringent validation processes are in place to prevent erroneous
data entry, enhancing data accuracy.
[1]
harnessing technology to enhance the accessibility and efficiency of library
services.
PROBLEM DEFINATION
The motivation behind this work is driven by the urgent need to address the
pressing challenges posed by urban traffic congestion. As our cities continue to
expand, the detrimental effects of congestion on productivity, environmental
sustainability, and quality of life have become increasingly evident. The adverse
impact on daily commuters, the economy, and the environment cannot be
[2]
overstated. This work seeks to motivate change and innovation by offering a
comprehensive analysis of the problem, exploring potential solutions, and
contributing to the development of sustainable urban transportation strategies.
By mitigating traffic congestion, we aim to enhance the well-being of urban
residents, reduce environmental harm, and create more efficient, livable cities
for future generations.
[3]
CHAPTER 2
FEATURES
• User login – The name tells you exactly what this function does. It lets
the user and the admin login. The first login is always the administrator
login, and the password is always admin.
• User menu – The user menu shows all of the books that the user has
checked out or borrowed.
Admin menu – The Administrator has access to everything in the system and
can do things like add books and users, delete and edit books, return books, get
information about users and books, and create and reset the database.
• Output menu – The answers to all your queries will be shown on the
output menu. When you first log in, your ID and password would be for
admin, and your username and password would also be admin.
• View books – By choosing this option, you’ll see information about the
books in the table, such as the title, genre, price, subject, author,
copyright, publisher, edition pages, ISBN, and other information that may
be in the database.
• View Members, Students, and Users – The system displays the users
along with their information, including who would receive the books and
their current status (issued, returned, and pending).
• Add user – To add a new user system, click “Add User” and choose
whether the new user will be an administrator or a regular user. Under
“view users,” you can see information about all of the users.
• Issue a book – To issue a student, member, or user a book, you must click
the “issue book” button and enter the book’s details, such as the book’s
[4]
id, the user’s id, the number of days the book can be used, the date it must
be returned, etc. After putting in the necessary information, you click
“submit,” which finishes the process.
• View issued books – After you issue the book using the steps in the
previous paragraph, you can use this feature to see all the books that have
been issued along with their details.
• Return books – After you choose the option to return books, you will
need to enter the book’s ID and choose a date from the calendar.
This can be said in two different ways: If the book is returned on time, the
message “book returned” will be shown. If the book isn’t returned by the date
given, the system will show a message about the fine and the amount that needs
to be paid.
• Add books – All the information about the book, like its name, price, and
genre, can be added to the system here. After that, you can see it in the
“view books” section.
ADVANCED FEATURES
• The right reports can be made with all the information needed to see
updates and progress in real time with a single click.
• Real-time error messages: There is a good way to show error messages so
that the problem can be found and fixed quickly.
• A friendly user interface that lets people check out, return, and see the
status of books should be easy to use so the person in charge can get the
job done quickly. It’s set up so that even people who have never used
software before can use it well without knowing how it works.
• Authorized entries are not allowed. Each form has its own validation,
which makes it less likely that wrong information will be entered.
[5]
STEPS ON HOW TO CREATE A LIBRARY MANAGEMENT
SYSTEM PROJECT
[6]
• Step 3: Create JFrame.
[7]
• Step 5: Project Design.
Fifth, The actual design of the project.
PROJECT OUTPUT
[8]
[9]
[10]
CHAPTER 3
SOURCE CODE
Home.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Library_Management;
import java.awt.Dimension;
import java.awt.Toolkit;
/**
* Creates new form Home
*/
public Home() {
initComponents();
Toolkit toolkit = getToolkit();
Dimension size = toolkit.getScreenSize();
setLocation(size.width/2 - getWidth()/2, size.height/2 - getHeight()/2);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Main Menu");
setBackground(new java.awt.Color(0, 204, 204));
jLabel2.setText("Welcome");
jLabel3.setText("to");
jLabel4.setText(" Library");
[11]
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.creat
eLineBorder(new java.awt.Color(102, 255, 204)), "Action",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 24), new
java.awt.Color(255, 102, 102))); // NOI18N
btnrbook.setText("Return Book");
btnrbook.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnrbookActionPerformed(evt);
}
});
btnibook.setText("Issue Book");
btnibook.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnibookActionPerformed(evt);
}
});
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.creat
eLineBorder(new java.awt.Color(102, 255, 102)), "Operation",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 24), new
java.awt.Color(0, 102, 204))); // NOI18N
btnstatistics.setText("Statistics");
btnstatistics.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnstatisticsActionPerformed(evt);
}
});
btnnewstudent.setText("New Student");
btnnewstudent.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnnewstudentActionPerformed(evt);
}
});
btnnewbook.setText("New Book");
btnnewbook.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnnewbookActionPerformed(evt);
}
});
[12]
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(btnnewbook, javax.swing.GroupLayout.PREFERRED_SIZE, 175,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btnstatistics, javax.swing.GroupLayout.PREFERRED_SIZE, 175,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(btnnewstudent, javax.swing.GroupLayout.PREFERRED_SIZE, 175,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(62, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE
)
.addComponent(btnnewbook, javax.swing.GroupLayout.PREFERRED_SIZE, 65,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnstatistics, javax.swing.GroupLayout.PREFERRED_SIZE, 65,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnnewstudent, javax.swing.GroupLayout.PREFERRED_SIZE, 62,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(29, Short.MAX_VALUE))
);
jMenu1.setText("File");
miexit.setText("Exit");
miexit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
miexitActionPerformed(evt);
}
});
jMenu1.add(miexit);
milogout.setText("Logout");
milogout.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
milogoutActionPerformed(evt);
}
});
[13]
jMenu1.add(milogout);
jMenuBar1.add(jMenu1);
jMenu2.setText("Edit");
miabout.setText("About");
jMenu2.add(miabout);
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
[14]
private void btnstatisticsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-
FIRST:event_btnstatisticsActionPerformed
Statistics ob = new Statistics();
ob.setVisible(true);
this.dispose();
}//GEN-LAST:event_btnstatisticsActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Home.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Home.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Home.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Home.class.getName()).log(java.util.logging.Level.SEVER
E, null, ex);
}
//</editor-fold>
[15]
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel4;
private javax.swing.JMenuItem miabout;
private javax.swing.JMenuItem miexit;
private javax.swing.JMenuItem milogout;
// End of variables declaration//GEN-END:variables
}
Student.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Library_Management;
import DAO.DatabaseHelper;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Random;
import javax.swing.JOptionPane;
/**
*
* @author ZI Zohir
*/
public class Student extends javax.swing.JFrame {
[16]
jPanel1 = new javax.swing.JPanel();
jLabel7 = new javax.swing.JLabel(); cmbcourse
= new javax.swing.JComboBox<>();
cmbsemister = new javax.swing.JComboBox<>();
txtsid = new javax.swing.JTextField(); cmbyear
= new javax.swing.JComboBox<>(); jLabel1 =
new javax.swing.JLabel();
txtname = new javax.swing.JTextField();
btnregister = new javax.swing.JButton();
btnback = new javax.swing.JButton();
jLabel6 = new javax.swing.JLabel();
txtbranch = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
txtfname = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("New Student");
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.creat
eLineBorder(new java.awt.Color(102, 255, 51)), "New Student",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 24), new
java.awt.Color(204, 51, 0))); // NOI18N
jLabel7.setText("Semister");
txtsid.setEditable(false);
jLabel1.setText("Student ID");
btnregister.setText("Register");
btnregister.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnregisterActionPerformed(evt);
}
});
btnback.setText("Back");
btnback.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnbackActionPerformed(evt);
}
});
jLabel6.setText("Year");
jLabel2.setText("Name");
jLabel3.setText("Father's Name");
jLabel4.setText("Course");
jLabel5.setText("Branch");
[17]
.addComponent(jLabel1)
.addComponent(jLabel2)
.addComponent(jLabel3)
.addComponent(jLabel4)
.addComponent(jLabel5)
.addComponent(jLabel6)
.addComponent(jLabel7))
.addGap(31, 31, 31)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING, false)
.addComponent(txtsid)
.addComponent(txtname)
.addComponent(txtfname)
.addComponent(cmbcourse, 0, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(txtbranch)
.addComponent(cmbyear, 0, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(cmbsemister, javax.swing.GroupLayout.PREFERRED_SIZE, 180,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(10, 10, 10)
.addComponent(btnregister)
.addGap(18, 18, 18)
.addComponent(btnback, javax.swing.GroupLayout.PREFERRED_SIZE, 70,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE
)
.addComponent(jLabel1)
.addComponent(txtsid, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE
)
.addComponent(jLabel2)
.addComponent(txtname, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE
)
.addComponent(jLabel3)
.addComponent(txtfname, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE
)
.addComponent(jLabel4)
.addComponent(cmbcourse, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE
)
.addComponent(jLabel5)
.addComponent(txtbranch, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE
)
.addComponent(jLabel6)
.addComponent(cmbyear, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE
)
.addComponent(jLabel7)
.addComponent(cmbsemister, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
[18]
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE
)
.addComponent(btnregister, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnback, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
[19]
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Student.class.getName()).log(java.util.logging.Level.SE
VERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Student.class.getName()).log(java.util.logging.Level.SE
VERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Student.class.getName()).log(java.util.logging.Level.SE
VERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex ) {
java.util.logging.Logger.getLogger(Student.class.getName()).log(java.util.logging.Level.SE
VERE, null, ex);
}
//</editor-fold>
[20]
CONCLUSION
In conclusion, this research project has shed light on the intricate problem of
urban traffic congestion and its far-reaching implications. Through a
comprehensive examination of its root causes, we have unveiled the multifaceted
nature of this issue, encompassing factors such as population growth,
urbanization, and transportation infrastructure inadequacies. The adverse effects
of traffic congestion on productivity, the environment, and the overall well-being
of urban dwellers are evident.
Furthermore, this study has taken a crucial step toward addressing these
challenges by proposing a range of sustainable solutions. These solutions
encompass innovative transportation strategies, infrastructure enhancements, and
policy recommendations designed to alleviate congestion, reduce travel times,
and curb emissions, ultimately creating more livable and environmentally
sustainable urban spaces.
By pursuing these objectives, this work seeks to motivate change and innovation
in urban planning and transportation. It is our hope that the findings and
recommendations presented here will serve as a valuable resource for
policymakers, urban planners, and researchers dedicated to the goal of alleviating
urban traffic congestion and improving the quality of life for residents in growing
cities.
[21]
FUTURE SCOPE
The future scope for addressing urban traffic congestion is promising. Continued
advancements in technology, such as the development of autonomous vehicles
and smart traffic management systems, offer potential solutions to ease
congestion. Additionally, the expansion of public transportation networks and the
promotion of sustainable urban planning practices are on the horizon. Further
research and innovation in clean energy transportation, like electric and
hydrogen-powered vehicles, hold promise for reducing the environmental impact
of congestion. Collaboration between public and private sectors will be key to
implementing comprehensive, efficient, and eco-friendly urban transportation
solutions. As cities evolve and grow, the ongoing quest to alleviate traffic
congestion and enhance the quality of life for urban residents remains a critical
and evolving area of focus.
[22]
REFERENCES
• https://nevonprojects.com/e-library-project/
• https://github.com/topics/library-management-
system?l=html
• https://www.daitm.org.in/wp-
content/uploads/2019/04/Gr.-06library-project-
report.pdf
• https://www.lovelycoding.org/library-management-
system/
• https://www.edureka.co/blog/library-management-
system-project-in-java
• https://data-flair.training/blogs/library-management-
system-python-project/
• https://www.iitms.co.in/library-management-system/
[23]