Управление информацией книги аналогично управлению информацией читателя. Он включает в себя две части: книга с добавлением и книжным запросом и модификацией. Добавление информации о книге требует правильного ввода восьми информации о книге, а номер ISBN уникален. В процессе реализации ISBN следует использовать в качестве основного ключа. Давайте посмотрим на процесс реализации:
Книги в базе данных:
Процесс добавления книг:
Содержание базы данных добавлено:
Запрос и модификация книг: процесс запроса может быть запрошен в соответствии с различными условиями, такими как ISBN, автор, издатель, название книги и т. Д., И все книги отображаются в списке по умолчанию. После входа в условия запроса результаты запроса отображаются в таблице.
Этот модуль использует панель тегов, которая может легко запросить необходимую информацию. Когда процесс модификации входит в номер ISBN и нажмите ENTER, чтобы отобразить всю информацию о книге ниже, тогда весь контент будет обновлен после изменения информации о книге.
Книжный запрос:
Измените информацию о книге:
Добавьте исходный код книги следующим образом: addbook.java
Package pdsu.bbm.view; импортировать java.awt.borderlayout; импортировать java.awt.flowlayout; импортировать java.awt.font; импортировать java.awt.image; импортировать java.awt.event.actionevent; импортировать java.awt.event.actionlistener; импортировать java.text.parseexception; импортировать java.text.simpledateformat; импортировать java.util.date; импортировать java.util.iterator; импортировать java.util.list; Импорт javax.swing.buttongroup; Импорт javax.swing.imageicon; Импорт javax.swing.jbutton; Импорт javax.swing.jcombobox; импортировать javax.swing.jframe; импортировать javax.swing.jlabel; импортировать javax.swing.joptionpane; импортировать javax.swing.jpanel; импортировать javax.swing.jtextfield; Импорт pdsu.bbm.dao.bookdao; Импорт pdsu.bbm.dao.booktypedao; Импорт pdsu.bbm.model.book; Импорт pdsu.bbm.model.booktype; Public Class AddBook Extends JFrame реализует ActionListener {private JPanel ContentPane; Private Jlabel Label_1; Частный Jlabel LBLL; Private Jlabel Label_2; Private Jlabel Label_3; Private Jlabel Label_4; Private Jlabel Label_5; JPanel CenterPpanel; Jbutton Button1, Button2, Button3; Частный jcombobox combobox_1; Image Icon = new Imageicon ("Image/icon.png"). GetiMage (); Частный JTextfield Isbnfiled; Private Jtextfield Publishfield; Private Jtextfield PublishDatefield; Private Jtextfield PublishTime; Частный JTextfield Unitpricefield; Private Jtextfield BookNamefield; Частный JTextfield Authorfiled; public static void main (string [] args) {new addBook (); } public addBook () {cettitle ("Добавить книгу информации"); setSize (555, 333); seticonimage (значок); setlocationRelativeTo (null); Settitle («Добавить информацию о книге»); setSize (555, 334); setlocationRelativeTo (null); setVisible (true); CenterPpanel = new jPanel (); CenterPpanel.SetLayout (null); Jlabel label1 = new jlabel ("isbn:"); label1.setfont (новый шрифт ("宋体", 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 (новый шрифт ("Zongyi", font.plain, 20)); Label.SetBounds (306, 30, 116, 35); CenterPpanel.Add (этикетка); label_1 = new jlabel («Название книги:»); label_1.setfont (новый шрифт ("宋体", font.plain, 20)); label_1.setbounds (50, 75, 154, 50); centerppanel.add (label_1); lbll = new jlabel ("Автор:"); lbll.setfont (новый шрифт ("宋体", font.plain, 20)); lbll.setbounds (306, 75, 137, 50); CenterPpanel.Add (LBLL); label_2 = new jlabel ("Publisher:"); label_2.setfont (новый шрифт ("宋体", font.plain, 20)); label_2.setbounds (50, 130, 154, 50); centerppanel.add (label_2); label_3 = new jlabel ("宋体:"); label_3.setfont (новый шрифт ("宋体", 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 (новый шрифт ("宋体", 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 (новый шрифт ("宋体", 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 (Authorfilled); Список <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 (новый шрифт ("安体", font.plain, 16)); centerppanel.add (combobox_1); Buttongroup Group = new ButtonongRoup (); Jpanel panel2 = new jpanel (); panel2.setlayout (new Flowlayout ()); button1 = new jbutton ("добавить"); button1.setFont (новый шрифт ("宋体", font.plain, 20)); button2 = new jbutton ("宋体", font.plain, 20)); button3 = new jbutton ("сбросить"); button3.setfont (новый шрифт ("宋体", font.plain, 20)); panel2.add (Button1); панель2.add (Button3); панель2.add (Button2); button1.addactionListener (это); button2.addactionListener (это); Button3.AddactionListener (это); getContentPane (). Add (Panel2, Borderlayout.south); setVisible (true); } @Suppresswarnings ("unared") 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 ("") || selceType.equals ("") || publish.equals ("") || publishdate.equals ("") || time.equals ("") || price.equals ("") {joptionpane.showmess ("") || возвращаться; } else {booktype bt = new booktype (); Книга книги = новая книга (); book.setisbn (ISBN); Book.SetBookName (имя книги); book.setauthor (автор); bt.settypename (selectType); int m = 0; List <booktype> list = booktypedao. SelectIdbyTypEname (selectType); Iterator <booktype> item = list.iterator (); while (ite.hasnext ()) {m = item.next (). getId (); } book.setTypeid (m + ""); book.setpublish (publish); try {book.setpublishtime (integer.parseint (время)); book.setunitprice (integer.parseint (цена)); } catch (numberFormateXception e1) {e1.printstackTrace (); } SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-mm-dd"); Дата regdate = null; try {regdate = sdf.parse (publishdate); } catch (parseException e1) {joptionpane.showmessagegeDialog (это, «пожалуйста, введите правильную дату»); publishdatefield.settext ("" "); } book.setPublishDate (regdate); if (regdate == null) return; if (bookdao.selectbookbyisbn (isbn)! = null) {joptionpane.showmessageDialog (это, «этот номер ISBN уже существует»); возвращаться; } else if (bookdao.insertbook (book)! = 0) {joptionpane.showmessageDialog (это »добавлено успешно»); } else joptionpane.showmessageDialog (это, «добавить неудачу»); }} if (e.getSource () == button3) {isbnfiled.settext (""); bookNamefield.settext ("" "); Authorfield.settext (""); publishfield.settext (""); publishdatefield.settext ("" "); publishtime.settext (""); Unitpricefield.settext ("" "); Unitpricefield.settext ("" "); } if (e.getSource () == button2) {dispose (); новый MainWindow (); }}} Книжный запрос и изменить исходный код: bookselectandmodify.java
Package pdsu.bbm.view; импортировать java.awt.borderlayout; Импорт java.awt.dimension; импортировать java.awt.font; импортировать java.awt.gridlayout; импортировать java.awt.image; импортировать java.awt.event.actionevent; импортировать java.awt.event.actionlistener; импортировать java.text.simpledateformat; импортировать java.util.arraylist; импортировать java.util.date; импортировать java.util.iterator; импортировать java.util.list; Импорт javax.swing.imageicon; Импорт javax.swing.jbutton; Импорт javax.swing.jcombobox; импортировать javax.swing.jframe; импортировать javax.swing.jlabel; импортировать javax.swing.joptionpane; импортировать javax.swing.jpanel; Импорт javax.swing.jscrollpane; Импорт javax.swing.jtabbedpane; импортировать javax.swing.jtable; импортировать javax.swing.jtextfield; импортировать javax.swing.swingconstants; импортировать javax.swing.table.tablemodel; Импорт pdsu.bbm.dao.bookdao; Импорт pdsu.bbm.dao.booktypedao; Импорт pdsu.bbm.model.book; Импорт pdsu.bbm.model.booktype; открытый класс BookselectandModify Extends JFrame реализует ActionListener {// Установить серийный номер частного статического окончательного длинного серийного серийного уровня = 1L; Частный jtabbedpane jtabbedpane; // Панель тегов // selectJP Панель запроса select_conditionjp раскрывающийся список панели Select_ResultJp Панель кнопок результатов // private jtextfield selectjtf, isbnjtf, booknamejtf, Authorjtf, printmimejtf, publishjtf, publishdatejtf, unitpricejtf; Частный Jlabel Isbnjl, BookNamejl, Authorjl, CategoryJl, PrintTimeJl, PublishJl, PublishDateJl, UnitPriceJl; // Фокус! private Jtable JTable; // определить таблицу частного JCombobox Choicejcb, Booktypejcb; Частный jscrollpane jscrollpane; private jbutton selectjb, exitjb, updatejb, resetjb; // кнопка запроса, кнопка выхода, кнопка изменения, кнопка закрытия частной таблицы getSelect; Private String [] title = {"isbn", "Book Sequence", «Название книги", "Автор", "Издатель", "Дата публикации", "Количество отпечаток", "Прай цена"}; Image Icon = new Imageicon ("Image/icon.png"). GetiMage (); public bookselectandmodify () {super (); seticonimage (значок); Settitle («Книжный запрос и модификация»); SetBounds (100, 100, 555, 400); setlocationRelativeTo (null); // jtabbedpane tabjtabbedpane = new jtabbedpane (); добавить (jtabbedpane); selectjp = new jpanel (); selectjp.setlayout (new borderlayout ()); jtabbedpane.add («Информационный запрос книги», SelectJP); // Панель условий запроса select_conditionjp = new jpanel (); Choicejcb = new jcombobox (); String array [] = {"isbn", "book name", "book sequence", "Автор", "издатель", "все"}; // устанавливается в одномерный массив для (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 (); Список <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 (новое измерение (450, 170)); select_resultjp.add (jscrollpane); selectjp.add (select_resultjp, borderlayout.center); // Панель кнопки запроса buttonjp1 = new jpanel (); selectjb = new Jbutton ("Query"); selectjb.setfont (новый шрифт ("Zongyi", font.plain, 20)); selectjb.addactionListener (это); buttonjp1.add (selectjb); exitjb = new jbutton ("exit"); exitjb.setfont (новый шрифт ("Zongyi", font.plain, 20)); exitjb.addactionListener (это); buttonjp1.add (usitjb); 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); // Установить расстояние между Borders Gridlayout.setVgap (8); Gridlayout.sethgap (8); bookjp.setlayout (Gridlayout); Isbnjl = new jlabel ("Isbn:"); Isbnjl.setfont (новый шрифт ("宋体", font.plain, 20)); Isbnjl.sethorizontalAlignment (SwingConstants.center); bookjp.add (iSbnjl); Isbnjtf = new jtextfield (20); Isbnjtf.addactionListener (это); bookjp.add (iSbnjtf); CategoryJl = new jlabel ("Категория:"); CategoryJl.setFont (новый шрифт ("宋体", font.plain, 20)); CategoryJl.SethorizontalAlignment (SwingConstants.center); bookjp.add (CategoryJl); // Список раскрывающихся списков 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 (новый шрифт ("宋体", font.plain, 20)); BookNameJl.SethorizontalAlignment (SwingConstants.center); bookjp.add (booknamejl); bookNameJtf = new JTextField (); bookNameJtf.setColumns (20); bookjp.add (booknamejtf); authorjl = new jlabel ("Автор:"); authorjl.setfont (новый шрифт ("宋体", font.plain, 20)); Authorjl.SethorizontalAlignment (SwingConstants.center); bookjp.add (Authorjl); Authorjtf = new JTextField (); Authorjtf.setColumns (20); bookjp.add (Authorjtf); publishjl = new jlabel ("Publisher:"); publishjl.setfont (новый шрифт ("宋体", font.plain, 20)); publishjl.sethorizontalalenment (swingconstants.center); bookjp.add (publishjl); publishjtf = new jtextfield (); bookjp.add (publishjtf); publishDateJl = new jlabel («Опубликованная дата:»); publishdatejl.setfont (новый шрифт ("宋体", 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 (новый шрифт ("宋体", font.plain, 20)); printtimejl.sethorizontalalignment (swingconstants.center); bookjp.add (printtimejl); printtimeJtf = new JTextField (); bookjp.add (printtimejtf); UnitPriceJl = new jlabel («Цена единицы:»); unitpricejl.setfont (новый шрифт ("宋体", font.plain, 20)); UnitPriceJl.SethorizontalAlignment (SwingConstants.center); BookJp.Add (UnitPriceJl); UnitPriceJtf = new JTextField (); bookjp.add (UnitPriceJtf); // панель кнопок // Дизайн кнопки Design ButtonJp2 = new jPanel (); UpdateJb = new Jbutton ("Modify"); UpdateJB.SetFont (новый шрифт ("songyi", font.plain, 20)); UpdateJB.AddactionListener (это); resetjb = new jbutton ("close"); resetjb.setfont (новый шрифт ("Zongyi", font.plain, 20)); Resetjb.addactionListener (это); buttonjp2.add (updateJb); ButtonJp2.Add (ResetJb); UpdateJp.Add (bookJP, borderlayout.center); UpdateJp.Add (ButtonJp2, Borderlayout.South); setVisible (true); setDefaultCloseoPeration (jframe.exit_on_close); } // Добавить таблицу запросов в панель Print Private Object [] [] getSelect (list <book> list) {// todo автоматически генерируемый метод объект [] [] Objects = new Object [list.size ()] [title.length]; for (int i = 0; i <list.size (); i ++) {book book = list.get (i); объекты [i] [0] = book.getisbn (); Объекты [1] = book.getTypeid (); // Объекты последовательности книг [i] [2] = book.getBookName (); // Название книги Объекты [i] [3] = book.getAuthor (); // Автор книги объектов [i] [4] = book.getPublish (); // публикации объектов [i] = book.getblish Объекты [i] [6] = book.getPublishtime (); // Количество объектов печати [i] [7] = book.getUnitprice (); // Цена единицы} return объектов; } public void actionPerformed (actionEvent e) {// todo Автопогенерированный метод 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 ()); publishDateJtf.settext (bookdao.selectbookbyisbn (isbn) .getPublishDate ()+""); printtimejtf.settext (bookdao.selectbookbyisbn (isbn) .getPublishtime ()+""); UnitPriceJtf.Settext (bookDao.selectBookByisbn (ISBN) .getUnitPrice ()+""); } if (e.getSource () == selectJb) {// Найти int r = ChoiceJcb.getSelectedIndex (); if (r == 0) {string name = selectJtf.getText (). trim (); // подниматься в линейный список типов таблицы <Book> list = new ArrayList <Book> (); Book Book = bookdao.selectbookbyisbn (имя); if (book == null) {joptionpane.showmessageDialog (это, «это кодирование не существует!»); } else {list.add (book); Object [] [] data = getSelect (list); jtable = new jtable (данные, заголовок); jtable.getColumnModel (). GetColumn (4) .setPreferredWidth (175); jtable.setautoresizemode (jtable.auto_resize_off); jscrollpane.setViewPortView (jtable); }} if (r == 1) {// Информация о запросе на основе названия имени книги = selectJtf.getText (). ToString (); List <book> list = bookdao.selectbookbyname (имя); // Определите, является ли линейная таблица пустой if (list == null || list.size () == 0) {joptionpane.showmessagedialog (это, «книга не существует!»); } else {object [] [] data = getSelect (list); jtable = new jtable (данные, заголовок); Tianjia (); }} if (r == 2) {// Информация о запросе на основе строки буквы книги = selectJtf.getText (). ToString (); List <book> list = bookdao.selectbookbytype (имя); // Определите, является ли линейная таблица пустой if (list == null || list.size () == 0) {joptionpane.showmessagedialog (это, «книга не существует!»); } else {object [] [] data = getSelect (list); jtable = new jtable (данные, заголовок); Tianjia (); }} if (r == 3) {// Найти строку в соответствии с именем автора = selectJtf.getText (). ToString (); // поиск списка <book> list = bookdao.selectbookbyauthor (имя); // Проверьте, является ли линейная таблица пустой if (list == null || list.size () == 0) {joptionpane.showmessageDialog (это, «Эта книга не существует!»); } else {object [] [] data = getSelect (list); jtable = new jtable (данные, заголовок); Tianjia (); }} if (r == 4) {// Поиск строки в соответствии с именем Publisher = selectJtf.getText (). ToString (); List <book> list = bookdao.selectbookbypublish (имя); if (list == null || list.size () == 0) {joptionpane.showmessageDialog (это ». Эта книга не существует!»); } else {object [] [] data = getSelect (list); jtable = new jtable (данные, заголовок); 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"); Дата regdate = null; try {regdate = sdf.parse (publishdate); } catch (Exception e2) {e2.printstackTrace (); Joptionpane.showmessageDialog (это, «Пожалуйста, введите правильный формат даты!»); } if (regdate == null) return; int publishtime = integer.parseint (printtimeJtf.getText ()); int UnitPrice = integer.parseInt (unitPriceJtf.getText ()); // инкапсулировать книгу объектов = новая книга (); book.setisbn (ISBN); book.settypeid (id); Book.SetBookName (имя книги); book.setauthor (автор); book.setpublish (publish); Book.SetPublishDate (Regdate); Book.SetPublishtime (PublishTime); Book.SetUnitPrice (UnitPrice); Book.SetTypEname (Typename); int result = bookdao.update (book); Список <book> list2 = new ArrayList <book> (); list2.add (книга); // System.out.println (list2); if (result == 1) {joptionpane.showmessageDialog (это, «модифицировано!»); Bookdao bk = new bookdao (); Список <book> list = bk.selectbook (); jtable = new jtable (getSelect (list), title); Tianjia (); } else {joptionpane.showmessageDialog (это, «Модифицированный не удался!»); }} if (e.getSource () == resetjb) {dispose (); новый MainWindow (); } if (e.getSource () == esciTjb) {dispose (); новый 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 (); }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.