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

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

 }
}

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

(0)

相关推荐

  • Java学生信息管理系统设计(数据库版)

    本文实例为大家分享了数据库版的Java学生信息管理系统,供大家参考,具体内容如下 package Student_system; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import

  • 学生信息管理系统java版

    本文为大家分享了java学生信息管理系统的源代码,供大家参考,具体内容如下 /*学生信息管理系统,实现学生信息: *增加 int[] a=new int[9] *删除 *查找 *更改 */ import java.util.Scanner;//导入java输入流 import java.lang.*; import java.io.*; class Student { private static Student[] s=new Student[2]; int n=0; private Stri

  • 简单实现Java版学生管理系统

    本文实例为大家分享了Java实现学生管理系统的具体代码,供大家参考,具体内容如下 package BookDemo_1; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test { public static void main(String[] args) { StudentSys stuSys=new StudentSys("学生管理系统"); stuSys.initWi

  • java学生信息管理系统设计(2)

    本例的学生信息添加进入数据库的事务(可以提交事务,事务回滚,用本地线程完善) 主页面index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <htm

  • Java+MySQL实现学生信息管理系统源码

    基于Java swing+MySQL实现学生信息管理系统:主要实现JDBC对学生信息进行增删改查,应付一般课设足矣,分享给大家.(由于篇幅原因,代码未全部列出,如有需要留下邮箱) 鉴于太多同学要源码,实在发不过来,上传到github上 https://github.com/ZhuangM/student.git 1. 开发环境:jdk7+MySQL5+win7 代码结构:model-dao-view 2. 数据库设计--建库建表语句: CREATE DATABASE student; DROP

  • Java+Mysql学生管理系统源码

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具:eclipse 开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com 此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加.删除.修改. 开发步骤:  

  • 一个简陋的java图书管理系统

    本文代码为原创一个简陋的管理系统,只做功能的测试.并没有去完善所有应有的功能,只做了输入输出查找,仅供参考! 菜单部分: import java.util.Scanner; public class Menu { int Min = 1; int Max = 3; public void getMenu(){ System.out.println("1.显示/2.输入/3.查找"); } public void getFindMenu(){ System.out.println(&qu

  • java学生信息管理系统MVC架构详解

    本文实例为大家分享了java学生信息管理系统MVC架构,供大家参考,具体内容如下 一.项目结构 学生信息管理系统分三层进行实现.student.java主要提供数据,cotroller.java的功能是绑定试图和计算数据.Stuview.java用于单一的用来显示数据. 二.源码 1.1.Student 类 /* * @FileName: Student.class * @version:1.0 * @author:nazi * 描述:模型层 * */ import java.io.Serial

  • java学生信息管理系统设计

    本例的学生信息添加进入数据库的事务(可以提交事务,事务回滚,用本地线程完善) 主页面index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <htm

  • 图书管理系统java版

    本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段.设计一个GUI界面进行书目管理.在该界面上有四个选项卡,分别是查询.插入.删除.修改.点击查询选项卡,出现的界面上有书名.作者.出版社.书号四个文本框,一个按钮和一个只读文本区.文本框内容可以为空,输入相应的查询信息后(例如根据书名查询可以仅输入书名),点击界面上的"查询"按钮,可以在界面

随机推荐