J'apprends Java et la base de données récemment. Je me souviens du système de gestion des étudiants que j'ai écrite auparavant, qui a été téléchargé à partir d'Internet et a été superficiel. Je n'avais rien à faire, alors j'en ai écrit un moi-même, mais les fonctions n'ont pas implémenté beaucoup de fonctions.
Langue de développement: Java; Environnement de développement: MySQL, Java; Outils de développement: Eclipse
Pour développer ce cas, vous devez d'abord avoir l'environnement de développement Java et MySQL sur l'ordinateur, l'environnement de développement Java et la construction de MySQL, donc je ne le décrirai plus. Si vous en avez besoin, veuillez me contacter avec les coordonnées suivantes: [email protected]
Le système est relativement simple cette fois: il n'y a qu'une seule table dans la base de données: STU; Fonction: Peut ajouter, supprimer et modifier les étudiants.
Étapes de développement:
1. Créez des tables dans la base de données:
Créer une table Stu (String Stuid, chaîne étourdissante, chaîne Stusex, Stuage int, chaîne Stujg, Studept Sring);
2. Le code java se compose principalement de quatre classes:
Test3 contient la fonction principale; Stumodel est utilisé pour rafraîchir et rendre la base de données; Stuadddiag est utilisé pour ajouter des fonctions de lecture; Stuupdiag est utilisé pour modifier les informations des élèves. Le code spécifique est le suivant:
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.drivermanager; import java.sql.prepatedstamation; import java.sql.Reursset; java.sql.statement; Classe publique Test3 étend JFrame implémente ActionListener {// Définir certains contrôles jpanel jp1, jp2; JLabel JL1, JL2; JBUTTON JB1, JB2, JB3, JB4; JTable JT; Jscrollpane jsp; JTextfield JTF; Stumodel SM; // Définissez l'instruction variable stat = null; Préparetstatement PS; Connexion ct = null; ResultSet rs = null; public static void main (String [] args) {test3 test3 = new test3 (); } // Constructor public test3 () {jp1 = new JPanel (); jtf = new JTextField (10); JB1 = new JBUTTON ("Query"); jb1.addactionListener (this); jl1 = new JLabel ("Veuillez entrer le nom:"); jp1.add (jl1); jp1.add (jtf); JP1.Add (JB1); jb2 = new JButton ("add"); JB2.AddactionListener (this); jb3 = new JButton ("modifier"); JB3.AddactionListener (this); jb4 = new JButton ("Delete"); JB4.AddactionListener (this); jp2 = new JPanel (); JP2.Add (JB2); JP2.Add (JB3); JP2.Add (JB4); // Créer un objet modèle sm = new Stumodel (); // initialiser jt = new JTable (sm); jsp = new JscrollPane (jt); // met jsp dans jframe this.add (jsp); this.add (JP1, "North"); this.add (JP2, "Sud"); this.setSize (600, 400); //this.setLocation(300, 200); this.setDefaultCloseOperation (exit_on_close); this.setVisible (true); } public void ActionPerformed (ActionEvent Arg0) {// Déterminer quel bouton est cliqué si (arg0.getSource () == JB1) {System.out.println ("l'utilisateur veut être interrogé ..."); // Parce que les données de la table sont encapsulées dans Stumodel, il est plus facile de compléter le nom de chaîne de requête = this.jtf.getText (). Trim (); // Écrivez une chaîne d'instruction SQL SQL = "SELECT * FROM STU WHERE STOMAME = '" + NAME + "'"; // Créez une classe de modèle de données et mise à jour sm = new Stumodel (SQL); // Mette à jour JTable JT.SetModel (SM); } // 1. Apparaître l'interface ajouter else if (arg0.getsource () == jb2) {System.out.println ("add ..."); Stuadddiag sa = new Stuadddiag (ceci, "ajouter un étudiant", true); // Obtenez à nouveau un nouveau modèle de données, sm = new Stumodel (); JT.SetModel (SM); } else if (arg0.getsource () == JB4) {// 2. Supprimer l'enregistrement // 1. Obtenez l'étudiant id int Rownum = this.jt.getSelectedRow (); // getSelectedRow reviendra à la ligne dans le point utilisateur // Si l'utilisateur n'a pas de ligne sélectionnée, renvoie -1 if (rownum == -1) {// invite joptionpane.showMessageDialog (this, "s'il vous plaît sélectionnez une ligne"); retour ; } // Obtenez l'ID académique String Stuid = (String) sm.getValueat (Rownum, 0); System.out.println ("ID:" + Stuid); // Connectez la base de données et terminez la tâche de suppression essayez {// 1. Chargez le pilote class.forname ("com.mysql.jdbc.driver"); // 2. Connectez-vous à la chaîne de base de données url = "jdbc: mysql: // localhost: 3306 / spdb1"; String user = "root"; String passwd = "lfdy"; ct = driverManager.getConnection (URL, utilisateur, passwd); System.out.println ("Connexion réussie"); ps = ct.preparestatement ("Supprimer de Stu où Stuid =?"); PS.SetString (1, Stuide); ps.ExecuteUpdate (); } catch (exception e) {e.printStackTrace (); } enfin {try {if (rs! = null) {Rs.close (); rs = null; } if (ps! = null) {ps.close (); ps = null; } if (ct! = null) {ct.close (); ct = null; }} catch (exception e) {e.printStackTrace (); }} sm = new Stumodel (); // Mette à jour JTable JT.SetModel (SM); } else if (arg0.getsource () == JB3) {System.out.println ("11111"); // 3. Les utilisateurs souhaitent modifier int Rownum = this.jt.getSelectedRow (); if (rownum == -1) {// invite joptionpane.showMessageDialog (this, "Veuillez sélectionner une ligne"); retour ; } // Afficher la boîte de dialogue System.out.println ("12435"); Stuupdiag su = new Stuupdiag (ceci, "modifier académique", true, sm, rownum); sm = new Stumodel (); JT.SetModel (SM); }}}Stumodel.java:
/ * * Ceci est mon modèle de table STU * Vous pouvez encapsuler toutes les opérations sur les tables étudiants dans cette classe * / package com.test2; import java.sql.connection; import java.sql.driverManager; import java.sql.resulttset; import java.sql.statement; import java.util.vector; import javax.wing. Stumodel étend AbstractTableModel {// RowData Stores Data Row, ColumnNames Stores Noms de colonne Vector RowData, ColumnNames; // Définissez la statistique de l'instruction variable qui se connecte à la base de données = null; Connexion ct = null; ResultSet rs = null; // Initialize public void init (string sql) {if (sql.equals ("")) {sql = "select * from stu"; } // Intermediate // Set Colonne Nom ColumnNames = new Vector (); ColumnNames.Add ("Numéro d'école"); colmnNames.add ("name"); ColumnNames.Add ("Gender"); ColumnNames.Add ("Age"); colmnNames.add ("name"); colmnNames.add ("name"); colmnNames.add ("name"); colmnnames.add ("sect"); // RowData stocke plusieurs lignes RowData = new Vector (); essayez {// 1. Charge Driver class.forname ("com.mysql.jdbc.driver"); System.out.println ("Chargement avec succès"); // 2. Connectez-vous à la base de données // Définissez plusieurs constantes URL String = "JDBC: MySQL: // LocalHost: 3306 / SPDB1"; String user = "root"; String passwd = "lfdy"; ct = driverManager.getConnection (URL, utilisateur, passwd); stat = ct.createStatement (); // Créer des objets statistiques RS = stat.ExecuteQuery (SQL); // Result While 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)); // Ajouter à RowData.Add (Hang); }} catch (exception e) {e.printStackTrace (); } enfin {try {if (rs! = null) {Rs.close (); rs = null; } if (stat! = null) {stat.close (); stat = null; } if (ct! = null) {ct.close (); ct = null; }} catch (exception e) {e.printStackTrace (); }}} // Ajouter une fonction étudiante publique void addStu (String SQL) {// terminer la tâche d'addition basée sur l'instruction SQL entrée par l'utilisateur} // Le deuxième constructeur obtient le modèle de données via l'instruction SQL passée Stumodel (String SQL) {this.init (SQL); } // Constructeur, utilisé pour initialiser mon modèle de données (table) public stumodel () {this.init (""); } // Obtenez le nombre de lignes y a-t-il dans getrowCount () {// TODO Méthode générée automatiquement Stub return this.rowdata.size (); } // Obtenez le nombre de colonnes y a-t-il dans getColumnCount () {// TODO Méthode générée automatiquement } // Obtenez des données d'une ligne et d'un objet public colonne GetValueat (INT ROW, int colonne) {// TODO Méthode générée automatique Stub return ((vector) (this.rowdata.get (row))). Get (colonne); } // Obtenez le nom d'attribut public String getColumnName (int colonne) {// TODO Méthode générée automatique Stub return (String) this.columnNames.get (colonne); }}Stuadddiag.java:
Package 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.connection; import java.sql.drivermanageur; import java.sql.resset; Java.sql. *; La classe publique Stuadddiag étend JDialog implémente ActionListener {// Définir le composant swing I Besoin de JLabel JL1, JL2, JL3, JL4, JL5, JL6; Jtextfield JF1, JF2, JF3, JF4, JF5, JF6; Jpanel JP1, JP2, JP3; JBUTTON JB1, JB2; // Fenêtre parent de Ghostwriter propriétaire, le titre est le nom de la fenêtre, Modal spécifie qu'il s'agit d'une fenêtre de modèle () ou d'une fenêtre non modelle publique Stuadddiag (propriétaire de trame, titre de chaîne, booléen modal) {// appelant la méthode de la classe parentale Super (propriétaire, title, modal); jl1 = new JLabel ("numéro d'étude"); jl2 = new JLabel ("nom"); jl3 = new JLabel ("Gender"); jl4 = new JLabel ("âge"); jl5 = new JLabel ("home"); 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 = new JButton ("add"); jb1.addactionListener (this); jb2 = new JButton ("annuler"); jp1 = new JPanel (); jp2 = new JPanel (); jp3 = new JPanel (); // Définissez la mise en page jp1.setLayout (new GridLayout (6,1)); jp2.setLayout (new 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 (true); } @Override public void ActionPerformed (ActionEvent e) {// TODO Méthode générée automatiquement Stub if (e.getsource () == JB1) {connexion ct = null; Préparé Pstmt = null; ResultSet rs = null; essayez {// 1. Charge Driver class.forname ("com.mysql.jdbc.driver"); System.out.println ("chargé avec succès"); // 2. Connectez-vous à la base de données // Définissez plusieurs constantes URL String = "JDBC: MySQL: // LocalHost: 3306 / SPDB1"; String user = "root"; String passwd = "lfdy"; ct = driverManager.getConnection (URL, utilisateur, passwd); // compilé la chaîne d'objet de l'instruction strSql = "Insérer dans les valeurs Stu (?,?,?,?,?,?)"; pstmt = ct.preparestatement (strSQL); // Attribuez l'objet 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 (); // ferme la boîte de dialogue de l'élève} catch (exception arg1) {arg1.printStackTrace (); } enfin {try {if (rs! = null) {Rs.close (); rs = null; } if (pstmt! = null) {pstmt.close (); pstmt = null; } if (ct! = null) {ct.close (); ct = null; }} catch (exception arg2) {arg2.printStackTrace (); }}}}}}Stuupdiag.java:
Package com.test2; / * * Modifier les étudiants * / Importer 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.drivermanger; java.sql.resultSet; import java.sql.sql. *; classe publique Stuupdiag étend JDialog implémente ActionListener {// définir le composant swing dont j'ai besoin jLabel jl1, jl2, jl3, jl4, jl5, jl6; Jtextfield JF1, JF2, JF3, JF4, JF5, JF6; Jpanel JP1, JP2, JP3; JBUTTON JB1, JB2; // Fenêtre PEN-IN-THE-THE PAREENT, le titre est le nom de la fenêtre, Modal spécifie qu'il s'agit d'une fenêtre de mode () ou d'une fenêtre non modelle publique Stuupdiag (propriétaire de cadre, titre de chaîne, méthode booléenne, propriétaire, titre, modal); jl1 = new JLabel ("numéro d'étudiant"); jl2 = new JLabel ("nom"); jl3 = new JLabel ("Gender"); jl4 = new JLabel ("âge"); jl5 = new JLabel ("nom"); jl6 = new JLabel ("section"); 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 = new JButton ("modifier"); jb1.addactionListener (this); jb2 = new JButton ("annuler"); jp1 = new JPanel (); jp2 = new JPanel (); jp3 = new JPanel (); // Définissez la mise en page jp1.setLayout (new GridLayout (6,1)); jp2.setLayout (new 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 (true); } @Override public void ActionPerformed (ActionEvent e) {// TODO Méthode générée automatiquement Stub if (e.getsource () == JB1) {connexion ct = null; Préparé Pstmt = null; ResultSet rs = null; essayez {// 1. Charge Driver class.forname ("com.mysql.jdbc.driver"); System.out.println ("chargé avec succès"); // 2. Connectez-vous à la base de données // Définissez plusieurs constantes URL String = "JDBC: MySQL: // LocalHost: 3306 / SPDB1"; String user = "root"; String passwd = "lfdy"; ct = driverManager.getConnection (URL, utilisateur, passwd); // compilé la chaîne d'objet de l'instruction strSql = "Insérer dans les valeurs Stu (?,?,?,?,?,?)"; pstmt = ct.preparestatement (strSQL); // Attribuez l'objet 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 (); // ferme la boîte de dialogue de l'élève} catch (exception arg1) {arg1.printStackTrace (); } enfin {try {if (rs! = null) {Rs.close (); rs = null; } if (pstmt! = null) {pstmt.close (); pstmt = null; } if (ct! = null) {ct.close (); ct = null; }} catch (exception arg2) {arg2.printStackTrace (); }}}}}}Résultats du développement et des tests:
1. Interface principale du système:
2. Requête par nom:
3. Sélectionnez une ligne et supprimez:
4. Sélectionnez une ligne à modifier:
5. Cliquez sur le bouton Ajouter pour ajouter:
Ce système continuera d'être amélioré. Si vous avez des questions ou des échanges techniques, veuillez me contacter: [email protected]
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.