加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java(swing)+ mysql实现学生信息管理系统源码

发布时间:2020-12-14 21:06:14 所属栏目:Java 来源:网络整理
导读:本文实例为大家分享了java实现学生信息管理系统源码,供大家参考,具体内容如下 import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionLis

本文实例为大家分享了java实现学生信息管理系统源码,供大家参考,具体内容如下

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.AbstractTableModel;
import javax.swing.text.BadLocationException;
/*
   DROP DATABASE IF EXISTS `myproject`;
   CREATE DATABASE myproject DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
   USE ABC;
   SET NAMES utf8mb4;
   SET FOREIGN_KEY_CHECKS = 0;
   DROP TABLE IF EXISTS `student`;
   CREATE TABLE `student` (
    `id` varchar(36) NOT NULL,`name` varchar(36) NOT NULL,`age` varchar(36) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
   SET FOREIGN_KEY_CHECKS = 1;

 * 
 *
 */
public class Test extends JFrame {
 private static final long serialVersionUID = 1L;
 private JTable table;
 private JPanel panel;
 private JScrollPane scrollpane;
 private JButton button1,button2,button3;
 private JTextArea text1,text2,text3;
 private List<Student> stu;

 public Test() throws BadLocationException,SQLException {
  super("学生信息");
  this.setSize(500,340);
  this.add(getJScrollPane(stu),BorderLayout.CENTER);
  this.add(getJPanel(),BorderLayout.SOUTH);
  this.setResizable(true);
  this.setLocation(300,300);
  this.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
 }

 // 设置JScrollPane方法
 private JScrollPane getJScrollPane(List<Student> stu) throws SQLException {
  if (scrollpane == null) {
   scrollpane = new JScrollPane();
   scrollpane.setViewportView(getJTable(stu));
  }
  return scrollpane;
 }

 // 设置JPanel方法
 private JPanel getJPanel() {
  if (panel == null) {
   panel = new JPanel();
   panel.setLayout(new GridLayout(2,3));
   text1 = new JTextArea();
   text2 = new JTextArea();
   text3 = new JTextArea();
   button1 = new JButton("添加");
   button2 = new JButton("删除");
   button3 = new JButton("更新");
   button1.addActionListener(new insert());
   button2.addActionListener(new delete());
   button3.addActionListener(new update());
   text1.setBorder(BorderFactory.createLineBorder(Color.gray,2));
   text2.setBorder(BorderFactory.createLineBorder(Color.gray,2));
   text3.setBorder(BorderFactory.createLineBorder(Color.gray,2));
   text1.setFont(new Font("宋体",Font.BOLD,16));
   text2.setFont(new Font("宋体",16));
   text3.setFont(new Font("宋体",16));
   text1.setText("id");
   text2.setText("name");
   text3.setText("age");
   panel.add(text1);
   panel.add(text2);
   panel.add(text3);
   panel.add(button1);
   panel.add(button2);
   panel.add(button3);

  }
  return panel;

 }

 // 设置Jtable方法
 private void setJTable(JTable table) {
  table.setFont(new Font("宋体",18));
  table.setRowHeight(30);
 }

 // 获取Jtable对象方法(该方法具体就是获得jtable对象的时候 一并从数据取出学生信息并放入Jtable表格中)
 private JTable getJTable(List<Student> stu) throws SQLException {
  if (table == null) {
   JDBCDaoImpl jdbc = new JDBCDaoImpl();
   ResultSet rs = jdbc.search();
   stu = select(rs);
   jdbc.closeConnection();
   table = new JTable(new Table(stu));
   setJTable(table);
  }
  return table;
 }

 // 设置学生信息方法(该方法是用户增加 删除 更新用户操作的具体实现方法 包含了完整性检查)
 private Student setStu() {
  if (text1.getText().equals("") || text2.getText().equals("") || text3.getText().equals("")) {
   return null;
  } else {
   Student sd = new Student();
   sd.setId(text1.getText());
   sd.setName(text2.getText());
   sd.setAge(text3.getText());
   return sd;

  }

 }

 // 重置输入框为空
 private void resetText() {
  text1.setText("");
  text2.setText("");
  text3.setText("");
 }

 // 刷新学生信息方法(该方法是重新读取数据库学生的信息 然后返回一个学生的集合 用于刷新Jtable表格对象中的数据)
 private List<Student> select(ResultSet rs) throws SQLException {
  List<Student> st = new ArrayList<Student>();
  while (rs.next()) {
   Student s = new Student();
   s.setId(rs.getString(1));
   s.setName(rs.getString(2));
   s.setAge(rs.getString(3));
   st.add(s);
  }
  return st;

 }

 // 添加按钮-监听器(该方法是对添加按钮实现的具体方法 )
 class insert implements ActionListener {

  @Override
  public void actionPerformed(ActionEvent e) {
   stu = new ArrayList<Student>();
   Student sd = new Student();
   JDBCDaoImpl jdbc = new JDBCDaoImpl();
   sd = setStu();
   if (sd != null) {
    jdbc.insert(sd);
    ResultSet rs = jdbc.search();
    try {
     stu = select(rs);
    } catch (SQLException e1) {
     e1.printStackTrace();
    }
    jdbc.closeConnection();
    JTable table = new JTable(new Table(stu));//新建一个Jtable 对象 用来盛放增加后的学生信息
    setJTable(table);//设置Jtable信息
    Test.this.scrollpane.setViewportView(table);//把Jtable设置到Panel
    resetText();
   } else {
    JOptionPane.showMessageDialog(Test.this,"输入数据不完整");

   }

  }

 }

 // 删除按钮-监听器(该方法是对删除按钮实现的具体方法)
 class delete implements ActionListener {

  @Override
  public void actionPerformed(ActionEvent e) {
   stu = new ArrayList<Student>();
   Student sd = new Student();
   JDBCDaoImpl jdbc = new JDBCDaoImpl();
   sd = setStu();
   if (sd != null) {
    jdbc.delete(sd);
    ResultSet rs = jdbc.search();
    try {
     stu = select(rs);
    } catch (SQLException e1) {
     e1.printStackTrace();
    }
    jdbc.closeConnection();
    JTable table = new JTable(new Table(stu));//新建一个Jtable 对象 用来盛放增加后的学生信息
    setJTable(table);//设置Jtable信息
    Test.this.scrollpane.setViewportView(table);//把Jtable设置到Panel
    resetText();
   } else {
    JOptionPane.showMessageDialog(Test.this,"输入数据不完整");

   }

  }

 }

 // 更新按钮-监听器(该方法是对更新按钮实现的具体方法)
 class update implements ActionListener {

  @Override
  public void actionPerformed(ActionEvent e) {
   stu = new ArrayList<Student>();
   Student sd = new Student();
   JDBCDaoImpl jdbc = new JDBCDaoImpl();
   sd = setStu();
   if (sd != null) {
    jdbc.update(sd);
    ResultSet rs = jdbc.search();
    try {
     stu = select(rs);
    } catch (SQLException e1) {
     e1.printStackTrace();
    }
    jdbc.closeConnection();
    JTable table = new JTable(new Table(stu));//新建一个Jtable 对象 用来盛放增加后的学生信息
    setJTable(table);//设置Jtable信息
    Test.this.scrollpane.setViewportView(table);//把Jtable设置到Panel
    resetText();
   } else {
    JOptionPane.showMessageDialog(Test.this,"输入数据不完整");

   }

  }

 }

 // Student类 (用于封装数据信息和数据库表进行映射)
 public class Student {
  // 学生的id name age信息
  private String id;
  private String name;
  private String age;

  // get&set方法
  public String getId() {
   return id;
  }

  public void setId(String id) {
   this.id = id;
  }

  public String getName() {
   return name;
  }

  public void setName(String name) {
   this.name = name;
  }

  public String getAge() {
   return age;
  }

  public void setAge(String age) {
   this.age = age;
  }
 }

 // JTable 表模式类 (JTable对象 初始化的时候通过 这个Table获取表格的行数、列数、列标题、以及每个单元格存放的数据 具体使用原因放在开头的备注了)
 public class Table extends AbstractTableModel {
  List<Student> stu = new ArrayList<Student>();

  public Table(List s) {
   this.stu = s;

  }
  public List<Student> getStu() {
   return stu;
  }

  public void setStu(List<Student> stu) {
   this.stu = stu;
  }

  @Override
  // 获取行数
  public int getRowCount() {
   return stu.size();
  }

  @Override
  // 获取列数
  public int getColumnCount() {
   // TODO Auto-generated method stub
   return 3;
  }

  @Override
  public boolean isCellEditable(int rowIndex,int columnIndex) {
   return true;
  }

  @Override
  // 获取列名字
  public String getColumnName(int col) {
   String res = "";
   switch (col) {
   case 0:
    res = "ID";
    break;
   case 1:
    res = "Name";
    break;
   case 2:
    res = "Age";
    break;
   default:
    break;
   }
   return res;
  }

  @Override
  // 获取具体值
  public Object getValueAt(int rowIndex,int columnIndex) {
   // TODO Auto-generated method stub
   Object res = "";
   Student temp = stu.get(rowIndex);
   switch (columnIndex) {
   case 0:
    res = temp.getId();
    break;
   case 1:
    res = temp.getName();
    break;
   case 2:
    res = temp.getAge();
    break;
   default:
    break;
   }
   return res;
  }

 }

 // JDBCDAO类 配置连接数据的信息,链接释放操作和基本增删改查操作
 public class JDBCDaoImpl {
  String driver = "com.mysql.jdbc.Driver";
  String url = "jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8&useSSL=false";
  String user = "root";
  String passwd = "123456";
  Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;

  // 数据库连接开始
  public Connection getConnection() {
   try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(url,user,passwd);
    stmt = conn.createStatement();
   } catch (Exception e) {
    e.printStackTrace();
   }
   return conn;
  }

  // 数据库连接释放
  public void closeConnection() {
   if (rs != null) {
    try {
     rs.close();
     stmt.close();
     conn.close();
    } catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }

   if (rs == null) {
    try {
     stmt.close();
     conn.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
  }

  // 查找操作
  public ResultSet search() {
   getConnection();
   try {
    String sql = "SELECT * FROM student";
    rs = stmt.executeQuery(sql);
   } catch (SQLException e) {
    e.printStackTrace();
   }
   return rs;
  }

  // 添加操作
  public void insert(Student sd) {
   // TODO Auto-generated method stub
   getConnection();
   try {
    String sql = "INSERT INTO student(id,name,age)" + "VALUES('" + sd.getId() + "','" + sd.getName() + "','"
      + sd.getAge() + "')";
    int count = stmt.executeUpdate(sql);
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }

  // 删除操作
  public void delete(Student sd) {
   // TODO Auto-generated method stub
   getConnection();
   try {
    String sql = "DELETE FROM student WHERE id = '" + sd.getId() + "'";
    int count = stmt.executeUpdate(sql);
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }

  // 更新操作
  public void update(Student sd) {
   // TODO Auto-generated method stub
   getConnection();
   try {
    String sql = "UPDATE student SET name='" + sd.getName() + "',age= '" + sd.getAge() + "'WHERE id = '"
      + sd.getId() + "'";
    int count = stmt.executeUpdate(sql);
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }

 }

 // main 方法
 public static void main(String[] args) throws BadLocationException,SQLException {
  new Test().setVisible(true);

 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读