JavaSwing成绩管理系统(含源码)

JavaSwing成绩管理系统

目录

JavaSwing成绩管理系统

一、背景及技术

二、思维脑图

三、模块设计

1、界面设计思路

2、登录页面

3、管理员登录成功内容页面

4、学生管理

5、课程管理

6、排课

7、系统管理

8、教师登录成功页面

9、我的授课

10、连接数据库

四、源代码地址:


一、背景及技术

背景:JavaSwing实现前台页面展示,包括后台管理界面和教师登录查看页面,后台数据部分可以选择保存在内存中,也可以选择保存在数据库中。实现简单的学生成绩管理系统。

技术语言:java+mysql

二、思维脑图

三、模块设计

1、界面设计思路

主窗体可以分为两部分,一部分是上面的导航按钮部分,另一部分是内容区域,根据不同的按钮点击切换到不同的页面;

主窗体:

主窗体继承自JPanel

内容区域可以创建一个JDesktopPane桌面面板类,可以实现多页面的切换

每一个不同的页面可以继承自JInternalFrame,每一个继承JInternalFrame的页面可以填充到JDesktopPane桌面面板中;

2、登录页面

登录分为管理员和教师两种角色,登录成功分别进入不同的界面

代码:

/**
 * 主启动类
 *
 * @create 2024-01-07
 */
public class MainFrame {
    public static final JFrame frame = new JFrame("学生成绩管理系统");
    //当前登录的用户
    public static User user;

    public static void main(String[] args) {
        frame.setSize(SystemConstant.FRAME_WIDTH, SystemConstant.FRAME_HEIGHT);
        frame.setLayout(null);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(new LoginPanel());
    }

    public static void setContentPanel(JPanel panel) {
        frame.setContentPane(panel);
    }
}
/**
 * 登录
 *
 * @create 2024-01-07
 */
public class LoginPanel extends JPanel {
    public LoginPanel() {
        this.setBounds(0, 0, SystemConstant.FRAME_WIDTH, SystemConstant.FRAME_HEIGHT);
        this.add(new JLabel("用户名"));
        JTextField nameField = new JTextField(10);
        this.add(nameField);

        this.add(new JLabel("密码"));
        JPasswordField passwordField = new JPasswordField(10);
        this.add(passwordField);

        JRadioButton adminRadio = new JRadioButton("管理员", true);
        JRadioButton commonRadio = new JRadioButton("教师");
        ButtonGroup group = new ButtonGroup();
        group.add(adminRadio);
        group.add(commonRadio);
        this.add(adminRadio);
        this.add(commonRadio);

        JButton loginBt = new JButton("登录");
        this.add(loginBt);
        loginBt.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                User user = null;
                String username = nameField.getText();
                String password = new String(passwordField.getPassword());
                JPanel panel = null;
                if (adminRadio.isSelected()) {
//                    user = UserDao.getUserByUserName(username);
                    user = UserDao.getUserByName(username);
                    panel = new AdminPanel();
                } else if (commonRadio.isSelected()) {
                    user = TeacherDao.getUserByName(username);
                    panel = new UserPanel();
                }
                if (user == null || !user.getPassword().equals(password)) {
                    JOptionPane.showMessageDialog(loginBt.getParent(), "密码错误", "系统提示", JOptionPane.WARNING_MESSAGE);
                } else {
                    MainFrame.setContentPanel(panel);
                    MainFrame.user = user;
                }
            }
        });
    }
}

3、管理员登录成功内容页面

public class AdminPanel extends JPanel {
    private static JDesktopPane contentPanel = new JDesktopPane();

    public AdminPanel() {
        this.setBounds(0, 0, SystemConstant.FRAME_WIDTH, SystemConstant.FRAME_HEIGHT);
        contentPanel.setBounds(0, 20, SystemConstant.FRAME_WIDTH, SystemConstant.FRAME_HEIGHT - 50);
        this.add(contentPanel, BorderLayout.CENTER);
        JMenuBar menuBar = new JMenuBar();
        JMenu studentMenu = new JMenu("学生管理");
        JMenu projectMenu = new JMenu("课程管理");
        JMenu paiMenu = new JMenu("排课");
        JMenu systemMenu = new JMenu("系统管理");
        menuBar.add(studentMenu);
        menuBar.add(projectMenu);
        menuBar.add(paiMenu);
        menuBar.add(systemMenu);

        JMenuItem logout = new JMenuItem("退出登录");
        systemMenu.add(logout);

        logout.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                contentPanel.removeAll();
                contentPanel.repaint();
                MainFrame.setContentPanel(new LoginPanel());
            }
        });

        studentMenu.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                setContent(new StudentTablePanel());
            }
        });

        projectMenu.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                setContent(new CourseTablePanel());
            }
        });

        paiMenu.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                setContent(new PlanTablePanel());
            }
        });

        this.setLayout(new BorderLayout());
        menuBar.setBounds(0, 0, SystemConstant.FRAME_WIDTH, 50);
        this.add(menuBar, BorderLayout.NORTH);
    }

    public static void setContent(JInternalFrame jInternalFrame) {
        jInternalFrame.setSize(SystemConstant.FRAME_WIDTH, SystemConstant.FRAME_HEIGHT - 100);
        jInternalFrame.setVisible(true);
        contentPanel.removeAll();
        contentPanel.repaint();
        contentPanel.add(jInternalFrame);
    }
}

4、学生管理

/**
 * 学生管理
 *
 * @create 2024-01-08
 */
public class StudentTablePanel extends JInternalFrame {
    public StudentTablePanel() {
        super("学生信息列表", true, true, true, true);
        this.setSize(SystemConstant.FRAME_WIDTH, SystemConstant.FRAME_HEIGHT);
        JTable jTable = new JTable() {
            //表格只读
            @Override
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
        //查询所有数据填充到表格当中
        TableModel tableModel = new DefaultTableModel(StudentDao.searchMulti(new int[0], null), StudentDao.columnNames);
        jTable.setModel(tableModel);

        //顶部栏操作
        JPanel topPanel = new JPanel();

        topPanel.add(new JLabel("学院:"));
        JComboBox<ComboItem> deptBox = new JComboBox<>();
        BaseDataUtil.fillComboItem(deptBox, BaseDataDao.getDeptList());
        topPanel.add(deptBox);

        topPanel.add(new JLabel("系:"));
        JComboBox<ComboItem> majorBox = new JComboBox<>();
        BaseDataUtil.fillComboItem(majorBox, BaseDataDao.getMajorList(""));
        topPanel.add(majorBox);

        topPanel.add(new JLabel("班级:"));
        JComboBox<ComboItem> classBox = new JComboBox<>();
        BaseDataUtil.fillComboItem(classBox, BaseDataDao.getClassList(""));
        topPanel.add(classBox);

        deptBox.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    System.out.println(e.getItem().toString() + "选中");
                    ComboItem comboItem = (ComboItem) deptBox.getSelectedItem();
         
  • 24
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经
Java Swing 学生成绩管理源码可以有很多种实现方式,下面是一个简单的示例: ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class StudentGradeManagement extends JFrame { private JTextField nameField; private JTextField gradeField; private JTextArea resultArea; public StudentGradeManagement() { // 设置窗口标题 super("学生成绩管理系统"); // 创建姓名、成绩输入框和查询按钮 nameField = new JTextField(10); gradeField = new JTextField(10); JButton addButton = new JButton("添加"); JButton queryButton = new JButton("查询"); // 创建结果展示区域 resultArea = new JTextArea(10, 30); resultArea.setEditable(false); // 设置布局 setLayout(new FlowLayout()); add(new JLabel("姓名:")); add(nameField); add(new JLabel("成绩:")); add(gradeField); add(addButton); add(queryButton); add(new JScrollPane(resultArea)); // 注册事件监听器 addButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String name = nameField.getText(); String grade = gradeField.getText(); if (!name.isEmpty() && !grade.isEmpty()) { resultArea.append("姓名:" + name + " 成绩:" + grade + "\n"); nameField.setText(""); gradeField.setText(""); } } }); queryButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String name = nameField.getText(); if (!name.isEmpty()) { resultArea.setText(""); // 根据姓名查询成绩逻辑 // 这里省略具体实现 } } }); // 设置窗口大小和关闭操作 setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { // 创建学生成绩管理窗口 StudentGradeManagement frame = new StudentGradeManagement(); frame.setVisible(true); } } ``` 这个示例代码实现了一个简单的学生成绩管理系统界面界面中包了姓名和成绩的输入框,以及添加和查询按钮。用户可以输入学生的姓名和成绩,点击添加按钮后会将学生的姓名和成绩显示在结果展示区域中。点击查询按钮后会根据输入的姓名查询学生的成绩并显示在结果展示区域中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值