热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

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

这篇文章主要分享了javamysql实现学生信息管理系统的源码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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 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 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 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 select(ResultSet rs) throws SQLException {
 List st = new ArrayList();
 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 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 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 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 stu = new ArrayList();

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

 }
 public List getStu() {
 return stu;
 }

 public void setStu(List 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);

 }
}

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

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


推荐阅读
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 数据库(外键及其约束理解)(https:www.cnblogs.comchenxiaoheip6909318.html)My ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • yum安装_Redis —yum安装全过程
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Redis—yum安装全过程相关的知识,希望对你有一定的参考价值。访问https://redi ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
author-avatar
mnuee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有