Estoy aprendiendo Java y Base de datos recientemente. Recuerdo el sistema de gestión de estudiantes que escribí antes, que se descargó de Internet y era superficial. No tenía nada que hacer, así que escribí uno yo mismo, pero las funciones no implementaron muchas funciones.
Lenguaje de desarrollo: Java; Entorno de desarrollo: MySQL, Java; Herramientas de desarrollo: eclipse
Para desarrollar este caso, primero debe tener el entorno de desarrollo de Java y MySQL en la computadora, el entorno de desarrollo Java y la construcción de MySQL, por lo que ya no lo describiré. Si lo necesita, comuníquese conmigo con la siguiente información de contacto: [email protected]
El sistema es relativamente simple esta vez: solo hay una tabla en la base de datos: Stu; Función: puede agregar, eliminar y modificar a los estudiantes.
Pasos de desarrollo:
1. Crear tablas en la base de datos:
Crear tabla stu (stuid string, stuname string, stusex string, stuage int, stujg string, studept sring);
2. El código Java consta principalmente de cuatro clases:
Test3 contiene la función principal; Stumodel se usa para actualizar y renderizar la base de datos; Stuadddiag se usa para agregar funciones del lector; Stuupdiag se utiliza para modificar la información del estudiante. El código específico es el siguiente:
Test3.java:
import javax.swing.*; import java.util.*; import java.awt.*; import java.awt.event.*; import java.sql.connection; import java.sql.driver; import java.sql.drivermaner; import java.sql.preparedstatement; import java.sqlet; java.sql.statement; public class test3 extiende jframe implementa actionListener {// Definir algunos controles jpanel jp1, jp2; Jlabel JL1, JL2; JButton JB1, JB2, JB3, JB4; JTable JT; JScrollPane JSP; JTextfield JTF; Stumodel SM; // Defina la instrucción variable stat = null; Preparado PS; Conexión ct = nulo; ResultSet rs = null; public static void main (string [] args) {test3 test3 = new test3 (); } // constructor public test3 () {jp1 = new JPanel (); jtf = new JTextfield (10); jb1 = nuevo JButton ("consulta"); JB1.AddactionListener (esto); jl1 = new JLabel ("Por favor ingrese el nombre:"); JP1.Add (JL1); JP1.Add (JTF); JP1.Add (JB1); jb2 = nuevo JButton ("agregar"); jb2.addactionListener (esto); jb3 = new JButton ("Modify"); jb3.addactionListener (esto); jb4 = nuevo JButton ("Eliminar"); jb4.AddactionListener (esto); jp2 = new JPanel (); JP2.Add (JB2); JP2.Add (JB3); JP2.Add (JB4); // Crear objeto modelo SM = new stumodel (); // Inicializar JT = nuevo JTable (SM); jsp = new JScrollPane (JT); // poner jsp en jframe this.add (jsp); this.add (JP1, "Norte"); this.add (JP2, "Sur"); this.setsize (600, 400); //this.setLocation(300, 200); this.setDefaultCloseOperation (EXIT_ON_CLOSE); this.setVisible (verdadero); } public void ActionPerformed (ActionEvent Arg0) {// Determine en qué botón se hace clic en (arg0.getSource () == JB1) {System.out.println ("El usuario quiere ser consulta ..."); // Debido a que los datos de la tabla están encapsulados en Stumodel, es más fácil completar el nombre de la cadena de consulta = this.jtf.gettext (). Trim (); // Escribe una cadena de instrucción SQL sql = "Seleccionar * de stu donde stuname = '"+nombre+"'"; // crea una clase de modelo de datos y actualiza SM = nuevo Stumodel (SQL); // actualizar JTable JT.SetModel (SM); } // 1. Explique la interfaz Agregar más if (arg0.getSource () == jb2) {system.out.println ("agregar ..."); Stuadddiag sa = new stuadddiag (esto, "Agregar alumno", verdadero); // Obtener nuevo modelo de datos nuevamente, SM = new Stumodel (); JT.SetModel (SM); } else if (arg0.getSource () == jb4) {// 2. Elimine el registro // 1. Obtenga la identificación del estudiante int ROWNUM = this.jt.getSelectedRow (); // getSelectedRow volverá a la fila en el punto de usuario // si el usuario no tiene fila seleccionada, return -1 if (rownum == -1) {// solicite joptionPane.showMessEdialog (this, "Seleccione una fila"); devolver ; } // Obtenga la cadena de identificación académica stuid = (string) sm.getValueat (Rownum, 0); System.out.println ("id:"+stuid); // Conecte la base de datos y complete la tarea de eliminación Try {// 1. Cargar el controlador class.forname ("com.mysql.jdbc.driver"); // 2. Conéctese a la cadena de la base de datos url = "jdbc: mysql: // localhost: 3306/spdb1"; String user = "root"; Cadena passwd = "lfdy"; ct = drivermanager.getConnection (url, usuario, passwd); System.out.println ("conexión exitosa"); ps = ct.preparestatement ("Eliminar de stu donde stuid =?"); Ps.Setstring (1, Stuid); Ps.ExecuteUpdate (); } catch (Exception e) {E.PrintStackTrace (); } finalmente {try {if (rs! = null) {rs.close (); rs = nulo; } if (ps! = null) {ps.close (); ps = nulo; } if (ct! = null) {ct.close (); ct = nulo; }} catch (Exception e) {E.PrintStackTrace (); }} sm = new stumodel (); // actualizar JTable JT.SetModel (SM); } else if (arg0.getSource () == jb3) {System.out.println ("11111"); // 3. Los usuarios quieren modificar int ROWNUM = this.jt.getSelectedRow (); if (ROWNUM == -1) {// indicar joptionPane.ShowMessEdialog (esto, "Seleccione una fila"); devolver ; } // show dialog system.out.println ("12435"); Stuupdiag su = new stuupdiag (esto, "modificar académico", verdadero, sm, rownum); sm = nuevo stumodel (); JT.SetModel (SM); }}}Stumodel.java:
/** Este es mi modelo de tabla STU* Puede encapsular todas las operaciones en las tablas de estudiantes en esta clase*/paquete com.test2; import java.sql.connection; import java.sql.divermanager; import java.sql.resultset; import java.sql.statement; import java.util.vector; import javax. Stumodel extiende AbstractTableModel {// Rowdata Stores Stura Fow Data, Columnnames almacena nombres de columnas RowData, columnnames; // Definir la estadística de instrucción variable que se conecta a la base de datos = nulo; Conexión ct = nulo; ResultSet rs = null; // Inicializar public void init (string sql) {if (sql.equals ("")) {sql = "select * from stu"; } // intermedio // establecer nombre de columna columnNames = new Vector (); columnNames.Add ("Número de escuela"); columnNames.add ("nombre"); columnNames.Add ("género"); columnNames.add ("edad"); columnNames.add ("nombre"); columnNames.add ("nombre"); columnNames.add ("nombre"); columnNames.Add ("secta"); // RowData almacena varias filas RowData = new Vector (); Prueba {// 1. Cargar controlador class.forname ("com.mysql.jdbc.driver"); System.out.println ("Cargando correctamente"); // 2. Conéctese a la base de datos // defina varias constantes cadena url = "jdbc: mysql: // localhost: 3306/spdb1"; String user = "root"; Cadena passwd = "lfdy"; ct = drivermanager.getConnection (url, usuario, passwd); stat = ct.createStatement (); // Crear objeto STAT rs = stat.executeQuery (sql); // resultado de consulta while (rs.next ()) {vector hang = new vector (); hang.add (rs.getString (1)); hang.add (rs.getString (2)); hang.add (rs.getString (3)); hang.add (rs.getInt (4)); hang.add (rs.getString (5)); hang.add (rs.getString (6)); // Agregar a RowData.add (Hang); }} catch (Exception e) {E.PrintStackTrace (); } finalmente {try {if (rs! = null) {rs.close (); rs = nulo; } if (stat! = null) {stat.close (); stat = nulo; } if (ct! = null) {ct.close (); ct = nulo; }} catch (Exception e) {E.PrintStackTrace (); }}} // Agregar función de estudiante public void addStu (String sql) {// Finalizar la tarea de adición basada en la instrucción SQL ingresada por el usuario} // El segundo constructor obtiene el modelo de datos a través de la declaración SQL SQL Stumodel (String SQL) {this.init (sql); } // constructor, utilizado para inicializar mi modelo de datos (tabla) public stumodel () {this.init (""); } // Obtenga cuántas filas hay int getrowCount () {// toDo Método generado por auto retorno this.rowdata.size (); } // Obtenga cuántas columnas hay int getColumnCount () {// TODO Método Generado Auto Generado return this.columnnames.size (); } // Obtener datos de una fila y una columna Public Object getValueat (int row, int columna) {// tODO return de múltiple método automático (vector) (this.rowdata.get (fila))). Get (columna); } // Obtenga el nombre de atributo public String getColumnName (int columna) {// tODO Método Generado automático return (string) this.columnnames.get (columna); }}Stuadddiag.java:
paquete com.test2; import javax.swing.jdialog; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.actionListener; import java.sql.statement; import java.sql.cona; import java.sql.drivermanager; import java.sql.stet; java.sql.*; clase pública stuadddiag extiende jdialog implementa actionListener {// Defina el componente de swing. Necesito jlabel jl1, jl2, jl3, jl4, jl5, jl6; JTextfield JF1, JF2, JF3, JF4, JF5, JF6; JPanel JP1, JP2, JP3; JButton JB1, JB2; // La ventana principal del propietario de Ghostwriter, el título es el nombre de la ventana, Modal especifica que es una ventana de patrón () o una ventana sin modo Public stuadddiag (propietario de marco, título de cadena, modal booleano) {// llamando a la clase principal del método Super (propietario, título, modal); jl1 = new JLabel ("Número de estudio"); jl2 = new JLabel ("Nombre"); jl3 = new JLabel ("género"); jl4 = new JLabel ("edad"); jl5 = new JLabel ("Inicio"); jl6 = new JLabel ("Sect"); jf1 = new JTextfield (10); jf2 = new JTextfield (10); jf3 = new JTextfield (10); jf4 = new JTextfield (10); jf5 = new JTextfield (10); jf6 = new JTextfield (10); jb1 = nuevo JButton ("agregar"); JB1.AddactionListener (esto); JB2 = nuevo JButton ("Cancelar"); jp1 = new JPanel (); jp2 = new JPanel (); jp3 = new JPanel (); // establecer el diseño JP1.SetLayout (nuevo GridLayout (6,1)); jp2.setLayout (nuevo GridLayout (6,1)); JP3.Add (JB1); JP3.Add (JB2); JP1.Add (JL1); JP1.Add (JL2); JP1.Add (JL3); JP1.Add (JL4); JP1.Add (JL5); JP1.Add (JL6); JP2.Add (JF1); JP2.Add (JF2); JP2.Add (JF3); JP2.Add (JF4); JP2.Add (JF5); JP2.Add (JF6); this.Add (JP1, BorderLayout.West); this.add (JP2, BorderLayout.Center); this.add (JP3, BorderLayout.South); this.setsize (300,200); this.setVisible (verdadero); } @Override public Void ActionPerformed (ActionEvent E) {// TODO STUB de método generado automático if (e.getSource () == JB1) {Connection ct = null; Preparado PSTMT = NULL; ResultSet rs = null; Prueba {// 1. Cargar controlador class.forname ("com.mysql.jdbc.driver"); System.out.println ("Cargado con éxito"); // 2. Conéctese a la base de datos // defina varias constantes cadena url = "jdbc: mysql: // localhost: 3306/spdb1"; String user = "root"; Cadena passwd = "lfdy"; ct = drivermanager.getConnection (url, usuario, passwd); // Declaración compilada Cadena de objeto strsql = "Insertar en valores STU (?,?,?,?,?,?)"; pstmt = ct.preparestatement (strsql); // Asignar el objeto pstmt.setString (1, jf1.gettext ()); pstmt.setString (2, jf2.gettext ()); pstmt.setString (3, jf3.gettext ()); pstmt.setString (4, jf4.gettext ()); pstmt.setString (5, jf5.gettext ()); pstmt.setString (6, jf6.gettext ()); pstmt.executeUpdate (); this.Dispose (); // Cerrar el diálogo del estudiante} Catch (excepción arg1) {arg1.printstackTrace (); } finalmente {try {if (rs! = null) {rs.close (); rs = nulo; } if (pstmt! = null) {pstmt.close (); pstmt = nulo; } if (ct! = null) {ct.close (); ct = nulo; }} catch (excepción arg2) {arg2.printstackTrace (); }}}}}}Stuupdiag.java:
paquete com.test2;/** modificar a los estudiantes*/import javax.swing.jdialog; import javax.swing.*; import java.awt.event.actionEvent; import java.awt.event.actionListener; import java.sql.statement; import java.sql.connection; import java.sql.driverManager; importar; importación; importación; importación; importación; importación; import java.sql.ResultSet; import java.sql.sql.*; public class stuupdiag extiende jdialog implementa actionListener {// Definir el componente de swing que necesito jlabel jl1, jl2, jl3, jl4, jl5, jl6; JTextfield JF1, JF2, JF3, JF4, JF5, JF6; JPanel JP1, JP2, JP3; JButton JB1, JB2; // La ventana Pen-in-the-Parent de propietario, el título es el nombre de la ventana, Modal especifica que es una ventana de modo () o una ventana no en modo Moder StuUpdiag (propietario de cuadro, título de cadena, modal booleano, stumodel sm, int rownum) {// llamando a un método de clase principal (propietario, título, modal); jl1 = new JLabel ("Número de estudiante"); jl2 = new JLabel ("Nombre"); jl3 = new JLabel ("género"); jl4 = new JLabel ("edad"); jl5 = new JLabel ("Nombre"); jl6 = new JLabel ("Sección"); jf1 = new JTextfield (10); JF1.Settext ((SM.GetValueat (Rownum, 0)). ToString ()); jf2 = new JTextfield (10); jf2.settext ((string) sm.getValueat (Rownum, 1)); jf3 = new JTextfield (10); jf3.settext (sm.getValueat (Rownum, 2) .ToString ()); jf4 = new JTextfield (10); jf4.settext ((sm.getValueat (Rownum, 3)). ToString ()); jf5 = new JTextfield (10); Jf5.Settext ((String) Sm.getValueat (Rownum, 4)); jf6 = new JTextfield (10); Jf6.settext ((String) Sm.getValueat (Rownum, 5)); jb1 = nuevo JButton ("modificar"); JB1.AddactionListener (esto); JB2 = nuevo JButton ("Cancelar"); jp1 = new JPanel (); jp2 = new JPanel (); jp3 = new JPanel (); // establecer el diseño JP1.SetLayout (nuevo GridLayout (6,1)); jp2.setLayout (nuevo GridLayout (6,1)); JP3.Add (JB1); JP3.Add (JB2); JP1.Add (JL1); JP1.Add (JL2); JP1.Add (JL3); JP1.Add (JL4); JP1.Add (JL5); JP1.Add (JL6); JP2.Add (JF1); JP2.Add (JF2); JP2.Add (JF3); JP2.Add (JF4); JP2.Add (JF5); JP2.Add (JF6); this.Add (JP1, BorderLayout.West); this.add (JP2, BorderLayout.Center); this.add (JP3, BorderLayout.South); this.setsize (300,200); this.setVisible (verdadero); } @Override public Void ActionPerformed (ActionEvent E) {// TODO STUB de método generado automático if (e.getSource () == JB1) {Connection ct = null; Preparado PSTMT = NULL; ResultSet rs = null; Prueba {// 1. Cargar controlador class.forname ("com.mysql.jdbc.driver"); System.out.println ("Cargado con éxito"); // 2. Conéctese a la base de datos // defina varias constantes cadena url = "jdbc: mysql: // localhost: 3306/spdb1"; String user = "root"; Cadena passwd = "lfdy"; ct = drivermanager.getConnection (url, usuario, passwd); // Declaración compilada Cadena de objeto strsql = "Insertar en valores STU (?,?,?,?,?,?)"; pstmt = ct.preparestatement (strsql); // Asignar el objeto pstmt.setString (1, jf1.gettext ()); pstmt.setString (2, jf2.gettext ()); pstmt.setString (3, jf3.gettext ()); pstmt.setString (4, jf4.gettext ()); pstmt.setString (5, jf5.gettext ()); pstmt.setString (6, jf6.gettext ()); pstmt.executeUpdate (); this.Dispose (); // Cerrar el diálogo del estudiante} Catch (excepción arg1) {arg1.printstackTrace (); } finalmente {try {if (rs! = null) {rs.close (); rs = nulo; } if (pstmt! = null) {pstmt.close (); pstmt = nulo; } if (ct! = null) {ct.close (); ct = nulo; }} catch (excepción arg2) {arg2.printstackTrace (); }}}}}}Resultados de desarrollo y prueba:
1. Interfaz principal del sistema:
2. Consulta por nombre:
3. Seleccione una línea y elimine:
4. Seleccione una línea para modificar:
5. Haga clic en el botón Agregar para agregar:
Este sistema continuará mejorando. Si tiene alguna pregunta o intercambio técnico, comuníquese conmigo: [email protected]
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.