Ich lerne in letzter Zeit Java und Datenbank. Ich erinnere mich an das Student -Management -System, das ich zuvor geschrieben habe, das aus dem Internet heruntergeladen wurde und oberflächlich war. Ich hatte nichts zu tun, also schrieb ich selbst einen, aber die Funktionen haben nicht viele Funktionen implementiert.
Entwicklungssprache: Java; Entwicklungsumgebung: MySQL, Java; Entwicklungswerkzeuge: Eclipse
Um diesen Fall zu entwickeln, müssen Sie zunächst die Java -Entwicklungsumgebung und MySQL am Computer, die Java -Entwicklungsumgebung und die Konstruktion von MySQL haben, damit ich ihn nicht mehr beschreiben werde. Wenn Sie es benötigen, kontaktieren Sie mich bitte mit den folgenden Kontaktinformationen: [email protected]
Das System ist diesmal relativ einfach: Es gibt nur eine Tabelle in der Datenbank: stu; Funktion: Kann die Schüler hinzufügen, löschen und ändern.
Entwicklungsschritte:
1. Erstellen Sie Tabellen in der Datenbank:
TABLE STU erstellen (Stuid String, Stuname String, Stusex String, Stuage Int, Stujg String, Sternept Sring);
2. Java -Code besteht hauptsächlich aus vier Klassen:
Test3 enthält die Hauptfunktion; Stumodel wird verwendet, um die Datenbank zu aktualisieren und zu rendern. Stuadddiag wird verwendet, um Leserfunktionen hinzuzufügen. Stuupdiag wird verwendet, um die Schülerinformationen zu ändern. Der spezifische Code lautet wie folgt:
Test3.java:
Javax.swing importieren.*; import Java.util.*; import Java.awt. java.sql.statement; public class test3 erweitert JFrame implementiert actionListener {// einige Kontrollen jpanel jp1, jp2; Jlabel Jl1, JL2; Jbutton JB1, JB2, JB3, JB4; Jtable JT; JSCROLLPANE JSP; Jtextfield JTF; Stumodel SM; // Definieren Sie die variable Anweisung stat = null; PrepedStatement ps; Verbindung 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 (dies); jl1 = new JLabel ("Bitte geben Sie den Namen ein:"); jp1.add (jl1); JP1.ADD (JTF); JP1.ADD (JB1); JB2 = neuer Jbutton ("add"); JB2.AddActionListener (dies); JB3 = new Jbutton ("modify"); JB3.AddActionListener (dies); JB4 = New Jbutton ("Delete"); JB4.AddActionListener (dies); JP2 = new Jpanel (); JP2.ADD (JB2); JP2.ADD (JB3); JP2.ADD (JB4); // Modellobjekt SM = New Stumodel () erstellen; // initialisieren jt = new JTable (sm); JSP = new JscrollPane (JT); // JSP in JFrame this.add (JSP) eingeben; this.add (jp1, "nördlich"); this.add (JP2, "South"); this.setsize (600, 400); //this.setLocation(300, 200); this.setDefaultCloseOperation (exit_on_close); this.setvisible (true); } public void actionPerformed (actionEvent arg0) {// Bestimmen Sie, auf welcher Schaltfläche klicken Sie mit (arg0.getSource () == JB1) {System.out.println ("Der Benutzer möchte abfragt werden ..."); // Da die Daten der Tabelle in Stumodel eingekapselt sind, ist es einfacher, den Abfrage -String -Namen = this.jtf.Getext () zu vervollständigen. TRIM (); // Schreiben Sie eine SQL -Anweisung String SQL = "SELECT * von STU wobei Stuname = '"+Name+"'"; // Erstellen Sie eine Datenmodellklasse und aktualisieren Sie SM = New Stumodel (SQL); // jtable jt.setModel (sm) aktualisieren; } // 1. Pop -up der Schnittstelle add add (arg0.getSource () == JB2) {System.out.println ("add ..."); Stuadddiag sa = new stuadddiag (this "add student", true); // NOW NEUES Datenmodell erhalten, sm = neuer Stumodel (); Jt.SetModel (SM); } else if (arg0.getSource () == JB4) {// 2. Löschen Sie den Datensatz // 1. Holen Sie sich die Schüler -ID int rownum = this.jt.getSelectedRow (); // GetSelectedRow kehrt in den Benutzerpunkt // zurück, wenn der Benutzer keine Zeile ausgewählt hat, kehren Sie -1 zurück, wenn (rownum == -1) {// JoptionPane.ShowMessAntialog (this ", bitte auswählen"). zurückkehren ; } // Erhalten Sie die akademische ID String stuid = (String) sm.getValueat (Rownum, 0); System.out.println ("id:"+stuid); // Schließen Sie die Datenbank an und vervollständigen Sie die Löschungsaufgabe, versuchen Sie es mit {// 1. Laden Sie die Treiberklasse.Forname ("com.mysql.jdbc.driver"); // 2. Stellen Sie eine Verbindung zum Datenbank -String -String -URL = "JDBC: MySQL: // localhost: 3306/spdb1" her; String user = "root"; String passwd = "lfdy"; ct = driverManager.getConnection (URL, Benutzer, PassWD); System.out.println ("Verbindung erfolgreich"); ps = ct.preparestatement ("aus stu löschen wo stuid =?"); ps.setstring (1, stuid); ps.executeUpdate (); } catch (Ausnahme e) {e.printstacktrace (); } endlich {try {if (rs! = null) {rs.close (); rs = null; } if (ps! = null) {ps.close (); ps = null; } if (ct! = null) {ct.close (); ct = null; }} catch (Ausnahme e) {e.printstacktrace (); }} sm = new Stumodel (); // jtable jt.setModel (sm) aktualisieren; } else if (arg0.getSource () == jb3) {System.out.println ("11111"); // 3. Benutzer möchten int rownum = this.jt.getSelectedRow () ändern; if (Rownum == -1) {// fordert joptionpane.showMessagedialog (this, "Bitte eine Zeile aus"); zurückkehren ; } // Dialogsystem anzeigen system.out.println ("12435"); Stuupdiag su = new stuupdiag (this, "modify akademic", true, sm, rownum); SM = neuer Stumodel (); Jt.SetModel (SM); }}}Stumodel.java:
/** Dies ist mein STU -Tabellenmodell* Sie können alle Operationen in Schülertabellen in diese Klasse einkapseln Stumodel erweitert AbstractTablemodel {// Rowdata speichert Zeilendaten, Spaltennamen speichert Spaltennamen Vektor Rowdata, ColumnNames; // Definieren Sie die Variable -Anweisung STAT, die eine Verbindung zur Datenbank = null herstellt; Verbindung ct = null; ResultSet rs = null; // public void init (string sql) {if (sql.equals ("")) {sql = "select * aus stu"; } // intermediate // Setzen Sie den Spaltennamen columnNames = new vector (); columnNames.add ("Schulnummer"); columnNames.add ("name"); columnNames.add ("Geschlecht"); columnNames.add ("Alter"); columnNames.add ("name"); columnNames.add ("name"); columnNames.add ("name"); columnNames.add ("Sekte"); // Rowdata speichert mehrere Zeilen rowdata = new vector (); Versuchen Sie {// 1. Treiberklasse laden ("com.mysql.jdbc.driver"); System.out.println ("erfolgreich Laden"); // 2. Stellen Sie eine Verbindung zur Datenbank her // Definieren Sie mehrere Konstanten String url = "jdbc: mysql: // localhost: 3306/spdb1"; String user = "root"; String passwd = "lfdy"; ct = driverManager.getConnection (URL, Benutzer, PassWD); stat = ct.createStatement (); // STAT -Objekt rs = stat.executeQuery (SQL); // Abfrageergebnis, während (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)); // Hinzufügen zu rowdata.add (hängen); }} catch (Ausnahme e) {e.printstacktrace (); } endlich {try {if (rs! = null) {rs.close (); rs = null; } if (stat! = null) {stat.close (); stat = null; } if (ct! = null) {ct.close (); ct = null; }} catch (Ausnahme e) {e.printstacktrace (); }}} // Fügen Sie die Schülerfunktion public void addStu (String SQL) {// Die Additionsaufgabe basierend auf der vom Benutzer} // des zweiten Konstruktors ein eingegebenen SQL -Anweisung durch die bestandene SQL -Anweisung Public Stumodel (String SQL) {this.init (SQL) beenden; } // Konstruktor, verwendet, um mein Datenmodell (Tabelle) öffentlich Stumodel () {this.init ("") zu initialisieren; } // Erhalten Sie, wie viele Zeilen es gibt, dass GetRowCount () {// Todo automatisch generierte Methode Stub return this.rowdata.size (); } // Erhalten Sie wie viele Spalten gibt es intColumnCount () {// Todo automatisch generierte Methode Stub return this.columnnames.size (); } // Daten einer Zeile und eines spalten öffentlichen Objekts GetValueat (int row, int column) {// Todo automatisch generierter Methode Stub ((Vektor) (this.rowdata.get (Zeile))). Get (Spalte); } // den Attributnamen public String getColumnName (int-Spalte) {// Todo Auto-Generated-Methode Stub (String) this.columnnames.get (Spalte); }}Stuadddiag.java:
Paket com.test2; import javax.swing.jdialog; import Javax.swing. java.sql.*; öffentliche Klasse Stuadddiag erweitert JDialog implementiert ActionListener {// Definieren Sie die Swing -Komponente, die ich brauche JLabel JL1, JL2, JL3, JL4, JL5, JL6; JTEXTFIELD JF1, JF2, JF3, JF4, JF5, JF6; JPanel JP1, JP2, JP3; Jbutton JB1, JB2; // Eigentümer Ghostwriter übergeordnetes Fenster, Titel ist der Name des Fensters, modal Gibt an, dass es sich um ein Musterfenster () oder ein Nicht-Mode-Fenster öffentlich stuadddiag (Rahmenbesitzer, String-Titel, Boolean Modal) {// übergeordnete Klassenmethode Super (Eigentümer, Titel, Modal); jl1 = new JLabel ("Studienzahl"); jl2 = new Jlabel ("Name"); jl3 = new Jlabel ("Geschlecht"); jl4 = new Jlabel ("Alter"); JL5 = neuer JLabel ("Home"); jl6 = new Jlabel ("Sekte"); 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 = neuer Jbutton ("add"); JB1.AddactionListener (dies); JB2 = New Jbutton ("Cancel"); JP1 = new Jpanel (); JP2 = new Jpanel (); JP3 = new Jpanel (); // Setzen Sie das Layout jp1.setLayout (neuer GridLayout (6,1)); JP2.SetLayout (neuer 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 automatisch generierter Methode Stub if (e.getSource () == jb1) {Verbindung ct = null; PrepedStatement pstmt = null; ResultSet rs = null; Versuchen Sie {// 1. Treiberklasse laden ("com.mysql.jdbc.driver"); System.out.println ("erfolgreich geladen"); // 2. Stellen Sie eine Verbindung zur Datenbank her // Definieren Sie mehrere Konstanten String url = "jdbc: mysql: // localhost: 3306/spdb1"; String user = "root"; String passwd = "lfdy"; ct = driverManager.getConnection (URL, Benutzer, PassWD); // kompilierte Anweisung Object String Strsql = "In stu -Werte einfügen (?,?,?,?,?,?)"; pstmt = ct.preparestatement (STRSQL); // das Objekt pstmt.setString (1, jf1.getText ()) zuweisen; 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 (); // Schließen Sie den Schülerdialog} catch (AUCECT arg1) {arg1.printstacktrace (); } endlich {try {if (rs! = null) {rs.close (); rs = null; } if (pstmt! = null) {pstmt.close (); pstmt = null; } if (ct! = null) {ct.close (); ct = null; }} catch (Ausnahme arg2) {arg2.printstacktrace (); }}}}}}Stuupdiag.java:
Paket com.test2;/** modifizieren Sie die Schüler*/import Javax.swing.jdialog; Import Javax.swing. java.sql.resultset; import java.sql.sql. JTEXTFIELD JF1, JF2, JF3, JF4, JF5, JF6; JPanel JP1, JP2, JP3; Jbutton JB1, JB2; // Eigentümer Pen-in-the-Eltern-Fenster, Titel ist der Name des Fensters, modal Gibt an, dass es sich um ein Modusfenster () oder ein nicht-mode-Fenster öffentlich stuupdiag (Rahmenbesitzer, String-Titel, Boolean Modal, Stumodel SM, Int Rownum) {// übergeordnete Klassenmethode anrufen (Eigentümer, Titel, Modal); jl1 = new JLabel ("Studentennummer"); jl2 = new Jlabel ("Name"); jl3 = new Jlabel ("Geschlecht"); jl4 = new Jlabel ("Alter"); jl5 = new Jlabel ("Name"); jl6 = new JLabel ("Abschnitt"); 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 ("modify"); JB1.AddactionListener (dies); JB2 = New Jbutton ("Cancel"); JP1 = new Jpanel (); JP2 = new Jpanel (); JP3 = new Jpanel (); // Setzen Sie das Layout jp1.setLayout (neuer GridLayout (6,1)); JP2.SetLayout (neuer 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 automatisch generierter Methode Stub if (e.getSource () == jb1) {Verbindung ct = null; PrepedStatement pstmt = null; ResultSet rs = null; Versuchen Sie {// 1. Treiberklasse laden ("com.mysql.jdbc.driver"); System.out.println ("erfolgreich geladen"); // 2. Stellen Sie eine Verbindung zur Datenbank her // Definieren Sie mehrere Konstanten String url = "jdbc: mysql: // localhost: 3306/spdb1"; String user = "root"; String passwd = "lfdy"; ct = driverManager.getConnection (URL, Benutzer, PassWD); // kompilierte Anweisung Object String Strsql = "In stu -Werte einfügen (?,?,?,?,?,?)"; pstmt = ct.preparestatement (STRSQL); // das Objekt pstmt.setString (1, jf1.getText ()) zuweisen; 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 (); // Schließen Sie den Schülerdialog} catch (AUCECT arg1) {arg1.printstacktrace (); } endlich {try {if (rs! = null) {rs.close (); rs = null; } if (pstmt! = null) {pstmt.close (); pstmt = null; } if (ct! = null) {ct.close (); ct = null; }} catch (Ausnahme arg2) {arg2.printstacktrace (); }}}}}}Entwicklungs- und Testen Ergebnisse:
1. System Hauptschnittstelle:
2. nach Namensfragen:
3. Wählen Sie eine Zeile aus und löschen:
4. Wählen Sie eine Zeile aus, um zu ändern:
5. Klicken Sie auf die Schaltfläche Hinzufügen, um hinzuzufügen:
Dieses System wird weiterhin verbessert. Wenn Sie Fragen oder technische Börsen haben, kontaktieren Sie mich bitte: [email protected]
Weitere Informationen zum Verwaltungssystem finden Sie auf dem Lernen auf "Management System Special Thema", um zu lernen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.