أنا أتعلم جافا وقاعدة البيانات مؤخرًا. أتذكر نظام إدارة الطلاب الذي كتبته من قبل ، والذي تم تنزيله من الإنترنت وكان محطًا. لم يكن لدي ما أفعله ، لذلك كتبت بنفسي ، لكن الوظائف لم تنفذ العديد من الوظائف.
لغة التنمية: جافا ؛ بيئة التنمية: MySQL ، Java ؛ أدوات التطوير: Eclipse
لتطوير هذه الحالة ، يجب أولاً الحصول على بيئة تطوير Java و MySQL على الكمبيوتر وبيئة تطوير Java وبناء MySQL ، لذلك لن أصفها بعد الآن. إذا كنت في حاجة إليها ، يرجى الاتصال بي مع معلومات الاتصال التالية: [email protected]
النظام بسيط نسبيًا هذه المرة: لا يوجد سوى جدول واحد في قاعدة البيانات: STU ؛ الوظيفة: يمكن إضافة وحذف وتعديل الطلاب.
خطوات التنمية:
1. قم بإنشاء جداول في قاعدة البيانات:
إنشاء جدول STU (Stuid String ، سلسلة Stusame ، Stusex String ، Stuage int ، Stujg String ، Studept sring) ؛
2. Java Code يتكون بشكل أساسي من أربع فئات:
يحتوي Test3 على الوظيفة الرئيسية ؛ يتم استخدام Stumodel لتحديث قاعدة البيانات وتقديمها ؛ يتم استخدام Stuadddiag لإضافة وظائف القارئ ؛ يتم استخدام Stuupdiag لتعديل معلومات الطالب. الرمز المحدد كما يلي:
test3.java:
استيراد javax.swing.*؛ استيراد java.util.*؛ استيراد java.awt.*؛ استيراد java.awt.event.*؛ استيراد java.sql.connection ؛ استيراد java.sql.driver ؛ import java.sql.driverman ؛ Java.Sql.Statement ؛ Test Class Public Test3 يمتد JFrame تنفذ ActionListener {// تحديد بعض عناصر التحكم JPanel JP1 ، JP2 ؛ Jlabel JL1 ، JL2 ؛ Jbutton JB1 ، JB2 ، JB3 ، JB4 ؛ Jtable JT ؛ JScrollpane JSP ؛ JTextfield JTF ؛ Stumodel SM ؛ // تحديد بيان المتغير stat = null ؛ أعدت PS ؛ اتصال 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 (هذا) ؛ JL1 = New JLabel ("الرجاء إدخال الاسم:") ؛ JP1.Add (JL1) ؛ JP1.Add (JTF) ؛ JP1.Add (JB1) ؛ JB2 = New JButton ("Add") ؛ jb2.AddActionListener (هذا) ؛ JB3 = New JButton ("Modify") ؛ JB3.AddActionListener (هذا) ؛ JB4 = New JButton ("DELETE") ؛ jb4.AddActionListener (هذا) ؛ JP2 = New JPanel () ؛ JP2.Add (JB2) ؛ JP2.Add (JB3) ؛ JP2.Add (JB4) ؛ // إنشاء كائن النموذج sm = جديد stumodel () ؛ // تهيئة JT = New JTable (SM) ؛ JSP = New JScrollPane (JT) ؛ // ضع JSP في Jframe this.add (JSP) ؛ this.add (JP1 ، "North") ؛ this.add (JP2 ، "South") ؛ this.setsize (600 ، 400) ؛ //this.setlocation(300 ، 200) ؛ this.setDefaultCloseOperation (exit_on_close) ؛ this.setVisible (صحيح) ؛ } public void actionperformed (ActionEvent arg0) {// تحديد أي زر يتم النقر عليه إذا (arg0.getSource () == jb1) {system.out.println ("يريد المستخدم أن يتم الاستعلام عنه ...") ؛ // نظرًا لأن بيانات الجدول مغلفة في Stumodel ، فمن الأسهل إكمال اسم سلسلة الاستعلام = this.jtf.getText (). trim () ؛ // اكتب سلسلة عبارة SQL SQL = "SELECT * from stu حيث undrame =" "+name+" '"؛ // إنشاء فئة نموذج بيانات وتحديث SM = New Stumodel (SQL) ؛ // تحديث jtable jt.setModel (SM) ؛ } // 1. منبثق واجهة إضافة أخرى if (arg0.getSource () == jb2) {system.out.println ("add ...") ؛ Stuadddiag SA = New Stuadddiag (هذا ، "إضافة الطالب" ، صحيح) ؛ // احصل على نموذج بيانات جديد مرة أخرى ، sm = new Stumodel () ؛ jt.setModel (SM) ؛ } آخر إذا (arg0.getSource () == JB4) {// 2. حذف السجل // 1. احصل على معرف الطالب int rownum = this.jt.getSelectedRow () ؛ // getSelectedRow سيعود إلى الصف في نقطة المستخدم // إذا لم يكن المستخدم محددًا ، فالإرجاع -1 if (rownum == -1) {// propt joptionpane.showmessagedialog (هذا ، يرجى تحديد صف ") ؛ يعود ؛ } // الحصول على سلسلة المعرف الأكاديمي stuid = (string) sm.getValueat (rownum ، 0) ؛ system.out.println ("id:"+stuid) ؛ // قم بتوصيل قاعدة البيانات وأكمل مهمة الحذف جرب {// 1. تحميل class.forname ("com.mysql.jdbc.driver") ؛ // 2. قم بالاتصال بـ url url url = "jdbc: mysql: // localhost: 3306/spdb1" ؛ string user = "root" ؛ سلسلة passwd = "lfdy" ؛ ct = drivermanager.getConnection (url ، user ، passwd) ؛ System.out.println ("Connection Success") ؛ ps = ct.preparestatement ("حذف من stu حيث stuid =؟") ؛ Ps.SetString (1 ، Stuid) ؛ ps.ExecuteUpdate () ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {try {if (rs! = null) {rs.close () ؛ rs = فارغة ؛ } if (ps! = null) {ps.Close () ؛ PS = NULL ؛ } if (ct! = null) {ct.close () ؛ CT = NULL ؛ }} catch (استثناء e) {E.PrintStackTrace () ؛ }} sm = new Stumodel () ؛ // تحديث jtable jt.setModel (SM) ؛ } آخر if (arg0.getSource () == JB3) {system.out.println ("11111") ؛ // 3. يريد المستخدمون تعديل int rownum = this.jt.getSelectedRow () ؛ if (rownum == -1) {// propt joptionpane.showmessagedialog (هذا ، "الرجاء تحديد صف") ؛ يعود ؛ } // show dialog system.out.println ("12435") ؛ Stuupdiag su = new Stuupdiag (هذا ، "تعديل أكاديمي" ، صحيح ، SM ، rownum) ؛ sm = new Stumodel () ؛ jt.setModel (SM) ؛ }}}Stumodel.java:
/. STUMODEL يمتد AbstractTableModel {// ROWDATA STORES ROW ، أسماء العمود تخزن أسماء الأعمدة Vector ROWDATA ، ColumnNames ؛ . اتصال CT = NULL ؛ resultset rs = null ؛ . } // intermediate // set columnnames columnnames = new Vector () ؛ ColumnNames.Add ("رقم المدرسة") ؛ ColumnNames.add ("الاسم") ؛ ColumnNames.Add ("الجنس") ؛ ColumnNames.Add ("العمر") ؛ ColumnNames.add ("الاسم") ؛ ColumnNames.add ("الاسم") ؛ ColumnNames.add ("الاسم") ؛ ColumnNames.Add ("Sect") ؛ // ROWDATA يخزن صفوف متعددة ROWDATA = New Vector () ؛ حاول {// 1. تحميل driver class.forname ("com.mysql.jdbc.driver") ؛ System.out.println ("التحميل بنجاح") ؛ // 2. قم بالاتصال بقاعدة البيانات // تحديد عدة url url url = "jdbc: mysql: // localhost: 3306/spdb1" ؛ string user = "root" ؛ سلسلة passwd = "lfdy" ؛ ct = drivermanager.getConnection (url ، user ، passwd) ؛ STAT = CT.CREATESTATEMENT () ؛ // إنشاء كائن STAT RS = STAT.EXECUTEQUERY (SQL) ؛ // نتيجة الاستعلام بينما (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)) ؛ // إضافة إلى rowdata.add (شنق) ؛ }} catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {try {if (rs! = null) {rs.close () ؛ rs = فارغة ؛ } if (stat! = null) {Stat.Close () ؛ STAT = NULL ؛ } if (ct! = null) {ct.close () ؛ CT = NULL ؛ }} catch (استثناء e) {E.PrintStackTrace () ؛ }}} // إضافة وظيفة الطالب باطلة عامة addstu (سلسلة SQL) {// الانتهاء من مهمة الإضافة استنادًا إلى عبارة SQL التي أدخلها المستخدم} // يحصل المنشئ الثاني على نموذج البيانات من خلال عبارة SQL التي تم تمريرها Public Stumodel (String SQL) {this.init (sql) ؛ } // constructor ، يستخدم لتهيئة نموذج البيانات الخاص بي (الجدول) stumodel () {this.init ("") ؛ } // احصل على عدد الصفوف الموجودة في getRowCount () {// todo method method method stub return this.rowdata.size () ؛ } // احصل على عدد الأعمدة الموجودة في getColumnCount () {// todo method method method stlud rotg this.columnnames.size () ؛ } // احصل على بيانات صف وعمود كائن عام getValueat (int row ، عمود int) {// todo method method method stub return ((vector) (this.rowdata.get (row))). get (column) ؛ } // الحصول على اسم السمة السلسلة العامة getColumnName (عمود int) {// todo method method method stub (سلسلة) this.columnnames.get (العمود) ؛ }}Stuadddiag.java:
package com.test2 ؛ import javax.swing.jdialog ؛ import javax.swing.*؛ import Java.Awt.ActionEvent ؛ import java.awt.event.ActionListener ؛ import java.sql.statement ؛ import java.connection ؛ import java.sql.driverman ؛ Java.Sql.*؛ الطبقة العامة stuadddiag يمتد jdialog الأدوات ActionListener {// تحديد مكون التأرجح الذي أحتاجه Jlabel JL1 ، JL2 ، JL3 ، JL4 ، JL5 ، JL6 ؛ JTextfield JF1 ، JF2 ، JF3 ، JF4 ، JF5 ، JF6 ؛ JPanel JP1 ، JP2 ، JP3 ؛ Jbutton JB1 ، JB2 ؛ // نافذة Ghostwriter Parent Window ، العنوان هو اسم النافذة ، يحدد Modal أنه نافذة نمط () أو نافذة غير متوفرة stuadddiag (مالك الإطار ، عنوان السلسلة ، Modal Boolean) {// استدعاء طريقة الفئة Parent Super (المالك ، العنوان ، modal) ؛ JL1 = New JLabel ("رقم الدراسة") ؛ JL2 = New JLabel ("name") ؛ JL3 = New JLabel ("الجنس") ؛ JL4 = New JLabel ("Age") ؛ 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 (هذا) ؛ JB2 = New JButton ("Cancel") ؛ JP1 = New JPanel () ؛ JP2 = New JPanel () ؛ JP3 = New JPanel () ؛ // قم بتعيين التصميم jp1.setLayout (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 (300200) ؛ this.setVisible (صحيح) ؛ } Override public void actionperformed (ActionEvent e) {// todo method method method method tuto if ( ReparedStatement PSTMT = NULL ؛ resultset rs = null ؛ حاول {// 1. تحميل driver class.forname ("com.mysql.jdbc.driver") ؛ System.out.println ("تحميل بنجاح") ؛ // 2. قم بالاتصال بقاعدة البيانات // تحديد عدة url url url = "jdbc: mysql: // localhost: 3306/spdb1" ؛ string user = "root" ؛ سلسلة passwd = "lfdy" ؛ ct = drivermanager.getConnection (url ، user ، passwd) ؛ // عبارة عن سلسلة عبارة string strsql = "أدخل في قيم STU (؟ ،؟ ،؟ ،؟ ،؟ ،؟)" ؛ pStMt = ct.preparestatement (strsql) ؛ // تعيين الكائن 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 () ؛ // أغلق مربع حوار الطالب} catch (استثناء arg1) {arg1.printStackTrace () ؛ } أخيرًا {try {if (rs! = null) {rs.close () ؛ rs = فارغة ؛ } if (pstmt! = null) {pstmt.close () ؛ PSTMT = فارغة ؛ } if (ct! = null) {ct.close () ؛ CT = NULL ؛ }} catch (استثناء arg2) {arg2.printStackTrace () ؛ }}}}}}Stuupdiag.java:
package com.test2 ؛/** تعديل الطلاب*/import javax.swing.jdialog ؛ استيراد javax.swing.* ؛ استيراد java.awt.event.actionevent ؛ import java.awt.event.actionlistener ؛ import java.sql.statement ؛ import java.sql.connection ؛ java.sql.resultset ؛ استيراد java.sql.sql.*؛ فئة عامة stuupdiag يمتد jdialog الأدوات ActionListener {// تحديد مكون التأرجح الذي أحتاجه jlabel jl1 ، jl2 ، jl3 ، jl4 ، jl5 ، jl6 ؛ JTextfield JF1 ، JF2 ، JF3 ، JF4 ، JF5 ، JF6 ؛ JPanel JP1 ، JP2 ، JP3 ؛ Jbutton JB1 ، JB2 ؛ // نافذة مالك Pen-in-the-parent ، العنوان هو اسم النافذة ، يحدد Modal أنه نافذة وضع () أو نافذة غير متوقعة من Stuupdiag (مالك الإطار ، عنوان السلسلة ، مشروط منطقي ، Stumodel SM ، int rownum) {// استدعاء طريقة الفئة الوالدية (المالك ، العنوان ، وسيط) ؛ JL1 = New JLabel ("رقم الطالب") ؛ JL2 = New JLabel ("name") ؛ JL3 = New JLabel ("الجنس") ؛ JL4 = New JLabel ("Age") ؛ JL5 = New JLabel ("name") ؛ 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 ("Modify") ؛ JB1.AddActionListener (هذا) ؛ JB2 = New JButton ("Cancel") ؛ JP1 = New JPanel () ؛ JP2 = New JPanel () ؛ JP3 = New JPanel () ؛ // قم بتعيين التصميم jp1.setLayout (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 (300200) ؛ this.setVisible (صحيح) ؛ } Override public void actionperformed (ActionEvent e) {// todo method method method method tuto if ( ReparedStatement PSTMT = NULL ؛ resultset rs = null ؛ حاول {// 1. تحميل driver class.forname ("com.mysql.jdbc.driver") ؛ System.out.println ("تحميل بنجاح") ؛ // 2. قم بالاتصال بقاعدة البيانات // تحديد عدة url url url = "jdbc: mysql: // localhost: 3306/spdb1" ؛ string user = "root" ؛ سلسلة passwd = "lfdy" ؛ ct = drivermanager.getConnection (url ، user ، passwd) ؛ // عبارة عن سلسلة عبارة string strsql = "أدخل في قيم STU (؟ ،؟ ،؟ ،؟ ،؟ ،؟)" ؛ pStMt = ct.preparestatement (strsql) ؛ // تعيين الكائن 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 () ؛ // أغلق مربع حوار الطالب} catch (استثناء arg1) {arg1.printStackTrace () ؛ } أخيرًا {try {if (rs! = null) {rs.close () ؛ rs = فارغة ؛ } if (pstmt! = null) {pstmt.close () ؛ PSTMT = فارغة ؛ } if (ct! = null) {ct.close () ؛ CT = NULL ؛ }} catch (استثناء arg2) {arg2.printStackTrace () ؛ }}}}}}نتائج التطوير والاختبار:
1. واجهة النظام الرئيسية:
2. الاستعلام بالاسم:
3. حدد خطًا وحذف:
4. حدد خطًا لتعديل:
5. انقر فوق الزر إضافة لإضافة:
سيستمر تحسين هذا النظام. إذا كان لديك أي أسئلة أو تبادل فني ، يرجى الاتصال بي: [email protected]
لمزيد من المعلومات حول نظام الإدارة ، يرجى النقر فوق "موضوع نظام إدارة الخاص" للتعلم
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.