Java+Eclipse+MySQL+Swing realiza el sistema de gestión de resultados de exámenes de estudiantes (proyecto completo gratuito)

Declaración de derechos de autor: la originalidad no es fácil, el plagio y la reimpresión están prohibidos en este artículo, ¡y se debe investigar la infracción!

1. Documento de desarrollo de requisitos

Lista completa de archivos de proyecto:
inserte la descripción de la imagen aquí
Capturas de pantalla de documentos de desarrollo de requisitos:
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

2. Documento de diseño de la base de datos

Captura de pantalla parcial del documento de diseño de la base de datos:
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

3. Parte del código y visualización de efectos del módulo de funciones.

Clase de base de datos:

package system_of_database;

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

public class DBUtil {
    
    

    Connection con = null;
    PreparedStatement ps = null;
    ResultSet rs = null;

    public Connection getConnection() throws ClassNotFoundException,
            SQLException,InstantiationException,IllegalAccessException {
    
    
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/exam_of_students?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
        String user = "root";
        String password = "root";
        try {
    
    
            Class.forName(driver);
            con = DriverManager.getConnection(url,user,password);
            return con;
        } catch(Exception e) {
    
    
            throw new SQLException("驱动错误或连接失败!");
        }
    }

El código de inicio de sesión del candidato es el siguiente:
public class LoginListener implements ActionListener{
    
    
        public void actionPerformed(ActionEvent e) {
    
    
            lblMsg1.setText("");
            lblMsg2.setText("");
            user = userService.findUserByName(txtName.getText().trim());
            if(user != null) {
    
    
                if(user.getPassword().equals(new String(txtPwd.getPassword()))) {
    
    
                    LoginFrame_Of_Students.this.setVisible(false);
                    new MainFrame_Of_Students();
                } else {
    
    
                    lblMsg2.setText("密码错误!");
                    txtPwd.setText("");
                }
            } else {
    
    
                lblMsg1.setText("该考生不存在 !");
            }
        }
    }

Los resultados de inicio de sesión de los candidatos son los siguientes:
inserte la descripción de la imagen aquí

La parte de inicio de sesión del administrador del código es la siguiente:

public class LoginListener implements ActionListener{
    
    
        public void actionPerformed(ActionEvent e) {
    
    
            lblMsg1.setText("");
            lblMsg2.setText("");
            user = userService.findUserByName(txtName.getText().trim());
            if(user != null) {
    
    
                if(user.getPassword().equals(new String(txtPwd.getPassword()))) {
    
    
                    LoginFrame_Of_Administration.this.setVisible(false);
                    new MainFrame_Of_Administration();
                } else {
    
    
                    lblMsg2.setText("密码错误!");
                    txtPwd.setText("");
                }
            } else {
    
    
                lblMsg1.setText("该管理员不存在 !");
            }
        }
    }

    public class ResetListener implements ActionListener{
    
    
        public void actionPerformed(ActionEvent e) {
    
    
            txtName.setText("");
            txtPwd.setText("");
        }
    }

El efecto del inicio de sesión del administrador es el siguiente:
inserte la descripción de la imagen aquí
los códigos de los resultados de la consulta del examinado son los siguientes:

private void showData() {
    
    
        String id = txtId.getText();
        String sql = "select id as 考生号,geography as 地理,chemistry as 化学,IT as 信息技术,History as 历史 ,Biology as 生物,mathematics as 数学,general_technique as 通用技术,physics as 物理,english as 英语,chinese as 语文,politics as 政治  from information_of_grade where id = '"+id+"'";
        DBUtil db = new DBUtil();
        try {
    
    
            db.getConnection();
            ResultSet rs = db.executeQuery(sql, null);
            ResultSetMetaData rsmd = rs.getMetaData();
            int colCount = rsmd.getColumnCount();
            Vector<String> title = new Vector<String>();  //存放标题
            for(int i = 1;i<=colCount;i++) {
    
    
                title.add(rsmd.getColumnLabel(i));
            }
            Vector<Vector<String>> data = new Vector<Vector<String>>();    //存放表格数据
            int rowCount = 0;
            while(rs.next()) {
    
    
                rowCount++;
                Vector<String> rowdata = new Vector<String>();         //存放行数据
                for(int i = 1;i<=colCount;i++) {
    
    
                    rowdata.add(rs.getString(i));
                }
                data.add(rowdata);
            }
            if(rowCount == 0) {
    
    
                model.setDataVector(null, title);
            } else {
    
    
                model.setDataVector(data,title);
            }
        } catch(Exception ee) {
    
    
            System.out.println(ee.toString());
            JOptionPane.showMessageDialog(this, "系统出现异常错误。请检查数据库。系统即将推出!!!","错误",0);
        } finally {
    
    
            db.closeAll();
        }
        JOptionPane.showMessageDialog(null, "查询到该考生信息");
    }

Los resultados de la consulta de los candidatos son los siguientes:
inserte la descripción de la imagen aquí
El código de pieza de exportación de los resultados de los candidatos es el siguiente:

public void saveFile() {
    
    
        JFileChooser fc = new JFileChooser();
        int rVal = fc.showSaveDialog(this);
        if(rVal == JFileChooser.APPROVE_OPTION) {
    
    
            String fileName = fc.getSelectedFile().getName();
            String path = fc.getCurrentDirectory().toString();
            try {
    
    
                TableModel model = table.getModel(); 
                FileWriter fw = new FileWriter(path + "/" + fileName);
                for(int i=0; i < model.getColumnCount(); i++) {
    
     
                    fw.write(model.getColumnName(i) + "\t"); 
                } 
                fw.write("\n"); 
                for(int i=0; i< model.getRowCount(); i++) {
    
     
                    for(int j=0; j < model.getColumnCount(); j++) {
    
     
                        fw.write(model.getValueAt(i,j).toString()+"\t"); 
                    } 
                    fw.write("\n");
                } 
                fw.close();
            } catch(Exception e) {
    
    
                e.printStackTrace();
            }
            JOptionPane.showMessageDialog(null, "导出成功");
        }
    }

Los resultados de la exportación del examinado son los siguientes:
inserte la descripción de la imagen aquí
la parte del código para que el examinado modifique la contraseña es la siguiente:

public class listener_of_delete implements ActionListener{
    
    
           public void actionPerformed(ActionEvent e){
    
    
               String id = jtId.getText();
               String code = new String(jpCode.getPassword());
               String code1 = new String(jpCode1.getPassword());
               DBUtil db = new DBUtil();
               String sql = "update information_of_students set pwd = '"+code+"' where id = '"+id+"'";
               if(code.equals(code1)){
    
    
                   try {
    
    
                       db.getConnection();
                       db.executeUpdate(sql,null);
                   } catch(Exception ee) {
    
    
                       System.out.println(ee.toString());
                   } finally {
    
    
                       db.closeAll();
                   }
                   JOptionPane.showMessageDialog(null, "修改成功");
               }
               else{
    
    
                   JOptionPane.showMessageDialog(null, "两次密码不一样!");
               }
           }
    }

Los candidatos modifican la contraseña de la siguiente manera:
inserte la descripción de la imagen aquí
parte del código del panel principal del administrador es el siguiente:

public MainFrame_Of_Administration() {
    
    
        super("Administration");
        ImageIcon qstIcon = new ImageIcon("images\\1.png");
        this.setIconImage(qstIcon.getImage());
        p = new JPanel();
        setBak();
        clipboard=getToolkit().getSystemClipboard();
        Container c = getContentPane();
        p.setOpaque(false);
        c.add(p);
        p.setLayout(null);

        jbInsert = new JButton("添加考生信息");
        jbDelete = new JButton("删除考生信息");
        jbUpdate = new JButton("修改考生信息");
        jbAdministration = new JButton("返回登录界面");
        jbResetCode = new JButton("重置考生密码");

        jbAdministration.addActionListener(new loginframe_of_administration());
        jbDelete.addActionListener(new listener_of_delete());
        jbInsert.addActionListener(new listener_of_insert());
        jbUpdate.addActionListener(new listener_of_update());
        jbResetCode.addActionListener(new listener_of_reset());

        jbInsert.setBounds(0,20,120,25);
        jbDelete.setBounds(0,55,120,25);
        jbUpdate.setBounds(0,90,120,25);
        jbAdministration.setBounds(0,125,120,25);
        jbResetCode.setBounds(0,165,120,25);

        p.add(jbInsert);
        p.add(jbDelete);
        p.add(jbUpdate);
        p.add(jbAdministration);
        p.add(jbResetCode);
        this.add(p);
        this.setLocation(200,100);
        this.setSize(533,300);
        this.setResizable(false);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

El efecto del panel principal del administrador es el siguiente:
inserte la descripción de la imagen aquí
el código para agregar información del candidato es el siguiente:

public class listener_of_insert implements ActionListener{
    
    
           public void actionPerformed(ActionEvent e){
    
    
               DBUtil db = new DBUtil();
               String preparedsql = "insert into information_of_grade(id,geography,chemistry,IT,history,biology,mathematics,general_technique,physics,english,chinese,politics)"+"values(?,?,?,?,?,?,?,?,?,?,?,?)";

               try {
    
    
                   db.getConnection();
                   Object param[] = {
    
    jtId.getText(),jtGeo.getText(),jtChe.getText(),jtIT.getText(),jtHis.getText(),jtBio.getText(),jtMath.getText(),jtGen.getText(),jtPhy.getText(),jtEng.getText(),jtChi.getText(),jtPol.getText()};
                   db.executeUpdate(preparedsql, param);
               } catch(Exception ee) {
    
    
                   System.out.println(ee.toString());
               } finally {
    
    
                   db.closeAll();
               }
               JOptionPane.showMessageDialog(null, "成功添加考生信息");
        }
    }

El efecto de agregar información de candidatos es el siguiente:
inserte la descripción de la imagen aquí
el código para eliminar información de candidatos es el siguiente:

public class listener_of_delete implements ActionListener{
    
    
           public void actionPerformed(ActionEvent e){
    
    
               String id = jtId.getText();
               DBUtil db = new DBUtil();
               String sql = "delete from information_of_grade where id = '"+id+"'";

               try {
    
    
                   db.getConnection();
                   db.executeUpdate(sql,null);
               } catch(Exception ee) {
    
    
                   System.out.println(ee.toString());
               } finally {
    
    
                   db.closeAll();
               }
               JOptionPane.showMessageDialog(null, "成功删除考生信息");
        }
    }

El efecto de eliminar la información del candidato es el siguiente:
inserte la descripción de la imagen aquí
Modifique la parte de información del candidato del código de la siguiente manera:

public class listener_of_delete implements ActionListener{
    
    
           public void actionPerformed(ActionEvent e){
    
    
               String id = jtId.getText();
               String code = new String(jpCode.getPassword());
               String code1 = new String(jpCode1.getPassword());
               DBUtil db = new DBUtil();
               String sql = "update information_of_students set pwd = '"+code+"' where id = '"+id+"'";
               if(code.equals(code1)){
    
    
                   try {
    
    
                       db.getConnection();
                       db.executeUpdate(sql,null);
                   } catch(Exception ee) {
    
    
                       System.out.println(ee.toString());
                   } finally {
    
    
                       db.closeAll();
                   }
                   JOptionPane.showMessageDialog(null, "修改成功");
               }
               else{
    
    
                   JOptionPane.showMessageDialog(null, "两次密码不一样!");
               }
           }
    }

El efecto de modificar la información del candidato es el siguiente:
inserte la descripción de la imagen aquí
Parte del código para restablecer la contraseña del candidato es el siguiente:

public class listener_of_delete implements ActionListener{
    
    
           public void actionPerformed(ActionEvent e){
    
    
               String id = jtId.getText();
               DBUtil db = new DBUtil();
               String sql = "update information_of_students set pwd = '000000' where id = '"+id+"'";
               try {
    
    
                   db.getConnection();
                   db.executeUpdate(sql,null);
               } catch(Exception ee) {
    
    
                   System.out.println(ee.toString());
               } finally {
    
    
                   db.closeAll();
                 }
                 JOptionPane.showMessageDialog(null, "重置成功");
           }
    }

El efecto de restablecer la contraseña del candidato es el siguiente:
inserte la descripción de la imagen aquí

4. Descarga el código fuente completo

Descargue el código fuente del sistema de gestión de resultados de exámenes de estudiantes:

  • Siga mi cuenta pública original de WeChat: " Tecnología Xiaohong Xingkong ", responda " Sistema de gestión de resultados de exámenes de estudiantes " para obtener el proyecto completo
    inserte la descripción de la imagen aquí

5. Información del autor

Autor: Xiaohong's Fishing Daily, Objetivo: ¡Hacer la programación más interesante!

Cuenta pública original de WeChat: " Tecnología Xiaohong Xingkong ", centrada en algoritmos, rastreadores web, desarrollo de sitios web, desarrollo de juegos, análisis de datos, procesamiento de lenguaje natural, IA, etc. Esperamos su atención, ¡crezcamos y codifiquemos juntos!

Nota de derechos de autor: ¡Este artículo prohíbe el plagio y la reimpresión, y la infracción debe investigarse!

Supongo que te gusta

Origin blog.csdn.net/qq_44000141/article/details/122275351
Recomendado
Clasificación