当前位置:首页 » 《随便一记》 » 正文

学生信息管理系统(JAVA+MYSQL)

14 人参与  2023年03月30日 13:37  分类 : 《随便一记》  评论

点击全文阅读


基于Java swing+MySQL实现学生信息管理系统:功能:1录入学生基本信息的功能; 2查询学生基本信息的功能; 3修改学生基本信息的功能 ;4删除学生基本信息的功能 ;5显示所有学生信息的功能;应付一般课设足矣,分享给大家。

通过百度网盘分享的文件:学生信息管理系统
链接:https://pan.baidu.com/s/1NgK0C4NAa4gyCaLdeW4GZA?pwd=bigo 
提取码:bigo
复制这段内容打开「百度网盘APP 即可获取」

里面包括了所有代码源文件+mysql8.0.25驱动jar包+登录页面时的背景图345.jpg

1.开发环境:jdk11+win10+mysql 8+IDEA

记得将数据库与IDEA或者eclipse连接起来,并记得添加数据库驱动jar包

这两个分别是添加jar包和idea连接mysql大家可以做一下参考

IDEA导入mysql数据库驱动_跟着太阳.的博客-CSDN博客https://blog.csdn.net/qq_54705917/article/details/123484397?spm=1001.2014.3001.5502IDEA连接mysql数据库_跟着太阳.的博客-CSDN博客https://blog.csdn.net/qq_54705917/article/details/123484737?spm=1001.2014.3001.5502 

2.数据库设计

 代码:

库:create database student
表:create table stu(
stuId varchar(20),
stuName varchar(20),
stuSex varchar(20),
stuAge varchar(20),
stuJG varchar(20),
stuLX varchar(20),
stuBJ varchar(20)
);

3. 窗口及功能设计

(1).主函数

main.java

import javax.swing.*;public class main {    public static void main(String[] args) {        JFrame jf = new StuLogin();    }}

(2).登录界面(默认的账号密码都为:admin)

StuLogin.java

import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class StuLogin extends JFrame {    private StuLogin self;    private ImageIcon imageIcon;    private Image image;    private String userid;// 登陆用户名和密码    private String password;    private JLabel unLabel = new JLabel("账号:");// 登陆面板控件    private JTextField unField = new JTextField();    private JLabel pwLabel = new JLabel("密码:");    private JPasswordField pwField = new JPasswordField();    private JButton dl = new JButton("登录");    private JButton d2 = new JButton("重置");    public StuLogin() {        this.self = this;        this.setSize(350, 300);// 设置登陆面板        设置窗口背景图        //先将contentPane设置成透明的        ((JPanel)getContentPane()).setOpaque(false);        //再设置图片        imageIcon = new ImageIcon("345.jpg");//图标组件        image = imageIcon.getImage();        JLabel imgLabel = new JLabel(imageIcon);        getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));        imgLabel.setBounds(0,0,400,300); //背景图片的位置        this.setIconImage(image);//设置窗口图像        this.setLocation(600,300);        this.setVisible(true);        this.setResizable(false);        this.setLayout(null);//      this.getContentPane().setBackground(Color.BLACK);设置窗口背景色;        //设置窗口名称        this.setTitle("学生信息管理系统");        unLabel.setSize(50, 30);        unLabel.setLocation(60, 40);        unLabel.setForeground(Color.red);        unLabel.setFont(new Font("楷体",Font.BOLD,15));        unField.setSize(150, 35);        unField.setLocation(110, 35);        pwLabel.setSize(50, 30);        pwLabel.setLocation(60, 100);        pwLabel.setForeground(Color.red);        pwLabel.setFont(new Font("楷体",Font.BOLD,15));        pwField.setSize(150, 35);        pwField.setLocation(110, 100);        dl.setSize(80, 35);        dl.setLocation(65, 175);        dl.setBackground(Color.red);        d2.setSize(80, 35);        d2.setLocation(185, 175);        d2.setBackground(Color.red);        dl.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                userid = unField.getText();                password = pwField.getText();                if(userid.equals("admin")&&password.equals("admin")) {                    self.setVisible(false);//                    JOptionPane.showMessageDialog(null, "登录成功", "登录情况",JOptionPane.PLAIN_MESSAGE);                    new StuManager();                } else {                    JOptionPane.showMessageDialog(null, "账号或密码错误!", "登录情况",JOptionPane.PLAIN_MESSAGE);                }            }        });        d2.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                unField.setText("");                pwField.setText("");            }        });        this.add(unLabel);        this.add(unField);        this.add(pwLabel);        this.add(pwField);        this.add(dl);        this.add(d2);    }}

登录页面的背景图我会放到 上面分享的链接里

 (3).管理员界面(删除功能在这里面)

StuManager.java

import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Statement;public class StuManager extends JFrame implements ActionListener {    //定义一些控件    private Object[] types = {"-请选择查询方式-", "按学号号查询", "姓名查询", "性别查询","按年龄查询", "按籍贯查询","按班级查询"};    private JComboBox searchType = new JComboBox(types); //创建一个组合框用来选取查询不同的学生信息·    JPanel jp1,jp2;    JLabel jl1;    JButton jb1,jb2,jb3,jb4;    JTable jt;    JScrollPane jsp;    JTextField jtf1,jtf2;    String strRS;    StuModel sm;    //定义连接数据库的变量    PreparedStatement ps;    Connection ct = null;    ResultSet rs = null;    //构造函数    public StuManager(){        jp1 = new JPanel();        jp1.setBackground(Color.gray);        jtf1 = new JTextField(15);        jtf2 = new JTextField();        jtf2.setEditable(false);        jb1 = new JButton("查询");        jb1.addActionListener(this);        jl1 = new JLabel("总人数:");        jp1.add(searchType);        jp1.add(jtf1);        jp1.add(jb1);        jp1.add(jl1);        jp1.add(jtf2);        jb2 = new JButton("添加");        jb2.setSize(100,500);        jb2.addActionListener(this);        jb3 = new JButton("修改");        jb3.addActionListener(this);        jb4 = new JButton("删除");        jb4.addActionListener(this);        jp2 = new JPanel();        jp2.add(jb2);        jp2.add(jb3);        jp2.add(jb4);        jp2.setBackground(Color.gray);        //创建模型对象        sm = new StuModel();        //初始化总人数        strRS=String.valueOf(sm.getRowCount());        jtf2.setText(strRS);        //初始化表和滚动面板        jt = new JTable(sm);        jsp = new JScrollPane(jt);        //将jsp放入到jframe中        this.add(jsp);        this.add(jp1,BorderLayout.PAGE_START);        this.add(jp2,BorderLayout.PAGE_END);        this.setTitle("学生信息管理系统");//        this.pack();        this.setSize(600, 400);        this.setLocation(500, 200);        this.setDefaultCloseOperation(EXIT_ON_CLOSE);        this.setVisible(true);    }    public void actionPerformed(ActionEvent arg0) {        //判断是哪个按钮被点击        if(arg0.getSource() == jb1){            System.out.println("用户希望被查询...");            int index = searchType.getSelectedIndex();            String sql = new String();            if(index == 0){                sql = "select * from stu ";            }            else if(index == 1){                //因为把对表的数据封装到StuModel中,可以比较简单的完成查询                String Id =this.jtf1.getText().trim();                //写一个sql语句                sql = "select * from stu where stuId = '"+Id+"' ";            }            else if(index == 2){                String name =this.jtf1.getText().trim();                sql = "select * from stu where stuName = '"+name+"' ";            }            else if(index == 3){                String sex =this.jtf1.getText().trim();                sql = "select * from stu where stuSex = '"+sex+"' ";            }            else if(index == 4){                String age =this.jtf1.getText().trim();                sql = "select * from stu where stuAge = '"+age+"' ";            }            else if(index ==5){                String jg =this.jtf1.getText().trim();                sql = "select * from stu where stuJG= '"+jg+"' ";            }            else if(index ==6){                String bj =this.jtf1.getText().trim();                sql = "select * from stu where stuBJ= '"+bj+"' ";            }            //构建一个数据模型类,并更新            sm = new StuModel(sql);            strRS=String.valueOf(sm.getRowCount());            jtf2.setText(strRS);            //更新jtable            jt.setModel(sm);        }        //一、弹出添加界面        else if(arg0.getSource() == jb2){            System.out.println("添加...");            StuAddDiag sa = new StuAddDiag(this,"添加学生",true);            //重新再获得新的数据模型,            sm =  new StuModel();            strRS=String.valueOf(sm.getRowCount());            jtf2.setText(strRS);            jt.setModel(sm);        }else if(arg0.getSource() == jb4){            //二、删除记录            //1.得到学生的ID            int rowNum = this.jt.getSelectedRow();//getSelectedRow会返回给用户点中的行            //如果该用户一行都没有选,就返回-1            if(rowNum == -1){                //提示                JOptionPane.showMessageDialog(this, "请选中一行");                return ;            }            //得到学术ID            String stuId = (String)sm.getValueAt(rowNum, 0);            //连接数据库,完成删除任务            try{                //1.加载驱动                Class.forName("com.mysql.cj.jdbc.Driver");                //2.连接数据库                String url = "jdbc:mysql://localhost:3306/student";                String user = "root";                String passwd = "666666";                ct = DriverManager.getConnection(url, user, passwd);//                System.out.println("连接成功");                ps = ct.prepareStatement("delete from stu where stuId = ?");                ps.setString(1,stuId);                ps.executeUpdate();                JOptionPane.showMessageDialog(null, "删除成功", "删除情况",JOptionPane.PLAIN_MESSAGE);            }catch(Exception e){                e.printStackTrace();            }finally{                try{                    if(rs!= null){                        rs.close();                        rs = null;                    }                    if(ps!= null){                        ps.close();                        ps = null;                    }                    if(ct != null){                        ct.close();                        ct = null;                    }                } catch(Exception e){                    e.printStackTrace();                }            }            sm = new StuModel();            strRS=String.valueOf(sm.getRowCount());            jtf2.setText(strRS);            //更新jtable            jt.setModel(sm);        }else if(arg0.getSource() == jb3){//            System.out.println("11111");            //三、用户希望修改            int rowNum = this.jt.getSelectedRow();            if(rowNum == -1){                //提示                JOptionPane.showMessageDialog(this, "请选择一行");                return ;            }            //显示对话框//            System.out.println( "12435");            StuUpDiag su = new StuUpDiag(this, "修改学生信息", true, sm, rowNum);            sm = new StuModel();            jt.setModel(sm);        }    }}

  (4).模型界面

StuModel.java

/*  用来刷新、呈现数据库 * 这是我的一个stu表的模型 * 可以把对学生表的操作全都封装到这个类 */import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.Vector;import javax.swing.table.*;public class StuModel extends AbstractTableModel{    //rowData存放行数据,columnNames存放列名    Vector rowData,columnNames;//Vector和ArrayList一样,底层也是一个Object类型的数组Object[]。;    构造一个空向量,使其内部数据数组的大小为10,其标准容量增量为零    //定义连接数据库的变量    Statement stat = null;    Connection ct = null;    ResultSet rs = null;    //初始化    public void init(String sql){        if(sql.equals("")){            sql = "select * from stu";        }        //中间        //设置列名        columnNames = new Vector();//这里是一维向量表示列;        columnNames.add("学号");        columnNames.add("名字");        columnNames.add("性别");        columnNames.add("年龄");        columnNames.add("籍贯");        columnNames.add("联系方式");        columnNames.add("班级");        //rowData存放多行        rowData = new Vector();        try{            //1.加载驱动            Class.forName("com.mysql.cj.jdbc.Driver");            System.out.println("加载成功");            //2.连接数据库            //定义几个常量            String url = "jdbc:mysql://localhost:3306/student";            String user = "root";            String passwd = "666666";//这里你要填写你自己的数据库密码            ct = DriverManager.getConnection(url,user,passwd);            stat = ct.createStatement();//创建stat对象            rs = stat.executeQuery(sql);//查询结果            while(rs.next()){                Vector hang = new Vector();                hang.add(rs.getString(1));                hang.add(rs.getString(2));                hang.add(rs.getString(3));                hang.add(rs.getString(4));                hang.add(rs.getString(5));                hang.add(rs.getString(6));                hang.add(rs.getString(7));                //加入到rowData中                rowData.add(hang);//这里是二维向量,表示行;            }        }catch(Exception e){            e.printStackTrace();        }finally{            try{                if(rs!=null){                    rs.close();                    rs = null;                }                if(stat != null){                    stat.close();                    stat = null;                }                if(ct != null){                    ct.close();                    ct = null;                }            }catch(Exception e){                e.printStackTrace();            }        }    }    //第二个构造函数,通过传递的sql语句来获得数据模型    public StuModel(String sql){        this.init(sql);    }    //构造函数,用于初始化我的数据模型(表)    public StuModel(){        this.init("");    }    //得到共有多少行    public int getRowCount() {        // TODO Auto-generated method stub        return this.rowData.size();    }    //得到共有多少列    public  int getColumnCount() {        // TODO Auto-generated method stub        return this.columnNames.size();    }    //得到某行某列的数据    public Object getValueAt(int row, int column) {        // TODO Auto-generated method stub        return ((Vector)(this.rowData.get(row))).get(column);    }    //得到属性名字    public String getColumnName(int column) {        // TODO Auto-generated method stub        return (String)this.columnNames.get(column);    }}

  (5).增加学生界面

StuAddDiag.java

import javax.swing.JDialog;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Statement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.*;//用来实现增添读者功能public class StuAddDiag extends JDialog implements ActionListener {    //定义我需要的swing组件    JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7;    JTextField jf1,jf2,jf3,jf4,jf5,jf6,jf7;    JPanel jp1,jp2,jp3;    JButton jb1,jb2;    //owner代笔父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口    public StuAddDiag(Frame owner, String title, boolean modal){        //调用父类方法        super(owner,title,modal);        jl1 = new JLabel("学号");        jl2 = new JLabel("名字");        jl3 = new JLabel("性别");        jl4 = new JLabel("年龄");        jl5 = new JLabel("籍贯");        jl6 = new JLabel("联系方式");        jl7 = new JLabel("班级");        jf1 = new JTextField(30);        jf2 = new JTextField(30);        jf3 = new JTextField(30);        jf4 = new JTextField(30);        jf5 = new JTextField(30);        jf6 = new JTextField(30);        jf7 = new JTextField(30);        jb1 = new JButton("添加");        jb1.addActionListener(this::actionPerformed);        jb2 = new JButton("取消");        jb2.addActionListener(this::actionPerformed);        jp1 = new JPanel();        jp2 = new JPanel();        jp3 = new JPanel();        //设置布局        jp1.setLayout(new GridLayout(7,1));        jp2.setLayout(new GridLayout(7,1));        jp3.add(jb1);        jp3.add(jb2);        jp1.add(jl1);        jp1.add(jl2);        jp1.add(jl3);        jp1.add(jl4);        jp1.add(jl5);        jp1.add(jl6);        jp1.add(jl7);        jp2.add(jf1);        jp2.add(jf2);        jp2.add(jf3);        jp2.add(jf4);        jp2.add(jf5);        jp2.add(jf6);        jp2.add(jf7);        this.add(jp1, BorderLayout.WEST);        this.add(jp2, BorderLayout.CENTER);        this.add(jp3, BorderLayout.SOUTH);        this.setLocation(600, 350);        this.setSize(300,200);        this.setVisible(true);    }    @Override    public void actionPerformed(ActionEvent e) {        // TODO Auto-generated method stub        if(e.getSource() == jb1){            Connection ct = null;            PreparedStatement pstmt = null;            ResultSet rs = null;            try{                //1.加载驱动                Class.forName("com.mysql.cj.jdbc.Driver");                System.out.println("加载成功");                //2.连接数据库                //定义几个常量                String url = "jdbc:mysql://localhost:3306/student";                String user = "root";                String passwd = "666666";                ct = DriverManager.getConnection(url,user,passwd);                //与编译语句对象                String strsql = "insert into stu values(?,?,?,?,?,?,?)";                pstmt = ct.prepareStatement(strsql);                //给对象赋值                pstmt.setString(1,jf1.getText());                pstmt.setString(2,jf2.getText());                pstmt.setString(3,jf3.getText());                pstmt.setString(4,jf4.getText());                pstmt.setString(5,jf5.getText());                pstmt.setString(6,jf6.getText());                pstmt.setString(7,jf7.getText());                pstmt.executeUpdate();                JOptionPane.showMessageDialog(null, "添加成功", "添加情况",-1);                this.dispose();//关闭学生对话框            }catch(Exception arg1){                arg1.printStackTrace();            }finally{                try{                    if(rs!=null){                        rs.close();                        rs = null;                    }                    if(pstmt != null){                        pstmt.close();                        pstmt = null;                    }                    if(ct != null){                        ct.close();                        ct = null;                    }                }catch(Exception arg2){                    arg2.printStackTrace();                }            }        }else{            this.dispose();        }    }}

  (6).修改学生界面

StuUpDiag.java

import javax.swing.JDialog;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Statement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.*;/*// * 是修改学生信息 */public class StuUpDiag extends JDialog implements ActionListener {    //定义我需要的swing组件    JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7;    JTextField jf1,jf2,jf3,jf4,jf5,jf6,jf7;    JPanel jp1,jp2,jp3;    JButton jb1,jb2;    //owner代笔父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口    public StuUpDiag(Frame owner, String title, boolean modal, StuModel sm, int rowNum){        //调用父类方法        super(owner,title,modal);        jl1 = new JLabel("学号");        jl2 = new JLabel("名字");        jl3 = new JLabel("性别");        jl4 = new JLabel("年龄");        jl5 = new JLabel("籍贯");        jl6 = new JLabel("联系方式");        jl7 = new JLabel("班级");        jf1 = new JTextField(30);        jf1.setText((sm.getValueAt(rowNum, 0)).toString());        jf2 = new JTextField(30);        jf2.setText((String)sm.getValueAt(rowNum, 1));        jf3 = new JTextField(30);        jf3.setText(sm.getValueAt(rowNum, 2).toString());        jf4 = new JTextField(30);        jf4.setText((sm.getValueAt(rowNum, 3)).toString());        jf5 = new JTextField(30);        jf5.setText((String)sm.getValueAt(rowNum, 4));        jf6 = new JTextField(30);        jf6.setText((String)sm.getValueAt(rowNum, 5));        jf7 = new JTextField(30);        jf7.setText((String)sm.getValueAt(rowNum, 6));        jb1 = new JButton("修改");        jb1.addActionListener(this::actionPerformed);        jb2 = new JButton("取消");        jb2.addActionListener(this::actionPerformed);        jp1 = new JPanel();        jp2 = new JPanel();        jp3 = new JPanel();        //设置布局        jp1.setLayout(new GridLayout(7,1));        jp2.setLayout(new GridLayout(7,1));        jp3.add(jb1);        jp3.add(jb2);        jp1.add(jl1);        jp1.add(jl2);        jp1.add(jl3);        jp1.add(jl4);        jp1.add(jl5);        jp1.add(jl6);        jp1.add(jl7);        jp2.add(jf1);        jp2.add(jf2);        jp2.add(jf3);        jp2.add(jf4);        jp2.add(jf5);        jp2.add(jf6);        jp2.add(jf7);        this.add(jp1, BorderLayout.WEST);        this.add(jp2, BorderLayout.CENTER);        this.add(jp3, BorderLayout.SOUTH);        this.setLocation(600, 350);        this.setSize(300,200);        this.setVisible(true);    }    @Override    public void actionPerformed(ActionEvent e) {        // TODO Auto-generated method stub        if(e.getSource() == jb1){            Connection ct = null;            PreparedStatement pstmt = null;            ResultSet rs = null;            try{                //1.加载驱动                Class.forName("com.mysql.cj.jdbc.Driver");                System.out.println("加载成功");                //2.连接数据库                //定义几个常量                String url = "jdbc:mysql://localhost:3306/student";                String user = "root";                String passwd = "666666";                ct = DriverManager.getConnection(url,user,passwd);                //与编译语句对象                String strsql = "update stu set stuName = '"+jf2.getText()+"',stuSex = '"+jf3.getText()+"',stuAge = '"+jf4.getText()+"',stuJG='"+jf5.getText()+"',stuLX='"+jf6.getText()+"',stuBJ='"+jf7.getText()+"' where stuId = '"+jf1.getText()+"'";                pstmt = ct.prepareStatement(strsql);                pstmt.executeUpdate();                JOptionPane.showMessageDialog(null, "修改成功", "修改情况",JOptionPane.PLAIN_MESSAGE);                this.dispose();//关闭学生对话框            }catch(Exception arg1){                arg1.printStackTrace();            }finally{                try{                    if(rs!=null){                        rs.close();                        rs = null;                    }                    if(pstmt != null){                        pstmt.close();                        pstmt = null;                    }                    if(ct != null){                        ct.close();                        ct = null;                    }                }catch(Exception arg2){                    arg2.printStackTrace();                }            }        }else{            this.dispose();//关闭学生对话框        }    }}

点击全文阅读


本文链接:http://zhangshiyu.com/post/57322.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1