El propósito de este artículo es dominar la tecnología de programación de la base de datos a través del sistema de administración de la biblioteca, poder conectarse correctamente a la base de datos y poder consultar, insertar, eliminar y modificar la información en la base de datos.
Contenido: cree una tabla de información bibliográfica en la base de datos, incluido el título, el autor, la editorial, la fecha de publicación, el número de libros y los campos de precios. Diseñe una interfaz GUI para la gestión de la bibliografía. Hay cuatro pestañas en esta interfaz, a saber, consultar, insertar, eliminar y modificar. Haga clic en la pestaña de consulta, y la interfaz que aparece incluye cuatro cuadros de texto: título del libro, autor, editor, número de libro, un botón y un área de texto de solo lectura. El contenido del cuadro de texto puede estar vacío. Después de ingresar la información de consulta correspondiente (por ejemplo, solo puede ingresar el título de acuerdo con el título del libro), haga clic en el botón "Consulta" en la interfaz para mostrar la información detallada de la bibliografía que cumple con los criterios en el área de texto debajo de la interfaz. Haga clic en la pestaña Insertar, y la interfaz que aparece incluirá el título del libro, el autor, la editorial, la fecha de publicación, el número de libro, el cuadro de texto de precio y un botón. Después de ingresar información en el cuadro de texto, haga clic en el botón "Insertar" y la información bibliográfica se inserta en la tabla de la base de datos. Haga clic en la pestaña Eliminar. Hay un cuadro de texto para el título y un botón en la interfaz que aparece. Después de ingresar el título, haga clic en el botón "Eliminar". La información bibliográfica se elimina de la tabla de la base de datos. Haga clic en la pestaña Modificar, y la interfaz que aparece incluye el título del libro, el autor, la editorial, la fecha de publicación, el número de libro, el cuadro de texto de precio y un botón. El título del libro ingresado debe existir, de lo contrario, aparecerá un cuadro de mensaje y mostrará un mensaje de error. Después de ingresar la información, haga clic en el botón "Modificar", y la información bibliográfica correspondiente en la tabla de la base de datos se modifica al nuevo valor.
Código fuente:
Bookinfo.java
* Nombre del proyecto: Sistema de gestión de libros * Versión: 1.0 * Creador: Zhang Junqiang * Tiempo de creación: 2016/5/26 * */paquete de biblioteca; import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.sql.*; @SupessWarnings ("Serial") Public Class BookInfo extiende Jframe implementos ActionListener {// Control sobre el protagonista Face private Jlabel InputLabel; Private JTextfield InputText; JBUTTON PRIVADO JBUTTON BUSTBUT; Booktable privado Jtable; Privado JSCrollPane Bookscroll; JBUTTON PRIVADO ADDBUT; Private JButton ModifyBut; Privado JButton DeleteBut; privado jbutton refreshBut; privado booktableModel booktableModel; public static void main (string [] args) lanza SQLException {// TODO Método Generado automático bookInfo bookInfo = new BookInfo (); bookInfo.setDefaultCloseOperation (jframe.exit_on_close); bookInfo.setBounds (350, 150, 600, 400); bookInfo.setVisible (verdadero); // bookInfo.importsql (); // Exportar datos bookinfo.setminwindowlayout (); // establecer datos} public bookInfo () lanza SQLException {// Cree el control en la interfaz principal inputLabel = new JLabel ("por favor ingrese el título del libro:"); inputText = new JTextField (10); SearchBut = new JButton ("Query"); booktableModel = new BooktableModel (); booktable = new JTable (booktableModel); bookscroll = new JScrollPane (Booktable); addBut = new JButton ("agregar"); modifyBut = new JButton ("Modify"); deleteBut = new JButton ("Eliminar"); refreshBut = new JButton ("actualizar"); SearchBut.AddactionListener (this); addBut.AddactionListener (esto); refreshBut.AddactionListener (esto); ModifyBut.AdDactionListener (this); deleteBut.AddactionListener (this); } void setminwindowlayout () {// Container de diseño de interfaz principal con1 = new Container (); con1.setLayout (new FlowLayout ()); con1.add (inputLabel); con1.add (inputText); con1.add (SearchBut); con1.add (refreshBut); Contenedor con2 = nuevo contenedor (); 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 Auto Generado STUB if (e.getSource () == searchBut) {if (! This.inputText.getText (). Equals ("")) {String BookName = this.inputText.getText (); Cadena sql = "select * de book_info donde book_name = '"+bookName+"'"; intente {booktableModel = new BooktableModel (SQL); booktable.setModel (booktableModel); } Catch (SQLException e1) {// TODO Auto Generado Bloque E1.PrintStackTrace (); }} else {joptionPane.ShowMessEdialog (esta "entrada no puede estar vacía", "indicador", jOptionPane.Plain_Message); }} else if (e.getSource () == addBut) {@SupplesSwarnings ("sin usar") addBookDialog addwin = new AddBookDialog (this, "Agregar libro", verdadero); 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.ShowMessEdialog (esto, "no seleccionado", "TIP", JOptionPane.Plain_Message); } else {//system.out.print(bookName); int n = joptionPane.ShowConfirmDialog (nulo, "¿Confirmar la deleción?", "Confirmar el cuadro de deleción", JoptionPane.Yes_No_Option); if (n == JOptionPane.Yes_Option) {String BookNum = (String) BookTable.getValueat (ROWNUM, 0); Cadena sql = "eliminar de book_info donde book_num = '"+booknum+"'"; booktableModel.DeleteBook (SQL); this.RefreshTable (); JOpttionPane.ShowMessEdialog (esto, "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.ShowMessEdialog (this, "Uncheck", "Streming", JoptionPane.Plain_Message); } else {@SupessWarnings ("no usado") ModifyBook ModifyWin = new ModifyBook (this, "Modify Information", True, BooktableModel, ROWNUM); this.RefreshTable (); }}} public void RefreshTable () {booktableModel Searchbook; Pruebe {Searchbook = new BooktableModel ("Seleccionar * de Book_info"); booktable.setModel (Searchbook); booktableModel = Searchbook; } Catch (SQLException e1) {// TODO Auto Generado Bloque E1.PrintStackTrace (); }}} BooktableModel.java
paquete de bibliotecas; import java.sql.*; import java.util.*; /** Modelo de tabla de libros**/ import javax.swing.table.*; @SupessWarnings ("Serial") clase pública BookTableModel extiende AbstractTableModel {// Elementos de la tabla Vector privado <vector <tring>> RowData; Vector privado <String> colname; // Base de datos Private PrepareStatement stmt; Resultado privado del conjunto de resultados; public booktableModel (String SQL) lanza SQLException {this.initData (sql); } public booktableModel () lanza sqlexception {this.initdata ("select * de book_info"); } public void initData (String sql) lanza SQLException {setRowData (new Vector <vector <string>> ()); setColName (new Vector <String> ()); getColName (). ADD ("Libro No."); getColName (). ADD ("Título del libro"); getColName (). ADD ("Título del libro"); getColName (). add ("autor"); getColName (). Add ("Publisher"); getColName (). add ("tiempo de publicación"); getColName (). add ("precio"); / * * Importación de la base de datos * */ try {class.forname ("com.mysql.jdbc.driver"); } Catch (ClassNotFoundException e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } String url = "jdbc: mysql: // localhost: 3306/dispositivo"; String user = "root"; Cadena contraseña = "ZJQ1314520"; Conexión con = drivermanager.getConnection (url, usuario, contraseña); stmt = con.preparestatement (SQL); resultado = stmt.executeQuery (); importsql (); } void importsql () lanza SQLException {// TODO Auto Generado Método stub @SupplesSwarnings ("no usado") boolean signnull = true; while (result.next ()) {vector <string> item = new Vector <String> (); para (int i = 1; i <7; i ++) {item.add (result.getString (i)); } getrowData (). add (elemento); signnull = false; } resultado.close (); } @Override public int getColumnCount () {// Obtenga el número de columnas // TODO Método Generado automático Devuelve this.colname.size (); } @Override public int getRowCount () {// Obtenga el número de filas // TODO Método Generado automático Devuelve this.rowData.size (); } @Override public int getRowCount () {// Obtenga el número de filas // TODO Método Generado automático Devuelve this.rowData.size (); } @Override Public Object getValueat (int fila, int col) {// Obtener datos de una fila y una columna // return de múltiple de método automático (this.rowdata.get (fila)). Get (col); } @Override public String getColumnName (int columna) {// toDO método generado automático return this.colname.get (columna); } public vector <vector <string>> getrowData () {return rowData; } public void setrowData (vector <vector <tring>> rowData) {this.rowData = RowData; } public vector <string> getColName () {return colname; } public void setColName (vector <tring> colname) {this.colname = colname; } public void addbook (string sql) {try {stmt.executeupdate (sql); } Catch (Sqlexception e) {// TODO BLOCK AUTO GENERADO E.PRINTSTACKTRACE (); } // initData ("Seleccionar * de Book_info"); } public void DeleteBook (String SQL) {try {stmt.executeUpdate (sql); } Catch (SQLException e1) {// TODO Auto Generado Bloque E1.PrintStackTrace (); }}} Addbookdialog.java
paquete de bibliotecas; import java.awt.*; import java.awt.event.*; import java.sql.sqlexception; import javax.swing.*; @SupessWarnings ("Serial") clase pública addBookDialog extiende jdialog implementos actionListener {private jlabel booknumlabel; Privado Jlabel Booknamelabel; Privado Jlabel BookwriterLabel; Privado Jlabel BookPublishLabel; Privado Jlabel BookPricelabel; Privado Jlabel BookTimelabel; privado jtextfield bookNumText; Private JTextfield BooknameText; Private JTextfield BookWriterteText; privado jtextfield bookPublishText; Private JTextfield BookPricTextext; Private JTextfield BookTimetext; JBUTTON PRIVADO JBUTTON BUTBUT; Jbutton privado Cancelbut; public addbookdialog (propietario de marco, título de cadena, modelo booleano) {// La ventana principal, nombre de la ventana, es una ventana de modo super (propietario, título, modelo); bookNumLabel = new JLabel ("Número de libro:"); booknamElabel = new JLabel ("Título del libro:"); bookwriterLabel = new JLabel ("Autor:"); bookPublishLabel = new JLabel ("Publisher:"); bookPricelabel = new JLabel ("Price:"); booktimelabel = new JLabel ("Publishing Time:"); bookNumText = new JTextfield (10); booknameText = new JTextfield (10); bookWritertext = new JTextfield (10); bookPublishText = new JTextfield (10); bookpricetExt = new JTextfield (10); bookTimetext = new JTextfield (9); SubtBut = new JButton ("Cancelar"); cancelBut = new JButton ("Cancelar"); SubtBut.AddactionListener (esto); cancelBut.AddactionListener (esto); this.setBounds (350,150,400,260); this.setResizable (falso); this.setLayout (new BorderLayout ()); initLayout (); } public void initLayout () {contenedor [] con1 = nuevo contenedor [6]; para (int i = 0; i <6; i ++) con1 [i] = new Container (); 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 (BookPricetExtext); con1 [5] .setLayout (new FlowLayout ()); Con1 [5] .add (BookTimelabel); con1 [5] .add (booktimettext); Contenedor con2 = nuevo contenedor (); con2.setLayout (new BorderLayout ()); con2.Add (Con1 [0], BorderLayout.north); con2.Add (Con1 [1], BorderLayout.Center); con2.Add (Con1 [2], BorderLayout.South); Contenedor con3 = nuevo contenedor (); con3.setLayout (new BorderLayout ()); con3.add (Con1 [3], BorderLayout.north); con3.add (Con1 [4], borderLayout.center); con3.add (Con1 [5], BorderLayout.South); Contenedor con4 = nuevo contenedor (); con4.setLayout (new FlowLayout ()); con4.Add (SubtBut); con4.add (cancelBut); Contenedor con5 = nuevo contenedor (); 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 (verdadero); } @Override public void ActionperFormed (ActionEvent E) {// TODO Auto Generated Method Stub if (e.getSource () == SubtBut) {if (bookNumText.getText (). Equals ("") || BookNextext.GetText (). Equals ("") || bookPricetExt.gettext (). Equals ("") || JOpttionPane.ShowMessEdialog (esto, "La entrada no puede estar vacía", "inmediato", JOptionPane.Plain_Message); } else {//system.out.println("input exitoso "); String sql = "insertar en" + "book_info (book_num, book_name, book_writer, publish_house, book_price, publish_time)" + "valores ('"+booknumText.gettext ()+"', '"+booknamettext.gettext ()+"', '"+bookwriteText.gettext ()+"', '"+bookpublishText.getText ()+"', '+bookPricText.gettext ()+" "" BooktableModel book = new BookTableModel (); }} if (e.getSource () == CancelBut) {this.setVisible (falso); Modifybook.java
paquete de bibliotecas; import java.awt.*; import java.awt.event.*; import java.sql.sqlexception; import javax.swing.*; @SupessWarnings ("Serial") Modifybook de clase pública extiende jdialog implementos actionListener {private jlabel bookNumLabel; Privado Jlabel Booknamelabel; Privado Jlabel BookwriterLabel; Privado Jlabel BookPublishLabel; Privado Jlabel BookPricelabel; Privado Jlabel BookTimelabel; privado jtextfield bookNumText; Private JTextfield BooknameText; Private JTextfield BookWriterteText; privado jtextfield bookPublishText; Private JTextfield BookPricTextext; Private JTextfield BookTimetext; JBUTTON PRIVADO JBUTTON BUTBUT; Jbutton privado Cancelbut; booktableModel privado bookmodel; Private int Rownum; Public ModifyBook (propietario de cuadro, título de cadena, tipo booleano, modelo booktableModel, int row) {super (propietario, título, tipo); bookmodel = modelo; Rownum = fila; bookNumLabel = new JLabel ("Número de libro:"); booknamElabel = new JLabel ("Título del libro:"); bookwriterLabel = new JLabel ("Autor:"); bookPublishLabel = new JLabel ("Publisher:"); bookPricelabel = new JLabel ("Price:"); booktimelabel = new JLabel ("Publishing Time:"); bookNumText = new JTextfield (10); booknameText = new JTextfield (10); bookWritertext = new JTextfield (10); bookPublishText = new JTextfield (10); bookpricetExt = new JTextfield (10); bookTimetext = new JTextfield (9); SubtBut = new JButton ("Confirmar modificación"); cancelBut = new JButton ("Cancelar"); SubtBut.AddactionListener (esto); cancelBut.AddactionListener (esto); this.setBounds (350,150,400,260); this.setResizable (falso); this.setLayout (new BorderLayout ()); this.setValue (); this.initLayout (); } public void initLayout () {contenedor [] con1 = nuevo contenedor [6]; para (int i = 0; i <6; i ++) con1 [i] = new Container (); 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 (BookPricetExtext); con1 [5] .setLayout (new FlowLayout ()); Con1 [5] .add (BookTimelabel); con1 [5] .add (booktimettext); Contenedor con2 = nuevo contenedor (); con2.setLayout (new BorderLayout ()); con2.Add (Con1 [0], BorderLayout.north); con2.Add (Con1 [1], BorderLayout.Center); con2.Add (Con1 [2], BorderLayout.South); Contenedor con3 = nuevo contenedor (); con3.setLayout (new BorderLayout ()); con3.add (Con1 [3], BorderLayout.north); con3.add (Con1 [4], borderLayout.center); con3.add (Con1 [5], BorderLayout.South); Contenedor con4 = nuevo contenedor (); con4.setLayout (new FlowLayout ()); con4.Add (SubtBut); con4.add (cancelBut); Contenedor con5 = nuevo contenedor (); 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 (verdadero); } public void setValue () {this.bookNumText.setText (((string) bookModel.getValueat (Rownum, 0)); this.BookNumText.setEditable (falso); this.booknametext.settext ((string) bookModel.getValueat (Rownum, 1)); this.bookWriteText.setText ((String) bookModel.getValueat (Rownum, 2)); this.bookPublishText.settext ((String) bookModel.getValueat (Rownum, 3)); this.booktimeText.settext ((String) bookModel.getValueat (Rownum, 4)); this.bookpricetext.setText ((String) bookModel.getValueat (Rownum, 5)); this.Validate (); } @Override public void ActionPerformed (ActionEvent E) {// System.out.println (bookPricetExt.gettext ()); // TODO Auto Generado Método STUB if (e.getSource () == SubmitBut) {if (bookNumText.GetText (). Equals ("") || booknamettext.gettext (). Equals ("") || bookwritext.getText (). Equals ("") || bookwrittext.gettext (). Equals ("") "). BookPublishText.gettext (). Equals ("") || "Confirmar el cuadro de modificación", joptionPane.yes_no_option); '"+bookWriteText.gettext ()+"', publish_house = '"+bookPublishText.gettext ()+"', book_price = '"+bookpricetExtext.gettext ()+"', publish_time = '"+booktimettext.gettext ()+" where book_num = "+booknumtext.gettext () BooktableModel book = new BookTableModel (); } JOpttionPane.ShowMessEdialog (esto, "modificación sucedió", "indicador", joptionPane.plain_message); this.setVisible (falso); } else if (n == joptionPane.no_option) {return; }}} if (e.getSource () == CancelBut) {this.setVisible (false); }}}} Programa de ejecución de resultados:
Interfaz principal:
Interfaz de consulta:
Agregue una interfaz de libro:
Modificar la interfaz:
Operación de eliminación:
Interfaz de la base de datos:
Para obtener más información sobre el sistema de gestión, haga clic en "Tema especial del sistema de gestión" para aprender
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.