当前位置:主页 > 软件编程 > JAVA代码 >

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

时间:2020-10-18 11:08:54 | 栏目: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.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);

 }
}

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

您可能感兴趣的文章:

相关文章