Java-GUI学生管理系统

目录

1、 创建数据库表

2、下载连接数据库驱动

3、配置数据库连接

4、创建student实体类

5、 实现登录功能

6、 实现注册功能

7、实现学生管理功能

8.代码总体结构


1、 创建数据库表

        在数据库中创建一个student表,用于存储学生信息。表可以包括学生的学号、姓名、语文成绩、数学成绩、英语成绩学生密码(默认密码123456)  

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `id` int NOT NULL,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NULL DEFAULT NULL,
  `china` int NULL DEFAULT NULL,
  `math` int NULL DEFAULT NULL,
  `english` int NULL DEFAULT NULL,
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NULL DEFAULT '123456',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_520_ci ROW_FORMAT = Dynamic;



INSERT INTO `student` VALUES (12131231, '1', 12131231, 12131231, 12131231, '131');
INSERT INTO `student` VALUES (123, '123', 123, 123, 123, '123');
INSERT INTO `student` VALUES (1, '321', 1, 1, 1, '1');

效果截图:

 

2、下载连接数据库驱动

链接:MySQL :: Download MySQL Connector/J (Archived Versions)

选择:

解压出后复制jar文件:

把jar文件粘贴到项目的Java包下,并且右键改jar包点击Add as Library,这样jar链接数据库驱动包就导入好了

3、配置数据库连接

        在Java代码中配置数据库连接信息,包括下载jar包、数据库URL、用户名和密码JDBC连接MySQL。

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.swing.JOptionPane;

public class StudentDAO {
    private static StudentDAO dao=new StudentDAO();
    public  StudentDAO() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "数据库加载失败"+e.getMessage());
        }
    }
    public static Connection getConn()
    {
        try {
            Connection conn=null;
            String url="jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false";   //127.0.0.1:3306
            conn=DriverManager.getConnection(url,"root","123456");
            return conn;
        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "数据库连接失败"+e.getMessage());
            return null;
        }
    }
}

4创建student实体类

public class Student {

    private int id = 0;
    private String name = null;
    private int china = 0;
    private int math = 0;
    private int english = 0;

    public Student() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getChina() {
        return china;
    }

    public void setChina(int china) {
        this.china = china;
    }

    public int getMath() {
        return math;
    }

    public void setMath(int math) {
        this.math = math;
    }

    public int getEnglish() {
        return english;
    }

    public void setEnglish(int english) {
        this.english = english;
    }

    public Student(int id, String name, int china, int math, int english) {
        this.id = id;
        this.name = name;
        this.china = china;
        this.math = math;
        this.english = english;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", china=" + china +
                ", math=" + math +
                ", english=" + english +
                '}';
    }
}

5、 实现登录功能

        创建登录界面,包括用户名和密码的输入框以及登录提交按钮和注册按钮

在登录按钮的事件处理程序中,获取用户名和密码。

使用JDBC连接数据库,执行查询语句,检查用户名和密码是否匹配数据库中的记录不成功会弹出有关错误信息。

 

import java.awt.Container;
import java.awt.EventQueue;
import java.awt.LayoutManager;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import javax.swing.JDialog;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class login {
	private JFrame frame;
	private JTextField textField;
	private JPasswordField passwordField;
	private JButton quitBt;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					login window = new login();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}

			}
		});
	}

	public login() {
		initialize();
	}

	private void initialize() {

		frame = new JFrame();
		frame.setBounds(400, 200, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		frame.setResizable(false);
		frame.getContentPane().setLayout(null);

		 JLabel j1=new JLabel("***欢迎登陆学生管理系统***");
		 j1.setBounds(120, 26, 180, 15);
		 frame.getContentPane().add(j1);


		JLabel lblNewLabel = new JLabel("学号:");
		lblNewLabel.setBounds(100, 56, 54, 15);
		frame.getContentPane().add(lblNewLabel);

		JLabel lblNewLabel_1 = new JLabel("密码:");
		lblNewLabel_1.setBounds(100, 102, 54, 15);
		frame.getContentPane().add(lblNewLabel_1);

		textField = new JTextField();
		textField.setBounds(196, 53, 100, 21);
		frame.getContentPane().add(textField);
		textField.setColumns(10);

		passwordField = new JPasswordField();
		passwordField.setBounds(196, 96,100, 21);
		frame.getContentPane().add(passwordField);

		JButton btnNewButton = new JButton("登录");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Connection conn = StudentDAO.getConn();
				PreparedStatement ps = null;
				ResultSet rs = null;
				try {
					ps = conn
							.prepareStatement("select *from student where id=? and password=?");

					ps.setString(1, textField.getText());
					ps.setString(2, passwordField.getText());

					rs = ps.executeQuery();
					if (rs.next()) {
						JFrame ssss = new JFrame("学生信息管理系统");
						ssss.setLocation(300,100 );
						ssss.setSize(850,600 );
						ssss.setDefaultCloseOperation(ssss.EXIT_ON_CLOSE);
						view studentView = new view();
						ssss.add(studentView);
						ssss.setVisible(true);
					} else {
						JOptionPane pane = new JOptionPane("用户或密码错误");
	                     JDialog dialog  = pane.createDialog("警告");
	                     dialog.show();
					}

				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});
		btnNewButton.setBounds(100, 170, 93, 23);
		frame.getContentPane().add(btnNewButton);

		JButton btnNewButton_1 = new JButton("注册");
		btnNewButton_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				new register();
				frame.removeNotify();
			}
		});
		btnNewButton_1.setBounds(250, 170, 93, 23);
		frame.getContentPane().add(btnNewButton_1);
	}

	private void add(JButton quitBt2) {
		// TODO Auto-generated method stub

	}

	private Container getContentPane() {
		// TODO Auto-generated method stub
		return null;
	}


}

效果截图:

 

 

6、 实现注册功能

        创建注册界面,包括用户名和密码的输入框以及注册提交按钮和返回按钮

在登录按钮的事件处理程序中,获取用户名和密码。使用JDBC连接数据库,执行查询语句,检查用户名和密码是否匹配数据库中的记录

再创建注册成功界面,包括成功注册字样和返回按钮,点击返回就转到登录页面。

 注册页面代码:


import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;

import java.awt.event.ActionListener;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;




public class register {
	private JFrame frame;
	private JTextField textField;
	private JTextField textField_1;


	public register() {
		initialize();
	}


	private void initialize() {
		frame = new JFrame();
		frame.setBounds(400, 200, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		frame.setResizable(false);
		frame.getContentPane().setLayout(null);
		frame.setTitle("注册");

		JLabel lblNewLabel = new JLabel("学号:");
		lblNewLabel.setBounds(100, 56, 54, 15);
		frame.getContentPane().add(lblNewLabel);

		JLabel lblNewLabel_1 = new JLabel("密码:");
		lblNewLabel_1.setBounds(100, 102, 54, 15);
		frame.getContentPane().add(lblNewLabel_1);

		textField = new JTextField();
		textField.setBounds(196, 53, 100, 21);
		frame.getContentPane().add(textField);
		textField.setColumns(10);

		textField_1 = new JTextField();
		textField_1.setBounds(196, 96,100, 21);
		frame.getContentPane().add(textField_1);
		textField_1.setColumns(10);

		JButton btnNewButton = new JButton("注册");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {


				Connection conn = StudentDAO.getConn();

				PreparedStatement ps = null;
				try {
					ps = conn
							.prepareStatement("insert into student(id,password) values( ?,?)");

					ps.setInt(1, Integer.parseInt(textField.getText()));
					ps.setString(2, textField_1.getText());
					ps.execute();

					new sucess();
					frame.removeNotify();
					//  System.out.println("成功");

				} catch (SQLException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}

			}
		});
		btnNewButton.setBounds(81, 169, 93, 23);
		frame.getContentPane().add(btnNewButton);

		JButton returnButton = new JButton("返回");
		returnButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				new login();
				frame.removeNotify();

			}
		});
		returnButton.setBounds(223, 169, 93, 23);
		frame.getContentPane().add(returnButton);

	}

}

注册成功页面代码:




import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class sucess {
	private JFrame frame;


	public sucess() {
		initialize();
	}


	private void initialize() {
		frame = new JFrame();
		frame.setBounds(400, 200, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);

		frame.getContentPane().setLayout(null);

		JLabel lblNewLabel = new JLabel("注册成功 !");
		lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 41));
		lblNewLabel.setBounds(77, 51, 215, 46);
		frame.getContentPane().add(lblNewLabel);

		JButton btnNewButton = new JButton("返回登录");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				new login();
				frame.removeNotify();


			}
		});
		btnNewButton.setBounds(157, 153, 103, 33);
		frame.getContentPane().add(btnNewButton);
	}

}

 效果截图:

 

7、实现学生管理功能

        创建学生管理界面,包括查询(每次添加、删除和更新都会自动查询全部)、添加、删除和更新学生信息的按钮。

在查询按钮的事件处理程序中,使用JDBC连接数据库,执行查询语句,获取学生信息,并显示在界面上。

查询按钮的事件处理程序中,直接输出到界面的数据库的内容。

在添加按钮的事件处理程序中,获取用户输入的学生信息,使用JDBC连接数据库,执行插入语句,将学生信息保存到数据库中。

在删除按钮的事件处理程序中,获取用户选择的学生信息,使用JDBC连接数据库,执行删除语句,从数据库中删除学生信息并且有成功删除弹框信息。

在更新按钮的事件处理程序中,获取用户选择的学生信息和更新后的信息,使用JDBC连接数据库,执行更新语句,更新数据库中的学生信息并且有成功更新弹框信息。

清空按钮的事件处理程序中,清空输入框的内容

 定义调用数据库数据的方法类的代码:

import javax.swing.*;
        import java.sql.Connection;
        import java.sql.PreparedStatement;
        import java.sql.ResultSet;
        import java.util.Vector;

public class StudentManage {
    public static void insert(Student g)
    {
        try {
            Connection conn=StudentDAO.getConn();  //数据库连接
            PreparedStatement ps=conn.prepareStatement("insert into student(id,name,china,math,english) values(?,?,?,?,?)");
            ps.setInt(1, g.getId());
            ps.setString(2, g.getName());
            ps.setInt(3, g.getChina());
            ps.setInt(4, g.getMath());
            ps.setInt(5, g.getEnglish());

            int f=ps.executeUpdate();
            if(f>0)
            {
                JOptionPane.showMessageDialog(null, "成功添加数据");
            }
            else
            {
                JOptionPane.showMessageDialog(null, "没有成功插入数据");
            }
            ps.close();
            conn.close();

        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "注意需要不能重复");
        }
    }
    public static void update(Student g)
    {
        try {
            Connection con=StudentDAO.getConn();
            PreparedStatement ps=con.prepareStatement("update student set name=?,china=?,math=?,english=? where id=?");
            ps.setString(1, g.getName());
            ps.setInt(2, g.getChina());
            ps.setInt(3, g.getMath());
            ps.setInt(4, g.getEnglish());
            ps.setInt(5, g.getId());
            int f=ps.executeUpdate();
            System.out.println(f);
            if(f>0)
            {
                JOptionPane.showMessageDialog(null, "成功更新数据");
            }
            else
            {
                JOptionPane.showMessageDialog(null, "没有完美的更新数据");
            }
            ps.close();
            con.close();
        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "没有成功更新数据");
        }
    }
    public static void update(int sale,int id)
    {
        try {
            Connection con=StudentDAO.getConn();
            PreparedStatement ps=con.prepareStatement("update student set save=save-? where id=?");
            ps.setInt(1, sale);
            ps.setInt(2, id);
            int f=ps.executeUpdate();
            System.out.println(f);
            if(f>0)
            {
                JOptionPane.showMessageDialog(null, "成功更新数据");
            }
            else
            {
                JOptionPane.showMessageDialog(null, "没有完美的更新数据");
            }
            ps.close();
            con.close();
        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "没有成功更新数据");
        }
    }
    public static void delete(int id)
    {
        try {
            Connection conn=StudentDAO.getConn();
            PreparedStatement ps=conn.prepareStatement("delete from student where id=?");
            ps.setInt(1,id);
            int f=ps.executeUpdate();
            if(f>0)
            {
                JOptionPane.showMessageDialog(null, "成功删除数据");
            }
            else
            {
                JOptionPane.showMessageDialog(null, "没有删除数据");
            }
            ps.close();
            conn.close();
        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "连接失败");
        }
    }
    public static Vector query()
    {
        try {
            Vector vector=new Vector();
            Connection conn=StudentDAO.getConn();
            PreparedStatement ps=conn.prepareStatement("select * from student ");
            ResultSet rs=ps.executeQuery();
            while(rs.next()&&rs.getRow()>0)
            {
                Vector row=new Vector();
                for(int col=1;col<=rs.getMetaData().getColumnCount();col++)
                {
                    if(col==2)
                    {
                        row.add(String.valueOf(rs.getString(col)));
                    }
                    else if(col==5||col==1||col==3||col==4)
                    {
                        row.add(String.valueOf(rs.getInt(col)));
                    }

                }
                vector.add(row);
            }
            return vector;
        } catch (Exception e) {
            // TODO: handle exception
            JOptionPane.showMessageDialog(null, "查询失败");
            e.printStackTrace();
            return null;
        }
    }
}

学生信息类界面代码:

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Vector;

public class view extends JPanel {
    JLabel j11=new JLabel("                  学号             ");
    JLabel j12=new JLabel(" 姓名           ");
    JLabel j13=new JLabel(" 语文               ");
    JLabel j14=new JLabel("数学                 ");
    JLabel j15=new JLabel("英语               ");
    JPanel jp2=new JPanel();
    JLabel j1=new JLabel("学号");
    JLabel j2=new JLabel("姓名");
    JLabel j3=new JLabel("语文");
    JLabel j4=new JLabel("数学");
    JLabel j5=new JLabel("英语");
    JTextField f1=new JTextField(10);
    JTextField f2=new JTextField(13);
    JTextField f3=new JTextField(13);
    JTextField f4=new JTextField(13);
    JTextField f5=new JTextField(13);

    JButton b1=new JButton("查询");
    JButton b2=new JButton("修改");
    JButton b3=new JButton("删除");
    JButton b4=new JButton("清空");
    JButton b5=new JButton("添加");

    final JTable t1=new JTable();
    public  view() {

        this.setName("学生管理模块");
        this.setLayout(null);
        this.setLocation(300,100 );
        this.setSize(850,600 );
        this.setLayout(null);
        JPanel panel=new JPanel();
        JPanel panel2=new JPanel();
        panel.add(t1);
        panel.setBounds(10, 130,800, 1000);
        jp2.setBounds(0, 100, 800, 100); //表头
        this.add(panel);
        final Vector<String> title=new Vector<String>();
        title.add("学号");
        title.add("姓名");
        title.add("语文");
        title.add("数学");
        title.add("英语");
        Vector value=StudentManage.query();
        final DefaultTableModel model=new DefaultTableModel(value,title);
        t1.setModel(model);
        if(t1.getRowCount()>0)
        {
            t1.setRowSelectionInterval(0, 0);
        }
        t1.addMouseListener(new MouseListener() {
            @Override
            public void mouseReleased(MouseEvent e) {
            }
            @Override
            public void mousePressed(MouseEvent e) {
                // TODO 自动生成的方法存根
            }
            @Override
            public void mouseExited(MouseEvent e) {
                // TODO 自动生成的方法存根
            }
            @Override
            public void mouseEntered(MouseEvent e) {
                // TODO 自动生成的方法存根
            }
            @Override
            public void mouseClicked(MouseEvent e) {
                // TODO 自动生成的方法存根
                int row=t1.getSelectedRow();
                String id=t1.getValueAt(row, 0).toString();
                String name=t1.getValueAt(row, 1).toString();
                String china=t1.getValueAt(row, 2).toString();
                String math=t1.getValueAt(row, 3).toString();
                String english=t1.getValueAt(row, 4).toString();

                f1.setText(id);
                f2.setText(name);
                f3.setText(china);
                f4.setText(math);
                f5.setText(english);
            }
        });
        b2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO 自动生成的方法存根
                int id=Integer.valueOf(f1.getText().trim());
                String name=f2.getText().trim();
                int china=Integer.valueOf(f1.getText().trim());
                int math=Integer.valueOf(f1.getText().trim());
                int english=Integer.valueOf(f1.getText().trim());
                Student student=new Student();
                student.setId(id);
                student.setName(name);
                student.setChina(china);
                student.setMath(math);
                student.setEnglish(english);
                StudentManage.update(student);
                Vector value=StudentManage.query();
                final DefaultTableModel model=new DefaultTableModel(value,title);
                t1.setModel(model);
            }
        });
        b3.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO 自动生成的方法存根
                int id=Integer.valueOf(f1.getText().trim());
                Student student=new Student();
                StudentManage.delete(id);
                Vector value=StudentManage.query();
                final DefaultTableModel model=new DefaultTableModel(value,title);
                t1.setModel(model);
            }
        });
        b4.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO 自动生成的方法存根
                f1.setText("");
                f2.setText("");
                f3.setText("");
                f4.setText("");
                f5.setText("");
            }
        });
        b5.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO 自动生成的方法存根
                int id=Integer.valueOf(f1.getText().trim());
                String name=f2.getText().trim();
                int china=Integer.valueOf(f3.getText().trim());
                int math=Integer.valueOf(f4.getText().trim());
                int english=Integer.valueOf(f5.getText().trim());
                Student student=new Student();
                student.setId(id);
                student.setName(name);
                student.setChina(china);
                student.setMath(math);
                student.setEnglish(english);
                StudentManage.insert(student);
                Vector value=StudentManage.query();
                final DefaultTableModel model=new DefaultTableModel(value,title);
                t1.setModel(model);

            }
        });
        jp2.add(j11);   //第一个表头
        jp2.add(j12);
        jp2.add(j13);
        jp2.add(j14);
        jp2.add(j15);
        this.add(jp2);
        panel2.setBounds(0,20,840,100);
        panel2.add(j1);
        panel2.add(f1);
        panel2.add(j2);
        panel2.add(f2);
        panel2.add(j3);
        panel2.add(f3);
        panel2.add(j4);
        panel2.add(f4);
        panel2.add(j5);
        panel2.add(f5);
        panel2.add(b1);
        panel2.add(b2);
        panel2.add(b3);
        panel2.add(b4);
        panel2.add(b5);
        this.add(panel2);
        this.setVisible(true);
    }
}

效果截图:

 

 

8.代码总体结构

 

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值