Java+Eclipse+MySQL+Swing realisiert das System zur Verwaltung von Studentenprüfungsergebnissen (kostenloses Komplettprojekt)

Urheberrechtserklärung: Originalität ist nicht einfach, Plagiate und Nachdruck sind in diesem Artikel verboten und Verstöße müssen untersucht werden!

1. Anforderungsentwicklungsdokument

Vollständige Liste der Projektdateien:
Fügen Sie hier eine Bildbeschreibung ein
Screenshots der Anforderungsentwicklungsdokumente:
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

2. Datenbankentwurfsdokument

Teil-Screenshot des Datenbank-Designdokuments:
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

3. Teil der Code- und Effektanzeige des Funktionsmoduls

Datenbankklasse:

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

Der Anmeldecode für den Kandidaten lautet wie folgt:
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("该考生不存在 !");
            }
        }
    }

Die Anmeldeergebnisse für Kandidaten lauten wie folgt:
Fügen Sie hier eine Bildbeschreibung ein

Der Administrator-Anmeldeteil des Codes lautet wie folgt:

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

Die Auswirkung des Administrator-Logins ist wie folgt:
Fügen Sie hier eine Bildbeschreibung ein
Die Codes der Abfrageergebnisse des Prüflings lauten wie folgt:

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

Die Abfrageergebnisse der Kandidaten lauten wie folgt:
Fügen Sie hier eine Bildbeschreibung ein
Der Teilecode für den Export der Kandidatenergebnisse lautet wie folgt:

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

Die Ergebnisse des Exportergebnisses des Testteilnehmers lauten wie folgt:
Fügen Sie hier eine Bildbeschreibung ein
Der Teil des Codes, den der Testteilnehmer zum Ändern des Passworts benötigt, lautet wie folgt:

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

Kandidaten ändern das Passwort wie folgt:
Fügen Sie hier eine Bildbeschreibung ein
Ein Teil des Codes des Hauptpanels des Administrators lautet wie folgt:

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

    }

Die Wirkung des Hauptfensters des Administrators ist wie folgt:
Fügen Sie hier eine Bildbeschreibung ein
Der Code zum Hinzufügen von Kandidateninformationen lautet wie folgt:

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

Das Hinzufügen von Kandidateninformationen hat folgende Auswirkungen:
Fügen Sie hier eine Bildbeschreibung ein
Der Code zum Löschen von Kandidateninformationen lautet wie folgt:

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

Das Löschen der Kandidateninformationen hat folgende Auswirkungen:
Fügen Sie hier eine Bildbeschreibung ein
Ändern Sie den Teil des Codes mit den Kandidateninformationen wie folgt:

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

Die Änderung der Kandidateninformationen hat folgende Auswirkungen:
Fügen Sie hier eine Bildbeschreibung ein
Ein Teil des Codes zum Zurücksetzen des Kandidatenpassworts lautet wie folgt:

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

Das Zurücksetzen des Kandidatenpassworts hat folgende Auswirkungen:
Fügen Sie hier eine Bildbeschreibung ein

4. Laden Sie den vollständigen Quellcode herunter

Laden Sie den Quellcode des Studentenprüfungsergebnisverwaltungssystems herunter:

  • Folgen Sie meinem ursprünglichen öffentlichen WeChat-Konto: „ Xiahong Xingkong Technology “, antworten Sie auf „ Students' Examination Results Management System “, um das vollständige Projekt zu erhalten
    Fügen Sie hier eine Bildbeschreibung ein

5. Autoreninformationen

Autor: Xiaohong's Fishing Daily, Ziel: Programmieren interessanter machen!

Ursprüngliches öffentliches WeChat-Konto: „ Xiahong Xingkong Technology “, mit Schwerpunkt auf Algorithmen, Webcrawlern, Website-Entwicklung, Spieleentwicklung, Datenanalyse, Verarbeitung natürlicher Sprache, KI usw., freue mich auf Ihre Aufmerksamkeit, lassen Sie uns gemeinsam wachsen und programmieren!

Urheberrechtshinweis: Dieser Artikel verbietet Plagiate und Nachdrucke und Verstöße müssen untersucht werden!

Ich denke du magst

Origin blog.csdn.net/qq_44000141/article/details/122275351
Empfohlen
Rangfolge