【Java】手把手教你写学生信息管理系统(窗口化+MYSQL)

这篇具有很好参考价值的文章主要介绍了【Java】手把手教你写学生信息管理系统(窗口化+MYSQL)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

程序整体框架 :

java编写学生信息,mysql,数据库

 

一.数据库表格建立:

 

        (本项目使用到了数据库的可视化软件DataGrip,需要同学们自行下载并配置环境)

首先我们需要在DataGrip中建立一个student的框架java编写学生信息,mysql,数据库

                                                        然后建立一个studenttable表 

 java编写学生信息,mysql,数据库

                                                        建立列用来存储学生信息 

java编写学生信息,mysql,数据库

                 ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​整体框架    ​​​​​​​        java编写学生信息,mysql,数据库

 

         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​  ​​​​​​​        ​​​​数据格式的编写       ​​​​​​​

        ​​​​​​​java编写学生信息,mysql,数据库

 java编写学生信息,mysql,数据库

 java编写学生信息,mysql,数据库

 java编写学生信息,mysql,数据库

 java编写学生信息,mysql,数据库

java编写学生信息,mysql,数据库 这样数据库方面的就已经处理完成啦

二.代码部分

 main类:

public class Main {
    public static void main(String[] args){
        JDBC win=new JDBC();
        //调用窗口类,创建窗口
        Windows1 system=new Windows1();
        system.setVisible(true);
    }
}

 Window1类

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;


public class Windows1 extends JFrame implements  ActionListener {
    JLabel label1,label2,label3,label4,label5,label6;
    JTextField field1,field2,field3,field4,field5,field6;
    JButton button1,button2,button3,button4;
    JPanel panel1,panel2,panel3;
    JTable table;
    DefaultTableModel model;
    public Windows1(){
        //设置窗口属性
        setTitle("学生信息管理系统");
        setSize(800,650);
        //窗口居中
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置组件
        label1=new JLabel("学号");
        label2=new JLabel("姓名");
        label3=new JLabel("性别");
        label4=new JLabel("年龄");
        label5=new JLabel("专业");
        label6=new JLabel("班级");

        field1=new JTextField(10);
        field2=new JTextField(10);
        field3=new JTextField(10);
        field4=new JTextField(10);
        field5=new JTextField(10);
        field6=new JTextField(10);

        button1=new JButton("添加");
        button2=new JButton("删除");
        button3=new JButton("查找");
        button4=new JButton("修改");
        //设置表格
        String[] str={"学号","姓名","性别","年龄","专业","班级"};
        model=new DefaultTableModel(str,0);
        table=new JTable(model);
        JScrollPane scrollPane=new JScrollPane(table);
         //设置布局
        panel1=new JPanel();
        panel2=new JPanel();
        panel3=new JPanel();

        panel1.setLayout(new GridLayout(6,2));
        panel1.add(label1);
        panel1.add(field1);
        panel1.add(label2);
        panel1.add(field2);
        panel1.add(label3);
        panel1.add(field3);
        panel1.add(label4);
        panel1.add(field4);
        panel1.add(label5);
        panel1.add(field5);
        panel1.add(label6);
        panel1.add(field6);

        panel2.setLayout(new FlowLayout());
        panel2.add(button1);
        panel2.add(button2);
        panel2.add(button3);
        panel2.add(button4);

        panel3.setLayout(new BorderLayout());
        panel3.add(panel1,BorderLayout.CENTER);
        panel3.add(panel2,BorderLayout.NORTH);
        panel3.add(scrollPane,BorderLayout.SOUTH);
        add(panel3);
        JDBC jdbc=new JDBC();
        jdbc.fetchData(model);

        //按键监听器
        button1.addActionListener( this);
        button2.addActionListener( this);
        button3.addActionListener( this);
        button4.addActionListener( this);
    }

    @Override
    public void actionPerformed(ActionEvent e){
        SQLHelp sqlhelp=new SQLHelp();
        //添加
        if(e.getSource()==button1){
            try{
                sqlhelp.addStudent(field1.getText(),field2.getText(),field3.getText(),field4.getText(),field5.getText(),field6.getText());
                JOptionPane.showMessageDialog(Windows1.this,"添加成功");
            }catch (SQLException e1){
                if(e1.getSQLState().equals("23000")){
                    JOptionPane.showMessageDialog(Windows1.this,"添加失败,该生已存在");
                }
                e1.printStackTrace();
            }
            String[] data1={field1.getText(),field2.getText(),field3.getText(),field4.getText(),field5.getText(),field6.getText()};
            model.addRow(data1);
        }
        //删除
        else if(e.getSource()==button2){
            int selectedRow=table.getSelectedRow();
            if(selectedRow!=-1){
                String id= (String) table.getValueAt(selectedRow,0);

                try{
                    sqlhelp.deletestudent(id);
                    JOptionPane.showMessageDialog(Windows1.this,"删除成功");
                }catch(SQLException e2){
                    JOptionPane.showMessageDialog(Windows1.this,"删除失败");
                    e2.printStackTrace();
                }
                model.removeRow(selectedRow);
            }
        }
        //查找
        else if(e.getSource()==button3){
            String keyword=JOptionPane.showInputDialog(this,"请输入学生学号");
            for (int i = 0; i < model.getRowCount(); i++) {
                if (model.getValueAt(i, 0).toString().contains(keyword)) {
                    table.setRowSelectionInterval(i, i);
                }
            }
        }
        //修改
        else if (e.getSource()==button4) {
            int selectedRow=table.getSelectedRow();
            if(selectedRow!=-1)
            {
                model.setValueAt(field1.getText(),selectedRow,0);
                model.setValueAt(field2.getText(),selectedRow,1);
                model.setValueAt(field3.getText(),selectedRow,2);
                model.setValueAt(field4.getText(),selectedRow,3);
                model.setValueAt(field5.getText(),selectedRow,4);
                model.setValueAt(field6.getText(),selectedRow,5);
                try{
                    sqlhelp.changeStudent(
                            field1.getText(),
                            field2.getText(),
                            field3.getText(),
                            field4.getText(),
                            field5.getText(),
                            field6.getText()
                    );
                    JOptionPane.showMessageDialog(this,"修改成功");
                } catch (SQLException e3) {
                    throw new RuntimeException(e3);
                }
            }

        }
    }
}

 JDBC类:

import javax.swing.table.DefaultTableModel;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;


public class JDBC {

    public void fetchData(DefaultTableModel model) {
        int numsrow=1;
        List data=new ArrayList<>();
        try {
            // 注册 JDBC 驱动
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 打开链接
            Connection conn = DriverManager.getConnection
                    (
                            "jdbc:mysql://localhost:3306/MySQL",
                            "root",
                            "123456"
                    );

            // 执行查询
            Statement stmt = conn.createStatement();
            String sql = "SELECT ID,Name,Gender,Age,Expertise,Class FROM student.studenttable";
            ResultSet rs = stmt.executeQuery(sql);
            ResultSetMetaData metaData= rs.getMetaData();
            int numberOfrow=metaData.getColumnCount();
            Windows1 win=new Windows1();
            while(rs.next()) {

                Objects[] rowDta = new Objects[numberOfrow];
                String id = rs.getString("ID");
                String name = rs.getString("Name");
                String gender = rs.getString("Gender");
                String age = rs.getString("Age");
                String expertise = rs.getString("Expertise");
                String room = rs.getString("Class");
                String[] data1 = {id, name, gender, age, expertise, room};
                model.addRow(data1);
            }
                // 释放资源
                rs.close();
                stmt.close();
                conn.close();

            } catch(SQLException | ClassNotFoundException e){
                e.printStackTrace();

            }
        }
    }

SQLhelp类:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public  class SQLHelp {

    public static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    public static final String DB_URL = "jdbc:mysql://localhost:3306/MySQL";//这里的jdbc:mysql://localhost:3306/一般是固定的,MySQL根据你自己的数据库名称来修改

    public static final String username = "root";//数据库用户名
    public static final String password = "123456";//数据库密码

    private Connection connection = null;
    private PreparedStatement pStatement = null;
    private ResultSet rSet = null;

    // 加载驱动
    // 静态初始化块
    static {
        //JDBC驱动
        try {
            Class.forName(JDBC_DRIVER);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    // 链接数据库
    public void  connectDB() {
        try {
            connection = DriverManager.getConnection(DB_URL,username,password);
            System.out.println("数据库链接成功");
        } catch (SQLException e) {
            System.out.println("数据库链接失败");
            e.printStackTrace();
        }
    }

    // 关闭资源
    public void close() {
        if(rSet != null) {
            try {
                rSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(pStatement != null) {
            try {
                pStatement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public  void addStudent(String id,String name,String gender, String age,String expertise,String room) throws SQLException {

        // try finally 无论是否抛出异常都将执行 finally 中的语句
        try {
            // 先链接到数据库
            connectDB();

            // sql 语句
            // 静态 sql 语句需要进行字符串拼接
            // 动态 sql 语句
            //这里的student是我们在DataGrip创建的一个框架,studenttable是一个表的名称
            String addsql = "insert into student.studenttable values(?, ?, ?, ?, ?,?)";

            pStatement = connection.prepareStatement(addsql);

            pStatement.setString(1, id);
            pStatement.setString(2, name);
            pStatement.setString(3, gender);
            pStatement.setString(4, age);
            pStatement.setString(5, expertise);
            pStatement.setString(6,room);
            pStatement.executeUpdate();

        } finally {

            close();

        }

    }

    public void changeStudent(String id, String name, String gender, String age, String expertise,String room) throws SQLException {

        try {
            connectDB();

            String changesql = "update student.studenttable set name = ?, gender = ?, age = ?, expertise = ?,class=? where id = ?";

            pStatement = connection.prepareStatement(changesql);

            pStatement.setString(1, name);
            pStatement.setString(2, gender);
            pStatement.setString(3, age);
            pStatement.setString(4, expertise);
            pStatement.setString(5, room);
            pStatement.setString(6,id);
            pStatement.executeUpdate();

        } finally {
            close();
        }

    }

    public void deletestudent(String id) throws SQLException {

        try {

            connectDB();

            String deleteString = " delete from student.studenttable where id = ?";

            pStatement = connection.prepareStatement(deleteString);

            pStatement.setString(1, id);

            pStatement.execute();

        } finally {
            close();
        }
    }
}

三.代码运行:

运行前要:

使用JDBC之前需要先导入JDBC驱动包确定已经与数据库构建了连接

java编写学生信息,mysql,数据库

 java编写学生信息,mysql,数据库

 

添加模块:

java编写学生信息,mysql,数据库

java编写学生信息,mysql,数据库 

 删除模块:

选择需要删除学生的行

java编写学生信息,mysql,数据库

 点击删除键

java编写学生信息,mysql,数据库

 查找模块:

java编写学生信息,mysql,数据库

 找到的信息会高亮显示:

java编写学生信息,mysql,数据库

 修改模块:

先输入需要修改的信息,再选择需要修改信息的行数,点击修改键

java编写学生信息,mysql,数据库

 验证存储功能:

先关闭程序后,再打开

java编写学生信息,mysql,数据库

数据依旧存在。 文章来源地址https://www.toymoban.com/news/detail-763261.html

到了这里,关于【Java】手把手教你写学生信息管理系统(窗口化+MYSQL)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手把手教你写stm32f103智能风扇

    本系统可以分为两个模式来进行运行,分别为手动模式和自动模式,同时,在上电进入系统后,还会有一个模式选择的界面产生。 模式选择:在此界面中,可以通过按键K1来控制模式选择,两个模式分别为手动模式和自动模式;通过按键K2可以进入模式。 手动模式:在手动模

    2023年04月17日
    浏览(66)
  • 正则表达式详解(零基础教学,手把手教你写正则)

    本篇文章将从零讲解什么是正则表达式,以及正则表达式的规则、在python中的应用,用通俗易懂的描述方式进行零基础级别的讲解,尽量做到全网最全讲解,力求最高质量文章,欢迎关注!点击目录可直接进行相关位置跳转。 目录: 什么是正则? 为什么需要正则? 元字符

    2023年04月08日
    浏览(43)
  • 手把手教你写一个JSON在线解析的前端网站1

    作为一名Android开发,经常要跟后端同事联调接口,那么总避免不了要格式化接口返回值,将其转换为清晰直观高亮的UI样式以及折叠部分内容,方便我们查看定位关键的信息。 一直以来都是打开Google 搜索json格式化,然后选择Google推荐的前三名的网址,比如 bejson网站

    2024年02月08日
    浏览(46)
  • [Kotlin]手把手教你写一个安卓APP(第一章注册登录)

    开发软件:Android Studio 1.创建项目默认选择Empty Activity                                                                      点击Next  2.生成项目设置包名选择开发语言(这里我用的是kotlin)  在生成项目后我们要做的就是添加需要的配置打开我们的app目录下的 buil

    2023年04月23日
    浏览(81)
  • Java基础--手把手教你如何从键盘录入信息

    从键盘录入信息 Scanner 有扫描仪的意思,sc是自己取的名字(有的人喜欢用input), new Scanner 是创建一个Scanner对象, System.in 代表电脑的键盘。 即,扫描电脑的键盘。 将第一步写完,我们在编译器里面看到, Scanner 标红了,报错了! ❓ 为啥报错呢? 我们要使用 Scanner ,需要

    2024年02月11日
    浏览(50)
  • 【Golang项目实战】手把手教你写一个备忘录程序|附源码——建议收藏

    博主简介: 努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。 博主主页: @是瑶瑶子啦 所属专栏: Go语言核心编程 近期目标: 写好专栏的每一篇文章 前几天瑶瑶子学习了Go语言的基础语法知识,那么今天我们就写个

    2024年02月06日
    浏览(54)
  • FPGA之手把手教你写串口协议解析(STM32与FPGA数据互传)

    最近趁热打铁做了一个关于STM32与FPGA通信并且控制高速DA模块产生不同频率信号的正弦波、方波、三角波和锯齿波的项目,从中收获到了很多东西,也踩了一些雷和坑,将分为几篇文章将整个过程分享出来。 这一次准备分享的是对串口数据的解析和赋值。解析的数据由STM32发

    2024年02月06日
    浏览(40)
  • 数据结构:线性表————顺序表的实现、项目和OJ题目(手把手教你写代码)

    🌈 个人主页: 小新_- 🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝 🏆所属专栏:  话说那些与C++的爱恨情仇   欢迎订阅,持续更新中~~~                                           ✨让小新带着你

    2024年04月16日
    浏览(109)
  • 基于STM32F103RCT6之手把手教你写智能家居项目(2)

            上一节我们简述了智能家居项目,实现了点灯的相关代码编写,还有WIFI模块的固件烧录。 连接什么平台:         我们想要远程控制家具的开关和获取家中的状态,少不了一个可以传输数据的云平台。我认为易监控是一个简单好用的云平台。 怎么连接平台:

    2024年02月20日
    浏览(163)
  • 手把手教你爬取网站信息

    如题,理解这一部分需要一定的Python基础,有些代码我不做详细解释了,但是用这个方法是确实可以爬到的。 1. 在抓包⼯具中先定位到和浏览器地址栏的⽹址⼀样的数据包 ①在页面中右击鼠标,点击检查,博主这里用的是Google浏览器 ②在弹出来的页面中点击Network,然后再重

    2024年02月02日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包