版权声明:原创不易,本文禁止抄袭、转载,侵权必究!
目录
一、需求开发文档
二、数据库设计文档
三、功能模块部分代码及效果展示
四、完整源码下载
五、作者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 —— —— —— —— ————
欢迎扫码关注我的公众号
小鸿星空科技
