최근에 Java와 데이터베이스를 배우고 있습니다. 나는 이전에 쓴 학생 관리 시스템을 기억하며 인터넷에서 다운로드했으며 성가신 것입니다. 나는 할 일이 없었기 때문에 직접 썼지 만 기능은 많은 기능을 구현하지 않았습니다.
개발 언어 : Java; 개발 환경 : MySQL, Java; 개발 도구 : 일식
이 사례를 개발하려면 먼저 컴퓨터, Java 개발 환경 및 MySQL의 건설에 Java 개발 환경과 MySQL이 있어야하므로 더 이상 설명하지 않겠습니다. 필요한 경우 다음 연락처 정보로 저에게 연락하십시오 : [email protected]
시스템은 이번에 비교적 간단합니다. 데이터베이스에는 하나의 테이블 만 있습니다 : STU; 기능 : 학생들을 추가, 삭제 및 수정할 수 있습니다.
개발 단계 :
1. 데이터베이스에서 테이블 만들기 :
테이블 stu (stuid string, stuname string, stusex string, stuage int, stujg string, studept sring)를 만듭니다.
2. 자바 코드는 주로 네 가지 클래스로 구성됩니다.
test3은 주요 함수를 포함합니다. Stumodel은 데이터베이스를 새로 고치고 렌더링하는 데 사용됩니다. stuadddiag는 독자 기능을 추가하는 데 사용됩니다. stuupdiag는 학생 정보를 수정하는 데 사용됩니다. 특정 코드는 다음과 같습니다.
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.prepedstatement; java.sql.sql.sql.prepedstatement; 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; 스토모 델 SM; // 변수 명령문 정의 stat = null; 준비된 상태 ps; 연결 CT = NULL; resultSet rs = null; public static void main (String [] args) {test3 test3 = new test3 (); } // 생성자 public test3 () {jp1 = new jpanel (); jtf = 새로운 Jtextfield (10); JB1 = New JButton ( "Query"); JB1.AddActionListener (this); JL1 = New Jlabel ( "이름을 입력하십시오 :"); jp1.add (jl1); jp1.add (jtf); jp1.add (jb1); JB2 = 새로운 JBUTTON ( "add"); jb2.addactionListener (this); JB3 = New Jbutton ( "modify"); jb3.addactionListener (this); JB4 = 새로운 JBUTTON ( "Delete"); jb4.addactionListener (this); jp2 = 새로운 jpanel (); jp2.add (jb2); jp2.add (jb3); jp2.add (jb4); // 모델 객체 작성 sm = new Stumodel (); // jt = new Jtable (SM) 초기화; JSP = 새로운 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.set -Visible (true); } public void ActionPerformed (ActionEvent Arg0) {// 클릭 한 버튼을 결정합니다 (arg0.getSource () == jb1) {System.out.println ( "사용자가 쿼리를 원합니다 ..."); // 테이블의 데이터가 Stumodel로 캡슐화되어 있으므로 쿼리 문자열 이름 = this.jtf.getText (). trim (); // sql string string sql = "select *에서 stuame = '+name+"' "; // 데이터 모델 클래스를 빌드하고 SM = SQL (New Stumodel)을 업데이트합니다. // jtable jt.setmodel (sm)을 업데이트합니다. } // 1. else if (arg0.getSource () == jb2) {system.out.println ( "add ..."); STUADDDIAG SA = NEW STUADDDIAG (이것은 "학생 추가", True); // 새 데이터 모델을 다시 가져옵니다, sm = new Stumodel (); Jt.setModel (SM); } else if (arg0.getSource () == jb4) {// 2. 레코드 삭제 // 1. 학생 INT int rownum = this.jt.getSelectedRow (); // getSelectedRow는 사용자 지점에서 행으로 돌아갑니다. // 사용자가 행이 선택되지 않은 경우 -1 if (rownum == -1) {// PromptionPane.ShowMessagedIalog ( "행을 선택하십시오"); 반품 ; } // Academic ID String stuid = (String) sm.getValueat (rownum, 0); System.out.println ( "id :"+stuid); // 데이터베이스를 연결하고 삭제 작업을 완료하십시오. {// 1. 드라이버 class.forname을로드합니다 ( "com.mysql.jdbc.driver"); // 2. 데이터베이스 문자열 URL = "JDBC : mysql : // localhost : 3306/spdb1에 연결하십시오."; 문자열 사용자 = "루트"; 문자열 passwd = "lfdy"; CT = DriverManager.getConnection (URL, USER, PASSWD); System.out.println ( "연결 성공"); ps = ct.preparestatement ( "stuid =?"); ps.SetString (1, Stuid); ps.ExecuteUpdate (); } catch (예외 e) {e.printstacktrace (); } 마침내 {try {if (rs! = null) {rs.close (); rs = null; } 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)을 업데이트합니다. } else if (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 (이것은 "Academic", True, SM, Rownum); sm = new Stumodel (); Jt.setModel (SM); }}}stumodel.java :
/** 이것은 내 STU 테이블 모델입니다* 당신은 학생 테이블의 모든 작업을이 클래스에 캡슐화 할 수 있습니다*/package com.test2; import java.sql.connection; import java.sql.drivermanager; import java.sql.resultset; import java.sql.statement; vaba.util.vector; Stumodel은 AbstractTableModel {// RowData 저장 Row Data, ColumnNames Stores Column Names 벡터 RowData, ColumnNames; // database = null에 연결되는 변수 명령문 통계를 정의합니다. 연결 CT = NULL; resultSet rs = null; // public void init (string sql) {if (sql.equals ( "")) {sql = "select * from stu"; } // intermediate // 열 이름 columnnames = new vector (); columnnames.add ( "학교 번호"); columnNames.add ( "이름"); columnnames.add ( "성별"); columnnames.add ( "Age"); columnNames.add ( "이름"); columnNames.add ( "이름"); columnNames.add ( "이름"); columnnames.add ( "sect"); // RowData는 여러 행을 저장합니다 RowData = new Vector (); {// 1. 로드 드라이버 class.forname ( "com.mysql.jdbc.driver"); System.out.println ( "성공적으로로드"); // 2. 데이터베이스에 연결 // 여러 상수 정의 문자열 url = "jdbc : mysql : // localhost : 3306/spdb1"; 문자열 사용자 = "루트"; 문자열 passwd = "lfdy"; CT = DriverManager.getConnection (URL, USER, PASSWD); stat = ct.createstatement (. 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 (예외 e) {e.printstacktrace (); } 마침내 {try {if (rs! = null) {rs.close (); rs = null; } if (stat! = null) {stat.close (); stat = null; } if (ct! = null) {ct.close (); CT = NULL; }} catch (예외 e) {e.printstacktrace (); }}} // 학생 함수 추가 public void addstu (string sql) {// 사용자가 입력 한 SQL 문을 기반으로 추가 작업을 완료합니다} // 두 번째 생성자는 전달 된 SQL 문을 통해 데이터 모델을 얻습니다. public stumodel (this.init (sql); } // 생성자, 내 데이터 모델을 초기화하는 데 사용됩니다 (테이블) public stumodel () {this.init ( ""); } // get getrowcount () {// todo 자동 생성 메소드 스텁이 return this.rowdata.size (); } // int getColumnCount () {// todo 자동 생성 메소드 스터브 reture this.columnnames.size (); } // 행의 데이터를 가져옵니다. 공개 객체 getValueat (int row, int column) {// todo auto-auto-regenated method stub return ((vector) (this.rowdata.get (row)). get (column); } // 속성을 가져옵니다. 공개 문자열 getColumnName (int column) {// todo 자동 생성 메소드 스터브 리턴 (string) this.columnnames.get (column); }}stuadddiag.java :
패키지 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.drmanager; java.sql.restest; java.sql.*; public class stuadddiag jdialog empless actionlistener {// 스윙 구성 요소를 정의해야합니다. Jtextfield JF1, JF2, JF3, JF4, JF5, JF6; JPANEL JP1, JP2, JP3; JBUTTON JB1, JB2; // 소유자 Ghostwriter Parent Window, 제목은 창의 이름입니다. Modal은 패턴 창 () 또는 비 모드 창 또는 비 모드 창 공개 stuaddiag (프레임 소유자, 문자열 제목, 부울 모달)임을 지정합니다. JL1 = New Jlabel ( "연구 번호"); JL2 = New Jlabel ( "이름"); JL3 = New Jlabel ( "성별"); JL4 = New Jlabel ( "Age"); JL5 = New Jlabel ( "홈"); JL6 = New Jlabel ( "Sect"); JF1 = 새로운 Jtextfield (10); JF2 = 새로운 Jtextfield (10); JF3 = 새로운 Jtextfield (10); JF4 = 새로운 Jtextfield (10); JF5 = 새로운 Jtextfield (10); JF6 = 새로운 Jtextfield (10); JB1 = 새로운 JBUTTON ( "add"); JB1.AddActionListener (this); JB2 = 새로운 JBUTTON ( "취소"); jp1 = 새로운 jpanel (); jp2 = 새로운 jpanel (); jp3 = 새로운 jpanel (); // 레이아웃을 설정합니다 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.set -Visible (true); } @override public void ActionPerformed (ActionEvent e) {// todo 자동 생성 메소드 스터브 if (e.getSource () == jb1) {Connection CT = null; 준비된 상태 PSTMT = NULL; resultSet rs = null; {// 1. 로드 드라이버 class.forname ( "com.mysql.jdbc.driver"); System.out.println ( "성공적으로로드"); // 2. 데이터베이스에 연결 // 여러 상수 정의 문자열 url = "jdbc : mysql : // localhost : 3306/spdb1"; 문자열 사용자 = "루트"; 문자열 passwd = "lfdy"; CT = DriverManager.getConnection (URL, USER, 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 (); } 마침내 {try {if (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;/** 학생 수정*/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; java.sql.resultset; import java.sql.sql.*; public class stuupdiag jdialog empless actionlistener {// 스윙 구성 요소를 정의해야합니다. Jtextfield JF1, JF2, JF3, JF4, JF5, JF6; JPANEL JP1, JP2, JP3; JBUTTON JB1, JB2; // 소유자 Pen-in-the-Parent Window, 제목은 창의 이름이며, Modal은 모드 창 () 또는 비 모드 창 공개 stuupdiag (프레임 소유자, 문자열 제목, 부울 모달, 스텀 모드 SM, int rownum)임을 지정합니다. JL1 = New Jlabel ( "학생 번호"); JL2 = New Jlabel ( "이름"); JL3 = New Jlabel ( "성별"); JL4 = New Jlabel ( "Age"); JL5 = New Jlabel ( "이름"); JL6 = New Jlabel ( "섹션"); 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 (this); JB2 = 새로운 JBUTTON ( "취소"); jp1 = 새로운 jpanel (); jp2 = 새로운 jpanel (); jp3 = 새로운 jpanel (); // 레이아웃을 설정합니다 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.set -Visible (true); } @override public void ActionPerformed (ActionEvent e) {// todo 자동 생성 메소드 스터브 if (e.getSource () == jb1) {Connection CT = null; 준비된 상태 PSTMT = NULL; resultSet rs = null; {// 1. 로드 드라이버 class.forname ( "com.mysql.jdbc.driver"); System.out.println ( "성공적으로로드"); // 2. 데이터베이스에 연결 // 여러 상수 정의 문자열 url = "jdbc : mysql : // localhost : 3306/spdb1"; 문자열 사용자 = "루트"; 문자열 passwd = "lfdy"; CT = DriverManager.getConnection (URL, USER, 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 (); } 마침내 {try {if (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을 더 지원하기를 바랍니다.