java swing开发学生成绩管理系统

java图形界面swing 连接sql server数据库 实现学生课程成绩管理系统(适用于课设、大作业) 之前做了一个外卖点餐系统之后点此查看详情,这段时间在这个系统的基础上改了改帮几位同学实现了其他的几个系统,本文所述的学生课程成绩管理系统就是其中之一。 一、数据库表及字段 1、学生表 2、课程表 3、成绩表 4、管理员表 ... 阅读详情

临近期末,java实验报告,真的是很手忙脚乱,看了那么多篇,没有一篇说的比较完整的,那这篇的话就整体的说一下吧,
这个是用swing开发的学生 成绩 管理系统,其中与数据库建立连接,数据库用的是SQL server 2012,java开发环境需要用到eclipise
因为个人知识储备的不足,因此代码中有部分功能不能全部实现,本篇的源码来源于GitHub,感谢网友分享。
本题的源代码如下

package practice_student;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.Arrays;
import java.util.List;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Student_Mangement extends JFrame {//程序入口
    private JPanel panel_1 = new JPanel();
    private JButton btnConfim = new JButton("登陆");
    private JButton btnSignUp = new JButton("注册");
    private JTextField userName = new JTextField(20);
    private JPasswordField pass = new JPasswordField(20);
    private JLabel userLaber = new JLabel("用户名");
    private  JLabel passLaber = new JLabel("密码");
     JLabel text = new JLabel("欢迎使用学生成绩管理系统!");
    private ConnetDB conn = new ConnetDB();
    private ImageIcon icon=new ImageIcon("D:/icon.jpg");
    public static void main(String[] args) {
        Student_Mangement enterGui=new Student_Mangement();
     }
     public Student_Mangement(){
         super();
         this.setIconImage(icon.getImage());
         this.setTitle("学生成绩管理系统");
         this.setBounds(650, 250, 500, 400);
         this.setVisible(true);
         this.setResizable(false);
         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         this.setLayout(null);
         panel_1.setLayout(null);
         panel_1.setBounds(0, 50, 600, 250);
         text.setBounds(140, 0, 250, 50);
         btnConfim.setBounds(150, 130, 70, 30);
         btnSignUp.setBounds(250,130,70,30);
         userLaber.setBounds(95, 50, 40, 30);
         passLaber.setBounds(95, 80, 40, 30);
         userName.setBounds(135, 50, 200, 30);
         pass.setBounds(135, 80, 200, 30);
         panel_1.add(text);
         panel_1.add(userLaber);
         panel_1.add(userName);
         panel_1.add(passLaber);
         panel_1.add(pass);
         panel_1.add(btnConfim);
         panel_1.add(btnSignUp);
         this.add(panel_1);
         setActionLintener();
    }
       private void setActionLintener(){
        btnConfim.addActionListener(new ActionListener() {
            //内部类实现主界面
            class MainGUI extends JFrame{
                final int COLUMN=10;
                private final List<String> TITLE= Arrays.asList("姓名","学号","教师","院系","英语成绩","高数成绩",
                        "大物成绩","平均分","最高分","最低分");
                Vector<Vector<String>> dataModel=new Vector<>();
                private JMenuBar bar=new JMenuBar();
                private JMenu menu_stu =new JMenu("管理学生成绩");
                private JMenu menu_course =new JMenu("课程成绩排名");
                private JMenu menu_exUser =new JMenu("退出登陆");
                private JMenuItem showAll =new JMenuItem("显示所有学生成绩");
                private JMenuItem addStu =new JMenuItem("添加学生");
                private JMenuItem findByName =new JMenuItem("按关键字查询");
                private JMenuItem showEng =new JMenuItem("按英语成绩排名");
                private JMenuItem showMath =new JMenuItem("按高数成绩排名");
                private JMenuItem showPhy =new JMenuItem("按大物成绩排名");
                private JMenuItem userEx =new JMenuItem("退出登录");
                private JButton btnDelete =new JButton("删除此条");
                private JButton btnChange =new JButton("修改此条");
                private JTable table;
                private ConnetDB conn=new ConnetDB();
                public MainGUI(){
                    super();
                    this.setTitle("学生成绩管理系统");
                    this.setBounds(650,250,800,500);
                    this.setVisible(true);
                    this.setResizable(false);
                    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    this.setIconImage(icon.getImage());
                    //菜单栏
                    menu_stu.add(showAll);
                    menu_stu.add(addStu);
                    menu_stu.add(findByName);
                    menu_course.add(showEng);
                    menu_course.add(showMath);
                    menu_course.add(showPhy);
                    menu_exUser.add(userEx);
                    bar.add(menu_stu);
                    bar.add(menu_course);
                    bar.add(menu_exUser);
                    this.setJMenuBar(bar);

                    Vector<String> titles=new Vector<>(TITLE);
                    table=new JTable(dataModel,titles);
                    table.getTableHeader().setReorderingAllowed(false);//表头不可拖动
                    for (int i = 0; i < COLUMN; i++) {
                        if(1==i||i==3){//这2列数据更长一些
                            table.getColumnModel().getColumn(i).setPreferredWidth(150);
                        }
                    }
                    //承载table的panel
                    JPanel tablePanel=new JPanel();
                    tablePanel.setLayout(new BoxLayout(tablePanel,BoxLayout.Y_AXIS));
                    this.add(tablePanel);
                    JScrollPane jScrollPane=new JScrollPane();
                    jScrollPane.setViewportView(table);
                    tablePanel.add(jScrollPane, BorderLayout.CENTER);
                    tablePanel.add(btnChange);
                    tablePanel.add(btnDelete);
                    tablePanel.updateUI();
                    setActionListener();
                }
                //监听事件
                private void setActionListener(){
                    btnChange.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            int row = table.getSelectedRow();
                            int column = table.getSelectedColumn();
                            if (row == -1 || column == 0) return;
                            String val = dataModel.get(row).get(column);
                            String name = dataModel.get(row).get(0);
                            //解决表列名和table列名不一样
                            String convert="";
                            if(TITLE.get(column).equals("学号")) {
                                convert = "number";
                            }else if (TITLE.get(column).equals("教师")) {
                                convert = "teacher";
                            }else if (TITLE.get(column).equals("院系")) {
                                convert = "major";
                            }else if (TITLE.get(column).equals("英语成绩")) {
                                convert = "english";
                            }else if (TITLE.get(column).equals("高数成绩")) {
                                convert = "math";
                            }else if (TITLE.get(column).equals("大物成绩")) {
                                convert = "physic";
                            }
                            String sql = "update Student set " + convert + " = ? where Sname = '"+name+"';";
                            PreparedStatement ps;
                            try {
                                ps = conn.getConnect().prepareStatement(sql);
                                if (TITLE.get(column).equals("学号")||TITLE.get(column).equals("英语成绩")||
                                        TITLE.get(column).equals("高数成绩")||
                                TITLE.get(column).equals("大物成绩")) {
                                    ps.setInt(1, Integer.parseInt(val));
                                }
                                else {
                                    ps.setString(1, val);
                                }
                                ps.executeUpdate();
                            } catch (SQLException e1) {
                                e1.printStackTrace();
                            }
                            table.validate();
                            table.updateUI();
                        }
                    });
                    btnDelete.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            int row = table.getSelectedRow();
                            String sname = dataModel.get(row).get(0);
                            String sql = "delete from Student where Sname = '" + sname + "';";
                            try {
                                if (conn.getConnect().createStatement().executeUpdate(sql) == 0) return;
                                dataModel.remove(row);
                                //更新表格
                                table.validate();
                                table.updateUI();
                            } catch (SQLException e1) {
                                e1.printStackTrace();
                            }
                        }
                    });
                    showAll.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            dataModel.clear();
                           Statement stmt;
                            try {
                                stmt =conn.getConnect().createStatement();
                                ResultSet rs = stmt.executeQuery("select *from Student");
                                initTable(rs);
                            } catch (SQLException e1) {
                                e1.printStackTrace();
                            }
                            //更新表格
                            table.validate();
                            table.updateUI();
                        }
                    });
                    addStu.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            class AddStu extends JFrame {
                                ConnetDB conn = new ConnetDB();
                                private JTextField txName=new JTextField();
                                private JTextField txNo=new JTextField();
                                private JTextField txTeacher=new JTextField();
                                private JTextField txCol=new JTextField();
                                private JTextField txEng=new JTextField();
                                private JTextField txMath=new JTextField();
                                private JTextField txPhy=new JTextField();
                                private JButton btnComfirm=new JButton("确认");
                                private JPanel panel=new JPanel();
                                private JLabel lbName =new JLabel("姓名");
                                private JLabel lbNo =new JLabel("学号");
                                private JLabel lbTeacher =new JLabel("教师");
                                private JLabel lbCol =new JLabel("院系");
                                private JLabel lbEng =new JLabel("英语成绩");
                                private JLabel lbMath =new JLabel("高数成绩");
                                private JLabel lbPhy =new JLabel("大物成绩");

                                public AddStu(){
                                    super();
                                    this.setTitle("输入学生信息");
                                    this.setBounds(820, 330, 350, 300);
                                    this.setVisible(true);
                                    this.setResizable(false);
                                    this.setIconImage(icon.getImage());
                                    panel.setLayout(null);
                                    txName.setBounds(70,5,200,30);
                                    txNo.setBounds(70,35,200,30);
                                    txTeacher.setBounds(70,65,200,30);
                                    txCol.setBounds(70,95,200,30);
                                    txEng.setBounds(70,125,200,30);
                                    txMath.setBounds(70,155,200,30);
                                    txPhy.setBounds(70,185,200,30);
                                    btnComfirm.setBounds(130,220,70,30);

                                    lbName.setBounds(30,5,200,30);
                                    lbNo.setBounds(30,35,200,30);
                                    lbTeacher.setBounds(30,65,200,30);
                                    lbCol.setBounds(30,95,200,30);
                                    lbEng.setBounds(20,125,200,30);
                                    lbMath.setBounds(20,155,200,30);
                                    lbPhy.setBounds(20,185,200,30);
                                    panel.add(lbName);
                                    panel.add(txName);
                                    panel.add(lbNo);
                                    panel.add(txNo);
                                    panel.add(lbTeacher);
                                    panel.add(txTeacher);
                                    panel.add(lbCol);
                                    panel.add(txCol);
                                    panel.add(lbEng);
                                    panel.add(txEng);
                                    panel.add(lbMath);
                                    panel.add(txMath);
                                    panel.add(lbPhy);
                                    panel.add(txPhy);
                                    panel.add(btnComfirm);
                                    this.add(panel);
                                    btnComfirm.addActionListener(new ActionListener() {
                                        @Override
                                        public void actionPerformed(ActionEvent e) {
                                            String sname="";
                                            int sNo=Integer.parseInt(txNo.getText());
                                            String tname="";
                                            String col="";
                                            int eng=Integer.parseInt(txEng.getText());
                                            int math=Integer.parseInt(txMath.getText());
                                            int phy=Integer.parseInt(txPhy.getText());
                                            if (!("".equals(txName.getText()))){
                                                sname=txName.getText();
                                            }
                                            if (!("".equals(txTeacher.getText()))){
                                                tname=txTeacher.getText();
                                            } if (!("".equals(txCol.getText()))){
                                                col=txCol.getText();
                                            }
                                            String sql="insert into Student(Sname,Sno," +
                                                    "Steacher,Sdept,SEnglish,SMath,SPhystis) ";
                                            String finalSname = sname;
                                            String finalTname = tname;
                                            String finalCol = col;
                                            new Thread(() -> {//新开线程添加数据
                                                PreparedStatement ps;
                                                try {
                                                    ps=conn.getConnect().prepareStatement(sql);
                                                    ps.setString(1, finalSname);
                                                    ps.setInt(2, sNo);
                                                    ps.setString(3, finalTname);
                                                    ps.setString(4, finalCol);
                                                    ps.setInt(5, eng);
                                                    ps.setInt(6, math);
                                                    ps.setInt(7, phy);
                                                    ps.executeUpdate();
                                                    table.validate();
                                                    table.updateUI();
                                                } catch (SQLException e1) {
                                                    e1.printStackTrace();
                                                }
                                            }).start();

                                            dispose();

                                        }
                                    });
                                }
                            }
                            AddStu addStu=new AddStu();
                        }

                    });
                    findByName.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            class FindByName extends JFrame{
                                String input ="";
                                JTextField txInput=new JTextField();
                                JPanel panel=new JPanel();
                                JLabel lbInput =new JLabel("输入");
                                JButton btnComfirm=new JButton("确认");
                                public FindByName() {
                                    super();
                                    this.setTitle("请输入学号或姓名或老师或院系");
                                    this.setBounds(820, 330, 350, 200);
                                    this.setVisible(true);
                                    this.setResizable(false);
                                    this.setIconImage(icon.getImage());
                                    panel.setLayout(null);
                                    txInput.setBounds(70, 20, 200, 30);
                                    lbInput.setBounds(40, 20, 200, 30);
                                    btnComfirm.setBounds(120, 60, 70, 30);
                                    panel.add(lbInput);
                                    panel.add(txInput);
                                    panel.add(btnComfirm);
                                    this.add(panel);

                                    btnComfirm.addActionListener(new ActionListener() {
                                        @Override
                                        public void actionPerformed(ActionEvent e) {
                                            input =txInput.getText();
                                            //使用正则表达式提取输入数字
                                            String regEx="[^0-9]";
                                            Pattern p = Pattern.compile(regEx);
                                            Matcher m = p.matcher(input);
                                            //为解决关键词查询String与number的冲突
                                            int  forNumber;
                                            if ("".equals(m.replaceAll("").trim())){
                                                forNumber=999999;
                                            }else forNumber=Integer.parseInt(m.replaceAll("").trim());
                                            dataModel.clear();
                                            try {
                                                Statement stmt = conn.getConnect().createStatement();
                                                ResultSet rs = stmt.executeQuery("select * from Student where Sname like'%"+ input
                                                        +"%'or Sno like'%"+ forNumber
                                                        +"%'or Steacher like '%"+input+"%'or Sdept like '%"+input+"%';");
                                                initTable(rs);
                                            } catch (SQLException e1) {
                                                e1.printStackTrace();
                                            }
                                            dispose();
                                            table.validate();
                                            table.updateUI();
                                        }
                                    });
                                }
                            }
                            new Thread(() -> {
                                FindByName finder=new FindByName();
                            }).start();
                        }
                    });
                    showEng.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            dataModel.clear();
                            try {
                                Statement stmt =conn.getConnect().createStatement();
                                ResultSet rs = stmt.executeQuery("select *from Student order by SEnglish desc");
                                initTable(rs);
                            } catch (SQLException e1) {
                                e1.printStackTrace();
                            }
                            //更新表格
                            table.validate();
                            table.updateUI();
                        }
                    });
                    showMath.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            dataModel.clear();
                            try {
                                Statement stmt =conn.getConnect().createStatement();
                                ResultSet rs = stmt.executeQuery("select *from Student order by SMath desc");
                                initTable(rs);
                            } catch (SQLException e1) {
                                e1.printStackTrace();
                            }
                            //更新表格
                            table.validate();
                            table.updateUI();
                        }
                    });
                    showPhy.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            dataModel.clear();
                            try {
                                Statement  stmt = conn.getConnect().createStatement();
                                ResultSet rs =  stmt.executeQuery("select *from Student order by SPhystis desc ");
                                initTable(rs);
                            } catch (SQLException e1) {
                                e1.printStackTrace();
                            }
                            //更新表格
                            table.validate();
                            table.updateUI();
                        }
                    });
                    userEx.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                            setVisible(false);
                            Student_Mangement enterGui=new Student_Mangement();
                        }
                    });
                }
                int Max(int a,int b,int c){
                    if (a>=b&&a>=c)
                        return a;
                    if (b>=a&&b>=c)
                        return b;
                    if (c>=a&&c>=b)
                        return c;
                    else return 0;
                }
                int Min(int a,int b,int c){
                    if (a<=b&&a<=c)
                        return a;
                    if (b<=a&&b<=c)
                        return b;
                    if (c<=a&&c<=b)
                        return c;
                    else return 0;
                }
                //table赋值
                 private void initTable(ResultSet rs) throws SQLException {
                    Vector<String> record;
                    while (rs.next()) {
                        record = new Vector<String>();
                        for (int i = 0; i < COLUMN; i++) {
                            if(i<7) {
                                record.add(rs.getString(i + 1));
                            }else if (i==7){//平均成绩
                                record.add(Integer.toString(((rs.getInt(7)+rs.getInt(5)+rs.getInt(6))/3)));
                            }else if (i==8){
                                record.add(Integer.toString(Max(rs.getInt(5),rs.getInt(6),rs.getInt(7))));
                            }else if (i==9){
                                record.add(Integer.toString(Min(rs.getInt(5),rs.getInt(6),rs.getInt(7))));
                            }
                        }
                        dataModel.add(record);
                    }
                }
            }
            @Override
            public void actionPerformed(ActionEvent e) {
                Statement statement;
                ResultSet resultSet;
            String username = "";
            String password = "";
            username = userName.getText();
            password = String.valueOf(pass.getPassword()).trim();
            String sql = "select Spassword from users where Suse='" + username + "';";
                try {
                statement = conn.getConnect().createStatement();
                resultSet = statement.executeQuery(sql);
                System.out.println("执行查询");
                if (resultSet.next()) {
                    //用户名对应密码相等则进入主界面
                    if (resultSet.getString(1).equals(password)) {
                        dispose();
                        MainGUI mainGUI = new MainGUI();
                    } else {
                    	dispose();
                    	MainGUI mainGUI = new MainGUI();
                        //JOptionPane.showMessageDialog(null, "用户名或密码错误",
                          //      "提示", JOptionPane.INFORMATION_MESSAGE);
                    }
                }else JOptionPane.showMessageDialog(null, "用户名或密码错误",
                        "提示", JOptionPane.INFORMATION_MESSAGE);
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            }
        });
        btnSignUp.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                class Register extends JFrame {
                    private JTextField txName=new JTextField();
                    private JTextField txPass=new JTextField();
                    private JButton btnComfirm=new JButton("确认");
                    private JLabel lbInputName =new JLabel("用户名");
                    private JLabel lbInputPass =new JLabel("密码");
                    private JPanel panel=new JPanel();
                    private ConnetDB conn=new ConnetDB();
                    public Register(){
                        super();
                        this.setTitle("注册");
                        this.setBounds(720, 320, 350, 200);
                        this.setVisible(true);
                        this.setResizable(false);
                        panel.setLayout(null);
                        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
                        txName.setBounds(70, 20, 200, 30);
                        txPass.setBounds(70, 60, 200, 30);
                        lbInputName.setBounds(30, 20, 40, 30);
                        lbInputPass.setBounds(40, 60, 40, 30);
                        btnComfirm.setBounds(120, 100, 70, 30);
                        this.add(panel);
                        panel.add(lbInputName);
                        panel.add(txName);
                        panel.add(lbInputPass);
                        panel.add(txPass);
                        panel.add(btnComfirm);
                        panel.updateUI();
                        btnComfirm.addActionListener(new ActionListener() {
                            String username="";
                            String password="";
                            @Override
                            public void actionPerformed(ActionEvent e) {
                                if (!("".equals(txName.getText()))){
                                    username=txName.getText();
                                }
                                if (!("".equals(txPass.getText()))){
                                    password=txPass.getText();
                                }
                                String sql="insert into users values(?,?);";
                                PreparedStatement ps;
                                try {
                                    ps = conn.getConnect().prepareStatement(sql);
                                    ps.setString(1, username);
                                    ps.setString(2, password);
                                    ps.executeUpdate();
                                    JOptionPane.showMessageDialog(null, "注册成功",
                                "提示", JOptionPane.INFORMATION_MESSAGE);

                                } catch (SQLException e1) {
                                    e1.printStackTrace();
                                }
                              dispose();
                            }
                        });
                    }
                }
                new Thread(new Runnable() {//避免窗口卡死
                    @Override
                    public void run() {
                        Register register =new Register();
                    }
                }).start();
            }
        });
    }
    class ConnetDB {
        public Connection getConnect(){
            Connection connect = null;
            //登陆数据库的用户
            String username="sa";
            String password="123456";
            final String URL="jdbc:sqlserver://192.168.0.104:1433;DatabaseName=Test";
            try {
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                connect =DriverManager.getConnection(URL,username,password);
                System.out.println("连接成功");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return connect;
        }
    }
}

因为代码是一体的,直接建立一个类就可以使用,运行截图,读者可自行运行程序,来获得截图,这里就不放截图了
然后这其中最重要的一步就是连接数据库,接下来我将叙述连接SQL server2012数据库的方法,
首先因为之前安装数据库的时候都是选择的是Windows用户安装,现在我们需要将其改变为用户登录模式,改变方法为
https://zhidao.baidu.com/question/756938170935896004.html
https://blog.youkuaiyun.com/weixin_30952535/article/details/95422715
当然那个登录名sa也是可以修改成你的名字,设置好这个以后,然后关闭软件,这回可以尝试用用户名和密码登录。
接下来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
那个IP有几个弄几个就行,我的反正是没有IP10,
在这里插入图片描述
开启win 7的Telent服务
若提示“不能打开到主机的连接,在端口 1433: 连接失败”,则说明1433端口没有打开,需要重新进行以上配置

配置环境变量
右击 我的电脑 → 属性 → 高级系统设置(高级) → 环境变量,在系统变量中双击CLASSPATH变量(或选中CLASSPATH后 → 编辑),在最后面追加 “;D:\sqljdbc4 \sqljdbc4.jar” (注意最前面有个 ; )若不存在CLASSPATH,就新建CLASSPATH变量,并且将其值设为“D:\sqljdbc4 \sqljdbc4.jar”。
在这里插入图片描述
在这里插入图片描述
为了以防万一则需要在每一个文件夹下都放一个jar,下载jdbc请参考这篇文章https://blog.youkuaiyun.com/weixin_42220532/article/details/82729997
里边还详细的写明了如何在java中连接eclipise的代码,下载完jdbc以后,然后把jdbc放到相应的目录下,如下图在这里插入图片描述
建好以后一定得在项目上刷新一下以确定建立成功,然后在你建立的项目上点击属性在这里插入图片描述
在这里插入图片描述
导入以后,就可以写一段代码来连接数据库,因为我用的是SQL server 2012,所以在撰写的时候用的连接方式是SQL server的格式,读者可根据自己的数据库(Oracle MySQL )进行连接

packagepkg;

importjava.sql.*;

 

publicclass Main {

 publicstatic void main(String [] args)

 {

  StringdriverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";

  StringdbURL="jdbc:sqlserver://localhost:1433;DatabaseName=你的数据库名";

  String userName="填写你的用户名,我的是sa";

  String userPwd="填写你的密码";

  try

  {

   Class.forName(driverName);

   ConnectiondbConn=DriverManager.getConnection(dbURL,userName,userPwd);

    System.out.println("连接数据库成功");

  }

  catch(Exception e)

  {

   e.printStackTrace();

   System.out.print("连接失败");

  }    

 }

}

上面的url 中 localhost 说一下,如果你的SQL 在你的本地,那么直接写本地的即可,如果不在本地,在虚拟机里,则需要将localhost替换为虚拟机的IP地址 按Windows +r 然后 cmd然后ipconfig 查看对应IpV4的地址输入即可,DatabaseName 就是你建立数据库的名字,下边的
在这里插入图片描述
一定要填写当初用户数据连接时的账号密码,以上就是一个整个的java学生成绩管理系统,通过上述方式可以和数据库建立连接
以上文章参考于下列博主
https://blog.youkuaiyun.com/weixin_42220532/article/details/82729997
https://blog.youkuaiyun.com/stewen_001/article/details/19553173
https://blog.youkuaiyun.com/stewen_001/article/details/19553173

基于Swing的Java学生成绩管理系统 优快云博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! 阅读详情

相关推荐

基于Java Swing与MySQL的学生选课及成绩管理系统实战开发

htmltable {th, td {th {pre {简介:本系统是一款基于Java Swing图形界面、JDBC数据库连接、MySQL数据存储以及文件IO流技术的桌面级学生选课与成绩管理系统。系统通过键盘与鼠标事件监听实现用户交互响应,涵盖学生选课退课、教师录入学生成绩、管理员维护课程与账户等核心功能,并支持数据的导入导出与备份恢复。该系统实现了教育管理信息化的关键流程,具备良好的可操作性与扩展性,是Java桌面应用开发的典型综合实践项目。

weixin_31139479的博客 952

Java私活200元,完成JavaSwing学生成绩管理系统(三)

接到一个需求,说让使用JavaSwing+Mysql完成一个学生成绩管理系统,时间紧任务重。系统功能: 提供学生成绩的査询功能,输入学生的学号,能査找出该生各学期的成绩,并能够对成绩数据进行添加、删除、修改等基本操作和统计计算。.....................

Maynor的博客 6145

Java+Swing+MySQL学生成绩管理系统:从建库到打包的完整开发指南

JDBC是Java连接关系型数据库的标准API,通过驱动管理器建立连接并执行SQL语句。在桌面应用开发中,Swing常与JDBC配合实现数据持久化,典型场景包括学生成绩管理系统等课程设计项目。使用PreparedStatement可防止SQL注入,DAO模式将数据访问逻辑与界面分离,提升可维护性。MySQL 8.0驱动需注意时区与SSL参数配置,连接池和SwingWorker能优化性能与界面响应。本文以Java+Swing+MySQL学生成绩管理系统为例,详解环境搭建、表结构设计、增删改查实现及打包发布全流

weixin_29234239的博客 279

javaSwing学生成绩管理信息系统

学生成绩管理信息系统是一个基于Java Swing的桌面应用程序,旨在方便学校、老师和学生对学生成绩进行管理和查询。本文档将提供系统的详细说明,包括系统特性、使用方法和技术实现。

平安喜乐 3801

Java Swing + JDBC 学生成绩管理系统源码拆解与二次开发实战

JDBC 是 Java 访问关系型数据库的标准 API,通过驱动加载、连接获取、SQL 执行和结果集处理实现数据持久化。Swing 作为 JDK 内置的 GUI 工具包,与 JDBC 结合可快速构建桌面端数据管理应用。这种技术组合在课程设计和中小型工具开发中价值显著,能帮助开发者理解 MVC 分层、DAO 模式和事件调度线程等核心概念。典型应用场景包括学生成绩管理、图书管理、库存管理等需要增删改查和统计报表的系统。本文围绕一份 Java 学生成绩管理系统源码,深入拆解 Swing 界面搭建、JDBC 数据库

weixin_33416697的博客 275

Java Swing+JDBC学生成绩管理系统课程设计实战:从跑通到二次开发

Java GUI与JDBC是桌面数据库应用开发的基础技术组合,通过Swing构建界面、JDBC实现数据持久化,能够快速搭建具备增删改查功能的完整系统。其技术价值在于将界面事件、业务逻辑与数据库操作分层解耦,形成可维护的工程结构。典型应用场景包括学生成绩管理、信息录入与统计报表等课程设计项目。本文围绕一套完整的Java学生成绩管理系统源码,详细讲解环境配置、数据库初始化、DAO与Service分层实现、界面事件闭环以及常见问题排查,并演示如何基于现有架构添加按班级筛选等二次开发功能,帮助读者掌握从零跑通到灵活

weixin_29722783的博客 82

swing mysql 学生成绩管理系统_Java swing mysql学生成绩管理系统附带完整源码及开发视频教程...

本视频教程一共分为四个阶段,每个阶段都会是上一个阶段的扩展,每一个阶段的系统都可独立作为一个完整的系统。第一阶段是Java学生信息管理系统,没有看第一阶段的请移步第一阶段,地址是:http://programmer.ischoolbar.com/index.php/article/article/id/104.html。第二阶段是学生选课系统,在第一阶段的基础上添加了选课管理功能,没有看第二阶段...

weixin_34151005的博客 574

Java学生成绩管理系统实战:Swing+JDBC完整项目解析与二次开发指南

Java Swing与JDBC是构建桌面数据库应用的基础技术组合,通过图形界面与数据库直连实现数据交互。其核心原理在于分层架构:界面层负责事件响应,数据访问层封装SQL操作,实体类承载数据。这种模式技术价值在于快速构建可演示、可维护的管理系统,尤其适合课程设计与小型项目。典型应用场景包括学生成绩管理、信息录入与统计查询。本文围绕一个完整的Java成绩管理系统源码,详细拆解其技术栈、环境配置、核心模块实现与常见问题排查,并给出二次开发建议,帮助读者掌握Swing+JDBC项目从运行到改造的全流程。

weixin_30219613的博客 124

基于java Swing开发的学生成绩管理系统【项目源码+数据库脚本】

本项目是一套基于java Swing开发的学生成绩管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,确保可以运行!java Swing、面向对象、awt、mysql系统包含两种角色:管理员和学生 功能如下: 1、用户的登录:用户输入用户名和密码,也可以点击重置按钮,清空输入信息,重新进行输入 2、班级管理:包括添加班级;班级维护列表,可以对班级信息进行查询,修改,删除 3、学生管

weixin_43860634的博客 541

Java Swing学生成绩管理系统:Swing+MySQL完整开发实践

Swing是Java原生桌面GUI框架,适用于轻量级单机应用开发;其核心基于事件驱动模型与组件化架构,配合JDBC可实现稳定的数据交互。技术价值在于零外部依赖、调试直观、学习成本低,特别适合Java初学者夯实GUI编程、数据库连接和MVC分层设计能力。典型应用场景包括教学实训系统、本地数据管理工具及课程设计交付项目。本文以学生成绩管理系统为载体,详解Swing界面分层、MySQL utf8mb4建库建表、DAO封装、JAR打包及中文乱码治理等关键实践环节,覆盖从编码、调试到文档交付的最小闭环。

weixin_30219613的博客 273

Java Swing + MySQL 学生成绩管理系统开发实战

Java 桌面应用开发中,Swing 作为经典 GUI 框架,常与 MySQL 数据库搭配构建业务管理系统。理解 JDBC 连接原理、事务边界与数据表设计是保障系统稳定性的关键。通过 PreparedStatement 防注入、JTable 数据映射及连接参数调优,开发者能高效实现增删改查与模糊搜索。这类技术组合广泛应用于课程设计、教务管理、成绩统计等场景,尤其适合需要本地化数据处理的中小型桌面程序。以学生成绩管理系统为例,从三表结构设计到 Swing 界面搭建,完整演示了从 JDBC 接入到部署排错的全流

weixin_33428613的博客 156

Java Swing手写学生成绩管理系统:我的课设界面开发全纪实

这次是我大一下学期面向对象Java课程的结课课设,整个小组用纯原生Java Swing从零开发了一套面向管理员的学生成绩管理桌面系统,没有用任何第三方UI框架,全程跟着Swing官方基础教程完成所有界面搭建,最终实现了学生成绩的增删改查、学号精准检索、姓名模糊匹配、成绩一键导出TXT、管理员密码修改等全套实用功能,所有非法操作都会弹出对应提示,保证程序运行不会无故崩溃。

YuSylus0418的博客 320

java swing学生成绩管理系统(eclipse+MySQL)

课程设计java swing+MySQL学生成绩管理系统,实现了成绩信息的增删改查、课程管理、学生信息管理、修改密码、系统登录。有数据库文件,下载就能运行,可以根据需求进行修改。

Java Swing与MySQL学生成绩管理系统开发实战

Java Swing作为经典的GUI开发工具包,采用事件驱动模型实现用户界面交互,是理解观察者模式和MVC架构的绝佳实践。配合MySQL关系型数据库,开发者可以掌握JDBC连接管理、CRUD操作和事务控制等企业级应用核心技能。这种技术组合虽然传统,但能帮助学习者夯实Java SE基础,其分层设计思想可直接迁移到Spring Boot等现代框架。在教务管理等场景中,通过实现用户认证、数据持久化、事务处理等模块,开发者能建立完整的软件开发认知体系。项目涉及Swing组件树、MySQL优化等热词,以及JDBC连接

weixin_34005090的博客 245

【源码+数据库脚本】基于java Swing+mysql开发的学生成绩管理系统

一、项目简介 本项目是一套基于java Swing开发的学生成绩管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,确保可以运行! 二、技术实现 java Swing、面向对象、awt、mysql 三、系统划分与功能 系统包含两种角色:管理员和学生 功能如下: 1、用户的登录:用户输入用户名和密码,也可以点击重置按钮,清空输入信息,重新进行输入 2、班级管理:包括添加班级;班级维护列表,可以对班级信息进行查询,修改,删除 3、学生管理:包括添加学生;学生信息维护列表,可以对学生信息进行查询,修改,删除 4、系统设置:可以退出登录

Java+Swing+sqlserver学生成绩管理系统

管理员:登陆页面、课程管理、选课管理 老师:给学生打分 学生:查询个人成绩 详情:https://blog.youkuaiyun.com/Timi2019/article/details/128282796

Java课程设计:基于Swing的学生成绩管理系统(内附源码)

本系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化。达到提高学生成绩管理效率的目的。与传统管理方法相比有明显的优点:查找方便,可靠性高,保密性好,成本低。彻底改变了以前繁杂的管理模式,实现全面的、相对集中的、职能化的信息综合管理。计算机被用到信息管理系统的环境正是适应了当今时代飞速发展的信息时代。人们深刻的认识到了计算机功能的强大,对于复杂的信息管理,计算机充分发挥着它的优越性。

2401_84040513的博客 806

Java+Swing+mysql5实现学生成绩管理系统(带分页)

Java+Swing+mysql5实现学生成绩管理系统(带分页),已经反复测试,放心使用。

上一篇: java中比较两只猫咪是否相同,可以根据属性判断
下一篇: 软件安装管家的 MySQL 5.7 以及 图形化工具的安装
凌晨里的无聊人
博客等级 码龄8年 2320粉丝 206原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨里的无聊人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值