最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

開發(fā)步驟:

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

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

2.java 代碼主要由四個類組成:

Test3包含主函數(shù);StuModel用來刷新、呈現(xiàn)數(shù)據(jù)庫;StuAddDiag用來實現(xiàn)增添讀者功能;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.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ù)庫的變量
 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("請輸入名字:");
 
 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)建模型對象
 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) {
 //判斷是哪個按鈕被點擊
 if(arg0.getSource() == jb1){
 System.out.println("用戶希望被查詢...");
 //因為把對表的數(shù)據(jù)封裝到StuModel中,可以比較簡單的完成查詢
 String name = this.jtf.getText().trim();
 //寫一個sql語句
 String sql = "select * from stu where stuName = '"+name+"' ";
 //構(gòu)建一個數(shù)據(jù)模型類,并更新
 sm = new StuModel(sql);
 //更新jtable
 jt.setModel(sm);
 
 }
 
 //一、彈出添加界面
 else if(arg0.getSource() == jb2){
 System.out.println("添加...");
 StuAddDiag sa = new StuAddDiag(this,"添加學生",true);
 
 //重新再獲得新的數(shù)據(jù)模型,
 sm = new StuModel();
 jt.setModel(sm);
 }else if(arg0.getSource() == jb4){
 //二、刪除記錄
 //1.得到學生的ID
 int rowNum = this.jt.getSelectedRow();//getSelectedRow會返回給用戶點中的行
 //如果該用戶一行都沒有選,就返回-1
 if(rowNum == -1){
 //提示
 JOptionPane.showMessageDialog(this, "請選中一行");
 return ;
 }
 //得到學術(shù)ID
 String stuId = (String)sm.getValueAt(rowNum, 0);
 System.out.println("Id: "+stuId);
 
 //連接數(shù)據(jù)庫,完成刪除任務
 try{
 //1.加載驅(qū)動
 Class.forName("com.mysql.jdbc.Driver"); 
 //2.連接數(shù)據(jù)庫
 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, "請選擇一行");
 return ;
 }
 //顯示對話框
 System.out.println( "12435");
 StuUpDiag su = new StuUpDiag(this, "修改學術(shù)", 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;
import java.util.Vector;
import javax.swing.table.*;

public class StuModel extends AbstractTableModel{

 //rowData存放行數(shù)據(jù),columnNames存放列名
 Vector rowData,columnNames;
 
 //定義連接數(shù)據(jù)庫的變量
 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("學號");
 columnNames.add("名字");
 columnNames.add("性別");
 columnNames.add("年齡");
 columnNames.add("籍貫");
 columnNames.add("門派");
 
 //rowData存放多行
 rowData = new Vector();
 
 try{
 //1.加載驅(qū)動
 Class.forName("com.mysql.jdbc.Driver");
 System.out.println("加載成功");
 //2.連接數(shù)據(jù)庫
 //定義幾個常量
 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對象
 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();
 }
 }
 }
 
 //增加學生函數(shù)
 public void addStu(String sql){
 //根據(jù)用戶輸入的sql語句,完成添加任務
 
 
 
 }
 
 //第二個構(gòu)造函數(shù),通過傳遞的sql語句來獲得數(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("學號");
 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ū)動
 Class.forName("com.mysql.jdbc.Driver");
 System.out.println("加載成功");
 //2.連接數(shù)據(jù)庫
 //定義幾個常量
 String url = "jdbc:mysql://localhost:3306/spdb1";
 String user = "root";
 String passwd = "lfdy";
 ct = DriverManager.getConnection(url,user,passwd);
 
 //與編譯語句對象
 
 String strsql = "insert into stu values(?,?,?,?,?,?)";
 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();//關(guān)閉學生對話框
 
 }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;
/*
 * 修改學生
 */
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("學號");
 
 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ū)動
 Class.forName("com.mysql.jdbc.Driver");
 System.out.println("加載成功");
 //2.連接數(shù)據(jù)庫
 //定義幾個常量
 String url = "jdbc:mysql://localhost:3306/spdb1";
 String user = "root";
 String passwd = "lfdy";
 ct = DriverManager.getConnection(url,user,passwd);
 
 //與編譯語句對象
 
 String strsql = "insert into stu values(?,?,?,?,?,?)";
 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();//關(guān)閉學生對話框
 
 }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ā)與測試結(jié)果:

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

2.按名字查詢:

3.選中一行,刪除:

4.選中一行修改:

5.點擊添加按鈕,進行添加:

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

關(guān)于管理系統(tǒng)的更多內(nèi)容請點擊《管理系統(tǒng)專題》進行學習

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Kafka中消息隊列的兩種模式講解

    Kafka中消息隊列的兩種模式講解

    這篇文章主要介紹了Kafka中消息隊列的兩種模式講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Java使用正則表達式獲取子文本的方法示例

    Java使用正則表達式獲取子文本的方法示例

    這篇文章主要介紹了Java使用正則表達式獲取子文本的方法,結(jié)合實例形式分析了java針對子文本的正則操作相關(guān)函數(shù)與使用技巧,需要的朋友可以參考下
    2017-09-09
  • SpringBoot整合Swagger3生成接口文檔的示例代碼

    SpringBoot整合Swagger3生成接口文檔的示例代碼

    Swagger 是一個 RESTful API 的開源框架,它的主要目的是幫助開發(fā)者設(shè)計、構(gòu)建、文檔化和測試 Web API,本文給大家介紹了SpringBoot整合Swagger3生成接口文檔的流程,并通過代碼講解的非常詳細,需要的朋友可以參考下
    2024-04-04
  • 解決Mybatis-Plus更新方法不更新NULL字段的問題

    解決Mybatis-Plus更新方法不更新NULL字段的問題

    這篇文章主要介紹了解決Mybatis-Plus更新方法不更新NULL字段的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 通過Java來測試JSON和Protocol Buffer的傳輸文件大小

    通過Java來測試JSON和Protocol Buffer的傳輸文件大小

    這篇文章主要介紹了通過Java來測試JSON和Protocol Buffer的傳輸文件大小,Protocol Buffer(文中簡稱Protobuffer)是谷歌開發(fā)的新的文件傳輸格式,需要的朋友可以參考下
    2015-12-12
  • Mybatis條件if test如何使用枚舉值

    Mybatis條件if test如何使用枚舉值

    這篇文章主要介紹了Mybatis條件if test如何使用枚舉值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • SpringBoot實現(xiàn)AOP切面的三種方式

    SpringBoot實現(xiàn)AOP切面的三種方式

    Spring,SpringBoot框架憑借多種高效機制,顯著增強了代碼的功能性,并實現(xiàn)了切面編程(AOP)的精髓,其核心亮點之一,是運用動態(tài)代理技術(shù),無需觸動源代碼即可在Bean的運行時為其動態(tài)織入額外功能,本文給大家介紹了SpringBoot通過3種方式實現(xiàn)AOP切面,需要的朋友可以參考下
    2024-08-08
  • Java調(diào)用DeepSeek實現(xiàn)多輪對話功能

    Java調(diào)用DeepSeek實現(xiàn)多輪對話功能

    對于廣大Java開發(fā)者而言,DeepSeek這一先進的人工智能技術(shù),猶如一把鑰匙,為我們打開了提升開發(fā)效率與創(chuàng)新能力的新大門,本文給大家介紹了Java調(diào)用DeepSeek實現(xiàn)多輪對話功能,需要的朋友可以參考下
    2025-03-03
  • java 后臺開發(fā)中model與entity(實體類)的區(qū)別說明

    java 后臺開發(fā)中model與entity(實體類)的區(qū)別說明

    這篇文章主要介紹了java 后臺開發(fā)中model與entity(實體類)的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • java中對象的強、軟、弱、虛四種引用詳解

    java中對象的強、軟、弱、虛四種引用詳解

    這篇文章主要介紹了java中對象的強、軟、弱、虛四種引用詳解,對象的引用分為4種,分別是強引用>軟引用>弱引用>虛引用,程序員可以通過不同的引用控制對象的生命周期,方便垃圾回收,使程序更加靈活的控制對象生命周期,需要的朋友可以參考下
    2023-09-09

最新評論

邯郸县| 卢龙县| 昌宁县| 荣成市| 花垣县| 区。| 绥江县| 班戈县| 宜川县| 香格里拉县| 富源县| 福贡县| 虞城县| 东港市| 通化县| 余干县| 招远市| 太康县| 鄂尔多斯市| 东乌| 板桥市| 华蓥市| 资溪县| 桐乡市| 时尚| 武宣县| 讷河市| 罗城| 南充市| 长乐市| 尼玛县| 樟树市| 漾濞| 民县| 玉门市| 龙岩市| 叶城县| 高唐县| 松潘县| 西城区| 小金县|