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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.