La gestion des informations du livre est similaire à la gestion de l'information des lecteurs. Il comprend deux parties: ajout de livres et requête et modification du livre. L'addition d'informations du livre nécessite la bonne contribution de huit informations du livre, et le numéro ISBN est unique. Pendant le processus de mise en œuvre, ISBN doit être utilisé comme clé principale. Voyons le processus de mise en œuvre:
Livres dans la base de données:
Le processus d'ajout de livres:
Contenu de la base de données ajoutés:
Requête et modification des livres: le processus de requête peut être interrogé selon différentes conditions, telles que ISBN, auteur, éditeur, nom de livre, etc., et tous les livres sont affichés dans la liste par défaut. Après être entré dans les conditions de requête, les résultats de la requête sont affichés dans le tableau.
Ce module utilise le panneau de balise, qui peut facilement interroger les informations requises. Lorsque le processus de modification entre dans le numéro ISBN et appuyez sur Entrée pour afficher toutes les informations du livre ci-dessous, tout le contenu sera mis à jour après la modification des informations du livre.
Requête de livre:
Modifier les informations du livre:
Ajoutez le code source du livre comme suit: addbook.java
Package PDSU.BBM.View; import java.awt.borderLayout; import java.awt.flowlayout; Importer 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; Importer java.util.date; Importer java.util.iterator; Importer java.util.list; import javax.swing.buttongroup; import javax.swing.imageicon; import javax.swing.jbutton; Importer javax.swing.jcombobox; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jtextfield; Importer pdsu.bbm.dao.bookdao; Importer pdsu.bbm.dao.booktypedao; Importer pdsu.bbm.model.book; Importer PDSU.BBM.Model.BookType; Public Class Addbook étend JFrame implémente ActionListener {private jpanel contentPane; JLABEL privé Label_1; JLabel privé LBLL; JLABEL privé Label_2; JLABEL privé Label_3; JLABEL privé Label_4; JLABEL privé Label_5; JPanel CenterPpanel; JBUTTON Button1, Button2, Button3; JCOMBOBOX PRIVÉE COMBOBOX_1; Image icon = new ImageIcon ("image / icon.png"). GetImage (); privé jTextfield Isbnfiled; Jtexfield privé Publishfield; Private JTextfield PublishDatefield; privé JTextfield Publishtime; Jtexfield privé Unitpricefield; privé Jtextfield BookNamefield; Private JTextfield Auteurfiled; public static void main (String [] args) {new addbook (); } public addbook () {Settitle ("Ajouter des informations sur le livre"); setSize (555, 333); setiConImage (icône); setLocationRelativeto (null); SettItle ("Ajouter des informations sur le livre"); setSize (555, 334); setLocationRelativeto (null); setVisible (true); Centerppanel = new JPanel (); CentrePPanel.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 ("Catégorie:"); Label.SetFont (New Font ("Zongyi", Font.Plain, 20)); Label.SetBounds (306, 30, 116, 35); Centerppanel.add (étiquette); label_1 = new JLabel ("Titre du livre:"); label_1.setfont (new Font ("宋体", font.plain, 20)); Label_1.setbounds (50, 75, 154, 50); CenterPpanel.Add (Label_1); lbll = new JLabel ("Auteur:"); lbll.setfont (new Font ("宋体", font.plain, 20)); LBLL.SetBounds (306, 75, 137, 50); Centerppanel.add (LBLL); label_2 = new JLabel ("Publisher:"); label_2.setfont (new Font ("宋体", font.plain, 20)); Label_2.setBounds (50, 130, 154, 50); CentrePPanel.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 (); publihfield.setColumns (10); PublishField.SetBounds (120, 143, 110, 30); Centerppanel.add (Publishfield); publihDateField = new JTextField (); publishdatefield.setColumns (10); publishdatefield.setbounds (380, 143, 120, 30); Centerppanel.add (PublishDatefield); Label_4 = new JLabel ("Nombre d'impression:"); label_4.setfont (new Font ("宋体", font.plain, 20)); Label_4.SetBounds (28, 190, 154, 50); CentrePPanel.add (Label_4); PublishTime = new JTextField (); publihtime.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); CentrePPanel.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); AUTORFILED.SetBounds (380, 86, 120, 30); CenterPpanel.Add (Authorfiled); List <BookType> rs = booktypedao.selectBookType (); Iterator <SemberType> 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 (); PANNEL2.SetLayout (new FlowLayout ()); Button1 = new JBUTTON ("ADD"); Button1.setfont (new Font ("宋体", Font.Plain, 20)); Button2 = new Jbutton ("宋体", font.plaain, 20)); Button3 = new Jbutton ("réinitialiser"); Button3.setfont (new Font ("宋体", font.plaain, 20)); PANNEL2.ADD (Button1); PANNEL2.ADD (Button3); PANNEL2.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 auteur = authorfiled.getText (); String selectType = comboBox_1.getSelectedItem (). ToString (); String Publish = PublishField.GetText (); String PublishDate = PublishDateField.getText (); String time = publihtime.getText (). Trim (); String Price = UnitPriceField.GetText (). Trim (); if (isbn.equals ("") || bookname.equals ("") || auteur.equals ("") || selectType.equals ("") || publih.equals ("") || publihdate.equals ("") || time.equals ("") || prime.equals (")") {joptionpane.showMesSageDialM (that, ")". retour; } else {bookType bt = new BookType (); Livre de livres = nouveau livre (); book.setIsbn (isbn); book.setBookName (bookname); book.setauthor (auteur); bt.setTyPename (selectType); int m = 0; List <BookType> list = bookTypedao .SelectIdByTyPename (selectType); Iterator <SemberType> item = list.iterator (); while (ite.hasnext ()) {m = item.next (). getID (); } book.setTypeid (m + ""); book.setpublish (publier); try {book.setpublishtime (Integer.ParseInt (time)); book.setUnitPrice (Integer.ParseInt (prix)); } catch (NumberFormatexception e1) {e1.printStackTrace (); } SimpledateFormat sdf = new SimpledateFormat ("yyyy-mm-dd"); DATE REGDATE = NULL; try {regdate = sdf.parse (publihDate); } catch (parseException e1) {joptionpane.showMessageDialog (this, "Veuillez saisir la date correcte"); PublishDateField.SeTText (""); } book.setPublishDate (RegDate); if (regdate == null) return; if (bookdao.selectbookbyisbn (isbn)! = null) {joptionpane.showMessageAriALOG (this, "Ce numéro isbn existe déjà"); retour; } else if (bookdao.insertbook (book)! = 0) {joptionpane.showMessageDialog (this, "ajouté avec succès"); } else jOptionPane.showMessageDialog (this, "ajouter failli"); }} if (e.getsource () == Button3) {isBnfiled.seTTExt (""); BookNameField.SeTText (""); Authorfield.seTText (""); PublishField.SeTText (""); PublishDateField.SeTText (""); PublishTime.SeTText (""); UNITPRICEFIELD.SETTEXT (""); UNITPRICEFIELD.SETTEXT (""); } if (e.getSource () == Button2) {dissose (); New MainWindow (); }}} Réserver la requête et modifier le code source: bookSelectandmodify.java
Package PDSU.BBM.View; import java.awt.borderLayout; import java.awt.dimension; Importer 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; Importer java.util.date; Importer java.util.iterator; Importer java.util.list; import javax.swing.imageicon; import javax.swing.jbutton; Importer 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; Importer javax.swing.swingConstants; import javax.swing.table.tableModel; Importer pdsu.bbm.dao.bookdao; Importer pdsu.bbm.dao.booktypedao; Importer pdsu.bbm.model.book; Importer PDSU.BBM.Model.BookType; classe publique BookSelectAndModify étend JFrame implémente ActionListener {// Définir le numéro de série privé statique final long SerialVersionUID = 1l; JtabbedPane privé JTabbedPane; // Panneau de balise // SELECTJP Panneau de requête SELECT_Conditionjp Panneau de liste déroulante SELECT_RESULTJP Panneau de bouton Résultat Panneau de modification de mise à jour JPANEL // Panneau de modification UpdateJP, Panneau moyen BookJP Buttonjp2 Button Panneau privé JPanel SELECTJP, mise à jour, boutonjp, select_resultjp, boutonjp1, bookjp, mise à jour, boutonjp2; // private jTextfield selectJtf, isbnjtf, booknamejtf, auteurjtf, printtimejtf, publihjtf, publishdatejtf, unitpricejtf; Private JLabel ISBNJL, BookNamejl, AuthorJL, catégoriejl, printtimejl, PublishJL, PublishDatejl, UnitpriceJL; // Se concentrer! JTable privé jTable; // définir la table privée jcombobox choixjcb, bookTypejcb; JSCROLLPANE JSCROLLPANE; JBUTTON SELECTJB privé, EXITJB, UpdateJB, ResetJB; // Bouton de requête, bouton de sortie, bouton Modifier, bouton Fermer TableModel privé GetSelect; String privé [] title = {"isbn", "séquence de livres", "nom de livre", "auteur", "éditeur", "date de publication", "nombre d'impressions", "prix unitaire"}; Image icon = new ImageIcon ("image / icon.png"). GetImage (); public bookSelectAndModify () {super (); setiConImage (icône); Settitle ("Book Query and Modification"); Setbounds (100, 100, 555, 400); setLocationRelativeto (null); // jtabbedpane tabjtabbedpane = new JTabbedPane (); Add (jTabbedPane); selectJp = new JPanel (); selectjp.setLayout (new BorderLayout ()); jtabbedpane.add ("requête d'information du livre", selectJP); // Panneau de condition de requête select_conditionjp = new JPanel (); choixjcb = new JComboBox (); String Array [] = {"ISBN", "Nom de livre", "séquence de livres", "auteur", "éditeur", "all"}; // Définit un tableau unique pour (int i = 0; i <array.length; i ++) {choixjcb.additem (array [i]); } select_conditionjp.add (choixjcb); selectJtf = new JTextField (20); select_conditionjp.add (selectJtf); selectjp.add (select_conditionjp, borderlayout.north); // Panneau de résultat de requête select_resultjp = new JPanel (); Bookdao dao = new bookdao (); List <book> list = dao.selectbook (); jTable = new JTable (getSelect (liste), titre); //! Définissez la taille du tableau inchangé jTable.setAutoRoSizEMode (jTable.Auto_Resize_off); //! Définissez la largeur de la colonne jTable.getColumnModel (). GetColumn (4) .SetPreferredWidth (175); jscrollPane = new JSCrollPane (JTable); // Ajoutez le tableau au panneau de défilement // Affiche la bordure du panneau de défilement jscrollpane.setPreferredSize (nouvelle dimension (450, 170)); select_resultjp.add (jscrollpane); selectjp.add (select_resultjp, borderlayout.center); // Panneau de bouton de requête boutonjp1 = new JPanel (); selectJb = new JButton ("Query"); selectJb.setfont (new Font ("Zongyi", Font.Plain, 20)); selectJb.AddactionListener (this); Buttonjp1.add (selectJB); exitjb = new JButton ("exit"); eXitjb.setfont (New Font ("Zongyi", Font.Plain, 20)); exitjb.addactionListener (this); Buttonjp1.add (exitjb); selectJP.Add (ButtonJP1, BorderLayout.South); // Page de modification des informations Updatejp = new JPanel (); updatejp.setLayout (new BorderLayout ()); jtabbedpane.addtab ("modification des informations du livre", mise à jourjp); bookjp = new JPanel (); Final GridLayout GridLayout = new GridLayout (8, 2); // définir la distance entre les borders 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); catégoriejl = new JLabel ("catégorie:"); categoryjl.setfont (new Font ("宋体", font.plain, 20)); catégoriejl.sethorizontalalignment (swingConstants.center); bookjp.add (catégoriejl); // liste déroulante List <bookType> list1 = bookTypeda.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 ("Titre du livre:"); booknamejl.setfont (new Font ("宋体", font.plain, 20)); BookNamejl.SethorizontalAlignment (SwingConstants.Center); bookjp.add (booknamejl); bookNamejtf = new JTextField (); bookNamejtf.setColumns (20); bookjp.add (booknamejtf); auteurjl = new JLabel ("Auteur:"); Authorjl.setfont (New Font ("宋体", Font.Plain, 20)); AuthorJl.SethorizontalAlignment (SwingConstants.Center); bookjp.add (auteurjl); auteurjtf = new JTextField (); auteurjtf.setColumns (20); bookjp.add (auteurjtf); publihjl = new JLabel ("Publisher:"); publihjl.setfont (New Font ("宋体", Font.Plain, 20)); publihjl.sethorizontalalignment (swingConstants.center); bookjp.add (publihjl); publihjtf = new JTextField (); bookjp.add (publihjtf); PublishDateJl = new JLabel ("Date publiée:"); publihDatejl.setfont (new Font ("宋体", font.plain, 20)); PublishDateJl.SethorizontalAlignment (SwingConstants.Center); bookjp.add (PublishDateJL); publihDateJtf = new JTextField (); PublishDateJtf.Sethorizontalalignment (swingConstants.left); bookjp.add (publihDateJtf); printtimejl = new JLabel ("Nombre d'impression:"); printtimejl.setfont (new Font ("宋体", font.plain, 20)); printtimejl.sethorizontalalignment (swingConstants.Center); bookjp.add (printtimejl); printtimejtf = new JTextField (); bookjp.add (printtimejtf); UNITPRICEJL = NOUVEAU JLABEL ("Prix unitaire:"); UNITPRICEJL.SETFONT (NOUVEAU FONT ("宋体", FONT.PLAIN, 20)); UNITPRICEJL.SETHORIZONTALALIGNATION (SwingConstants.Center); bookjp.add (unitpricejl); unitpricejtf = new JTextField (); bookjp.add (unitpricejtf); // Panneau de bouton // Conception du panneau de bouton Buttonjp2 = new JPanel (); updatejb = new JButton ("modifier"); updatejb.setfont (new Font ("Songyi", Font.Plain, 20)); updatejb.addactionListener (this); resetjb = new JButton ("close"); resetjb.setfont (new Font ("Zongyi", 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); } // Ajouter la table de requête au panneau privé d'objet [] [] getSelect (list <book> list) {// TODO Method-généré par la méthode Stub objet [] [] objets = nouvel objet [list.size ()] [title.length]; for (int i = 0; i <list.size (); i ++) {book book = list.get (i); objets [i] [0] = book.getIsbn (); Objets [1] = book.getTypeid (); // Book Sequence ObjectS [i] [2] = book.getBookName (); // Nom ObjectS [i] [3] = book.getAuthor (); // Book Auteur Objets [i] [4] = book.getPublish (); // Publicer Object [i] [5] = Book.getPublishDate ();) objets [i] [6] = book.getPublishTime (); // Nombre d'objets d'impression [i] [7] = book.getUnitPrice (); // Prix unitaire} RETOUR OBJETS; } public void ActionPerformed (ActionEvent e) {// TODO Méthode générée automatiquement 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 ()); publihjtf.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) {// trouver int r = choixjcb.getSelectedIndex (); if (r == 0) {String name = selectJtf.getText (). Trim (); // Cast to linear Table Type List <Book> list = new ArrayList <Book> (); Livre de livres = bookdao.selectbookByisbn (nom); if (book == null) {joptionpane.showMessageDialog (this, "Ce codage n'existe pas!"); } else {list.add (livre); Objet [] [] data = getSelect (list); jTable = new JTable (données, titre); jTable.getColumnModel (). GetColumn (4) .SetPreferredWidth (175); jTable.setAutoRoSizEMode (jTable.Auto_Resize_off); jscrollpane.setViewportView (jTable); }} if (r == 1) {// Informations de requête basées sur le nom de livre Nom de chaîne = selectJtf.getText (). toString (); List <Book> list = bookdao.selectBookByName (nom); // déterminer si la table linéaire est vide if (list == null || list.size () == 0) {joptionpane.showMessageDialog (this, "le livre n'existe pas!"); } else {objet [] [] data = getSelect (list); jTable = new JTable (données, titre); Tianjia (); }} if (r == 2) {// Informations de requête basées sur la chaîne de séquence de livres name = selectJtf.getText (). toString (); List <Book> list = bookdao.selectBookByType (nom); // déterminer si la table linéaire est vide if (list == null || list.size () == 0) {joptionpane.showMessageDialog (this, "le livre n'existe pas!"); } else {objet [] [] data = getSelect (list); jTable = new JTable (données, titre); Tianjia (); }} if (r == 3) {// Recherchez la chaîne en fonction du nom de l'auteur = selectJtf.getText (). toString (); // Recherche de liste <book> list = bookdao.selectBookByAuthor (nom); // vérifie si la table linéaire est vide if (list == null || list.size () == 0) {joptionpane.showMessageDialog (this, "Ce livre n'existe pas!"); } else {objet [] [] data = getSelect (list); jTable = new JTable (données, titre); Tianjia (); }} if (r == 4) {// Recherchez la chaîne en fonction du nom de l'éditeur = selectJtf.getText (). toString (); List <book> list = bookdao.selectBookByPublish (nom); if (list == null || list.size () == 0) {joptionpane.showMessageDialog (this, "Ce livre n'existe pas!"); } else {objet [] [] data = getSelect (list); jTable = new JTable (données, titre); 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 auteur = auteurjtf.getText (); String publish = publihjtf.getText (); String PublishDate = PublishDateJtf.GetText (); SimpledateFormat sdf = new SimpledateFormat ("yyyy-mm-dd"); DATE REGDATE = NULL; try {regdate = sdf.parse (publihDate); } catch (exception e2) {e2.printStackTrace (); JOptionPane.showMessageDialog (ceci, "Veuillez saisir le format de date correct!"); } if (regdate == null) return; int publishtime = Integer.ParseInt (printtimejtf.getText ()); int UnitPrice = Integer.ParseInt (UNITPRICEJTF.GetText ()); // encapsuler le livre d'objets = nouveau livre (); book.setIsbn (isbn); book.setTypeid (id); book.setBookName (bookname); book.setauthor (auteur); book.setpublish (publier); book.setPublishDate (RegDate); book.setpublishtime (Publishtime); book.setUnitPrice (unitprice); book.setTyPename (typename); int result = bookdao.update (livre); List <book> list2 = new ArrayList <Book> (); list2.add (livre); // System.out.println (list2); if (result == 1) {joptionpane.showMessageDialog (this, "modifié avec succès!"); Bookdao bk = new bookdao (); List <book> list = bk.selectbook (); jTable = new JTable (getSelect (liste), titre); Tianjia (); } else {joptionpane.showMessageDialog (this, "Modified a échoué!"); }} if (e.getsource () == resetjb) {dissose (); New MainWindow (); } if (e.getsource () == exitjb) {dissose (); New MainWindow (); }} private void tianjia () {jTable.getColumnModel (). GetColumn (4) .SetPreferredWidth (175); jTable.setAutoRoSizEMode (jTable.Auto_Resize_off); jscrollpane.setViewportView (jTable); } public static void main (String [] args) {new bookSelectAndModify (); }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.