基于Java swing+MySQL实现学生信息管理系统:功能:1录入学生基本信息的功能; 2查询学生基本信息的功能; 3修改学生基本信息的功能 ;4删除学生基本信息的功能 ;5显示所有学生信息的功能;应付一般课设足矣,分享给大家。
如有需要:https://pan.baidu.com/s/1JqLFKPlmhV2INeETy9lHAQ
提取码:nima
里面包括了所有代码源文件+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 = "020334";
- 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
(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 = "020334";
- 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 = "020334";
- 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();//关闭学生对话框
- }
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |