Le but de cet article est de maîtriser la technologie de programmation de la base de données via le système de gestion des bibliothèques, de pouvoir se connecter correctement à la base de données et de pouvoir interroger, insérer, supprimer et modifier les informations dans la base de données.
Contenu: Créez un tableau d'informations bibliographiques dans la base de données, y compris le titre, l'auteur, la maison d'édition, la date de publication, le numéro de livre et les champs de prix. Concevoir une interface GUI pour la gestion de la bibliographie. Il y a quatre onglets sur cette interface, à savoir interroger, insérer, supprimer et modifier. Cliquez sur l'onglet Requête et l'interface qui apparaît comprend quatre cases de texte: titre de livre, auteur, éditeur, numéro de livre, bouton et une zone de texte en lecture seule. Le contenu de la zone de texte peut être vide. Après avoir entré les informations de requête correspondantes (par exemple, vous ne pouvez saisir le titre qu'en fonction du titre du livre), cliquez sur le bouton "Requête" sur l'interface pour afficher les informations détaillées de la bibliographie qui répond aux critères de la zone de texte sous l'interface. Cliquez sur l'onglet Insérer et l'interface qui apparaît comprendra le titre du livre, l'auteur, la maison d'édition, la date de publication, le numéro de livre, la zone de texte de prix et un bouton. Après avoir saisi des informations dans la zone de texte, cliquez sur le bouton "Insérer" et les informations bibliographiques sont insérées dans le tableau de la base de données. Cliquez sur l'onglet Supprimer. Il y a une zone de texte pour le titre et un bouton de l'interface qui apparaît. Après avoir entré le titre, cliquez sur le bouton "Supprimer". Les informations bibliographiques sont supprimées du tableau de la base de données. Cliquez sur l'onglet Modifier et l'interface qui apparaît comprend le titre du livre, l'auteur, la maison d'édition, la date de publication, le numéro de livre, la zone de texte de prix et un bouton. Le titre du livre entré doit exister, sinon une zone de message apparaîtra et affichera un message d'erreur. Après avoir saisi les informations, cliquez sur le bouton "Modifier" et les informations bibliographiques correspondantes dans le tableau de la base de données sont modifiées à la nouvelle valeur.
Code source:
Bookinfo.java
* Nom du projet: Système de gestion du livre * Version: 1.0 * Créateur: Zhang Junqiang * Temps de création: 2016/5/26 * * / / package LibrarySystem; import java.awt. *; importer javax.swing. *; import java.awt.event. *; Importer java.sql. *; @SuppressWarnings ("Serial") classe publique BookInfo étend JFrame implémente ActionListener {// Control sur le protagoniste face privée jlabel inputLabel; JEXTFIELD PRIVÉE InputText; Private Jbutton SearchBut; BookTable JTable privé; JSCROLLPANE PRIVÉCROLLSCROLL; JBUTTON PRIVÉ ADDBUT; Private JBUTTON ModifyBut; Private Jbutton Deletebut; Rafreshbut Jbutton privé; BookTableModel privé BookTableModel; public static void main (String [] args) lève sqlexception {// TODO Méthode générée automatique Stub bookinfo bookinfo = new bookInfo (); bookinfo.setdefaultCloseOperation (jframe.exit_on_close); bookinfo.setbounds (350, 150, 600, 400); bookInfo.setVisible (true); // bookInfo.importSQL (); // Export Data bookInfo.setminwindowlayout (); // définir les données} public bookInfo () lance sqlexception {// créer le contrôle sur l'interface principale inputLabel = new JLabel ("Veuillez entrer le titre de livre:"); inputText = new JTextField (10); SearchBut = new JBUTTON ("Query"); bookTableModel = new bookTableModel (); bookTable = new JTable (bookTableModel); bookscroll = new jscrollpane (booktable); addBut = new JButton ("add"); modifyBut = new JButton ("modifier"); DeleteBut = new JButton ("Delete"); RefreshBut = new Jbutton ("rafraîchissement"); SearchBut.AddactionListener (this); addBut.AddactionListener (this); RefreshBut.AddactionListener (this); modifyBut.addactionListener (this); DeleteBut.AddactionListener (this); } void setMinwindowLayout () {// Conteneur de disposition de l'interface principale con1 = new Container (); con1.setLayout (new FlowLayout ()); CON1.ADD (InputLabel); con1.add (inputText); CON1.ADD (SearchBut); CON1.ADD (Refreshbut); Conteneur con2 = nouveau conteneur (); con2.SetLayout (new FlowLayout ()); CON2.ADD (ADDBUT); CON2.ADD (ModifyBut); CON2.ADD (DeleteBut); this.setLayout (new BorderLayout ()); this.add (con1, borderlayout.north); this.add (bookscroll, borderlayout.center); this.add (con2, borderlayout.south); this.validate (); } @Override public void ActionperFormEd (ActionEvent e) {// TODO Méthode générée automatiquement Stub if (e.getsource () == searchBut) {if (! This.inputText.getText (). String sql = "SELECT * FROM Book_info Where book_name = '" + bookName + "'"; essayez {bookTableModel = new bookTableModel (sql); bookTable.setModel (bookTableModel); } catch (sqlexception e1) {// TODO Block de catch généré automatiquement e1.printStackTrace (); }} else {joptionpane.showMessageDialog (this, "l'entrée ne peut pas être vide", "invite", joptionpane.plain_message); }} else if (e.getsource () == addBut) {@SuppressWarnings ("inutilisé") addbookDialog addWin = new addBookDialog (this, "add book", true); this.refreshTable (); } else if (e.getSource () == RefreshBut) {this.refreshTable (); } else if (e.getsource () == DeleteBut) {int rownum = bookTable.getSelectedRow (); if (rownum <0 || rownum> booktable.getrowcount ()) {joptionpane.showMessageDialog (this, "non sélectionné", "tip", joptionpane.plain_message); } else {//system.out.print(BookName); int n = joptionpane.showconfirmDialog (null, "confirmer la suppression?", "Confirmer la boîte de délétion", joptionpane.yes_no_option); if (n == joptionpane.yes_option) {String booknum = (string) bookTable.getValueat (rownum, 0); String sql = "Delete de book_info où book_num = '" + booknum + "'"; bookTableModel.DeleteBook (SQL); this.refreshTable (); JOptionPane.showMessageDialog (this, "DeleteSuccess", "Tip", jOptionPane.Plain_Message); } else if (n == joptionpane.no_option) {return; }}} else if (e.getsource () == modifyBut) {bookTable.setModel (bookTableModel); int Rownum = bookTable.getSelectedRow (); if (rownum <0 || rownum> booktable.getRowcount ()) {joptionpane.showMessageAriALOG (this, "décoche", "invite", joptionpane.plain_message); } else {@SuppressWarnings ("inutilisé") Modifybook modifywin = new modifybook (this, "modifier les informations", true, booktableModel, rownum); this.refreshTable (); }}} public void refreshTable () {bookTableModel searchbook; essayez {searchbook = new BookTableModel ("SELECT * FROM Book_info"); bookTable.setModel (Searchbook); bookTableModel = searchbook; } catch (sqlexception e1) {// TODO Block de catch généré automatiquement e1.printStackTrace (); }}} BooktableModel.java
Package LibrarySystem; Importer java.sql. *; import java.util. *; / * * Book Table Model * * / Importer javax.swing.table. *; @SuppressWarnings ("Serial") classe publique BookTableModel étend AbstractTableModel {// Elements of Table Private Vector <vector <string>> RowData; Vector privé <string> colname; // base de données privée préparée STMT; résultat de résultat privé; Public BookTableModel (String SQL) lève SQLEXception {this.initData (SQL); } public bookTableModel () lève SQException {this.initData ("SELECT * FROM book_info"); } public void initData (String SQL) lève SQException {setRowData (new Vector <vector <string >> ()); setColName (nouveau vecteur <string> ()); getColName (). Add ("Book No."); getColName (). Add ("Titre du livre"); getColName (). Add ("Titre du livre"); getColName (). add ("auteur"); getColName (). Add ("Publisher"); getColName (). Add ("Temps de publication"); getColName (). Add ("prix"); / * * Importation de la base de données * * / try {class.forname ("com.mysql.jdbc.driver"); } catch (classNotFoundException e) {// TODO Generated Catch Block E.PrintStackTrace (); } String url = "jdbc: mysql: // localhost: 3306 / périphérique"; String user = "root"; String mot de passe = "ZJQ1314520"; Connexion Con = driverManager.getConnection (URL, utilisateur, mot de passe); STMT = CON.PrepareStatement (SQL); result = stmt.ExecuteQuery (); ImportSQL (); } void importtsql () lève sqlexception {// TODO Méthode générée automatiquement Stub @SuppressWarnings ("inutilisé") booléen SignNull = true; while (result.next ()) {vector <string> item = new vector <string> (); pour (int i = 1; i <7; i ++) {item.add (result.getString (i)); } getRowData (). Add (item); SignNull = false; } result.close (); } @Override public int getColumnCount () {// Obtenez le nombre de colonnes // TODO Méthode générée automatiquement Stub return this.colname.size (); } @Override public int getrowCount () {// Obtenez le nombre de lignes // Todo Généré de méthode générée par auto renvoie this.rowdata.size (); } @Override public int getrowCount () {// Obtenez le nombre de lignes // Todo Généré de méthode générée par auto renvoie this.rowdata.size (); } @Override public objet getValueat (int row, int col) {// Obtenez les données d'une ligne et une colonne // TODO Méthode générée automatiquement } @Override public String getColumnName (int colonne) {// TODO Méthode générée automatique Stub return this.colName.get (colonne); } public vector <vector <string>> getrowData () {return rowData; } public void setRowData (vector <vector <string>> rowData) {this.rowdata = rowData; } public vector <string> getColName () {return colname; } public void setColName (vector <string> colname) {this.colname = colname; } public void addbook (string sql) {try {stmt.executeupdate (sql); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); } // initData ("SELECT * FROM Book_info"); } public void DeleteBook (String SQL) {try {stmt.ExecuteUpdate (sql); } catch (sqlexception e1) {// TODO Block de catch généré automatiquement e1.printStackTrace (); }}} AddbookDialog.java
Package LibrarySystem; import java.awt. *; import java.awt.event. *; import java.sql.sqlexception; importer javax.swing. *; @SuppressWarnings ("Serial") Classe publique AddBookDialog étend JDialog implémente ActionListener {private jLabel bookNumLabel; JLABEL PRIVÉE BOOKNAMELABEL; JLABEL privé JLabel BookWriterLabel; JLABEL privé BookPublishLabel; JLABEL PRIVÉE BOOKPRICELABEL; JLABEL PRIVÉ BooktimeBel; privé jtextfield booknumText; privé jTextfield BooknameText; privé jtextfield bookWriterText; privé jtextfield bookPublishText; privé jTextfield bookPriceText; privé jTextfield booktimeText; Private Jbutton Soumisbut; Private Jbutton CancelBut; AddbookDialog public (propriétaire de cadre, titre de chaîne, modèle booléen) {// La fenêtre parent, nom de la fenêtre, est-ce une fenêtre de mode super (propriétaire, titre, modèle); booknumLabel = new JLabel ("Numéro de livre:"); BookNameLabel = New JLabel ("Titre du livre:"); bookWriterLabel = new JLabel ("Auteur:"); BookPublishLabel = New Jlabel ("Publisher:"); bookpriceLabel = new JLabel ("Price:"); booktimeLabel = new JLabel ("Temps de publication:"); booknumText = new JTextfield (10); BookNameText = new JTextfield (10); bookWriterText = new JTextfield (10); bookPublishText = new JTextfield (10); bookpriceText = new JTextfield (10); booktimeText = new JTextfield (9); soumisBut = new JButton ("Annuler"); CancelBut = new JBUTTON ("Annuler"); soumisBut.AddactionListener (this); CancelBut.AddactionListener (this); this.setbounds (350 150 400,260); this.setResiSable (false); this.setLayout (new BorderLayout ()); initLayout (); } public void initlayout () {conteneur [] con1 = nouveau conteneur [6]; pour (int i = 0; i <6; i ++) con1 [i] = nouveau conteneur (); con1 [0] .SetLayout (new FlowLayout ()); CON1 [0] .Add (BookNumLabel); CON1 [0] .Add (BookNumText); con1 [1] .SetLayout (new FlowLayout ()); CON1 [1] .Add (BookNameLabel); CON1 [1] .Add (BookNameText); con1 [2] .SetLayout (new FlowLayout ()); CON1 [2] .Add (BookWriterLabel); CON1 [2] .Add (BookWriterText); con1 [3] .SetLayout (new FlowLayout ()); CON1 [3] .Add (BookPublishLabel); CON1 [3] .Add (BookPublishText); con1 [4] .SetLayout (new FlowLayout ()); CON1 [4] .Add (BookpriceLabel); CON1 [4] .Add (BookPriceText); con1 [5] .SetLayout (new FlowLayout ()); CON1 [5] .Add (BooktimeLabel); CON1 [5] .Add (BooktimeText); Conteneur con2 = nouveau conteneur (); Con2.SetLayout (new BorderLayout ()); CON2.ADD (CON1 [0], BorderLayout.North); CON2.ADD (CON1 [1], BorderLayout.Center); CON2.ADD (CON1 [2], BorderLayout.South); Conteneur con3 = nouveau conteneur (); con3.SetLayout (new BorderLayout ()); CON3.ADD (CON1 [3], BorderLayout.North); CON3.ADD (CON1 [4], BorderLayout.Center); Con3.Add (Con1 [5], BorderLayout.South); Conteneur con4 = nouveau conteneur (); con4.SetLayout (new FlowLayout ()); CON4.ADD (SUMEBUT); CON4.Add (CancelBut); Conteneur con5 = nouveau conteneur (); con5.SetLayout (new BorderLayout ()); CON5.ADD (CON2, BorderLayout.north); CON5.ADD (CON3, BorderLayout.Center); CON5.ADD (CON4, BorderLayout.South); this.add (con5, borderlayout.center); this.validate (); this.setVisible (true); } @Override public void ActionPerformed (ActionEvent e) {// TODO Méthode générée automatiquement bookpriseText.getText (). JOptionPane.showMessageDialog (this, "L'entrée ne peut pas être vide", "invite", joptionpane.plain_message); } else {//system.out.println("input réussi "); String sql = "Insérer dans" + "book_info (book_num, book_name, book_writer, publih_house, book_price, publish_time)" + "Values ('" + booknumText.getText () + "', '" + booknameText.getText () + "', '" + bookWriterText.getText () + "', '" + bookPublishText.getText () + "', '" + bookpriceText.getText () + "', '" BookItExt.gettex BookTableModel (); if (e.getSource () == CancelBut) {this.setVisible (false); Modifybook.java
Package LibrarySystem; import java.awt. *; import java.awt.event. *; import java.sql.sqlexception; importer javax.swing. *; @SuppressWarnings ("Serial") La classe publique Modifybook étend JDialog implémente ActionListener {private jLabel bookNumLabel; JLABEL PRIVÉE BOOKNAMELABEL; JLABEL privé JLabel BookWriterLabel; JLABEL privé BookPublishLabel; JLABEL PRIVÉE BOOKPRICELABEL; JLABEL PRIVÉ BooktimeBel; privé jtextfield booknumText; privé jTextfield BooknameText; privé jtextfield bookWriterText; privé jtextfield bookPublishText; privé jTextfield bookPriceText; privé jTextfield booktimeText; Private Jbutton Soumisbut; Private Jbutton CancelBut; BookTableModel privé BookModel; Int privé Rownum; Public Modifybook (propriétaire de cadre, titre de chaîne, type booléen, modèle BookTableModel, int row) {super (propriétaire, titre, type); bookmodel = modèle; rownum = ligne; booknumLabel = new JLabel ("Numéro de livre:"); BookNameLabel = New JLabel ("Titre du livre:"); bookWriterLabel = new JLabel ("Auteur:"); BookPublishLabel = New Jlabel ("Publisher:"); bookpriceLabel = new JLabel ("Price:"); booktimeLabel = new JLabel ("Temps de publication:"); booknumText = new JTextfield (10); BookNameText = new JTextfield (10); bookWriterText = new JTextfield (10); bookPublishText = new JTextfield (10); bookpriceText = new JTextfield (10); booktimeText = new JTextfield (9); soumisBut = new Jbutton ("Confirmer la modification"); CancelBut = new JBUTTON ("Annuler"); soumisBut.AddactionListener (this); CancelBut.AddactionListener (this); this.setbounds (350 150 400,260); this.setResiSable (false); this.setLayout (new BorderLayout ()); this.setValue (); this.initlayout (); } public void initlayout () {conteneur [] con1 = nouveau conteneur [6]; pour (int i = 0; i <6; i ++) con1 [i] = nouveau conteneur (); con1 [0] .SetLayout (new FlowLayout ()); CON1 [0] .Add (BookNumLabel); CON1 [0] .Add (BookNumText); con1 [1] .SetLayout (new FlowLayout ()); CON1 [1] .Add (BookNameLabel); CON1 [1] .Add (BookNameText); con1 [2] .SetLayout (new FlowLayout ()); CON1 [2] .Add (BookWriterLabel); CON1 [2] .Add (BookWriterText); con1 [3] .SetLayout (new FlowLayout ()); CON1 [3] .Add (BookPublishLabel); CON1 [3] .Add (BookPublishText); con1 [4] .SetLayout (new FlowLayout ()); CON1 [4] .Add (BookpriceLabel); CON1 [4] .Add (BookPriceText); con1 [5] .SetLayout (new FlowLayout ()); CON1 [5] .Add (BooktimeLabel); CON1 [5] .Add (BooktimeText); Conteneur con2 = nouveau conteneur (); Con2.SetLayout (new BorderLayout ()); CON2.ADD (CON1 [0], BorderLayout.North); CON2.ADD (CON1 [1], BorderLayout.Center); CON2.ADD (CON1 [2], BorderLayout.South); Conteneur con3 = nouveau conteneur (); con3.SetLayout (new BorderLayout ()); CON3.ADD (CON1 [3], BorderLayout.North); CON3.ADD (CON1 [4], BorderLayout.Center); Con3.Add (Con1 [5], BorderLayout.South); Conteneur con4 = nouveau conteneur (); con4.SetLayout (new FlowLayout ()); CON4.ADD (SUMEBUT); CON4.Add (CancelBut); Conteneur con5 = nouveau conteneur (); con5.SetLayout (new BorderLayout ()); CON5.ADD (CON2, BorderLayout.north); CON5.ADD (CON3, BorderLayout.Center); CON5.ADD (CON4, BorderLayout.South); this.add (con5, borderlayout.center); this.validate (); this.setVisible (true); } public void setValue () {this.booknumText.seTText ((String) bookModel.getValueat (Rownum, 0)); this.bookNumText.SetEdIT (false); this.BookNameText.SetText ((String) bookModel.getValueat (Rownum, 1)); this.bookwriterText.setText ((String) bookModel.getValueat (Rownum, 2)); this.bookPublishText.setText ((String) bookModel.getValueat (Rownum, 3)); this.booktimeText.seTText ((String) bookModel.getValueat (Rownum, 4)); this.bookpriseText.seTText ((String) bookModel.getValueat (Rownum, 5)); this.validate (); } @Override public void ActionPerformed (ActionEvent e) {// System.out.println (bookpriceText.getText ()); // TODO Méthode générée automatiquement Stume if (e.getsource () == soumitBut) {if (bookNumText.getText (). Equals ("") || booknamExt.getText (). Equals ("") || bookWriterText.getText (). BookPublishText.getText (). Box ", jOptionPane.Yes_No_Option); if (n == joptionpane.yes_option) {String sql =" update book_info set book_name = '"+ booknameText.getText () +"', book_writer = '"+ bookWriterText.getText () +"', publish_house = '"+ bookPublishText.getText () +"', book_price = '"+ bookprisext.getText () +"', publih_time = '"+ booktimeText.getText () +"' where book_num = '"+ bookNumtext.gettext () +" "; BookTableModel (); book.addbook (sql);} catch (sqlexception e1) {// TODO GÉNÉRATEUR BLOC DE CATTER E1.PRINTSTACKTRACE (); } JOptionPane.showMessageDialog (this, "Modification a réussi", "invite", joptionpane.plain_message); this.setVisible (false); } else if (n == joptionpane.no_option) {return; }}} if (e.getSource () == CancelBut) {this.setVisible (false); }}}} Résultats du programme en cours d'exécution:
Interface principale:
Interface de requête:
Ajouter une interface de livre:
Modifiez l'interface:
Supprimer l'opération:
Interface de la base de données:
Pour plus d'informations sur le système de gestion, veuillez cliquer sur "Sujet spécial du système de gestion" pour apprendre
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.