Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Objective: Create a graphical database for a library IN JAVA. It should display

ID: 3780087 • Letter: O

Question

Objective:

Create a graphical database for a library IN JAVA. It should display the information of every book in the library system. Each book should have the following information:

Name

Author(s)

Year published

Publisher

ISBN

Page Count

The system should be able to perform the following operations:

Display books in alphabetical order

Either all books or the books that met a search criteria noted below

Add a book

Remove a book

Search books based on

Name

Author

Year

Publisher

ISBN

Load a library database file

Save a library database file

Explanation / Answer

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.swing.JFileChooser;
import javax.swing.table.DefaultTableModel;

public class Library extends javax.swing.JFrame {

public Library() {
initComponents();
}


@SuppressWarnings("unchecked")
private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane();
table = new javax.swing.JTable();
name = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
author = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
year = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
publisher = new javax.swing.JTextField();
add = new javax.swing.JButton();
Delete = new javax.swing.JButton();
Edit = new javax.swing.JButton();
jLabel5 = new javax.swing.JLabel();
isbn = new javax.swing.JTextField();
Search = new javax.swing.JButton();
jLabel6 = new javax.swing.JLabel();
pageCount = new javax.swing.JTextField();
select = new javax.swing.JComboBox();
searchMessage = new javax.swing.JLabel();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
load = new javax.swing.JMenuItem();
save = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

table.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null, null},
{null, null, null, null, null, null},
{null, null, null, null, null, null},
{null, null, null, null, null, null}
},
new String [] {
"Name", "Author", "Year Published", "Publisher", "ISBN", "Page Count"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Object.class
};
boolean[] canEdit = new boolean [] {
false, false, false, false, true, false
};

public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}

public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jScrollPane1.setViewportView(table);

jLabel1.setText("Name:");

jLabel2.setText("Author:");

jLabel3.setText("Year:");

jLabel4.setText("Publisher:");

add.setText("Add");
add.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addActionPerformed(evt);
}
});

Delete.setText("Delete");
Delete.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
DeleteActionPerformed(evt);
}
});

Edit.setText("Edit");
Edit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
EditActionPerformed(evt);
}
});

jLabel5.setText("ISBN:");

Search.setText("Search");
Search.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
SearchActionPerformed(evt);
}
});

jLabel6.setText("Page Count:");

select.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Name", "Author", "Year", "Publisher", "ISBN" }));

searchMessage.setText(" ");

jMenu1.setText("File");

load.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
load.setText("Load Database");
load.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
loadActionPerformed(evt);
}
});
jMenu1.add(load);

save.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
save.setText("Save Database");
save.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
saveActionPerformed(evt);
}
});
jMenu1.add(save);

jMenuBar1.add(jMenu1);

jMenu2.setText("Help");
jMenuBar1.add(jMenu2);

setJMenuBar(jMenuBar1);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(28, 28, 28)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addGap(18, 18, 18)
.addComponent(name, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel2)
.addGap(18, 18, 18)
.addComponent(author, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel3)
.addGap(18, 18, 18)
.addComponent(year, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel4)
.addGap(18, 18, 18)
.addComponent(publisher, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel5)
.addGap(18, 18, 18)
.addComponent(isbn, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(212, 212, 212)
.addComponent(add)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(Delete)
.addGap(18, 18, 18)
.addComponent(Edit)
.addGap(18, 18, 18)
.addComponent(select, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(Search)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 30, Short.MAX_VALUE)
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pageCount, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18))
.addGroup(layout.createSequentialGroup()
.addGap(20, 20, 20)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(searchMessage, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 914, Short.MAX_VALUE))
.addContainerGap(32, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(27, 27, 27)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(27, 27, 27)
.addComponent(searchMessage)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1)
.addComponent(author, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2)
.addComponent(year, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3)
.addComponent(publisher, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4)
.addComponent(isbn, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5)
.addComponent(pageCount, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6))
.addGap(35, 35, 35)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Delete)
.addComponent(Edit)
.addComponent(select, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(Search)
.addComponent(add))
.addGap(25, 25, 25))
);

pack();
}

private void addActionPerformed(java.awt.event.ActionEvent evt) {   
if(table.getRowCount() == i)
{
DefaultTableModel dtm = (DefaultTableModel) table.getModel();
dtm.addRow(new Object[]{"","","","","",""});
  
}
table.setValueAt(name.getText(), i, 0 );
table.setValueAt(author.getText(), i, 1 );
table.setValueAt(year.getText(), i, 2 );
table.setValueAt(publisher.getText(), i, 3 );
table.setValueAt(isbn.getText(), i, 4 );
table.setValueAt(pageCount.getText(), i, 5 );
i++;
}   

private void DeleteActionPerformed(java.awt.event.ActionEvent evt) {
for(int j=0;j<i;j++)
if(((String)table.getValueAt(j, 0)).equals(name.getText()))
{
DefaultTableModel dtm = (DefaultTableModel) table.getModel();
dtm.removeRow(j);
}
i--;
}

private void EditActionPerformed(java.awt.event.ActionEvent evt) {
for(int j=0;j<i;j++)
if(((String)table.getValueAt(j, 0)).equals(name.getText()))
{
table.setValueAt(author.getText(), i, 1 );
table.setValueAt(year.getText(), i, 2 );
table.setValueAt(publisher.getText(), i, 3 );
table.setValueAt(isbn.getText(), i, 4 );
table.setValueAt(pageCount.getText(), i, 5 );
break;
}
}

private void SearchActionPerformed(java.awt.event.ActionEvent evt) {
String ch = ((String)select.getSelectedItem());
switch(ch)
{
case "Name":
for(int j=0;j<i;j++)
if(((String)table.getValueAt(j, 0)).equals(name.getText()))
{
String msg= "Name: "+(String)table.getValueAt(j, 0)
+" Author: "+(String)table.getValueAt(j, 1)
+" Year Published: "+(String)table.getValueAt(j, 2)
+" Publisher: "+(String)table.getValueAt(j, 3)
+" ISBN: "+(String)table.getValueAt(j, 4)
+" Page Count: "+(String)table.getValueAt(j, 5);
searchMessage.setText(msg);
}
break;
case "Author":
for(int j=0;j<i;j++)
if(((String)table.getValueAt(j, 1)).equals(author.getText()))
{
String msg= "Name: "+(String)table.getValueAt(j, 0)
+" Author: "+(String)table.getValueAt(j, 1)
+" Year Published: "+(String)table.getValueAt(j, 2)
+" Publisher: "+(String)table.getValueAt(j, 3)
+" ISBN: "+(String)table.getValueAt(j, 4)
+" Page Count: "+(String)table.getValueAt(j, 5);
searchMessage.setText(msg);
}
break;
case "Year":
for(int j=0;j<i;j++)
if(((String)table.getValueAt(j, 2)).equals(year.getText()))
{
String msg= "Name: "+(String)table.getValueAt(j, 0)
+" Author: "+(String)table.getValueAt(j, 1)
+" Year Published: "+(String)table.getValueAt(j, 2)
+" Publisher: "+(String)table.getValueAt(j, 3)
+" ISBN: "+(String)table.getValueAt(j, 4)
+" Page Count: "+(String)table.getValueAt(j, 5);
searchMessage.setText(msg);
}
break;
case "Publisher":
for(int j=0;j<i;j++)
if(((String)table.getValueAt(j, 3)).equals(publisher.getText()))
{
String msg= "Name: "+(String)table.getValueAt(j, 0)
+" Author: "+(String)table.getValueAt(j, 1)
+" Year Published: "+(String)table.getValueAt(j, 2)
+" Publisher: "+(String)table.getValueAt(j, 3)
+" ISBN: "+(String)table.getValueAt(j, 4)
+" Page Count: "+(String)table.getValueAt(j, 5);
searchMessage.setText(msg);
}
break;
case "ISBN":
for(int j=0;j<i;j++)
if(((String)table.getValueAt(j, 4)).equals(isbn.getText()))
{
String msg= "Name: "+(String)table.getValueAt(j, 0)
+" Author: "+(String)table.getValueAt(j, 1)
+" Year Published: "+(String)table.getValueAt(j, 2)
+" Publisher: "+(String)table.getValueAt(j, 3)
+" ISBN: "+(String)table.getValueAt(j, 4)
+" Page Count: "+(String)table.getValueAt(j, 5);
searchMessage.setText(msg);
}
break;
}
}

private void loadActionPerformed(java.awt.event.ActionEvent evt) {
FileInputStream fis = null;
try {
File file;
i=0;
JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("Open File");
jfc.showOpenDialog(this.getParent());
file=jfc.getSelectedFile();
String filename = file.getAbsolutePath();
fis = new FileInputStream(filename);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br1 = new BufferedReader(isr);
String feed = br1.readLine();
while (feed!=null) {
String t[]=feed.split("#");
for(int j=0;j<t.length;j++)
{
  
if(table.getRowCount() == i)
{
DefaultTableModel dtm = (DefaultTableModel) table.getModel();
dtm.addRow(new Object[]{"","","","","",""});
}
table.setValueAt(t[j], i, j );
}
i++;
  
feed = null;
feed = br1.readLine();
}
br1.close();
isr.close();
fis.close();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}

private void saveActionPerformed(java.awt.event.ActionEvent evt) {
try{
File file;
String msg = "";
JFileChooser jfc=new JFileChooser();
jfc.setDialogTitle("Save File");
jfc.showSaveDialog(this.getParent());
file=jfc.getSelectedFile();
if(file==null)
return;
FileWriter fw = new FileWriter(file.getAbsolutePath()+".txt");
for(int j=0;j<i;j++)
{
msg = msg + (String)table.getValueAt(j, 0)
+"#"+(String)table.getValueAt(j, 1)
+"#"+(String)table.getValueAt(j, 2)
+"#"+(String)table.getValueAt(j, 3)
+"#"+(String)table.getValueAt(j, 4)
+"#"+(String)table.getValueAt(j, 5)+" ";
}
fw.write(msg);
fw.close();
}
catch(Exception e)
{
  
}
}

  
public static void main(String args[]) {
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(StudentAED.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(StudentAED.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(StudentAED.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(StudentAED.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
new Library().setVisible(true);
}
});
}

private javax.swing.JButton Delete;
private javax.swing.JButton Edit;
private javax.swing.JButton Search;
private javax.swing.JButton add;
private javax.swing.JTextField author;
private javax.swing.JTextField isbn;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JMenuItem load;
private javax.swing.JTextField name;
private javax.swing.JTextField pageCount;
private javax.swing.JTextField publisher;
private javax.swing.JMenuItem save;
private javax.swing.JLabel searchMessage;
private javax.swing.JComboBox select;
private javax.swing.JTable table;
private javax.swing.JTextField year;

private int i=0;

}

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

Text File

database.txt

Database Systems#Ramez Elmasri#2015#Pearson#9788131792476#1082

Database Systems Concepts#Henry F. Korth#2015#McGraw Hill Eduction#9789339212126#986

Introduction to algorithms#Thomas H. Cormen#2014#PHI#9788120340077#995

Visual Basic 6 Programming#Thomas H. Cormen#2000#Paraglyph Press#9788177205378#1005

Digital Logic and Computer Design#M. Morris Mano#2009#Pearson#9788177205378#656