本文实例为大家分享了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("宋体", Font.BOLD, 16));
  text3.setFont(new Font("宋体", Font.BOLD, 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("宋体", Font.BOLD, 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);

 }
}

关于管理系统的更多内容请点击《管理系统专题》进行学习

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

01-27 14:34