ตัวอย่างในบทความนี้แบ่งปันรหัสเฉพาะของซอร์สโค้ดของระบบการจัดการข้อมูลนักเรียน Java สำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
1. StudetManage Class (อินเทอร์เฟซหลัก)
แพ็คเกจ com.sms3; นำเข้า Java.awt.*; นำเข้า Javax.swing.*; นำเข้า java.awt.event.*; การจัดการนักศึกษาระดับสาธารณะขยาย JFrame ใช้ ActionListener { / ** * @param args * / โมฆะคงที่สาธารณะหลัก (String [] args) {// วิธีการที่สร้างขึ้นอัตโนมัติ todo stub studentmanage ใหม่ (); } // ======== การควบคุมแผงควบคุมส่วนตัว jlabel queryLab = null; ส่วนตัว jtextfield querytxt = null; jbutton ส่วนตัว querybtn = null; JBUTTON ส่วนตัวทั้งหมด = NULL; private jtable resulttb = null; jscrollpane ส่วนตัว jsp = null; JBUTTON ส่วนตัว addBtn = null; ส่วนตัว JButton DELETEBTN = NULL; JButton Private updateBtn = null; jPanel ส่วนตัว jPanel = null; jpanel ส่วนตัวด้านล่าง = null; // ======= Stumodel ส่วนตัว SM = NULL; // Constructor Public StudentManage () {/**************************** เริ่มต้นการควบคุมแผง ***************************************************************************************************************************************** querytxt = new jtextfield (10); querybtn = new JButton ("Query"); allbtn = new JButton ("All"); //...... Add Query Bar เพื่อฟัง querybtn.addactionListener (นี่); querybtn.setActionCommand ("Query"); allbtn.addactionListener (นี้); allbtn.setActionCommand ("ทั้งหมด"); // =========== คอลัมน์ add-and-deletion addbtn = new JButton ("เพิ่ม"); DELETEBTN = ใหม่ JBUTTON ("DELETE"); updateBtn = new JButton ("แก้ไข"); //......ADD คอลัมน์ Add-and-Deletion ฟัง addbtn.addactionListener (นี่); addbtn.setActionCommand ("เพิ่ม"); DELETEBTN.ADDACTIONLISTENER (นี่); DELETEBTN.SETACTIONCOMMAND ("DELETE"); DELETEBTN.ADDACTIONLISTENER (นี่); DELETEBTN.SETACTIONCOMMAND ("DELETE"); UpdateBtn.addactionListener (นี่); UpdateBtn.SetActionCommand ("Update"); // ======== สร้างเค้าโครงโดยรวมของหน้าต่าง // ...... แถบคิวรีระดับบนสุด = new JPanel (); top.add (querylab); top.add (querytxt); top.add (querybtn); top.add (allbtn); // ...... คอลัมน์ add-and-deletion ระดับล่างสุด = new JPanel (); bottom.add (addbtn); bottom.add (deletebtn); bottom.add (UpdateBtn); // ...... แถบจอแสดงผลระดับกลาง SM = New Stumodel (); String SQL = "SELECT * จาก Stu"; SM.Querystu (SQL, NULL); resulttb = ใหม่ jtable (sm); jsp = new JScrollpane (resultTB); //...... สร้างเค้าโครงโดยรวม this.add (บนสุด, Borderlayout.north); this.add (jsp, borderlayout.center); this.add (ล่าง, Borderlayout.south); // ======= ตั้งค่าคุณสมบัติหน้าต่าง this.setsize (400, 300); this.setDefaultCloseOperation (jframe.exit_on_close); this.setVisible (จริง); this.setResizable (เท็จ); } // ฟัง @Override โมฆะสาธารณะ ActionPerformed (ActionEvent E) {// todo วิธีการที่สร้างขึ้นอัตโนมัติ stub ถ้า (e.getActionCommand (). Equals ("Query")) { /******************************************* if (name.length ()! = 0) {// ========= เมื่ออินพุตชื่อถูกต้องให้ดำเนินการสอบถาม //......dine พารามิเตอร์สตริง sql = "เลือก * จาก stu ที่ stuname =?"; สตริง [] paras = {ชื่อ}; //......update รุ่น jtableUpdate (SQL, Paras); } else {// =========== เมื่อชื่อว่างให้ตั้งค่าการเตือนความจำ joptionpane.showMessagedialog (นี่ "การป้อนชื่อไม่สามารถว่างเปล่า"); }} อื่นถ้า (e.getActionCommand (). เท่ากับ ("เพิ่ม")) { / ************************************ / ใหม่ stuadddialog (นี่ "เพิ่มข้อมูลนักเรียน" จริง); String SQL = "SELECT * จาก Stu"; JTableUpdate (SQL, NULL); } อื่นถ้า (e.getActionCommand (). เท่ากับ ("ทั้งหมด")) { / ***************************************************************************************************************************************************************************************************** JTableUpdate (SQL, NULL); } อื่นถ้า (e.getActionCommand (). เท่ากับ ("ลบ")) { /*************************************************************************************************************************************************** if (rownum == -1) {joptionpane.showMessagedialog (นี่ "โปรดเลือกแถว"); กลับ ; } // ======== รับสตริงหมายเลขนักเรียน stuid = (สตริง) sm.getValueat (Rownum, 0); // ========= ลบสตริงนักเรียน sql = "ลบจาก stu โดยที่ stuid =?"; สตริง [] paras = {stuid}; Stumodel TMP = New Stumodel (); TMP.CUDSTU (SQL, PARAS); // ========= อัปเดตรุ่น SQL = "เลือก * จาก stu"; JTableUpdate (SQL, NULL); } อื่นถ้า (e.getActionCommand (). เท่ากับ ("อัปเดต")) { /************************************************************************************************* if (rownum == -1) {joptionpane.showMessagedialog (นี่ "โปรดเลือกแถว"); กลับ ; } stuupdatedialog ใหม่ (สิ่งนี้, "แก้ไขข้อมูลนักเรียน", จริง, sm, rownum); String SQL = "SELECT * จาก Stu"; JTableUpdate (SQL, NULL); }} // ========== ข้อมูลอัปเดตในโมฆะสาธารณะ jtable jtableUpdate (String SQL, String [] Paras) {//...Create Model Sm = New Stumodel (); SM.Querystu (SQL, Paras); //......update the resulttb.setModel (SM); -2. คลาส Stumodel (โมเดลฐานข้อมูลนักเรียน)
แพ็คเกจ com.sms3; นำเข้า java.sql.resultset; นำเข้า java.util.vector; นำเข้า Javax.swing.table.abstractTableModel; Stumodel ระดับสาธารณะขยาย AbstractTableModel {ชื่อคอลัมน์เวกเตอร์ส่วนตัว; เวกเตอร์ส่วนตัว rowdates; // Public Stumodel () {String SQL = "SELECT * จาก Stu"; สตริง [] paras = {}; } // ======== เพิ่มและลบนักเรียนบูลีนสาธารณะ cudstu (สตริง sql, string [] paras) {ส่งคืน sqlhelper ใหม่ (). cudexecute (sql, paras); } // ======== Query Void Public Void Querystu (String SQL, String [] Paras) {Sqlhelper sqlhelper = null; // ========= เริ่มต้นคอลัมน์ข้อมูล jtable jtable = เวกเตอร์ใหม่ (); rowdates = เวกเตอร์ใหม่ (); columnNames.add ("หมายเลขนักเรียน"); columnNames.add ("ชื่อ"); columnNames.add ("เพศ"); columnNames.add ("อายุ"); columnNames.add ("home"); columnNames.add ("ส่วน"); ลอง {sqlhelper = new sqlhelper (); ผลลัพธ์ RS = SQLHELPER.QUERYEXECUTE (SQL, PARAS); ในขณะที่ (rs.next ()) {vector row = new Vector (); row.add (Rs.getString (1)); row.add (Rs.getString (2)); row.add (Rs.getString (3)); row.add (Rs.getString (4)); row.add (Rs.getString (5)); row.add (Rs.getString (6)); rowdates.add (แถว); }} catch (exception e) {// todo: จัดการข้อยกเว้น} ในที่สุด {sqlhelper.close (); }} @Override สาธารณะ int getColumnCount () {// วิธีการที่สร้างอัตโนมัติ todo stub return this.columnnames.size (); } @Override public int getRowCount () {// วิธีการที่สร้างขึ้นอัตโนมัติ todo stub return this.rowdates.size (); } @Override วัตถุสาธารณะ getValueat (แถว int, int col) {// todo วิธีการที่สร้างขึ้นอัตโนมัติ stub ถ้า (! rowdates.isempty ()) return ((เวกเตอร์) this.rowdates.get (แถว)) รับ (col); อื่นกลับโมฆะ; } @Override สตริงสาธารณะ getColumnName (คอลัมน์ int) {// วิธีการที่สร้างขึ้นอัตโนมัติวิธีการส่งคืน (สตริง) this.columnNames.get (คอลัมน์); -3. คลาส Stuadddialog (เพิ่มข้อมูลนักเรียนย่อยข้อมูลนักเรียน)
แพ็คเกจ com.sms3; นำเข้า Java.awt.BorderLayout; นำเข้า Java.awt.Dialog; นำเข้า java.awt.frame; นำเข้า Java.awt.Gridlayout; นำเข้า java.awt.event.actionEvent; นำเข้า java.awt.event.actionListener; นำเข้า Javax.swing.*; ชั้นเรียนสาธารณะ stuadddialog ขยาย jdialog ใช้ actionListener {// ========= การควบคุมแผงควบคุม // ...... ด้านซ้ายบาร์ชื่อส่วนตัว Jlabel idlab, namelab, sexlab, agelab, jglab, deptlab; //......Select กรอกข้อมูลทางด้านขวาเพื่อกรอกข้อมูลในคอลัมน์ส่วนตัว jtextfield idtxt, nametxt, sextxt, agetxt, jgtxt, depttxt; //......Add และยกเลิกปุ่มส่วนตัว JButton Addbtn, Cancelbtn; //.......layout ควบคุม JPanel ส่วนตัวซ้าย, กึ่งกลาง, ด้านล่าง; // constructor สาธารณะ stuadddialog (เจ้าของเฟรม, ชื่อสตริง, บูลีนโมดอล) {// ======== rewrite วิธีการคลาสแม่ super (เจ้าของ, ชื่อ, modal); // =========== คอลัมน์แท็กทางด้านซ้ายคือ idlab = new JLabel ("หมายเลขนักเรียน:"); namelab = new jlabel ("ชื่อ:"); sexlab = new Jlabel ("เพศ:"); agelab = new jlabel ("อายุ:"); jglab = new jlabel ("บ้านเกิด:"); DeptLab = new JLabel ("ทิศทาง:"); // ========= กรอกข้อมูลในคอลัมน์ข้อมูลทางด้านขวาคือ idtxt = new jtextfield (); nametxt = new jtextfield (); sextxt = new jtextfield (); agetxt = new jtextfield (); agetxt = new jtextfield (); agetxt = new jtextfield (); jgtxt = new jtextfield (); depttxt = new jtextfield (); // ========== เพิ่มและยกเลิกปุ่ม addbtn = new JButton ("เพิ่ม"); cancelbtn = new JButton ("ยกเลิก"); //......Add ฟัง addbtn.addactionListener (นี่); addbtn.setActionCommand ("เพิ่ม"); cancelbtn.addactionListener (นี้); cancelbtn.setActionCommand ("ยกเลิก"); // ======= สร้างเค้าโครง // ...... สร้างคอลัมน์ซ้าย = new JPanel (); ซ้าย setLayout (ใหม่ gridlayout (6, 1)); left.add (idlab); left.add (namelab); left.add (sexlab); left.add (agelab); left.add (jglab); left.add (deptlab); //...... สร้างคอลัมน์ด้านขวาศูนย์ = new JPanel (); center.setLayout (ใหม่ gridlayout (6, 1)); center.add (idtxt); center.add (nametxt); center.add (sextxt); center.add (agetxt); center.add (jgtxt); center.add (depttxt); // ===================== ปุ่มเพิ่มและยกเลิกปุ่มด้านล่าง = new JPanel (); bottom.add (addbtn); bottom.add (cancelbtn); // ========= เลย์เอาต์โดยรวม this.add (ซ้าย, Borderlayout.west); this.add (center, borderlayout.center); this.add (ล่าง, Borderlayout.south); // ========== แอตทริบิวต์หน้าต่างตั้งค่านี้ setsize (300, 250); this.setResizable (เท็จ); this.setVisible (จริง); } @Override โมฆะสาธารณะ ActionPerformed (ActionEvent E) {// วิธีการที่สร้างขึ้นอัตโนมัติ stub ถ้า (e.getActionCommand (). เท่ากับ ("เพิ่ม")) { / ********************************************* String sql = "แทรกลงในค่า STU (?,?,?,?,?,?)"; สตริง [] paras = {idtxt.getText (), nametxt.getText (), sextxt.getText (), agetxt.getText (), jgtxt.getText (), depttxt.getText ()}; if (! tmp.cudstu (sql, paras)) joptionpane.showmessagedialog (นี่ "เพิ่มข้อมูลนักเรียนล้มเหลว"); // ======== ปิดหน้าต่าง this.dispose (); } อื่นถ้า (e.getActionCommand (). เท่ากับ ("ยกเลิก")) {// ======== ปิดหน้าต่าง this.dispose (); -4. คลาส Stuupdatedialog (แก้ไขข้อมูลย่อยของนักเรียน)
แพ็คเกจ com.sms3; นำเข้า Java.awt.BorderLayout; นำเข้า java.awt.frame; นำเข้า Java.awt.Gridlayout; นำเข้า java.awt.event.actionEvent; นำเข้า java.awt.event.actionListener; นำเข้า Javax.swing.jbutton; นำเข้า Javax.swing.jdialog; นำเข้า Javax.swing.jlabel; นำเข้า Javax.swing.joptionpane; นำเข้า Javax.swing.jpanel; นำเข้า Javax.swing.jpanel; นำเข้า Javax.swing.jtextfield; นำเข้า Javax.swing.table.abstractTableModel; ระดับสาธารณะ stuupdatedialog ขยาย jdialog ใช้ actionListener {// ========= การควบคุมแผงควบคุม // ...... ด้านซ้ายแถบชื่อเรื่อง Jlabel idlab ส่วนตัว, namelab, sexlab, agelab, jglab, deptlab; //....... ข้อมูลที่ถูกต้องเลือกเติมในคอลัมน์ส่วนตัว jtextfield idtxt, nametxt, sextxt, agetxt, jgtxt, depttxt; //...Add และยกเลิกปุ่มส่วนตัว jbutton addbtn, cancelbtn; //.......layout ควบคุม JPanel ส่วนตัวซ้าย, กึ่งกลาง, ด้านล่าง; // Constructor สาธารณะ stuupdatedialog (เจ้าของเฟรม, ชื่อสตริง, โมดัลบูลีน, Stumodel SM, int rownum) {// ========== rewrite วิธีการคลาสแม่ (เจ้าของ, ชื่อ, modal); // =========== บาร์ฉลากด้านซ้าย idlab = new JLabel ("หมายเลขนักเรียน:"); namelab = new jlabel ("ชื่อ:"); sexlab = new Jlabel ("เพศ:"); agelab = new jlabel ("อายุ:"); jglab = new jlabel ("บ้านเกิด:"); DeptLab = new JLabel ("มิติ:"); // ======== กรอกข้อมูลทางด้านขวา idtxt = new jtextfield (); idtxt.settext ((สตริง) sm.getValueat (Rownum, 0)); idtxt.setEditable (เท็จ); nametxt = new jtextfield (); nametxt.settext ((สตริง) sm.getValueat (rownum, 1)); sextxt = new jtextfield (); sextxt.settext ((สตริง) sm.getValueat (rownum, 2)); agetxt = new jtextfield (); agetxt.settext ((สตริง) sm.getValueat (rownum, 3)); jgtxt = new jtextfield (); jgtxt.settext ((สตริง) sm.getValueat (rownum, 4)); depttxt = new jtextfield (); Deptttxt.settext ((String) Sm.getValueat (Rownum, 5)); // ======== เพิ่มและยกเลิกปุ่ม addbtn = new JButton ("แก้ไข"); cancelbtn = new JButton ("ยกเลิก"); //......Add ฟัง addbtn.addactionListener (นี่); addbtn.setActionCommand ("อัปเดต"); cancelbtn.addactionListener (นี้); cancelbtn.setActionCommand ("ยกเลิก"); // ======== สร้างเค้าโครง // ...... สร้างซ้าย = new JPanel (); ซ้าย setLayout (ใหม่ gridlayout (6, 1)); left.add (idlab); left.add (namelab); left.add (sexlab); left.add (agelab); left.add (jglab); left.add (deptlab); //...... สร้างคอลัมน์ด้านขวาศูนย์ = new JPanel (); center.setLayout (ใหม่ gridlayout (6, 1)); center.add (idtxt); center.add (nametxt); center.add (sextxt); center.add (agetxt); center.add (jgtxt); center.add (depttxt); // ============ ระดับชั้นล่างเพิ่มและยกเลิกปุ่มด้านล่าง = new JPanel (); bottom.add (addbtn); bottom.add (cancelbtn); // ======== เลย์เอาต์โดยรวม this.add (ซ้าย, borderlayout.west); this.add (center, borderlayout.center); this.add (ล่าง, Borderlayout.south); // ========== แอตทริบิวต์หน้าต่างตั้งค่านี้ setsize (300, 250); this.setResizable (เท็จ); this.setVisible (จริง); } @Override โมฆะสาธารณะ ActionPerformed (ActionEvent E) {// วิธีการที่สร้างขึ้นโดยอัตโนมัติ stub ถ้า (e.getActionCommand (). เท่ากับ ("อัปเดต")) { / *********************************************************************** String sql = "อัปเดต stu set stuname = ?, stusex = ?, stuage = ?, stujg = ?, studept =? stuid =?"; สตริง [] paras = {nametxt.getText (), sextxt.getText (), agetxt.getText (), jgtxt.getText (), depttxt.getText (), idtxt.getText ()}; if (! tmp.cudstu (sql, paras)) joptionpane.showmessagedialog (สิ่งนี้ "ล้มเหลวในการแก้ไขข้อมูลนักเรียน"); // ======== ปิดหน้าต่าง this.dispose (); } อื่นถ้า (e.getActionCommand (). เท่ากับ ("ยกเลิก")) {// ======== ปิดหน้าต่าง this.dispose (); - 5. คลาส Sqlhelper (คลาสฐานข้อมูลต่ำสุด)
แพ็คเกจ com.sms3; นำเข้า Java.sql.*; คลาสสาธารณะ sqlhelper {// ========= การเชื่อมต่อส่วนตัวการเชื่อมต่อส่วนตัว ct = null; PREASPEDSTATEMENT ส่วนตัว PS = NULL; Resultset Private RS = NULL; ไดรเวอร์สตริงส่วนตัว = "com.microsoft.sqlserver.jdbc.sqlserverdriver"; url สตริงส่วนตัว = "jdbc: sqlserver: //127.0.0.1: 1433; ฐานข้อมูล = นักศึกษา"; ผู้ใช้สตริงส่วนตัว = "SA"; สตริงส่วนตัว passwd = "****"; // ========== Query Resultset StueryExecute (String SQL, String [] Paras) {ลอง {// ========= 1 โหลดคลาสไดรเวอร์ forName (ไดรเวอร์); // ======== 2 เชื่อมต่อ CT = driverManager.getConnection (URL, ผู้ใช้, passwd); // ======== 3 สร้าง PreparedStatement PS = CT.Preparestatement (SQL); // ======== 4 กำหนดค่าให้กับเครื่องหมายคำถามถ้า (paras! = null) {สำหรับ (int i = 0; i <paras.length; i ++) {ps.setstring (i+1, paras [i]); }} // ======= 5 ดำเนินการ rs = ps.executeQuery (); } catch (exception e) {// todo: จัดการข้อยกเว้น e.printstacktrace (); } ในที่สุด {//this.close (); } // ========= คืนค่าส่งคืน RS; } // ======== เพิ่มหรือลบบูลีนสาธารณะ cudexecute (สตริง sql, string [] paras) {boolean b = true; ลอง {// ========= 1 โหลดคลาสไดรเวอร์ forName (ไดรเวอร์); // ======= 2 เชื่อมต่อ CT = driverManager.getConnection (URL, ผู้ใช้, passwd); // ======= 3 สร้าง PreparedStatement PS = CT.Preparestatement (SQL); // ======== 4 กำหนดค่าให้กับเครื่องหมายคำถามสำหรับ (int i = 0; i <paras.length; i ++) {ps.setstring (i+1, paras [i]); } // ======== 5 ดำเนินการ if (ps.executeUpdate ()! = 1) b = false; } catch (ข้อยกเว้น e) {// todo: จัดการข้อยกเว้น b = false; E.PrintStackTrace (); } ในที่สุด {this.close (); } // ========== return value return b; } // ========== ใกล้ชิดทรัพยากรสาธารณะปิดโมฆะปิด () {ลอง {ถ้า (rs! = null) rs.close (); ถ้า (ps! = null) ps.close (); if (ct! = null) ct.close (); } catch (Exception e2) {// todo: จัดการข้อยกเว้น e2.printstacktrace (); -อินเทอร์เฟซหลัก
เพิ่มอินเทอร์เฟซข้อมูลนักเรียน
ปรับเปลี่ยนอินเทอร์เฟซข้อมูลนักเรียน
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น