java学生管理系统

一、项目概述

本学生管理系统旨在提供一个方便的界面,用于学校或机构管理学生信息,包括学生基本信息、课程成绩等。

二、系统架构

系统采用经典的三层架构,包括前端使用JavaSwing,后端采用Java Servlet,数据库使用MySQL。

三、技术选型

  • JavaSwing作为前端UI框架。
  • Java Servlet处理后端逻辑。
  • MySQL数据库存储学生信息。

四、安装和配置

  1. 下载项目源代码。
  2. 安装Java Development Kit (JDK)。
  3. 设置数据库连接配置。
  4. 运行系统初始化脚本。

1.学生信息管理

  1. 在主界面选择“学生管理”。
  2. 点击“添加学生”按钮,输入学生信息。
  3. 查看学生列表和详细信息。

2.成绩管理

  1. 进入“成绩管理”模块。
  2. 选择课程和学生,输入成绩。
  3. 查看成绩报表。

五、数据库设计

student

  • sid:学生ID,自增长。
  • sname:学生姓名。
  • snumber:学号。
  • sage:学生年龄。
  • sphone:学生电话。
  • saddress:学生地址。

示例数据:

sid sname snumber sage sphone saddress
1 styhs 123456789 23 12345678 郑州

user

  • uid:用户ID,自增长。
  • uname:用户名。
  • upassword:用户密码。

示例数据:

uid uname upassword
1 user 123456
2 user1 111111
3 user2 111111

六、程序截图

java学生管理系统_第1张图片
java学生管理系统_第2张图片
java学生管理系统_第3张图片
java学生管理系统_第4张图片
java学生管理系统_第5张图片
java学生管理系统_第6张图片

七、代码

DBUtil.java



package studentapp.dal;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;


public class DBUtil {

    private static String driver = "com.mysql.jdbc.Driver";
    private static String URL = "jdbc:mysql://localhost:3306/studentdb?useSSL=false";
    private static Connection con = null;
    private static Statement smt = null;
    private static ResultSet rs = null;

    private static Connection createConnection() {
        try {
            
            Class.forName(driver);
            return DriverManager.getConnection(URL, "root", "");
        } catch (SQLException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        } catch (java.lang.ClassNotFoundException e) {
            System.out.println("Can't load Driver");
        }
        return null;
    }

    public static int runUpdate(String sql) throws SQLException {
        int count = 0;
        if (con == null) {
            con = createConnection();
        }
        if (smt == null) {
            smt = con.createStatement();
        }

        count = smt.executeUpdate(sql);

        if (smt != null) {
            smt.close();
            smt = null;
        }
        if (con != null) {
            con.close();
            con = null;
        }
        return count;
    }

    
    public static ResultSet runQuery(String sql) throws SQLException {
        if (con == null) {
            con = createConnection();
        }
        if (smt == null) {
            smt = con.createStatement();
        }
        return smt.executeQuery(sql);
    }

    public static void realeaseAll() {
        if (rs != null) {
            try {
                rs.close();
                rs = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (smt != null) {
            try {
                smt.close();
                smt = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (con != null) {
            try {
                con.close();
                con = null;
            } catch (SQLException ex) {
                Logger.getLogger(DBUtil.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
    }

    public static void closeConnection(Connection conn) {
        System.out.println("...");
        try {
            if (conn != null) {
                conn.close();
                conn = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

LoginJFrame.java

package studentapp.gui;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import studentapp.dal.Entity.User;
import studentapp.dal.daoimpl.UserDaoImpl;

import java.awt.CardLayout;
import java.awt.Event;

import javax.swing.JTextField;
import java.awt.FlowLayout;
import javax.swing.JPasswordField;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JMenu;
import javax.swing.SwingConstants;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class LoginJFrame extends JFrame {

	private JPanel contentPane;
	private JTextField userName;
	private JPasswordField userPassword;
	private JTextField adminName;
	private JPasswordField adminPassword;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					LoginJFrame frame = new LoginJFrame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public LoginJFrame() {
		setTitle("\u767B\u9646\u5B66\u751F\u7BA1\u7406\u7CFB\u7EDF");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		CardLayout cardLayout=new CardLayout();
		
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		JMenu landingOptions = new JMenu("\u767B\u9646\u9009\u62E9");
		menuBar.add(landingOptions);
		
		JMenuItem adminOption = new JMenuItem("\u7BA1\u7406\u5458\u767B\u9646");
		adminOption.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				cardLayout.last(contentPane);
			}
		});
		landingOptions.add(adminOption);
		
		JMenuItem userOption = new JMenuItem("\u7528\u6237\u767B\u9646");
		userOption.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				cardLayout.first(contentPane);
			}
		});
		landingOptions.add(userOption);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(cardLayout);
		
		JPanel userPanel = new JPanel();
		contentPane.add(userPanel, "name_5600414879778");
		userPanel.setLayout(null);
		
		userName = new JTextField();
		userName.setBounds(148, 55, 122, 21);
		userPanel.add(userName);
		userName.setColumns(10);
		
		userPassword = new JPasswordField();
		userPassword.setBounds(148, 96, 122, 21);
		userPanel.add(userPassword);
		
		JButton userButton1 = new JButton("\u767B\u9646");
		userButton1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				userLoginActionPerformed(event);
			}
		});
		userButton1.setBounds(72, 159, 93, 23);
		userPanel.add(userButton1);
		
		JButton userButton2 = new JButton("\u6CE8\u518C");
		userButton2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				userRegisterActionPerformed(event);
			}
		});
		userButton2.setBounds(220, 159, 93, 23);
		userPanel.add(userButton2);
		
		JLabel lbll = new JLabel("\u7528\u6237\u540D\uFF1A");
		lbll.setBounds(72, 58, 54, 15);
		userPanel.add(lbll);
		
		JLabel label = new JLabel("\u5BC6\u7801\uFF1A");
		label.setBounds(72, 99, 54, 15);
		userPanel.add(label);
		
		JPanel adminPanel = new JPanel();
		contentPane.add(adminPanel, "name_5642638031832");
		adminPanel.setLayout(null);
		
		adminName = new JTextField();
		adminName.setBounds(190, 48, 129, 21);
		adminPanel.add(adminName);
		adminName.setColumns(10);
		
		adminPassword = new JPasswordField();
		adminPassword.setBounds(190, 91, 129, 21);
		adminPanel.add(adminPassword);
		
		JButton adminButton = new JButton("\u767B\u9646");
		adminButton.setBounds(152, 151, 93, 23);
		adminPanel.add(adminButton);
		
		JLabel lblNewLabel = new JLabel("\u7BA1\u7406\u5458\u540D\uFF1A");
		lblNewLabel.setBounds(79, 51, 101, 15);
		adminPanel.add(lblNewLabel);
		
		JLabel lblNewLabel_1 = new JLabel("\u7BA1\u7406\u5458\u5BC6\u7801\uFF1A");
		lblNewLabel_1.setBounds(79, 94, 101, 15);
		adminPanel.add(lblNewLabel_1);
		
	}
	private void userLoginActionPerformed(ActionEvent event) {
		 String uname=userName.getText();
	        String upassword=userPassword.getText();
	        UserDaoImpl userDaoImpl=new UserDaoImpl();
	        if(userDaoImpl.certifyUser(uname, upassword))
	        {
	            JOptionPane.showMessageDialog(this, "��¼�ɹ�");
	            StudentJFrame studentJFrame=new StudentJFrame();
	            studentJFrame.setBounds(600, 400, 800, 600);
	            studentJFrame.setVisible(true);
	            this.setVisible(false);
	            this.dispose();
	        }
	        else
	        {
	            JOptionPane.showMessageDialog(this, "��¼ʧ�ܣ��˺Ż��������","��½ѧ������ϵͳ",JOptionPane.ERROR_MESSAGE);
	        }
	}
	private void userRegisterActionPerformed(ActionEvent event) {
		String uname=userName.getText();
	     String upassword=userPassword.getText();
	     User user=new User(uname,upassword);
	     UserDaoImpl userDaoImpl=new UserDaoImpl();
	     if(userDaoImpl.addUser(user)) {
	    	 JOptionPane.showMessageDialog(this, "ע��ɹ�");
	     }
	     else {
	    	 JOptionPane.showMessageDialog(this, "ע��ʧ��!","ע��ѧ������ϵͳ",JOptionPane.ERROR_MESSAGE);
	     }
	}
	
}

SimpleTableModel.java


package studentapp.gui;


import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.AbstractTableModel;

import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils.Collections;

import studentapp.dal.Entity.Student;

public  class SimpleTableModel<T> extends AbstractTableModel
{
   protected List<String> cols;
   protected List<T> rows;

    public SimpleTableModel(List<String> cols, List<T> rows) {
        this.cols = cols;
        this.rows = rows;
    }

    public List<String> getCols() {
        return cols;
    }

    public void setCols(List<String> cols) {
        this.cols = cols;
    }

    public List<T> getRows() {
        return rows;
    }

    public void setRows(List<T> rows) {
        this.rows = rows;
    }
      
    @Override
    public int getRowCount() {
        return rows.size();
    }

    @Override
    public int getColumnCount() {
        return  cols.size();
    }

    @Override
    public String getColumnName(int column) {
        return cols.get(column);
    }
    
    @Override
    public  Object getValueAt(int rowIndex, int columnIndex) {
       try {
           List<Method> getMethods=ClassRefect.getAllGetMethod(rows.get(rowIndex));          
           return getMethods.get(columnIndex).invoke(rows.get(rowIndex), null);
       } catch (IllegalAccessException ex) {
           Logger.getLogger(SimpleTableModel.class.getName()).log(Level.SEVERE, null, ex);
       } catch (IllegalArgumentException ex) {
           Logger.getLogger(SimpleTableModel.class.getName()).log(Level.SEVERE, null, ex);
       } catch (InvocationTargetException ex) {
           Logger.getLogger(SimpleTableModel.class.getName()).log(Level.SEVERE, null, ex);
       }
       return "";
    }
    
}

八、交流与联系

q:969060742 文档、代码、sql、程序资源

你可能感兴趣的:(java课设,java,开发语言)