La gestión de la información del libro es similar a la gestión de la información del lector. Incluye dos partes: adición de libros y consultas y modificaciones de libros. La adición de información del libro requiere la entrada correcta de ocho información del libro, y el número ISBN es único. Durante el proceso de implementación, ISBN debe usarse como la clave principal. Veamos el proceso de implementación:
Libros en la base de datos:
El proceso de agregar libros:
Contenido de la base de datos agregado:
Consulta y modificación de libros: el proceso de consulta se puede consultar de acuerdo con diferentes condiciones, como ISBN, autor, editor, nombre del libro, etc., y todos los libros se muestran en la lista de forma predeterminada. Después de ingresar las condiciones de consulta, los resultados de la consulta se muestran en la tabla.
Este módulo utiliza el panel de etiqueta, que puede consultar fácilmente la información requerida. Cuando el proceso de modificación ingresa al número de ISBN y presione ENTER para mostrar toda la información del libro a continuación, se actualizará todo el contenido después de modificar la información del libro.
Consulta de libros:
Modificar información del libro:
Agregue el código fuente del libro de la siguiente manera: addbook.java
paquete pdsu.bbm.view; import java.awt.borderlayut; 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.booktypetao; import pdsu.bbm.model.book; import pdsu.bbm.model.booktype; public class addbook extiende jframe implementa actionListener {private jpanel contentpane; Private Jlabel Label_1; Privado Jlabel Lbll; Private Jlabel Label_2; Private Jlabel Label_3; JLABEL LABET_4 PRIVADO; JLABEL LABET_5 PRIVADO; Jpanel Centerppanel; JButton Button1, Button2, Button3; JCOMBOBOX PRIVADO COMBOBOX_1; Icon de imagen = new ImageCon ("Image/Icon.png"). GetImage (); privado jtextfield isbnfiled; Privado JTextfield Publishfield; Privado JTextfield PublishDatefield; Private JTextfield Publishtime; Private JTextfield UnitPricefield; privado jtextfield booknamefield; Private JTextfield AutorFiled; public static void main (string [] args) {new AddBook (); } public addbook () {settitle ("Agregar información del libro"); setSize (555, 333); setiConImage (icono); setLocationrelativeto (nulo); settitle ("Agregar información del libro"); setSize (555, 334); setLocationrelativeto (nulo); setVisible (verdadero); centerppanel = new JPanel (); centerppanel.setLayout (nulo); JLabel Label1 = new JLabel ("Isbn:"); etiqueta1.setfont (nueva fuente ("宋体", font.plain, 20)); Label1.setBounds (71, 26, 95, 42); centerppanel.add (etiqueta1); Isbnfiled = new JTextField (); Isbnfiled.setBounds (120, 30, 110, 30); centerppanel.add (isbnfiled); Isbnfiled.setColumns (10); Jlabel etiqueta = new JLabel ("Categoría:"); etiqueta Label.setBounds (306, 30, 116, 35); centerppanel.add (etiqueta); etiqueta_1 = new JLabel ("Título del libro:"); Label_1.setFont (nueva fuente ("宋体", font.plain, 20)); Label_1.setBounds (50, 75, 154, 50); centerppanel.add (etiqueta_1); lbll = new JLabel ("Autor:"); lbll.setFont (nueva fuente ("宋体", font.plain, 20)); lbll.setBounds (306, 75, 137, 50); centerppanel.add (lbll); etiqueta_2 = new JLabel ("Publisher:"); etiqueta_2.setfont (nueva fuente ("宋体", font.plain, 20)); Label_2.setBounds (50, 130, 154, 50); centerppanel.add (etiqueta_2); etiqueta_3 = new JLabel ("宋体:"); etiqueta_3.setfont (nueva fuente ("宋体", font.plain, 20)); Label_3.setBounds (285, 135, 137, 50); centerppanel.add (etiqueta_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); etiqueta_4 = new JLabel ("Número de impresión:"); Label_4.setFont (nueva fuente ("宋体", font.plain, 20)); Label_4.setBounds (28, 190, 154, 50); centerppanel.add (etiqueta_4); publishtime = new JTextField (); publishtime.setColumns (10); publishtime.setBounds (120, 203, 110, 30); Centerppanel.add (PublishTime); etiqueta_5 = new JLabel ("宋体:"); etiqueta_5.setfont (nueva fuente ("宋体", font.plain, 20)); Label_5.setBounds (305, 194, 84, 42); centerppanel.add (etiqueta_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); autorfiled = new JTextField (); autorfiled.setColumns (10); autorfiled.setBounds (380, 86, 120, 30); centerppanel.add (autorfilado); List <BookType> rs = booktyadao.selectbookType (); Iterator <BookType> iterator = rs.Iterator (); Cadena [] 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 (nueva fuente ("安体", font.plain, 16)); centerppanel.add (comboBox_1); Grupo de ButtongRoup = new ButtongRoup (); Jpanel panel2 = new JPanel (); panel2.setLayout (new FlowLayout ()); botón1 = nuevo JButton ("Agregar"); botón1.setFont (nueva fuente ("宋体", font.plain, 20)); botón2 = nuevo JButton ("宋体", Font.Plain, 20)); botón3 = nuevo JButton ("Restablecer"); Button3.setFont (nueva fuente ("宋体", font.plain, 20)); panel2.Add (Button1); panel2.Add (Button3); panel2.Add (Button2); botón1.AddactionListener (esto); Button2.AddactionListener (esto); Button3.AddactionListener (esto); getContentPane (). Agregar (panel2, borderLayout.South); setVisible (verdadero); } @Suppleswarnings ("no usado") public void ActionPerformed (ActionEvent E) {if (e.getSource () == Button1) {String isbn = isbnfiled.gettext (). ToString (); String BookName = BookNameField.Gettext (); Cadena autor = autorfiled.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 ("") || autor.equals ("") || selectType.equals ("") || publish.equals ("") || publishDate.equals ("") || time.equals ("") || precio.equals ("")) {joptionpane.showmessagedialog (esta información "); devolver; } else {booktype bt = new BookType (); Libro libro = nuevo libro (); book.setisbn (ISBN); book.setBookName (BookName); book.setAuthor (autor); bt.settypename (selectType); int m = 0; List <BookType> list = booktyadao .SelectidByTyPeName (selectType); Iterador <BookType> item = list.iterator (); while (ite.hasnext ()) {m = item.next (). getId (); } book.settypeId (m + ""); book.setPublish (publicar); intente {book.setPublishTime (Integer.ParseInt (Time)); book.SetUnitPrice (Integer.ParseInt (Price)); } catch (numberFormateException e1) {e1.printStackTrace (); } SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-mm-dd"); Fecha regDate = null; intente {regDate = sdf.parse (publishDate); } Catch (ParseException e1) {jOptionPane.ShowMessEdialog (esto, "Ingrese la fecha correcta"); publishdatefield.settext (""); } book.setPublishDate (regDate); if (regDate == null) return; if (bookdao.selectbookbyisbn (isbn)! = null) {joptionPane.showMessEdialog (esto, "Este número de ISBN ya existe"); devolver; } else if (bookdao.insertbook (libro)! = 0) {joptionPane.showMessEdialog (esto, "agregado con éxito"); } else joptionPane.ShowMessEdialog (esto, "agregar fallido"); }} if (e.getSource () == Button3) {isbnfiled.setText (""); bookNamefield.settext (""); autorfield.settext (""); publishfield.settext (""); publishdatefield.settext (""); publishtime.settext (""); UnitPricefield.setText (""); UnitPricefield.setText (""); } if (e.getSource () == Button2) {desestimación (); nuevo MainWindow (); }}} Consulta de libros y modificar el código fuente: bookselectandmodify.java
paquete pdsu.bbm.view; import java.awt.borderlayut; 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.booktypetao; import pdsu.bbm.model.book; import pdsu.bbm.model.booktype; public class BookSelectandModify extiende jframe implementos ActionListener {// Establezca el número de serie privado estático final Long SerialVersionUid = 1l; Privado Jtabbedpane Jtabbedpane; // Tag Panel // SelectJP Panel de consulta SELECT_CONDITIONJP Panel de lista desplegable SELECT_RESULTJP Botón de resultado Panel UpdateJP Panel de modificación // Panel de modificación de UpdateJP, Bookjp Panel central ButtonJP2 Panel de botón privado JPANEL SELECTJP, SELECT_CONDITIONJP, SELECT_RESULTJP, ButtonJP1, Bookjp, actualización JPANEL JPANELJP2; // private jtextfield selectJtf, isbnjtf, booknameJtf, autorjtf, printTimEjtf, publishjtf, publishDateJtf, unitPriceJtf; Private Jlabel Isbnjl, BookNameJl, AuthorJl, CategoryJl, PrintTimejl, Publishjl, PublishDateJl, UnitPriceJl; // ¡Enfocar! JTable JTable privado; // Defina Tabla Private JComboBoBox ChoiceJcb, BookTypeJCB; JSCROLLPANE PRIVADO JSCROLLPANE; JBUTTON privado selectJB, exitJB, updateJB, resetJB; // botón de consulta, botón de salida, botón de modificación, botón de cierre Tablemodel privado getSelect; cadena privada [] title = {"isbn", "secuencia del libro", "nombre del libro", "autor", "editor", "fecha de publicación", "número de impresiones", "precio unitario"}; Icon de imagen = new ImageCon ("Image/Icon.png"). GetImage (); public bookselectandModify () {super (); setiConImage (icono); settitle ("Consulta y modificación de libros"); SetBounds (100, 100, 555, 400); setLocationrelativeto (nulo); // jtabbedpane tabjtabbedpane = new JTabbedPane (); agregar (jtabbedpane); selectJP = new JPanel (); selectJP.SetLayout (new BorderLayout ()); jtabbedpane.add ("Consulta de información del libro", selectJP); // Panel de condición de consulta select_conditionjp = new JPanel (); ChoiceJCB = new JComboBox (); Array de cadena [] = {"isbn", "nombre del libro", "secuencia del libro", "autor", "editor", "all"}; // establecido en una matriz unidimensional para (int i = 0; i <array.length; i ++) {chogeJcb.additem (array [i]); } select_conditionjp.add (ChoiceJCB); selectJTF = new JTextField (20); select_conditionjp.add (selectJTF); selectJP.Add (select_conditionjp, borderLayout.north); // Panel de resultados de consulta select_resultjp = new JPanel (); Bookdao dao = new Bookdao (); List <Book> list = dao.selectbook (); jtable = new JTable (GetSelect (List), Title); //! Establezca el tamaño de la tabla sin cambios jtable.setAutoreSizeMode (jtable.auto_resize_off); //! Establezca el ancho de la columna jtable.getColumnModel (). GetColumn (4) .setPreferedWidth (175); JSCrollPane = new JScrollPane (JTable); // Agregue la tabla al panel de desplazamiento // Mostrar el borde del panel de desplazamiento JScrollPane.SetPreferedSize (nueva dimensión (450, 170)); select_resultjp.add (jscrollPane); selectjp.add (select_resultjp, borderLayout.center); // Panel de botón de consulta buttonjp1 = new JPanel (); selectJB = new JButton ("Query"); selectJB.SetFont (nueva fuente ("Zongyi", Font.Plain, 20)); selectJB.AddactionListener (this); buttonjp1.add (selectJB); exitJB = new JButton ("Exit"); exitjb.setFont (nueva fuente ("Zongyi", font.plain, 20)); exitjb.addactionListener (this); buttonjp1.add (exitjb); selectJP.Add (ButtonJP1, BorderLayout.South); // Página de modificación de información UpdateJP = new JPanel (); updateJP.SetLayout (new BorderLayout ()); jtabbedpane.addtab ("Modificación de información del libro", updateJP); bookJP = new JPanel (); Final GridLayout GridLayout = New GridLayout (8, 2); // establecer la distancia entre Borders GridLayout.SetVGap (8); GridLayout.Sethgap (8); bookjp.setLayout (GridLayout); Isbnjl = new JLabel ("Isbn:"); Isbnjl.setFont (nueva fuente ("宋体", font.plain, 20)); Isbnjl.SethorizontalAlignment (SwingConstants.Center); bookJP.Add (isbnjl); Isbnjtf = new JTextfield (20); Isbnjtf.addactionListener (this); bookJP.Add (isbnjtf); categoryJl = new JLabel ("Categoría:"); categoryJl.setFont (nueva fuente ("宋体", font.plain, 20)); categoryJl.SethorizontalAlignment (SwingConstants.Center); bookJP.Add (categoryJl); // lista desplegable Lista <BookType> list1 = booktyadao.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 ("Título del libro:"); bookNameJl.setFont (nueva fuente ("宋体", font.plain, 20)); bookNameJl.SethorizontalAlignment (swingconstants.center); bookJP.Add (BookNameJl); bookNameJtf = new JTextField (); bookNameJtf.SetColumns (20); bookJP.Add (BookNameJtf); autorjl = new JLabel ("Autor:"); autorjl.setFont (nueva fuente ("宋体", font.plain, 20)); autorjl.sethorizontalalignment (swingconstants.center); bookjp.add (autorjl); autorjtf = new JTextField (); autorjtf.setColumns (20); bookJP.Add (AuthorJtf); publishjl = new JLabel ("Publisher:"); publishjl.setFont (nueva fuente ("宋体", font.plain, 20)); publishjl.SethorizontalAlignment (SwingConstants.Center); bookJP.Add (PublishJl); publishjtf = new JTextField (); bookJP.Add (PublishJtf); publishDateJl = new JLabel ("Fecha publicada:"); publishdatejl.setFont (nueva fuente ("宋体", font.plain, 20)); PublishDateJl.SethorizontalAlignment (SwingConstants.Center); bookJP.Add (PublishDateJl); publishDateJtf = new JTextField (); PublishDateJtf.SethorizontalAlignment (swingconstants.left); bookJP.Add (PublishDateJtf); printtimeJl = new JLabel ("Número de impresión:"); printtimeJl.setFont (nueva fuente ("宋体", font.plain, 20)); printtimeJl.SethorizontalAlignment (swingconstants.center); bookJP.Add (imprimeTimejl); printtimeJtf = new JTextField (); bookJP.Add (imprentTimeJtf); UnitPriceJl = new JLabel ("Precio unitario:"); UnitPricjl.setFont (nueva fuente ("宋体", font.plain, 20)); UnitPriceJl.SethorizontalAlignment (swingconstants.center); bookJP.Add (UnitPriceJl); UnitPriceJtf = new JTextField (); bookJP.Add (UnitPriceJtf); // Botón Panel // Botón Panel Diseño Buttonjp2 = new JPanel (); updateJB = new JButton ("Modify"); updateJB.SetFont (New Font ("Songyi", Font.Plain, 20)); updateJB.AddactionListener (esto); resetJB = new JButton ("Cerrar"); resetjb.setFont (nueva fuente ("Zongyi", font.plain, 20)); resetjb.addactionListener (this); ButtonJP2.Add (updateJB); buttonjp2.Add (resetJb); updateJP.Add (BookJP, BorderLayout.Center); updateJP.Add (ButtonJP2, BorderLayout.South); setVisible (verdadero); setDefaultCloseOperation (jframe.exit_on_close); } // Agregue la tabla de consulta al objeto privado del panel [] [] getSelect (List <Book> List) {// TODO Método Generado automático Object [] [] Objects = new Object [list.size ()] [title.length]; for (int i = 0; i <list.size (); i ++) {book book = list.get (i); objetos [i] [0] = book.getisbn (); objetos [1] = book.getTypeId (); // Objetos de secuencia de libros [i] [2] = Book.getBookName (); // Objetos de nombre de libro [i] [3] = Book.getAuthor (); // Objetos de Autor de Book Objetos [i] [6] = book.getPublishTime (); // Número de objetos de impresión [i] [7] = book.getUnitPrice (); // Precio unitario} Objetos de retorno; } public void ActionperFormed (ActionEvent E) {// TODO Auto Generado Método STUB if (E.GetSource () == ISBNJTF) {String isbn = isbnjtf.gettext (); Cadena typename = null; String id = bookdao.selectbookbyisbn (isbn) .gettypeId (); typename = booktyadao.selectbyid (id); System.out.println (Typename); booktypejcb.setselectedItem (typename); bookNameJtf.settext (bookdao.selectbookbyisbn (isbn) .getBookName ()); autorjtf.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) {// Buscar int r = ChoiceJcb.getSelectedIndex (); if (r == 0) {string name = selectJtf.gettext (). Trim (); // ENCUENTRA A LINEW TABLE Tipo Lista <Book> List = New ArrayList <Book> (); Libro de libros = bookdao.selectbookbyisbn (nombre); if (book == null) {joptionPane.ShowMessEdialog (esto, "¡Esta codificación no existe!"); } else {list.add (libro); Objeto [] [] data = getSelect (list); jtable = nuevo JTable (datos, título); jtable.getColumnModel (). getColumn (4) .setPreferedWidth (175); jtable.setAutoreSizeMode (jtable.auto_resize_off); jscrollPane.setViewPortView (JTable); }} if (r == 1) {// Información de consulta basada en el nombre del nombre del libro Nombre = selectJTF.Gettext (). ToString (); List <Book> list = bookdao.selectbookByName (nombre); // Determinar si la tabla lineal está vacía if (list == null || list.size () == 0) {joptionPane.showMessEdialog (esto, "¡El libro no existe!"); } else {object [] [] data = getSelect (list); jtable = nuevo JTable (datos, título); Tianjia (); }} if (r == 2) {// Información de consulta basada en la secuencia del libro Nombre de cadena = selectJtf.gettext (). ToString (); List <Book> list = bookdao.selectbookByType (nombre); // Determinar si la tabla lineal está vacía if (list == null || list.size () == 0) {joptionPane.showMessEdialog (esto, "¡El libro no existe!"); } else {object [] [] data = getSelect (list); jtable = nuevo JTable (datos, título); Tianjia (); }} if (r == 3) {// Buscar cadena según el nombre del autor = selectJtf.gettext (). ToString (); // Buscar list <Book> list = bookdao.selectbookByauthor (nombre); // verifique si la tabla lineal está vacía if (list == null || list.size () == 0) {joptionPane.showMessEdialog (esto, "¡Este libro no existe!"); } else {object [] [] data = getSelect (list); jtable = nuevo JTable (datos, título); Tianjia (); }} if (r == 4) {// Buscar cadena según el nombre del editor = selectJTF.Gettext (). ToString (); List <Book> list = bookdao.selectbookByPublish (nombre); if (list == null || list.size () == 0) {joptionPane.ShowMessEdialog (esto, "¡Este libro no existe!"); } else {object [] [] data = getSelect (list); jtable = nuevo JTable (datos, título); Tianjia (); }} if (r == 5) {list <Book> list = bookdao.selectbook (); }} if (e.getSource () == updateJb) {String isbn = isbnjtf.gettext (). Trim (); String typename = (((string) bookTypeJcb.getSelectedItem ()). Trim (); ID de cadena = booktyadao.selectbyTypename (typename); Cadena bookName = bookNameJtf.gettext (); Cadena autor = autorjtf.gettext (); String Publish = publishjtf.gettext (); String publishDate = publishDateJtf.gettext (); SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-mm-dd"); Fecha regDate = null; intente {regDate = sdf.parse (publishDate); } catch (Exception e2) {e2.PrintStackTrace (); JOpttionPane.ShowMessEdialog (esto, "¡Ingrese el formato de fecha correcto!"); } if (regDate == null) return; int publishtime = integer.ParseInt (printTimeJtf.gettext ()); int unitPrice = Integer.ParseInt (unitPriceJtf.gettext ()); // Libro de objeto encapsulado = nuevo libro (); book.setisbn (ISBN); book.settypeId (id); book.setBookName (BookName); book.setAuthor (autor); book.setPublish (publicar); book.setPublishDate (RegDate); book.setPublishTime (PublishTime); book.SetUnitPrice (UnitPrice); book.settypename (Typename); int resultado = bookdao.update (libro); List <Book> list2 = new ArrayList <Book> (); list2.Add (libro); // System.out.println (list2); if (resultado == 1) {joptionPane.ShowMessEdialog (esto, "¡Modificado con éxito!"); Bookdao bk = new Bookdao (); List <Book> list = bk.selectbook (); jtable = new JTable (GetSelect (List), Title); Tianjia (); } else {joptionPane.showMessEdialog (esto ", modificado fallido!"); }} if (e.getSource () == ResetJB) {desestimación (); nuevo MainWindow (); } if (e.getSource () == EXITJB) {desestimación (); nuevo MainWindow (); }} private void tianjia () {jtable.getColumnModel (). getColumn (4) .setPreferedWidth (175); jtable.setAutoreSizeMode (jtable.auto_resize_off); jscrollPane.setViewPortView (JTable); } public static void main (string [] args) {new BookSelectandModify (); }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.