Java+Eclipse+MySQL+Swing réalise le système de gestion des résultats des examens des étudiants (projet complet gratuit)

Déclaration de copyright : l'originalité n'est pas facile, le plagiat et la réimpression sont interdits dans cet article, et la contrefaçon doit faire l'objet d'une enquête !

1. Document d'élaboration des exigences

Liste complète des fichiers de projet :
insérez la description de l'image ici
Captures d'écran des documents d'élaboration des exigences :
insérez la description de l'image ici
insérez la description de l'image ici
insérez la description de l'image ici
insérez la description de l'image ici
insérez la description de l'image ici
insérez la description de l'image ici
insérez la description de l'image ici
insérez la description de l'image ici
insérez la description de l'image ici

2. Document de conception de la base de données

Capture d'écran partielle du document de conception de la base de données :
insérez la description de l'image ici
insérez la description de l'image ici
insérez la description de l'image ici
insérez la description de l'image ici

3. Une partie de l'affichage du code et de l'effet du module de fonction

Classe de base de données :

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("驱动错误或连接失败!");
        }
    }

Le code de connexion du candidat est le suivant :
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("该考生不存在 !");
            }
        }
    }

Les résultats de connexion des candidats sont les suivants :
insérez la description de l'image ici

La partie de connexion de l'administrateur du code est la suivante :

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("");
        }
    }

L'effet de la connexion administrateur est le suivant :
insérez la description de l'image ici
les codes des résultats de la requête du candidat sont les suivants :

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, "查询到该考生信息");
    }

Les résultats de la requête des candidats sont les suivants :
insérez la description de l'image ici
Le code de pièce d'exportation des résultats des candidats est le suivant :

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, "导出成功");
        }
    }

Les résultats du résultat d'exportation du candidat sont les suivants :
insérez la description de l'image ici
la partie du code permettant au candidat de modifier le mot de passe est la suivante :

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, "两次密码不一样!");
               }
           }
    }

Les candidats modifient le mot de passe comme suit :
insérez la description de l'image ici
une partie du code du panneau principal de l'administrateur est la suivante :

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);

    }

L'effet du panneau principal de l'administrateur est le suivant :
insérez la description de l'image ici
le code pour ajouter des informations sur le candidat est le suivant :

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, "成功添加考生信息");
        }
    }

L'effet de l'ajout d'informations sur les candidats est le suivant :
insérez la description de l'image ici
le code de suppression des informations sur les candidats est le suivant :

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, "成功删除考生信息");
        }
    }

L'effet de la suppression des informations sur les candidats est le suivant :
insérez la description de l'image ici
modifiez la partie des informations sur les candidats du code comme suit :

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, "两次密码不一样!");
               }
           }
    }

L'effet de la modification des informations sur le candidat est le suivant :
insérez la description de l'image ici
Une partie du code de réinitialisation du mot de passe du candidat est la suivante :

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, "重置成功");
           }
    }

L'effet de la réinitialisation du mot de passe du candidat est le suivant :
insérez la description de l'image ici

4. Téléchargez le code source complet

Téléchargez le code source du système de gestion des résultats des examens des étudiants :

  • Suivez mon compte public WeChat d'origine : « Technologie Xiaohong Xingkong », répondez « Système de gestion des résultats des examens des étudiants » pour obtenir le projet complet.
    insérez la description de l'image ici

5. Informations sur l'auteur

Auteur : Xiaohong's Fishing Daily, objectif : rendre la programmation plus intéressante !

Compte public original de WeChat : " Xiaohong Xingkong Technology ", axé sur les algorithmes, les robots d'exploration Web, le développement de sites Web, le développement de jeux, l'analyse de données, le traitement du langage naturel, l'IA, etc., dans l'attente de votre attention, laissez-nous grandir et coder ensemble !

Remarque sur les droits d'auteur : cet article interdit le plagiat et la réimpression, et toute violation doit faire l'objet d'une enquête !

Je suppose que tu aimes

Origine blog.csdn.net/qq_44000141/article/details/122275351
conseillé
Classement