私は最近Javaとデータベースを学んでいます。私が以前に書いた学生管理システムを覚えています。何もすることがなかったので、自分で書いたのですが、機能は多くの機能を実装していませんでした。
開発言語:Java;開発環境:MySQL、Java;開発ツール:日食
このケースを開発するには、まずコンピューターにJava開発環境とMySQL、Java開発環境、MySQLの構築が必要なので、もう説明しません。必要な場合は、次の連絡先情報をご連絡ください:[email protected]
今回はシステムが比較的単純です。データベースにはテーブルが1つしかありません。STU。機能:生徒を追加、削除、変更できます。
開発手順:
1.データベースにテーブルを作成します。
テーブルStu(Stuid String、Stuname String、Stusex String、Stuage Int、Stujg String、Studept Sring)を作成します。
2.Javaコードは、主に4つのクラスで構成されています。
test3には主な関数が含まれています。 Stumodelは、データベースを更新およびレンダリングするために使用されます。 Stuadddiagは、読者関数を追加するために使用されます。 Stuupdiagは、学生情報を変更するために使用されます。特定のコードは次のとおりです。
test3.java:
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.impertement; Importtatement; java.sql.statement; public class test3拡張jframe explments 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;結果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(this); jl1 = new Jlabel( "名前を入力してください:"); jp1.add(jl1); jp1.add(jtf); jp1.add(jb1); jb2 = new jbutton( "add"); jb2.addactionlistener(this); jb3 = new JButton( "Modify"); jb3.addactionlistener(this); jb4 = new JButton( "Delete"); jb4.addactionlistener(this); jp2 = new JPanel(); jp2.add(jb2); jp2.add(jb3); jp2.add(jb4); //モデルオブジェクトを作成しますsm = new 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(true); } public void ActionPerformed(actionEvent arg0){// [arg0.getSource()== jb1){system.out.println( "ユーザーがクエリを削除したい..."); //テーブルのデータはstumodelにカプセル化されているため、クエリ文字列名= this.jtf.getText()。trim()を完了する方が簡単です。 // sqlステートメント文字列sql = "select * from stu where stuname = '"+name+"'"; //データモデルクラスを作成し、SM = new Stumodel(SQL)を更新します。 // jtable jt.setmodel(sm)を更新します。 } // 1。追加インターフェイスをポップアップしてください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。学生ID int rownum = this.jt.getSelectedRow(); // getSelectedRowはユーザーポイントの行に戻ります//ユーザーが行を選択していない場合、retun -1 if(rownum == -1){// prompt joptionpane.showmessageialog(this ");戻る ; } // 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"に接続します。文字列ユーザー= "root";文字列passwd = "lfdy"; ct = drivermanager.getConnection(url、user、passwd); System.out.println( "Connection success"); ps = ct.preparestatement( "Stu where Stuid =?"からdelete stu "); ps.setString(1、stuid); ps.executeUpdate(); } catch(Exception 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){// prompt joptionpane.showmessageialog(this、 "a low a lowを選択してください");戻る ; } //ダイアログsystem.out.println( "12435")を表示します。 stuupdiag su = new stuupdiag(これ、「アカデミックを修正」、true、sm、rownum); sm = new Stumodel(); Jt.SetModel(SM); }}}stumodel.java:
/**これは私のSTUテーブルモデルです*学生テーブルのすべての操作をこのクラスにカプセル化できます*/パッケージcom.test2; Import java.sql.connection; Import java.sql.drivermanager; Import java.sql.Resultset; Import Java.sql.Statement; Import java.util.util.vecrecabement; StumodelはAbstractTableModelを拡張します{// Rowdataはrowデータを保存します。 //データベース= nullに接続する変数ステートメント統計を定義します。接続ct = null;結果rs = null; // public void init(string sql){if(sql.equals( "")){sql = "select * from Stu"; } //中間体//列名列名を設定= new Vector(); columnnames.add( "学校番号"); columnnames.add( "name"); columnnames.add( "gender"); columnnames.add( "age"); columnnames.add( "name"); columnnames.add( "name"); columnnames.add( "name"); columnnames.add( "ect"); // rowdataは複数行を保存しますrowdata = new Vector(); {// 1を試してください。 Load Driver class.forname( "com.mysql.jdbc.driver"); System.out.println( "ロードに正常に"); // 2。データベースに接続//いくつかの定義文字列url = "jdbc:mysql:// localhost:3306/spdb1";文字列ユーザー= "root";文字列passwd = "lfdy"; ct = drivermanager.getConnection(url、user、passwd); stat = ct.createstatement(); // statオブジェクトrs = stat.executequery(sql); // query result while(rs.next()){vector hang = new vector(); Hung.Add(rs.getString(1)); Hung.Add(rs.getString(2)); Hung.Add(rs.getString(3)); Hung.Add(rs.getint(4)); Hung.Add(rs.getString(5)); Hung.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ステートメントに基づいて追加タスクを終了します} // 2番目のコンストラクターは、合格したSQLステートメントパブリックStumodel(String SQL){this.init(sql); } //コンストラクター、データモデルの初期化に使用されます(テーブル)public stumodel(){this.init( ""); } // int getRowCount(){// todo auto-fenated method stub this.rowdata.size(); } // int getColumnCount(){// todo auto-enerated method stub return this.columnnames.size(); } //行と列のデータを取得しますpublic object getValueat(int row、int column){// todo auto-eneratedメソッドスタブリターン((vector)(this.rowdata.get(row)))。 } //属性名Public String getColumnName(int column){// todo auto-enerated method stub Returt(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.event.event.actionlistener; import java.sql.statement; Import Java.sql.Connection; Import java.sql.dribr.dribermanection; java.sql。*;パブリッククラスのstuadddiag拡張jdialog explments actionlistener {//スイングコンポーネントを定義します。 JTextfield JF1、JF2、JF3、JF4、JF5、JF6; JPanel JP1、JP2、JP3; JButton JB1、JB2; //所有者のゴーストライターの親ウィンドウ、タイトルはウィンドウの名前であり、モーダルは、それがパターンウィンドウ()または非モードウィンドウのパブリックstuadddiag(フレーム所有者、文字列タイトル、ブールモーダル)であることを指定します{//親クラスメソッドスーパー(所有者、タイトル、モーダル) jl1 = new Jlabel( "Study Number"); jl2 = new Jlabel( "name"); jl3 = new Jlabel( "gender"); jl4 = new Jlabel( "age"); jl5 = new Jlabel( "Home"); jl6 = new Jlabel( "ect"); 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(this); jb2 = new jbutton( "キャンセル"); jp1 = new JPanel(); jp2 = new JPanel(); jp3 = new 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.setVisible(true); } @Override public void actionperformed(actionEvent e){// todo auto-fornatedメソッドスタブif(e.getSource()== jb1){connection ct = null; predtatement pstmt = null;結果rs = null; {// 1を試してください。 Load Driver class.forname( "com.mysql.jdbc.driver"); system.out.println( "leaded raoledfully"); // 2。データベースに接続//いくつかの定義文字列url = "jdbc:mysql:// localhost:3306/spdb1";文字列ユーザー= "root";文字列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;/**学生の変更*/javax.swing.jdialog; Import javax.swing。*; import java.awt.event.event.actionevent; Import java.awt.event.actionlistener; Import java.sql.Statement; java.sql.resultset; Import Java.sql.sql。*; public class stuupdiag extends Jdialog explments ActionListener {//スイングコンポーネントを定義するJLabel JL1、JL2、JL3、JL4、JL5、JL6; JTextfield JF1、JF2、JF3、JF4、JF5、JF6; JPanel JP1、JP2、JP3; JButton JB1、JB2; //所有者ペンインザペアのウィンドウ、タイトルはウィンドウの名前であり、モーダルはモードウィンドウ()または非モードウィンドウのパブリックスチュプディアグ(フレーム所有者、文字列タイトル、ブールモーダル、スティュモデルSM、int rownumであることを指定します。 jl1 = new Jlabel( "学生番号"); jl2 = new Jlabel( "name"); jl3 = new Jlabel( "gender"); jl4 = new Jlabel( "age"); jl5 = new Jlabel( "name"); 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 = new jbutton( "キャンセル"); jp1 = new JPanel(); jp2 = new JPanel(); jp3 = new 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.setVisible(true); } @Override public void actionperformed(actionEvent e){// todo auto-fornatedメソッドスタブif(e.getSource()== jb1){connection ct = null; predtatement pstmt = null;結果rs = null; {// 1を試してください。 Load Driver class.forname( "com.mysql.jdbc.driver"); system.out.println( "leaded raoledfully"); // 2。データベースに接続//いくつかの定義文字列url = "jdbc:mysql:// localhost:3306/spdb1";文字列ユーザー= "root";文字列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をもっとサポートすることを願っています。