Java+Eclipse+MySQL+Swing實現學生會考成績管理系統(免費完整專案)

南柯樹下發表於2022-01-02

 版權宣告:原創不易,本文禁止抄襲、轉載,侵權必究!

 

目錄

一、需求開發文件

二、資料庫設計文件

三、功能模組部分程式碼及效果展示

四、完整原始碼下載

五、作者Info

 

一、需求開發文件

專案完整檔案列表:

 

需求開發文件部分截圖:

 

 

 

 

 

 

 

 

 


 

二、資料庫設計文件

資料庫設計文件部分截圖:

 

 

 

 


 

三、功能模組部分程式碼及效果展示

資料庫類:

 1 package system_of_database;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8 
 9 public class DBUtil {
10 
11     Connection con = null;
12     PreparedStatement ps = null;
13     ResultSet rs = null;
14 
15     public Connection getConnection() throws ClassNotFoundException,
16             SQLException,InstantiationException,IllegalAccessException {
17         String driver = "com.mysql.jdbc.Driver";
18         String url = "jdbc:mysql://localhost:3306/exam_of_students?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
19         String user = "root";
20         String password = "root";
21         try {
22             Class.forName(driver);
23             con = DriverManager.getConnection(url,user,password);
24             return con;
25         } catch(Exception e) {
26             throw new SQLException("驅動錯誤或連線失敗!");
27         }
28     }

 

考生登入部分程式碼如下:

 1 public class LoginListener implements ActionListener{
 2         public void actionPerformed(ActionEvent e) {
 3             lblMsg1.setText("");
 4             lblMsg2.setText("");
 5             user = userService.findUserByName(txtName.getText().trim());
 6             if(user != null) {
 7                 if(user.getPassword().equals(new String(txtPwd.getPassword()))) {
 8                     LoginFrame_Of_Students.this.setVisible(false);
 9                     new MainFrame_Of_Students();
10                 } else {
11                     lblMsg2.setText("密碼錯誤!");
12                     txtPwd.setText("");
13                 }
14             } else {
15                 lblMsg1.setText("該考生不存在 !");
16             }
17         }
18     }

 

考生登入效果如下:

 

管理員登入部分程式碼如下:

 1 public class LoginListener implements ActionListener{
 2         public void actionPerformed(ActionEvent e) {
 3             lblMsg1.setText("");
 4             lblMsg2.setText("");
 5             user = userService.findUserByName(txtName.getText().trim());
 6             if(user != null) {
 7                 if(user.getPassword().equals(new String(txtPwd.getPassword()))) {
 8                     LoginFrame_Of_Administration.this.setVisible(false);
 9                     new MainFrame_Of_Administration();
10                 } else {
11                     lblMsg2.setText("密碼錯誤!");
12                     txtPwd.setText("");
13                 }
14             } else {
15                 lblMsg1.setText("該管理員不存在 !");
16             }
17         }
18     }
19 
20     public class ResetListener implements ActionListener{
21         public void actionPerformed(ActionEvent e) {
22             txtName.setText("");
23             txtPwd.setText("");
24         }
25     }

 

管理員登入效果如下:

 

考生查詢成績部分程式碼如下:

 1 private void showData() {
 2         String id = txtId.getText();
 3         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+"'";
 4         DBUtil db = new DBUtil();
 5         try {
 6             db.getConnection();
 7             ResultSet rs = db.executeQuery(sql, null);
 8             ResultSetMetaData rsmd = rs.getMetaData();
 9             int colCount = rsmd.getColumnCount();
10             Vector<String> title = new Vector<String>();  //存放標題
11             for(int i = 1;i<=colCount;i++) {
12                 title.add(rsmd.getColumnLabel(i));
13             }
14             Vector<Vector<String>> data = new Vector<Vector<String>>();    //存放表格資料
15             int rowCount = 0;
16             while(rs.next()) {
17                 rowCount++;
18                 Vector<String> rowdata = new Vector<String>();         //存放行資料
19                 for(int i = 1;i<=colCount;i++) {
20                     rowdata.add(rs.getString(i));
21                 }
22                 data.add(rowdata);
23             }
24             if(rowCount == 0) {
25                 model.setDataVector(null, title);
26             } else {
27                 model.setDataVector(data,title);
28             }
29         } catch(Exception ee) {
30             System.out.println(ee.toString());
31             JOptionPane.showMessageDialog(this, "系統出現異常錯誤。請檢查資料庫。系統即將推出!!!","錯誤",0);
32         } finally {
33             db.closeAll();
34         }
35         JOptionPane.showMessageDialog(null, "查詢到該考生資訊");
36     }

 

考生查詢成績效果如下:

 

考生成績匯出部分程式碼如下:

 1 public void saveFile() {
 2         JFileChooser fc = new JFileChooser();
 3         int rVal = fc.showSaveDialog(this);
 4         if(rVal == JFileChooser.APPROVE_OPTION) {
 5             String fileName = fc.getSelectedFile().getName();
 6             String path = fc.getCurrentDirectory().toString();
 7             try {
 8                 TableModel model = table.getModel(); 
 9                 FileWriter fw = new FileWriter(path + "/" + fileName);
10                 for(int i=0; i < model.getColumnCount(); i++) { 
11                     fw.write(model.getColumnName(i) + "\t"); 
12                 } 
13                 fw.write("\n"); 
14                 for(int i=0; i< model.getRowCount(); i++) { 
15                     for(int j=0; j < model.getColumnCount(); j++) { 
16                         fw.write(model.getValueAt(i,j).toString()+"\t"); 
17                     } 
18                     fw.write("\n");
19                 } 
20                 fw.close();
21             } catch(Exception e) {
22                 e.printStackTrace();
23             }
24             JOptionPane.showMessageDialog(null, "匯出成功");
25         }
26     }

 

考生成績匯出效果如下:

 

考生修改密碼部分程式碼如下:

 1 public class listener_of_delete implements ActionListener{
 2            public void actionPerformed(ActionEvent e){
 3                String id = jtId.getText();
 4                String code = new String(jpCode.getPassword());
 5                String code1 = new String(jpCode1.getPassword());
 6                DBUtil db = new DBUtil();
 7                String sql = "update information_of_students set pwd = '"+code+"' where id = '"+id+"'";
 8                if(code.equals(code1)){
 9                    try {
10                        db.getConnection();
11                        db.executeUpdate(sql,null);
12                    } catch(Exception ee) {
13                        System.out.println(ee.toString());
14                    } finally {
15                        db.closeAll();
16                    }
17                    JOptionPane.showMessageDialog(null, "修改成功");
18                }
19                else{
20                    JOptionPane.showMessageDialog(null, "兩次密碼不一樣!");
21                }
22            }
23     }

 

考生修改密碼效果如下:

 

管理員主皮膚部分程式碼如下:

 1 public MainFrame_Of_Administration() {
 2         super("Administration");
 3         ImageIcon qstIcon = new ImageIcon("images\\1.png");
 4         this.setIconImage(qstIcon.getImage());
 5         p = new JPanel();
 6         setBak();
 7         clipboard=getToolkit().getSystemClipboard();
 8         Container c = getContentPane();
 9         p.setOpaque(false);
10         c.add(p);
11         p.setLayout(null);
12 
13         jbInsert = new JButton("新增考生資訊");
14         jbDelete = new JButton("刪除考生資訊");
15         jbUpdate = new JButton("修改考生資訊");
16         jbAdministration = new JButton("返回登入介面");
17         jbResetCode = new JButton("重置考生密碼");
18 
19         jbAdministration.addActionListener(new loginframe_of_administration());
20         jbDelete.addActionListener(new listener_of_delete());
21         jbInsert.addActionListener(new listener_of_insert());
22         jbUpdate.addActionListener(new listener_of_update());
23         jbResetCode.addActionListener(new listener_of_reset());
24 
25         jbInsert.setBounds(0,20,120,25);
26         jbDelete.setBounds(0,55,120,25);
27         jbUpdate.setBounds(0,90,120,25);
28         jbAdministration.setBounds(0,125,120,25);
29         jbResetCode.setBounds(0,165,120,25);
30 
31         p.add(jbInsert);
32         p.add(jbDelete);
33         p.add(jbUpdate);
34         p.add(jbAdministration);
35         p.add(jbResetCode);
36         this.add(p);
37         this.setLocation(200,100);
38         this.setSize(533,300);
39         this.setResizable(false);
40         this.setVisible(true);
41         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
42 
43     }

 

管理員主皮膚效果如下:

 

新增考生資訊部分程式碼如下:

 1 public class listener_of_insert implements ActionListener{
 2            public void actionPerformed(ActionEvent e){
 3                DBUtil db = new DBUtil();
 4                String preparedsql = "insert into information_of_grade(id,geography,chemistry,IT,history,biology,mathematics,general_technique,physics,english,chinese,politics)"+"values(?,?,?,?,?,?,?,?,?,?,?,?)";
 5 
 6                try {
 7                    db.getConnection();
 8                    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()};
 9                    db.executeUpdate(preparedsql, param);
10                } catch(Exception ee) {
11                    System.out.println(ee.toString());
12                } finally {
13                    db.closeAll();
14                }
15                JOptionPane.showMessageDialog(null, "成功新增考生資訊");
16         }
17     }

 

新增考生資訊效果如下:

 

刪除考生資訊部分程式碼如下:

 1 public class listener_of_delete implements ActionListener{
 2            public void actionPerformed(ActionEvent e){
 3                String id = jtId.getText();
 4                DBUtil db = new DBUtil();
 5                String sql = "delete from information_of_grade where id = '"+id+"'";
 6 
 7                try {
 8                    db.getConnection();
 9                    db.executeUpdate(sql,null);
10                } catch(Exception ee) {
11                    System.out.println(ee.toString());
12                } finally {
13                    db.closeAll();
14                }
15                JOptionPane.showMessageDialog(null, "成功刪除考生資訊");
16         }
17     }

 

刪除考生資訊效果如下:

 

修改考生資訊部分程式碼如下:

 1 public class listener_of_delete implements ActionListener{
 2            public void actionPerformed(ActionEvent e){
 3                String id = jtId.getText();
 4                String code = new String(jpCode.getPassword());
 5                String code1 = new String(jpCode1.getPassword());
 6                DBUtil db = new DBUtil();
 7                String sql = "update information_of_students set pwd = '"+code+"' where id = '"+id+"'";
 8                if(code.equals(code1)){
 9                    try {
10                        db.getConnection();
11                        db.executeUpdate(sql,null);
12                    } catch(Exception ee) {
13                        System.out.println(ee.toString());
14                    } finally {
15                        db.closeAll();
16                    }
17                    JOptionPane.showMessageDialog(null, "修改成功");
18                }
19                else{
20                    JOptionPane.showMessageDialog(null, "兩次密碼不一樣!");
21                }
22            }
23     }

 

修改考生資訊效果如下:

 

重置考生密碼部分程式碼如下:

 1 public class listener_of_delete implements ActionListener{
 2            public void actionPerformed(ActionEvent e){
 3                String id = jtId.getText();
 4                DBUtil db = new DBUtil();
 5                String sql = "update information_of_students set pwd = '000000' where id = '"+id+"'";
 6                try {
 7                    db.getConnection();
 8                    db.executeUpdate(sql,null);
 9                } catch(Exception ee) {
10                    System.out.println(ee.toString());
11                } finally {
12                    db.closeAll();
13                  }
14                  JOptionPane.showMessageDialog(null, "重置成功");
15            }
16     }

 

重置考生密碼效果如下:

 


 

四、完整原始碼下載

學生會考成績管理系統原始碼下載:

  • 關注我的原創微信公眾號:『小鴻星空科技』,回覆『學生會考成績管理系統』獲取完整專案

 


 

五、作者Info

作者:南柯樹下,Goal:讓程式設計更有趣!

原創微信公眾號:『小鴻星空科技』,專注於演算法、爬蟲,網站,遊戲開發,資料分析、自然語言處理,AI等,期待你的關注,讓我們一起成長、一起Coding!

版權宣告:本文禁止抄襲、轉載 ,侵權必究!

 


 歡迎掃碼關注我的原創公眾號【小鴻星空科技】,回覆【學生會考成績管理系統】獲取完整專案


 

——  ——  ——  ——  —  END  ——  ——  ——  ——  ———— 

         歡迎掃碼關注我的公眾號

          小鴻星空科技

       

相關文章