图书信息管理与读者信息管理相似,共包括两部分,图书添加和图书查询与修改,图书信息添加要求正确输入图书的八项信息,并且ISBN编号唯一,实现过程中要将ISBN作为主键。下面看实现过程:
数据库中书籍:
添加书籍过程:
数据库内容增加:
图书的查询与修改:查询过程可以根据不同的条件查询,如ISBN,作者,出版社,图书名称等,默认将所有图书全部显示在列表中,输入查询条件后再表格中显示查询结果。
本模块用到标签面板,可以很方便的查询所需要的信息。修改过程输入ISBN编号后按回车键将在下方显示所有的图书信息,然后修改图书信息后所有内容就会更新。
图书查询:
图书信息修改:
添加图书源代码如下:AddBook.java
package pdsu.bbm.view; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator; import java.util.List; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import pdsu.bbm.dao.BookDao; import pdsu.bbm.dao.BookTypeDao; import pdsu.bbm.model.Book; import pdsu.bbm.model.BookType; public class AddBook extends JFrame implements ActionListener { private JPanel contentPane; private JLabel label_1; private JLabel lbll; private JLabel label_2; private JLabel label_3; private JLabel label_4; private JLabel label_5; JPanel centerpPanel; JButton button1, button2, button3; private JComboBox comboBox_1; Image icon = new ImageIcon("image/icon.png").getImage(); private JTextField ISBNfiled; private JTextField publishField; private JTextField publishDateField; private JTextField publishTime; private JTextField unitPriceField; private JTextField bookNameField; private JTextField authorFiled; public static void main(String[] args) { new AddBook(); } public AddBook() { setTitle("添加图书信息"); setSize(555, 333); setIconImage(icon); setLocationRelativeTo(null); setTitle("添加图书信息"); setSize(555, 334); setLocationRelativeTo(null); setVisible(true); centerpPanel = new JPanel(); centerpPanel.setLayout(null); JLabel label1 = new JLabel("ISBN:"); label1.setFont(new Font("宋体", Font.PLAIN, 20)); label1.setBounds(71, 26, 95, 42); centerpPanel.add(label1); ISBNfiled = new JTextField(); ISBNfiled.setBounds(120, 30, 110, 30); centerpPanel.add(ISBNfiled); ISBNfiled.setColumns(10); JLabel label = new JLabel("类 别:"); label.setFont(new Font("宋体", Font.PLAIN, 20)); label.setBounds(306, 30, 116, 35); centerpPanel.add(label); label_1 = new JLabel("书 名:"); label_1.setFont(new Font("宋体", Font.PLAIN, 20)); label_1.setBounds(50, 75, 154, 50); centerpPanel.add(label_1); lbll = new JLabel("作 者:"); lbll.setFont(new Font("宋体", Font.PLAIN, 20)); lbll.setBounds(306, 75, 137, 50); centerpPanel.add(lbll); label_2 = new JLabel("出版社:"); label_2.setFont(new Font("宋体", Font.PLAIN, 20)); label_2.setBounds(50, 130, 154, 50); centerpPanel.add(label_2); label_3 = new JLabel("出版日期:"); label_3.setFont(new Font("宋体", Font.PLAIN, 20)); label_3.setBounds(285, 135, 137, 50); centerpPanel.add(label_3); publishField = new JTextField(); publishField.setColumns(10); publishField.setBounds(120, 143, 110, 30); centerpPanel.add(publishField); publishDateField = new JTextField(); publishDateField.setColumns(10); publishDateField.setBounds(380, 143, 120, 30); centerpPanel.add(publishDateField); label_4 = new JLabel("印刷次数:"); label_4.setFont(new Font("宋体", Font.PLAIN, 20)); label_4.setBounds(28, 190, 154, 50); centerpPanel.add(label_4); publishTime = new JTextField(); publishTime.setColumns(10); publishTime.setBounds(120, 203, 110, 30); centerpPanel.add(publishTime); label_5 = new JLabel("单 价:"); label_5.setFont(new Font("宋体", Font.PLAIN, 20)); label_5.setBounds(305, 194, 84, 42); centerpPanel.add(label_5); unitPriceField = new JTextField(); unitPriceField.setColumns(10); unitPriceField.setBounds(380, 203, 120, 30); centerpPanel.add(unitPriceField); getContentPane().add(centerpPanel, BorderLayout.CENTER); bookNameField = new JTextField(); bookNameField.setColumns(10); bookNameField.setBounds(120, 86, 110, 30); centerpPanel.add(bookNameField); authorFiled = new JTextField(); authorFiled.setColumns(10); authorFiled.setBounds(380, 86, 120, 30); centerpPanel.add(authorFiled); List<BookType> rs = BookTypeDao.selectBookType(); Iterator<BookType> iterator = rs.iterator(); String[] AllTypeName = new String[rs.size()]; int i = 0; while (iterator.hasNext()) { String typename = iterator.next().getTypename(); AllTypeName[i] = typename; i++; } comboBox_1 = new JComboBox(AllTypeName); comboBox_1.setBounds(380, 30, 120, 30); comboBox_1.setFont(new Font("宋体", Font.PLAIN, 16)); centerpPanel.add(comboBox_1); ButtonGroup group = new ButtonGroup(); JPanel panel2 = new JPanel(); panel2.setLayout(new FlowLayout()); button1 = new JButton("添加"); button1.setFont(new Font("宋体", Font.PLAIN, 20)); button2 = new JButton("关闭"); button2.setFont(new Font("宋体", Font.PLAIN, 20)); button3 = new JButton("重置"); button3.setFont(new Font("宋体", Font.PLAIN, 20)); panel2.add(button1); panel2.add(button3); panel2.add(button2); button1.addActionListener(this); button2.addActionListener(this); button3.addActionListener(this); getContentPane().add(panel2, BorderLayout.SOUTH); setVisible(true); } @SuppressWarnings("unused") public void actionPerformed(ActionEvent e) { if (e.getSource() == button1) { String Isbn = ISBNfiled.getText().toString(); String bookname = bookNameField.getText(); String author = authorFiled.getText(); String selectType = comboBox_1.getSelectedItem().toString(); String publish = publishField.getText(); String publishdate = publishDateField.getText(); String time = publishTime.getText().trim(); String price = unitPriceField.getText().trim(); if (Isbn.equals("") || bookname.equals("") || author.equals("") || selectType.equals("") || publish.equals("") || publishdate.equals("") || time.equals("") || price.equals("")) { JOptionPane.showMessageDialog(this, "请输入完整信息"); return; } else { BookType bt = new BookType(); Book book = new Book(); book.setISBN(Isbn); book.setBookname(bookname); book.setAuthor(author); bt.setTypename(selectType); int m = 0; List<BookType> list = BookTypeDao .selectIdByTypename(selectType); Iterator<BookType> ite = list.iterator(); while (ite.hasNext()) { m = ite.next().getId(); } book.setTypeid(m + ""); book.setPublish(publish); try { book.setPublishtime(Integer.parseInt(time)); book.setUnitprice(Integer.parseInt(price)); } catch (NumberFormatException e1) { e1.printStackTrace(); } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date regDate = null; try { regDate =sdf.parse(publishdate); } catch (ParseException e1) { JOptionPane.showMessageDialog(this, "请输入正确的日期"); publishDateField.setText(""); } book.setPublishdate(regDate); if(regDate==null) return; if (BookDao.selectBookByISBN(Isbn) != null) { JOptionPane.showMessageDialog(this, "该ISBN编号已存在"); return; } else if (BookDao.insertBook(book) != 0) { JOptionPane.showMessageDialog(this, "添加成功"); } else JOptionPane.showMessageDialog(this, "添加失败"); } } if (e.getSource() == button3) { ISBNfiled.setText(""); bookNameField.setText(""); authorFiled.setText(""); publishField.setText(""); publishDateField.setText(""); publishTime.setText(""); unitPriceField.setText(""); } if (e.getSource() == button2) { dispose(); new MainWindow(); } } }
图书查询与修改源代码:BookSelectandModify.java
package pdsu.bbm.view; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.table.TableModel; import pdsu.bbm.dao.BookDao; import pdsu.bbm.dao.BookTypeDao; import pdsu.bbm.model.Book; import pdsu.bbm.model.BookType; public class BookSelectandModify extends JFrame implements ActionListener { // 设置序列号 private static final long serialVersionUID = 1L; private JTabbedPane jtabbedPane; // 标签面板 // selectJP查询面板 select_conditionJP下拉列表面板 select_resultJP结果按钮面板updateJP修改面板 // updateJP修改面板,bookJP中间面板 buttonJP2按钮面板 private JPanel selectJP, select_conditionJP, select_resultJP, buttonJP1, bookJP, updateJP, buttonJP2;// private JTextField selectJTF, ISBNJTF, booknameJTF, authorJTF, printtimeJTF, publishJTF, publishdateJTF, unitpriceJTF; private JLabel ISBNJL, booknameJL, authorJL, categoryJL, printtimeJL, publishJL, publishdateJL, unitpriceJL; // 重点! private JTable jtable;// 定义表格 private JComboBox choiceJCB, booktypeJCB; private JScrollPane jscrollPane; private JButton selectJB, exitJB, updateJB, resetJB;// 查询按钮,退出按钮,修改按钮,关闭按钮 private TableModel getSelect; private String[] title = { "ISBN", "图书序列", "图书名称", "作者", " 出版社 ", "出版日期", "印刷次数", "单价" }; Image icon = new ImageIcon("image/icon.png").getImage(); public BookSelectandModify() { super(); setIconImage(icon); setTitle("图书查询与修改"); setBounds(100, 100, 555, 400); setLocationRelativeTo(null); // JTabbedPane选项卡 jtabbedPane = new JTabbedPane(); add(jtabbedPane); selectJP = new JPanel(); selectJP.setLayout(new BorderLayout()); jtabbedPane.add("图书信息查询", selectJP); // 查询条件面板 select_conditionJP = new JPanel(); choiceJCB = new JComboBox(); String array[] = { "ISBN", "图书名称", "图书序列", "作者", "出版社","所有" };// 设置为一维数组 for (int i = 0; i < array.length; i++) { choiceJCB.addItem(array[i]); } select_conditionJP.add(choiceJCB); selectJTF = new JTextField(20); select_conditionJP.add(selectJTF); selectJP.add(select_conditionJP, BorderLayout.NORTH); // 查询结果面板 select_resultJP = new JPanel(); BookDao dao = new BookDao(); List<Book> list = dao.selectBook(); jtable = new JTable(getSelect(list), title); // !设置表格大小不变 jtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // !设置列宽 jtable.getColumnModel().getColumn(4).setPreferredWidth(175); jscrollPane = new JScrollPane(jtable);// 把表格加入滚动面板 // 显示滚动面板边框 jscrollPane.setPreferredSize(new Dimension(450, 170)); select_resultJP.add(jscrollPane); selectJP.add(select_resultJP, BorderLayout.CENTER); // 查询按钮面板 buttonJP1 = new JPanel(); selectJB = new JButton("查询"); selectJB.setFont(new Font("宋体", Font.PLAIN, 20)); selectJB.addActionListener(this); buttonJP1.add(selectJB); exitJB = new JButton("退出"); exitJB.setFont(new Font("宋体", Font.PLAIN, 20)); exitJB.addActionListener(this); buttonJP1.add(exitJB); selectJP.add(buttonJP1, BorderLayout.SOUTH); // 信息修改页面 updateJP = new JPanel(); updateJP.setLayout(new BorderLayout()); jtabbedPane.addTab("图书信息修改", updateJP); bookJP = new JPanel(); final GridLayout gridLayout = new GridLayout(8, 2); // 设置边框间的距离 gridLayout.setVgap(8); gridLayout.setHgap(8); bookJP.setLayout(gridLayout); ISBNJL = new JLabel("ISBN:"); ISBNJL.setFont(new Font("宋体",Font.PLAIN,20)); ISBNJL.setHorizontalAlignment(SwingConstants.CENTER); bookJP.add(ISBNJL); ISBNJTF = new JTextField(20); ISBNJTF.addActionListener(this); bookJP.add(ISBNJTF); categoryJL = new JLabel("类 别:"); categoryJL.setFont(new Font("宋体",Font.PLAIN,20)); categoryJL.setHorizontalAlignment(SwingConstants.CENTER); bookJP.add(categoryJL); // 下拉列表 List<BookType> list1 = BookTypeDao.selectBookType(); Iterator<BookType> it = list1.iterator(); String ty[] = new String[list1.size()]; int i = 0; booktypeJCB = new JComboBox(); while (it.hasNext()) { ty[i] = it.next().getTypename(); booktypeJCB.addItem(ty[i]); i++; } bookJP.add(booktypeJCB); booknameJL = new JLabel("书 名:"); booknameJL.setFont(new Font("宋体",Font.PLAIN,20)); booknameJL.setHorizontalAlignment(SwingConstants.CENTER); bookJP.add(booknameJL); booknameJTF = new JTextField(); booknameJTF.setColumns(20); bookJP.add(booknameJTF); authorJL = new JLabel("作 者:"); authorJL.setFont(new Font("宋体",Font.PLAIN,20)); authorJL.setHorizontalAlignment(SwingConstants.CENTER); bookJP.add(authorJL); authorJTF = new JTextField(); authorJTF.setColumns(20); bookJP.add(authorJTF); publishJL = new JLabel("出版社:"); publishJL.setFont(new Font("宋体",Font.PLAIN,20)); publishJL.setHorizontalAlignment(SwingConstants.CENTER); bookJP.add(publishJL); publishJTF = new JTextField(); bookJP.add(publishJTF); publishdateJL = new JLabel("出版日期:"); publishdateJL.setFont(new Font("宋体",Font.PLAIN,20)); publishdateJL.setHorizontalAlignment(SwingConstants.CENTER); bookJP.add(publishdateJL); publishdateJTF = new JTextField(); publishdateJTF.setHorizontalAlignment(SwingConstants.LEFT); bookJP.add(publishdateJTF); printtimeJL = new JLabel("印刷次数:"); printtimeJL.setFont(new Font("宋体",Font.PLAIN,20)); printtimeJL.setHorizontalAlignment(SwingConstants.CENTER); bookJP.add(printtimeJL); printtimeJTF = new JTextField(); bookJP.add(printtimeJTF); unitpriceJL = new JLabel("单 价:"); unitpriceJL.setFont(new Font("宋体",Font.PLAIN,20)); unitpriceJL.setHorizontalAlignment(SwingConstants.CENTER); bookJP.add(unitpriceJL); unitpriceJTF = new JTextField(); bookJP.add(unitpriceJTF); // 按钮面板 // 按钮面板设计 buttonJP2 = new JPanel(); updateJB = new JButton("修改"); updateJB.setFont(new Font("宋体", Font.PLAIN, 20)); updateJB.addActionListener(this); resetJB = new JButton("关闭"); resetJB.setFont(new Font("宋体", Font.PLAIN, 20)); resetJB.addActionListener(this); buttonJP2.add(updateJB); buttonJP2.add(resetJB); updateJP.add(bookJP, BorderLayout.CENTER); updateJP.add(buttonJP2, BorderLayout.SOUTH); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } // 将查询表格加入面板 private Object[][] getSelect(List<Book> list) { // TODO Auto-generated method stub Object[][] objects = new Object[list.size()][title.length]; for (int i = 0; i < list.size(); i++) { Book book = list.get(i); objects[i][0] = book.getISBN(); objects[i][1] = book.getTypeid();// 图书序列 objects[i][2] = book.getBookname();// 图书名称 objects[i][3] = book.getAuthor();// 图书作者 objects[i][4] = book.getPublish();// 出版社 objects[i][5] = book.getPublishdate();// 出版日期 objects[i][6] = book.getPublishtime();// 印刷次数 objects[i][7] = book.getUnitprice();// 单价 } return objects; } public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==ISBNJTF){ String isbn=ISBNJTF.getText(); String typename=null; String id=BookDao.selectBookByISBN(isbn).getTypeid(); typename=BookTypeDao.selectById(id); System.out.println(typename); booktypeJCB.setSelectedItem(typename); booknameJTF.setText(BookDao.selectBookByISBN(isbn).getBookname()); authorJTF.setText(BookDao.selectBookByISBN(isbn).getAuthor()); publishJTF.setText(BookDao.selectBookByISBN(isbn).getPublish()); publishdateJTF.setText(BookDao.selectBookByISBN(isbn).getPublishdate()+""); printtimeJTF.setText(BookDao.selectBookByISBN(isbn).getPublishtime()+""); unitpriceJTF.setText(BookDao.selectBookByISBN(isbn).getUnitprice()+""); } if (e.getSource() == selectJB) {// 按照ISBN编码查找 int r = choiceJCB.getSelectedIndex(); if (r == 0) { String name = selectJTF.getText().trim(); // 强制转换为线性表类型 List<Book> list = new ArrayList<Book>(); Book book = BookDao.selectBookByISBN(name); if (book == null) { JOptionPane.showMessageDialog(this, "该编码不存在!"); } else { list.add(book); Object[][] data = getSelect(list); jtable = new JTable(data, title); jtable.getColumnModel().getColumn(4).setPreferredWidth(175); jtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); jscrollPane.setViewportView(jtable); } } if (r == 1) {// 根据图书名称查询信息 String name = selectJTF.getText().toString(); List<Book> list = BookDao.selectBookByName(name); // 判断线性表是否为空 if (list == null || list.size() == 0) { JOptionPane.showMessageDialog(this, "该图书不存在!"); } else { Object[][] data = getSelect(list); jtable = new JTable(data, title); tianjia(); } } if (r == 2) {// 根据图书序列查询信息 String name = selectJTF.getText().toString(); List<Book> list = BookDao.selectBookByType(name); // 判断线性表是否为空 if (list == null || list.size() == 0) { JOptionPane.showMessageDialog(this, "该图书不存在!"); } else { Object[][] data = getSelect(list); jtable = new JTable(data, title); tianjia(); } } if (r == 3) { // 根据作者进行查找 String name = selectJTF.getText().toString(); // 根据作者进行查找 List<Book> list = BookDao.selectBookByAuthor(name); // 判断线性表是否为空 if (list == null || list.size() == 0) { JOptionPane.showMessageDialog(this, "该图书不存在!"); } else { Object[][] data = getSelect(list); jtable = new JTable(data, title); tianjia(); } } if (r == 4) {// 根据出版社进行查找 String name = selectJTF.getText().toString(); List<Book> list = BookDao.selectBookByPublish(name); if (list == null || list.size() == 0) { JOptionPane.showMessageDialog(this, "该图书不存在!"); } else { Object[][] data = getSelect(list); jtable = new JTable(data, title); tianjia(); } } if(r==5){ List<Book> list =BookDao.selectBook(); } } if (e.getSource() == updateJB) { String ISBN = ISBNJTF.getText().trim(); String typename = ((String) booktypeJCB.getSelectedItem()).trim(); String id = BookTypeDao.selectByTypename(typename); String bookname = booknameJTF.getText(); String author = authorJTF.getText(); String publish = publishJTF.getText(); String publishdate = publishdateJTF.getText(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date regDate = null; try { regDate = sdf.parse(publishdate); } catch (Exception e2) { e2.printStackTrace(); JOptionPane.showMessageDialog(this, "请输入正确的日期格式!"); } if (regDate == null) return; int publishtime = Integer.parseInt(printtimeJTF.getText()); int unitprice = Integer.parseInt(unitpriceJTF.getText()); // 封装对象 Book book = new Book(); book.setISBN(ISBN); book.setTypeid(id); book.setBookname(bookname); book.setAuthor(author); book.setPublish(publish); book.setPublishdate(regDate); book.setPublishtime(publishtime); book.setUnitprice(unitprice); book.setTypename(typename); int result = BookDao.update(book); List<Book> list2 = new ArrayList<Book>(); list2.add(book); // System.out.println(list2); if (result == 1) { JOptionPane.showMessageDialog(this, "修改成功!"); BookDao bk=new BookDao(); List<Book> list =bk.selectBook(); jtable =new JTable(getSelect(list),title); tianjia(); } else { JOptionPane.showMessageDialog(this, "修改失败!"); } } if (e.getSource() == resetJB) { dispose(); new MainWindow(); } if (e.getSource() == exitJB) { dispose(); new MainWindow(); } } private void tianjia() { jtable.getColumnModel().getColumn(4).setPreferredWidth(175); jtable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); jscrollPane.setViewportView(jtable); } public static void main(String[] args) { new BookSelectandModify(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。