ฉันกำลังเรียนรู้ Java และฐานข้อมูลเมื่อเร็ว ๆ นี้ ฉันจำได้ว่าระบบการจัดการนักเรียนที่ฉันเขียนไว้ก่อนหน้านี้ซึ่งดาวน์โหลดจากอินเทอร์เน็ตและเป็นของผู้คน ฉันไม่มีอะไรทำดังนั้นฉันจึงเขียนด้วยตัวเอง แต่ฟังก์ชั่นไม่ได้ใช้งานหลายอย่าง
ภาษาการพัฒนา: Java; สภาพแวดล้อมการพัฒนา: MySQL, Java; เครื่องมือการพัฒนา: Eclipse
ในการพัฒนากรณีนี้คุณต้องมีสภาพแวดล้อมการพัฒนา Java และ MySQL บนคอมพิวเตอร์ก่อนหน้านี้สภาพแวดล้อมการพัฒนา Java และการสร้าง MySQL ดังนั้นฉันจะไม่อธิบายอีกต่อไป หากคุณต้องการโปรดติดต่อฉันพร้อมข้อมูลการติดต่อต่อไปนี้: [email protected]
ระบบค่อนข้างง่ายในเวลานี้: มีเพียงหนึ่งตารางในฐานข้อมูล: stu; ฟังก์ชั่น: สามารถเพิ่มลบและแก้ไขนักเรียน
ขั้นตอนการพัฒนา:
1. สร้างตารางในฐานข้อมูล:
สร้างตาราง stu (สตริง stuid, สตริง stuname, สตริง Stusex, Stuage int, Stujg String, Studept Sring);
2. จาวารหัสส่วนใหญ่ประกอบด้วยสี่คลาส:
Test3 มีฟังก์ชั่นหลัก Stumodel ใช้เพื่อรีเฟรชและแสดงผลฐานข้อมูล Stuadddiag ใช้เพื่อเพิ่มฟังก์ชั่นผู้อ่าน Stuupdiag ใช้เพื่อแก้ไขข้อมูลนักเรียน รหัสเฉพาะมีดังนี้:
test3.java:
นำเข้า Javax.swing.*; นำเข้า Java.util.*; นำเข้า Java.awt.*; นำเข้า Java.awt.event.*; นำเข้า Java.sql.connection; นำเข้า Java.sql.driver; นำเข้า Java.sql.drivermanager; java.sql.Statement; Public Class Test3 ขยาย JFrame ใช้ ActionListener {// กำหนดตัวควบคุมบางส่วน JPanel JP1, JP2; Jlabel JL1, JL2; Jbutton JB1, JB2, JB3, JB4; Jtable JT; JScrollpane JSP; jtextfield jtf; Stumodel SM; // กำหนดสถิติคำสั่งตัวแปร = null; PreparedStatement PS; การเชื่อมต่อ ct = null; ผลลัพธ์ RS = NULL; โมฆะคงที่สาธารณะหลัก (สตริง [] args) {test3 test3 = test3 ใหม่ (); } // constructor public test3 () {jp1 = new JPanel (); jtf = ใหม่ jtextfield (10); JB1 = ใหม่ JButton ("Query"); jb1.addactionListener (นี้); jl1 = new jlabel ("โปรดป้อนชื่อ:"); jp1.add (JL1); jp1.add (JTF); jp1.add (JB1); jb2 = new Jbutton ("เพิ่ม"); jb2.addactionListener (นี้); jb3 = ใหม่ jbutton ("แก้ไข"); JB3.AddactionListener (นี่); jb4 = ใหม่ jbutton ("ลบ"); 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, "ใต้"); this.setsize (600, 400); //this.setLocation(300, 200); this.setDefaultCloseOperation (exit_on_close); this.setVisible (จริง); } โมฆะสาธารณะ ActionPerformed (ActionEvent Arg0) {// กำหนดปุ่มที่คลิกถ้า (arg0.getSource () == JB1) {System.out.println ("ผู้ใช้ต้องการที่จะสืบค้น ... "); // เนื่องจากข้อมูลของตารางถูกห่อหุ้มลงใน Stumodel จึงง่ายกว่าที่จะทำให้ชื่อสตริงแบบสอบถามสมบูรณ์ = this.jtf.getText (). trim (); // เขียนสตริงคำสั่ง SQL SQL = "SELECT * จาก STU โดยที่ stuname = '"+ชื่อ+"'"; // สร้างคลาสข้อมูลข้อมูลและอัปเดต SM = New Stumodel (SQL); // อัปเดต jtable jt.setModel (SM); } // 1 ปรากฏตัวเพิ่มอินเทอร์เฟซอื่นถ้า (arg0.getSource () == jb2) {system.out.println ("เพิ่ม ... "); Stuadddiag SA = ใหม่ stuadddiag (นี่ "เพิ่มนักเรียน", จริง); // รับโมเดลข้อมูลใหม่อีกครั้ง SM = New Stumodel (); JT.SetModel (SM); } อื่นถ้า (arg0.getSource () == jb4) {// 2 ลบบันทึก // 1 รับ ID นักเรียน int rownum = this.jt.getSelectedRow (); // getSelectedRow จะกลับไปที่แถวในจุดผู้ใช้ // หากผู้ใช้ไม่มีการเลือกแถวให้ส่งคืน -1 ถ้า (rownum == -1) {// prompt joptionpane.showmessageedialog กลับ ; } // รับสตริง ID วิชาการ stuid = (สตริง) sm.getValueat (rownum, 0); System.out.println ("id:"+stuid); // เชื่อมต่อฐานข้อมูลและทำภารกิจการลบให้เสร็จสิ้นลอง {// 1 โหลดคลาสไดรเวอร์ forName ("com.mysql.jdbc.driver"); // 2. เชื่อมต่อกับสตริงฐานข้อมูล url = "JDBC: mySQL: // localhost: 3306/spdb1"; String user = "root"; สตริง passwd = "lfdy"; ct = drivermanager.getConnection (URL, ผู้ใช้, passwd); System.out.println ("การเชื่อมต่อสำเร็จ"); ps = ct.prepareStatement ("ลบออกจาก stu โดยที่ stuid =?"); ps.setstring (1, stuid); ps.executeUpdate (); } catch (exception e) {e.printstacktrace (); } ในที่สุด {ลอง {ถ้า (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 = stumodel ใหม่ (); // อัปเดต jtable jt.setModel (SM); } อื่นถ้า (arg0.getSource () == jb3) {system.out.println ("11111"); // 3. ผู้ใช้ต้องการแก้ไข int rownum = this.jt.getSelectedRow (); if (rownum == -1) {// แจ้ง joptionpane.showMessagedialog (นี่ "โปรดเลือกแถว"); กลับ ; } // แสดงกล่องโต้ตอบ system.out.println ("12435"); stuupdiag su = new Stuupdiag (นี่ "แก้ไขวิชาการ", True, SM, Rownum); SM = ใหม่ stumodel (); JT.SetModel (SM); -Stumodel.java:
/** นี่คือโมเดลตาราง stu ของฉัน* คุณสามารถห่อหุ้มการดำเนินการทั้งหมดบนตารางนักเรียนลงในคลาสนี้*/แพ็คเกจ com.test2; นำเข้า java.sql.connection; นำเข้า java.sql.driverManager นำเข้า Java.sql.resultset; Stumodel ขยาย AbstractTableModel {// RowData เก็บข้อมูลแถวชื่อคอลัมน์เก็บชื่อคอลัมน์ Vector RowData ชื่อคอลัมน์; // กำหนดสถิติคำสั่งตัวแปรที่เชื่อมต่อกับฐานข้อมูล = null; การเชื่อมต่อ ct = null; ผลลัพธ์ RS = NULL; // เริ่มต้นโมฆะสาธารณะ init (String SQL) {if (sql.equals ("")) {sql = "select * จาก stu"; } // ตัวกลาง // ตั้งชื่อคอลัมน์ชื่อคอลัมน์ = เวกเตอร์ใหม่ (); columnNames.add ("หมายเลขโรงเรียน"); columnNames.add ("ชื่อ"); columnNames.add ("เพศ"); columnNames.add ("อายุ"); columnNames.add ("ชื่อ"); columnNames.add ("ชื่อ"); columnNames.add ("ชื่อ"); ColumnNames.add ("Sect"); // rowdata เก็บหลายแถว rowdata = เวกเตอร์ใหม่ (); ลอง {// 1 โหลดคลาสไดรเวอร์ forName ("com.mysql.jdbc.driver"); System.out.println ("การโหลดสำเร็จ"); // 2. เชื่อมต่อกับฐานข้อมูล // กำหนดค่าสตริงค่าคงที่หลาย url = "jdbc: mysql: // localhost: 3306/spdb1"; String user = "root"; สตริง passwd = "lfdy"; ct = drivermanager.getConnection (URL, ผู้ใช้, passwd); stat = ct.createstatement (); // สร้าง stat object rs = stat.executeQuery (SQL); // ผลการสอบถามในขณะที่ (rs.next ()) {vector hang = เวกเตอร์ใหม่ (); 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 (Hang); }} catch (exception e) {e.printstacktrace (); } ในที่สุด {ลอง {ถ้า (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 (); }}} // เพิ่มฟังก์ชั่นนักเรียนโมฆะสาธารณะ addstu (สตริง sql) {// เสร็จสิ้นงานนอกจากนี้ตามคำสั่ง SQL ที่ป้อนโดยผู้ใช้} // ตัวสร้างที่สองได้รับแบบจำลองข้อมูลผ่านคำสั่ง SQL Public Stumodel (String SQL) {this.init (sql); } // constructor ใช้เพื่อเริ่มต้นโมเดลข้อมูลของฉัน (ตาราง) Stumodel สาธารณะ () {this.init (""); } // รับกี่แถวที่มี int getRowCount () {// วิธีการที่สร้างอัตโนมัติ stub stub return this.rowdata.size (); } // รับจำนวนคอลัมน์ที่มี int getColumnCount () {// วิธีการที่สร้างขึ้นอัตโนมัติ todo stub return this.columnnames.size (); } // รับข้อมูลของแถวและคอลัมน์สาธารณะวัตถุ getValueat (แถว int, คอลัมน์ int) {// วิธีการที่สร้างขึ้นอัตโนมัติวิธีการส่งคืนสตับ ((เวกเตอร์) (this.rowdata.get (แถว)). รับ (คอลัมน์); } // รับชื่อแอตทริบิวต์สตริงสาธารณะ getColumnName (คอลัมน์ int) {// วิธีการที่สร้างขึ้นอัตโนมัติวิธีการส่งคืน (สตริง) this.columnNames.get (คอลัมน์); -stuadddiag.java:
แพ็คเกจ com.test2; นำเข้า Javax.swing.jdialog; นำเข้า Javax.swing.*; นำเข้า java.awt.event.actionEvent; นำเข้า java.awt.event.actionListener; นำเข้า Java.sql.statement; 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; // Window Parent Window เจ้าของ Ghostwriter ชื่อเป็นชื่อของหน้าต่าง Modal ระบุว่ามันเป็นหน้าต่างรูปแบบ () หรือหน้าต่างสาธารณะที่ไม่ใช่โหมดสาธารณะ stuadddiag (เจ้าของเฟรม, ชื่อสตริง, โมดัลบูลีน) {// การเรียกเมธอดคลาสแม่ JL1 = ใหม่ JLabel ("หมายเลขการศึกษา"); jl2 = new jlabel ("ชื่อ"); jl3 = new jlabel ("เพศ"); jl4 = new jlabel ("อายุ"); jl5 = new jlabel ("บ้าน"); jl6 = new jlabel ("นิกาย"); jf1 = ใหม่ jtextfield (10); jf2 = ใหม่ jtextfield (10); jf3 = ใหม่ jtextfield (10); jf4 = ใหม่ jtextfield (10); jf5 = ใหม่ jtextfield (10); jf6 = ใหม่ jtextfield (10); jb1 = new jbutton ("เพิ่ม"); jb1.addactionListener (นี้); jb2 = new JButton ("ยกเลิก"); jp1 = new jpanel (); jp2 = new jpanel (); jp3 = new JPanel (); // ตั้งค่าเค้าโครง jp1.setLayout (ใหม่ gridlayout (6,1)); JP2.SetLayout (ใหม่ 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 (จริง); } @Override โมฆะสาธารณะ ActionPerformed (ActionEvent E) {// วิธีการที่สร้างขึ้นอัตโนมัติ todo stub ถ้า (e.getSource () == JB1) {การเชื่อมต่อ ct = null; PreparedStatement PSTMT = NULL; ผลลัพธ์ RS = NULL; ลอง {// 1 โหลดคลาสไดรเวอร์ forName ("com.mysql.jdbc.driver"); System.out.println ("โหลดสำเร็จ"); // 2. เชื่อมต่อกับฐานข้อมูล // กำหนดค่าสตริงค่าคงที่หลาย url = "jdbc: mysql: // localhost: 3306/spdb1"; String user = "root"; สตริง passwd = "lfdy"; ct = drivermanager.getConnection (URL, ผู้ใช้, passwd); // คอมไพล์คำสั่งวัตถุสตริง 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 (); } ในที่สุด {ลอง {ถ้า (rs! = null) {rs.close (); rs = null; } if (pstmt! = null) {pstmt.close (); pstmt = null; } if (ct! = null) {ct.close (); ct = null; }} catch (ข้อยกเว้น arg2) {arg2.printstacktrace (); -stuupdiag.java:
แพ็คเกจ com.test2;/** แก้ไขนักเรียน*/นำเข้า Javax.swing.jdialog; นำเข้า Javax.swing.*; นำเข้า java.awt.event.actionEvent; นำเข้า java.awt.event.actionlistener; นำเข้า java.sql.statement; java.sql.resultset; นำเข้า java.sql.sql.*; คลาสสาธารณะ stuupdiag ขยาย jdialog ใช้ actionListener {// กำหนดองค์ประกอบการแกว่งที่ฉันต้องการ Jlabel Jl1, Jl2, JL3, JL4, JL5, JL5, JL5, JL5, JL5 Jtextfield JF1, JF2, JF3, JF4, JF5, JF6; JPanel JP1, JP2, JP3; Jbutton JB1, JB2; // เจ้าของหน้าต่างปากกา-ผู้ปกครองชื่อชื่อเป็นชื่อของหน้าต่าง Modal ระบุว่าเป็นหน้าต่างโหมด () หรือหน้าต่างสาธารณะที่ไม่ใช่โหมดสาธารณะ stuupdiag (เจ้าของเฟรม, ชื่อสตริง, โมดัลบูลีน, Stumodel SM, int rownum) {// การโทร jl1 = new Jlabel ("หมายเลขนักเรียน"); jl2 = new jlabel ("ชื่อ"); jl3 = new jlabel ("เพศ"); jl4 = new jlabel ("อายุ"); jl5 = new jlabel ("ชื่อ"); jl6 = new jlabel ("ส่วน"); jf1 = ใหม่ jtextfield (10); jf1.settext ((sm.getValueat (rownum, 0)). toString ()); jf2 = ใหม่ jtextfield (10); jf2.settext ((สตริง) sm.getValueat (rownum, 1)); jf3 = new jtextfield (10); jf3.settext (sm.getValueat (Rownum, 2) .tostring ()); jf4 = ใหม่ jtextfield (10); jf4.settext ((sm.getValueat (rownum, 3)). toString ()); jf5 = ใหม่ jtextfield (10); jf5.settext ((สตริง) sm.getValueat (Rownum, 4)); jf6 = ใหม่ jtextfield (10); jf6.settext ((สตริง) sm.getValueat (rownum, 5)); jb1 = new jbutton ("แก้ไข"); jb1.addactionListener (นี้); jb2 = new JButton ("ยกเลิก"); jp1 = new jpanel (); jp2 = new jpanel (); jp3 = new JPanel (); // ตั้งค่าเค้าโครง jp1.setLayout (ใหม่ gridlayout (6,1)); JP2.SetLayout (ใหม่ 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 (จริง); } @Override โมฆะสาธารณะ ActionPerformed (ActionEvent E) {// วิธีการที่สร้างขึ้นอัตโนมัติ todo stub ถ้า (e.getSource () == JB1) {การเชื่อมต่อ ct = null; PreparedStatement PSTMT = NULL; ผลลัพธ์ RS = NULL; ลอง {// 1 โหลดคลาสไดรเวอร์ forName ("com.mysql.jdbc.driver"); System.out.println ("โหลดสำเร็จ"); // 2. เชื่อมต่อกับฐานข้อมูล // กำหนดค่าสตริงค่าคงที่หลาย url = "jdbc: mysql: // localhost: 3306/spdb1"; String user = "root"; สตริง passwd = "lfdy"; ct = drivermanager.getConnection (URL, ผู้ใช้, passwd); // คอมไพล์คำสั่งวัตถุสตริง 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 (); } ในที่สุด {ลอง {ถ้า (rs! = null) {rs.close (); rs = null; } if (pstmt! = null) {pstmt.close (); pstmt = null; } if (ct! = null) {ct.close (); ct = null; }} catch (ข้อยกเว้น arg2) {arg2.printstacktrace (); -ผลการพัฒนาและการทดสอบ:
1. อินเทอร์เฟซหลักของระบบ:
2. คำถามตามชื่อ:
3. เลือกบรรทัดและลบ:
4. เลือกบรรทัดที่จะแก้ไข:
5. คลิกปุ่มเพิ่มเพื่อเพิ่ม:
ระบบนี้จะยังคงปรับปรุงต่อไป หากคุณมีคำถามหรือการแลกเปลี่ยนทางเทคนิคโปรดติดต่อฉัน: [email protected]
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระบบการจัดการโปรดคลิก "หัวข้อการจัดการพิเศษ" เพื่อเรียนรู้
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น