首页 > 编程 > Java > 正文

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

2019-11-26 10:56:33
字体:
来源:转载
供稿:网友

本文实例为大家分享了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); }}

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表