亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java+Mysql學(xué)生管理系統(tǒng)源碼

 更新時(shí)間:2020年12月21日 15:28:40   作者:HelloRoot  
這篇文章主要為大家詳細(xì)介紹了Java+Mysql學(xué)生管理系統(tǒng)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近正在學(xué)java和數(shù)據(jù)庫(kù),想起以前寫的學(xué)生管理系統(tǒng),都是從網(wǎng)上下載,敷衍了事。閑來(lái)無(wú)事,也就自己寫了一個(gè),不過(guò)功能實(shí)現(xiàn)的不是很多。

開發(fā)語(yǔ)言:java; 開發(fā)環(huán)境:Mysql, java; 開發(fā)工具:eclipse
開發(fā)此案例,首先得在電腦上有java開發(fā)環(huán)境和Mysql, java開發(fā)環(huán)境與Mysql的搭建,就不再敘述了,如果需要,請(qǐng)聯(lián)系我最下面的聯(lián)系方式:dingyelf@aliyun.com

此次系統(tǒng)比較簡(jiǎn)易:數(shù)據(jù)庫(kù)中只有一個(gè)表:stu;功能:能夠?qū)W(xué)生增加、刪除、修改。

開發(fā)步驟:

1.在數(shù)據(jù)庫(kù)中建表: 

create table stu(
stuId String,
stuName String,
stuSex String,
stuAge int,
stuJG String,
stuDept Sring
);

2.java 代碼主要由四個(gè)類組成:

Test3包含主函數(shù);StuModel用來(lái)刷新、呈現(xiàn)數(shù)據(jù)庫(kù);StuAddDiag用來(lái)實(shí)現(xiàn)增添讀者功能;StuUpDiag是修改學(xué)生信息。具體代碼如下:
 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.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class Test3 extends JFrame implements ActionListener {
 //定義一些控件
 JPanel jp1,jp2;
 JLabel jl1,jl2;
 JButton jb1,jb2,jb3,jb4;
 JTable jt;
 JScrollPane jsp;
 JTextField jtf;
 StuModel sm; 
 //定義連接數(shù)據(jù)庫(kù)的變量
 Statement stat = null;
 PreparedStatement ps;
 Connection ct = null;
 ResultSet rs = null;
 
 public static void main(String[] args){
 Test3 test3 = new Test3();
 }
 //構(gòu)造函數(shù)
 public Test3(){
 jp1 = new JPanel();
 jtf = new JTextField(10);
 jb1 = new JButton("查詢");
 jb1.addActionListener(this);
 jl1 = new JLabel("請(qǐng)輸入名字:");
 
 jp1.add(jl1);
 jp1.add(jtf);
 jp1.add(jb1);
 
 jb2 = new JButton("添加");
 jb2.addActionListener(this);
 jb3 = new JButton("修改");
 jb3.addActionListener(this);
 jb4 = new JButton("刪除");
 jb4.addActionListener(this);
 
 jp2 = new JPanel();
 jp2.add(jb2);
 jp2.add(jb3);
 jp2.add(jb4);
 
 //創(chuàng)建模型對(duì)象
 sm = new StuModel();
 
 
 //初始化
 jt = new JTable(sm);
 
 jsp = new JScrollPane(jt);
 
 //將jsp放入到j(luò)frame中
 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) {
 //判斷是哪個(gè)按鈕被點(diǎn)擊
 if(arg0.getSource() == jb1){
 System.out.println("用戶希望被查詢...");
 //因?yàn)榘褜?duì)表的數(shù)據(jù)封裝到StuModel中,可以比較簡(jiǎn)單的完成查詢
 String name = this.jtf.getText().trim();
 //寫一個(gè)sql語(yǔ)句
 String sql = "select * from stu where stuName = '"+name+"' ";
 //構(gòu)建一個(gè)數(shù)據(jù)模型類,并更新
 sm = new StuModel(sql);
 //更新jtable
 jt.setModel(sm);
 
 }
 
 //一、彈出添加界面
 else if(arg0.getSource() == jb2){
 System.out.println("添加...");
 StuAddDiag sa = new StuAddDiag(this,"添加學(xué)生",true);
 
 //重新再獲得新的數(shù)據(jù)模型,
 sm = new StuModel();
 jt.setModel(sm);
 }else if(arg0.getSource() == jb4){
 //二、刪除記錄
 //1.得到學(xué)生的ID
 int rowNum = this.jt.getSelectedRow();//getSelectedRow會(huì)返回給用戶點(diǎn)中的行
 //如果該用戶一行都沒有選,就返回-1
 if(rowNum == -1){
 //提示
 JOptionPane.showMessageDialog(this, "請(qǐng)選中一行");
 return ;
 }
 //得到學(xué)術(shù)ID
 String stuId = (String)sm.getValueAt(rowNum, 0);
 System.out.println("Id: "+stuId);
 
 //連接數(shù)據(jù)庫(kù),完成刪除任務(wù)
 try{
 //1.加載驅(qū)動(dòng)
 Class.forName("com.mysql.jdbc.Driver"); 
 //2.連接數(shù)據(jù)庫(kù)
 String url = "jdbc:mysql://localhost:3306/spdb1";
 String user = "root";
 String passwd = "lfdy";
 
 ct = DriverManager.getConnection(url, user, passwd);
 System.out.println("連接成功");
 ps = ct.prepareStatement("delete from stu where stuId = ?");
 ps.setString(1,stuId);
 ps.executeUpdate();
 
 }catch(Exception e){
 e.printStackTrace();
 }finally{
 try{
 if(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 = new StuModel();
 //更新jtable
 jt.setModel(sm); 
 }else if(arg0.getSource() == jb3){
 System.out.println("11111");
 //三、用戶希望修改
 int rowNum = this.jt.getSelectedRow();
 if(rowNum == -1){
 //提示
 JOptionPane.showMessageDialog(this, "請(qǐng)選擇一行");
 return ;
 }
 //顯示對(duì)話框
 System.out.println( "12435");
 StuUpDiag su = new StuUpDiag(this, "修改學(xué)術(shù)", true, sm, rowNum);
 sm = new StuModel();
 jt.setModel(sm);
 } 
 }
}

StuModel.java: 

/*
 * 這是我的一個(gè)stu表的模型
 * 可以把對(duì)學(xué)生表的操作全都封裝到這個(gè)類
 */
package com.test2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.table.*;

public class StuModel extends AbstractTableModel{

 //rowData存放行數(shù)據(jù),columnNames存放列名
 Vector rowData,columnNames;
 
 //定義連接數(shù)據(jù)庫(kù)的變量
 Statement stat = null;
 Connection ct = null;
 ResultSet rs = null;
 
 //初始化
 public void init(String sql){
 if(sql.equals("")){
 sql = "select * from stu";
 }
 //中間
 //設(shè)置列名
 columnNames = new Vector();
 columnNames.add("學(xué)號(hào)");
 columnNames.add("名字");
 columnNames.add("性別");
 columnNames.add("年齡");
 columnNames.add("籍貫");
 columnNames.add("門派");
 
 //rowData存放多行
 rowData = new Vector();
 
 try{
 //1.加載驅(qū)動(dòng)
 Class.forName("com.mysql.jdbc.Driver");
 System.out.println("加載成功");
 //2.連接數(shù)據(jù)庫(kù)
 //定義幾個(gè)常量
 String url = "jdbc:mysql://localhost:3306/spdb1";
 String user = "root";
 String passwd = "lfdy";
 
 ct = DriverManager.getConnection(url,user,passwd);
 stat = ct.createStatement();//創(chuàng)建stat對(duì)象
 rs = stat.executeQuery(sql);//查詢結(jié)果
 
 while(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中
 rowData.add(hang);
 
 }
 
 }catch(Exception e){
 e.printStackTrace();
 }finally{
 try{
 if(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();
 }
 }
 }
 
 //增加學(xué)生函數(shù)
 public void addStu(String sql){
 //根據(jù)用戶輸入的sql語(yǔ)句,完成添加任務(wù)
 
 
 
 }
 
 //第二個(gè)構(gòu)造函數(shù),通過(guò)傳遞的sql語(yǔ)句來(lái)獲得數(shù)據(jù)模型
 public StuModel(String sql){
 this.init(sql);
 }
 
 //構(gòu)造函數(shù),用于初始化我的數(shù)據(jù)模型(表)
 public StuModel(){
 this.init("");
 }
 
 //得到共有多少行
 public int getRowCount() {
 // TODO Auto-generated method stub
 return this.rowData.size();
 }

 //得到共有多少列
 public int getColumnCount() {
 // TODO Auto-generated method stub
 return this.columnNames.size();
 }

 //得到某行某列的數(shù)據(jù)
 public Object getValueAt(int row, int column) {
 // TODO Auto-generated method stub
 return ((Vector)(this.rowData.get(row))).get(column);
 }
 
 //得到屬性名字
 public String getColumnName(int column) {
 // TODO Auto-generated method stub
 return (String)this.columnNames.get(column);
 }
}

StuAddDiag.java: 

package com.test2;

import javax.swing.JDialog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.*;

public class StuAddDiag extends JDialog implements ActionListener {
 //定義我需要的swing組件
 JLabel jl1,jl2,jl3,jl4,jl5,jl6;
 JTextField jf1,jf2,jf3,jf4,jf5,jf6;
 JPanel jp1,jp2,jp3;
 JButton jb1,jb2;
 //owner代筆父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口
 public StuAddDiag(Frame owner,String title, boolean modal){
 //調(diào)用父類方法
 super(owner,title,modal);
 
 jl1 = new JLabel("學(xué)號(hào)");
 jl2 = new JLabel("名字");
 jl3 = new JLabel("性別"); 
 jl4 = new JLabel("年齡");
 jl5 = new JLabel("籍貫");
 jl6 = new JLabel("門派");
 
 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("添加");
 jb1.addActionListener(this);
 jb2 = new JButton("取消");
 
 jp1 = new JPanel();
 jp2 = new JPanel();
 jp3 = new JPanel();
 
 //設(shè)置布局
 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-generated method stub
 if(e.getSource() == jb1){
 Connection ct = null;
 PreparedStatement pstmt = null;
 ResultSet rs = null;
 
 try{
 //1.加載驅(qū)動(dòng)
 Class.forName("com.mysql.jdbc.Driver");
 System.out.println("加載成功");
 //2.連接數(shù)據(jù)庫(kù)
 //定義幾個(gè)常量
 String url = "jdbc:mysql://localhost:3306/spdb1";
 String user = "root";
 String passwd = "lfdy";
 ct = DriverManager.getConnection(url,user,passwd);
 
 //與編譯語(yǔ)句對(duì)象
 
 String strsql = "insert into stu values(?,?,?,?,?,?)";
 pstmt = ct.prepareStatement(strsql);
 
 //給對(duì)象賦值
 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();//關(guān)閉學(xué)生對(duì)話框
 
 }catch(Exception arg1){
 arg1.printStackTrace();
 }finally{
 try{
 if(rs!=null){
 rs.close();
 rs = null;
 }
 if(pstmt != null){
 pstmt.close();
 pstmt = null;
 }
 if(ct != null){
 ct.close();
 ct = null;
 } 
 }catch(Exception arg2){
 arg2.printStackTrace();
 }
 }
 
 }
 
 }
 
 
}

StuUpDiag.java: 

package com.test2;
/*
 * 修改學(xué)生
 */
import javax.swing.JDialog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.*;

public class StuUpDiag extends JDialog implements ActionListener {
 //定義我需要的swing組件
 JLabel jl1,jl2,jl3,jl4,jl5,jl6;
 JTextField jf1,jf2,jf3,jf4,jf5,jf6;
 JPanel jp1,jp2,jp3;
 JButton jb1,jb2;
 //owner代筆父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口
 public StuUpDiag(Frame owner,String title, boolean modal,StuModel sm,int rowNum){
 //調(diào)用父類方法
 super(owner,title,modal);
 
 jl1 = new JLabel("學(xué)號(hào)");
 
 jl2 = new JLabel("名字");
 
 jl3 = new JLabel("性別"); 
 jl4 = new JLabel("年齡");
 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("修改");
 jb1.addActionListener(this);
 jb2 = new JButton("取消");
 
 jp1 = new JPanel();
 jp2 = new JPanel();
 jp3 = new JPanel();
 
 //設(shè)置布局
 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-generated method stub
 if(e.getSource() == jb1){
 Connection ct = null;
 PreparedStatement pstmt = null;
 ResultSet rs = null;
 
 try{
 //1.加載驅(qū)動(dòng)
 Class.forName("com.mysql.jdbc.Driver");
 System.out.println("加載成功");
 //2.連接數(shù)據(jù)庫(kù)
 //定義幾個(gè)常量
 String url = "jdbc:mysql://localhost:3306/spdb1";
 String user = "root";
 String passwd = "lfdy";
 ct = DriverManager.getConnection(url,user,passwd);
 
 //與編譯語(yǔ)句對(duì)象
 
 String strsql = "insert into stu values(?,?,?,?,?,?)";
 pstmt = ct.prepareStatement(strsql);
 
 //給對(duì)象賦值
 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();//關(guān)閉學(xué)生對(duì)話框
 
 }catch(Exception arg1){
 arg1.printStackTrace();
 }finally{
 try{
 if(rs!=null){
 rs.close();
 rs = null;
 }
 if(pstmt != null){
 pstmt.close();
 pstmt = null;
 }
 if(ct != null){
 ct.close();
 ct = null;
 } 
 }catch(Exception arg2){
 arg2.printStackTrace();
 }
 }
 
 }
 
 }
 
 
}

開發(fā)與測(cè)試結(jié)果:

1.系統(tǒng)主界面:

2.按名字查詢:

3.選中一行,刪除:

4.選中一行修改:

5.點(diǎn)擊添加按鈕,進(jìn)行添加:

后續(xù)此系統(tǒng)將繼續(xù)完善,有疑問(wèn)和技術(shù)交流的,可聯(lián)系本人:dingyelf@aliyun.com

關(guān)于管理系統(tǒng)的更多內(nèi)容請(qǐng)點(diǎn)擊《管理系統(tǒng)專題》進(jìn)行學(xué)習(xí)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot+Elasticsearch實(shí)現(xiàn)數(shù)據(jù)搜索的方法詳解

    SpringBoot+Elasticsearch實(shí)現(xiàn)數(shù)據(jù)搜索的方法詳解

    Elasticsearch是一個(gè)基于Lucene的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于RESTful?web接口。本文將利用SpringBoot整合Elasticsearch實(shí)現(xiàn)海量級(jí)數(shù)據(jù)搜索,需要的可以參考一下
    2022-05-05
  • java的時(shí)間類匯總(齊全)

    java的時(shí)間類匯總(齊全)

    這篇文章主要介紹了java的時(shí)間類匯總(齊全),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09
  • Spring單元測(cè)試類ApplicationTests錯(cuò)誤的解決

    Spring單元測(cè)試類ApplicationTests錯(cuò)誤的解決

    這篇文章主要介紹了Spring單元測(cè)試類ApplicationTests錯(cuò)誤的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 詳解idea+maven打jar包的兩種方式

    詳解idea+maven打jar包的兩種方式

    這篇文章主要介紹了idea+maven打jar包的兩種方式,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java設(shè)計(jì)模式之外觀模式示例詳解

    Java設(shè)計(jì)模式之外觀模式示例詳解

    外觀模式為多個(gè)復(fù)雜的子系統(tǒng),提供了一個(gè)一致的界面,使得調(diào)用端只和這個(gè)接口發(fā)生調(diào)用,而無(wú)須關(guān)系這個(gè)子系統(tǒng)內(nèi)部的細(xì)節(jié)。本文將通過(guò)示例詳細(xì)為大家講解一下外觀模式,需要的可以參考一下
    2022-03-03
  • Spring定時(shí)服務(wù)QuartZ原理及代碼案例

    Spring定時(shí)服務(wù)QuartZ原理及代碼案例

    這篇文章主要介紹了Spring定時(shí)服務(wù)QuartZ原理及代碼案例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • java工廠實(shí)例BeanFactoryPostProcessor和BeanPostProcessor區(qū)別分析

    java工廠實(shí)例BeanFactoryPostProcessor和BeanPostProcessor區(qū)別分析

    這篇文章主要為大家介紹了BeanFactoryPostProcessor和BeanPostProcessor區(qū)別示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Java Spring IOC圖文詳解

    Java Spring IOC圖文詳解

    IoC是一種讓服務(wù)消費(fèi)者不直接依賴于服務(wù)提供者的組件設(shè)計(jì)方式,是一種減少類與類之間依賴的設(shè)計(jì)原則。下面通過(guò)本文給大家分享spring中ioc的概念,感興趣的朋友一起看看吧
    2021-09-09
  • 深入解析Apache Kafka實(shí)時(shí)流處理平臺(tái)

    深入解析Apache Kafka實(shí)時(shí)流處理平臺(tái)

    這篇文章主要為大家介紹了Apache Kafka實(shí)時(shí)流處理平臺(tái)深入解析,從基本概念到實(shí)戰(zhàn)操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Mybatis?mysql模糊查詢方式(CONCAT多個(gè)字段)及bug

    Mybatis?mysql模糊查詢方式(CONCAT多個(gè)字段)及bug

    這篇文章主要介紹了Mybatis?mysql模糊查詢方式(CONCAT多個(gè)字段)及bug,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評(píng)論