首页 > 编程语言 >Java版学生管理系统

Java版学生管理系统

时间:2024-11-13 19:19:14浏览次数:3  
标签:JFrame Java 管理系统 JOptionPane 学生 add dialog JMenuItem new

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Student {
    // 创建JFrame窗口
    private JFrame frame = new JFrame("课堂随机点名系统");

    // 创建菜单条
    JMenuBar menuBar = new JMenuBar();

    // 创建菜单组件
    JMenu fileMenu = new JMenu("文件");
    JMenu classroomMenu = new JMenu("班级管理");
    JMenu studentMenu = new JMenu("学生管理");
    JMenu groupMenu = new JMenu("小组管理");
    JMenu classMenu = new JMenu("课堂管理");

    // 菜单项组件
    JMenuItem addGroup = new JMenuItem("新增小组");
    JMenuItem groupOrganize = new JMenuItem("小组列表");
    JMenuItem addStudent = new JMenuItem("新增学生");
    JMenuItem studentOrganize = new JMenuItem("学生列表");
    JMenuItem randomGroup = new JMenuItem("随机小组");
    JMenuItem randomStudent = new JMenuItem("随机学生");
    JMenuItem addClass = new JMenuItem("新增班级");
    JMenuItem classOrganize = new JMenuItem("班级列表");
    JMenuItem selectClass = new JMenuItem("选择班级");

    // 当前选择的班级
    private String currentClass = null;

    public void init() {
        // 添加菜单项到对应的菜单
        groupMenu.add(addGroup);
        groupMenu.add(groupOrganize);
        studentMenu.add(addStudent);
        studentMenu.add(studentOrganize);
        classMenu.add(randomGroup);
        classMenu.add(randomStudent);
        classroomMenu.add(addClass);
        classroomMenu.add(classOrganize);
        classroomMenu.add(selectClass);

        // 添加菜单到菜单条
        menuBar.add(fileMenu); // 文件菜单暂时未添加任何项目
        menuBar.add(classroomMenu);
        menuBar.add(studentMenu);
        menuBar.add(groupMenu);
        menuBar.add(classMenu);

        // 为每个菜单项添加监听器
        addGroup.addActionListener(e -> checkIfClassIsSelected(() -> showAddGroupDialog()));
        groupOrganize.addActionListener(e -> checkIfClassIsSelected(() -> showGroupOrganizeDialog()));
        addStudent.addActionListener(e -> checkIfClassIsSelected(() -> showAddStudentDialog()));
        studentOrganize.addActionListener(e -> checkIfClassIsSelected(() -> showStudentOrganizeDialog()));
        randomGroup.addActionListener(e -> checkIfClassIsSelected(() -> showRandomGroupDialog()));
        randomStudent.addActionListener(e -> checkIfClassIsSelected(() -> showRandomStudentDialog()));
        addClass.addActionListener(e -> showAddClassDialog());
        classOrganize.addActionListener(e -> showClassOrganizeDialog());
        selectClass.addActionListener(e -> showSelectClassDialog());

        // 把菜单条放入到JFrame中
        frame.setJMenuBar(menuBar);

        // 设置窗口关闭操作
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 设置窗口最佳大小
        frame.pack();

        // 设置窗口可见性
        frame.setVisible(true);
    }

    private void checkIfClassIsSelected(Runnable action) {
        if (currentClass == null) {
            JOptionPane.showMessageDialog(frame, "请选择班级!", "警告", JOptionPane.WARNING_MESSAGE);
        } else {
            action.run();
        }
    }

    private void showAddGroupDialog() {
        JFrame dialog = new JFrame("新增小组");
        dialog.setSize(300, 200);
        dialog.setLayout(new FlowLayout());
        dialog.add(new JLabel("小组名称:"));
        JTextField groupNameField = new JTextField(20);
        dialog.add(groupNameField);
        JButton okButton = new JButton("确定");
        okButton.addActionListener(e -> {
            String groupName = groupNameField.getText();
            if (groupName.trim().isEmpty()) {
                JOptionPane.showMessageDialog(dialog, "请输入有效的小组名称!", "错误", JOptionPane.ERROR_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(dialog, "新增小组: " + groupName + " 成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
                dialog.dispose();
            }
        });
        dialog.add(okButton);
        dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        dialog.setLocationRelativeTo(frame);
        dialog.setVisible(true);
    }

    private void showGroupOrganizeDialog() {
        JFrame dialog = new JFrame("小组列表");
        dialog.setSize(300, 200);
        dialog.setLayout(new BorderLayout());
        JList<String> list = new JList<>(new String[]{"小组1", "小组2", "小组3"});
        dialog.add(new JScrollPane(list), BorderLayout.CENTER);
        dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        dialog.setLocationRelativeTo(frame);
        dialog.setVisible(true);
    }

    private void showAddStudentDialog() {
        JFrame dialog = new JFrame("新增学生");
        dialog.setSize(300, 200);
        dialog.setLayout(new FlowLayout());
        dialog.add(new JLabel("学生姓名:"));
        JTextField studentNameField = new JTextField(20);
        dialog.add(studentNameField);
        JButton okButton = new JButton("确定");
        okButton.addActionListener(e -> {
            String studentName = studentNameField.getText();
            if (studentName.trim().isEmpty()) {
                JOptionPane.showMessageDialog(dialog, "请输入有效的学生姓名!", "错误", JOptionPane.ERROR_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(dialog, "新增学生: " + studentName + " 成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
                dialog.dispose();
            }
        });
        dialog.add(okButton);
        dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        dialog.setLocationRelativeTo(frame);
        dialog.setVisible(true);
    }

    private void showStudentOrganizeDialog() {
        JFrame dialog = new JFrame("学生列表");
        dialog.setSize(300, 200);
        dialog.setLayout(new BorderLayout());
        JList<String> list = new JList<>(new String[]{"张三", "李四", "王五"});
        dialog.add(new JScrollPane(list), BorderLayout.CENTER);
        dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        dialog.setLocationRelativeTo(frame);
        dialog.setVisible(true);
    }

    private void showRandomGroupDialog() {
        List<String> groups = new ArrayList<>();
        groups.add("小组1");
        groups.add("小组2");
        groups.add("小组3");

        JFrame dialog = new JFrame("随机小组");
        dialog.setSize(300, 200);
        dialog.setLayout(new FlowLayout());
        JButton randomButton = new JButton("随机选择");
        randomButton.addActionListener(e -> {
            if (!groups.isEmpty()) {
                Collections.shuffle(groups);
                String selectedGroup = groups.get(0);
                JOptionPane.showMessageDialog(dialog, "随机选中的小组是: " + selectedGroup, "随机小组", JOptionPane.INFORMATION_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(dialog, "小组列表为空", "错误", JOptionPane.ERROR_MESSAGE);
            }
        });
        dialog.add(randomButton);
        dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        dialog.setLocationRelativeTo(frame);
        dialog.setVisible(true);
    }

    private void showRandomStudentDialog() {
        List<String> students = new ArrayList<>();
        students.add("张三");
        students.add("李四");
        students.add("王五");
        students.add("赵六");

        JFrame dialog = new JFrame("随机学生");
        dialog.setSize(300, 200);
        dialog.setLayout(new FlowLayout());
        JButton randomButton = new JButton("随机选择");
        randomButton.addActionListener(e -> {
            if (!students.isEmpty()) {
                Collections.shuffle(students);
                String selectedStudent = students.get(0);
                JOptionPane.showMessageDialog(dialog, "随机选中的学生是: " + selectedStudent, "随机学生", JOptionPane.INFORMATION_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(dialog, "学生列表为空", "错误", JOptionPane.ERROR_MESSAGE);
            }
        });
        dialog.add(randomButton);
        dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        dialog.setLocationRelativeTo(frame);
        dialog.setVisible(true);
    }

    private void showAddClassDialog() {
        JFrame dialog = new JFrame("新增班级");
        dialog.setSize(300, 200);
        dialog.setLayout(new FlowLayout());
        dialog.add(new JLabel("班级名称:"));
        JTextField classNameField = new JTextField(20);
        dialog.add(classNameField);
        JButton okButton = new JButton("确定");
        okButton.addActionListener(e -> {
            String className = classNameField.getText();
            if (className.trim().isEmpty()) {
                JOptionPane.showMessageDialog(dialog, "请输入有效的班级名称!", "错误", JOptionPane.ERROR_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(dialog, "新增班级: " + className + " 成功!", "成功", JOptionPane.INFORMATION_MESSAGE);
                dialog.dispose(); // 关闭对话框
            }
        });
        dialog.add(okButton);
        dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        dialog.setLocationRelativeTo(frame);
        dialog.setVisible(true);
    }

    private void showClassOrganizeDialog() {
        JFrame dialog = new JFrame("班级列表");
        dialog.setSize(300, 200);
        dialog.setLayout(new BorderLayout());
        JList<String> list = new JList<>(new String[]{"班级1", "班级2", "班级3"});
        dialog.add(new JScrollPane(list), BorderLayout.CENTER);
        dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        dialog.setLocationRelativeTo(frame);
        dialog.setVisible(true);
    }

    private void showSelectClassDialog() {
        JFrame dialog = new JFrame("选择班级");
        dialog.setSize(300, 200);
        dialog.setLayout(new BorderLayout());
        JList<String> classList = new JList<>(new String[]{"班级1", "班级2", "班级3"});
        JButton okButton = new JButton("确定");
        okButton.addActionListener(e -> {
            String selectedClass = (String) classList.getSelectedValue();
            if (selectedClass == null) {
                JOptionPane.showMessageDialog(dialog, "请选择一个班级!", "错误", JOptionPane.ERROR_MESSAGE);
            } else {
                currentClass = selectedClass;
                JOptionPane.showMessageDialog(dialog, "已选择班级: " + selectedClass, "成功", JOptionPane.INFORMATION_MESSAGE);
                dialog.dispose();
            }
        });
        JPanel buttonPanel = new JPanel();
        buttonPanel.add(okButton);
        dialog.add(new JScrollPane(classList), BorderLayout.CENTER);
        dialog.add(buttonPanel, BorderLayout.SOUTH);
        dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        dialog.setLocationRelativeTo(frame);
        dialog.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Student().init());
    }
}

标签:JFrame,Java,管理系统,JOptionPane,学生,add,dialog,JMenuItem,new
From: https://blog.csdn.net/2401_82456630/article/details/143750265

相关文章

  • 什么是 Java中的 OOM
    一、什么是Java中的OOM(OutOfMemoryError)在Java中,OutOfMemoryError(OOM)是一个运行时错误,表示JVM(JavaVirtualMachine)在执行程序时,无法为对象分配足够的内存。通常,这意味着JVM堆内存或其他内存区域(如方法区、直接内存等)已用尽。OOM错误通常发生在以下几......
  • 学校疫情管理系统
    ......
  • javaScript对象函数初相识
    1.1、对象初相识1.1.1、对象的初识1.1.1.1、对象的定义现实生活中,万物皆对象,对象是一个具体的事物,看得见摸得着的实物。例如一本书,一辆汽车,一个人可以是“对象”,一个数据库,一张网页,一个与远程服务器的连接也可以是“对象”。例子:明星、女朋友、班主任、苹果、手机周星驰......
  • javascript如何进行冒泡排序?
    冒泡排序的规律有一个数组[5,4,3,2,1],假如说要重新排序,进行升序排序,冒泡排序步骤如下5和4比较,5大,5和4交换位置[4,5,3,2,1]5和3比较,5大,5和3交换位置[4,3,5,2,1]5和2比较,5大。5和2交换位置[4,3,2,5,1]5和1比较,5大,5和1交换位置[4,3,2,1,5]5排到了最后一位4开始和后面的......
  • CPT111: Java Programming Computing
    ComputingCPT111:JavaProgrammingSemester1,2024-25Coursework3:ProgrammingProject–ASimpleQuizSystemReadcarefully—nodispensationwillbegivenforlackofawarenessoftherulesAssignmenttypeThisisagroupprogrammingassignment.Yo......
  • 基于SpringBoot+Vue的毕业设计管理系统设计与实现毕设(文档+源码)
    目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、源码获取:         大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是一款基于SpringBoot+Vue的毕业设计管理系统,项目源码请点击文章末尾联系我哦~目前有各类成品毕设JavaWeb......
  • Java毕业设计----基于Java的情感分析毕业设计
    目录引言设计目标项目结构具体实践总结 Python版本引言情感分析(SentimentAnalysis)是自然语言处理(NLP)中的一个重要应用,它通过对文本内容的情感倾向进行分类,帮助机器理解文本的情感状态。情感分析通常分为两类:情感极性分析(例如,判断文本是正面、负面还是中立)和情感强......
  • 【最新原创毕设】面向课堂教学的智能课堂点名系统+09531(免费领源码)可做计算机毕业设计
    摘要本文旨在设计和实现一个基于智能课堂点名系统的智能助手。随着高校招生规模的不断扩大和信息化技术的发展,为教师提供一款便捷、全面的点名系统具有重要意义。本系统通过整合校园各项服务资源和功能,旨在帮助教师和学生更好地适应智能课堂,提供全方位的指导和支持。本文......
  • (2024最新毕设合集)基于SpringBoot的广州糖水甜品店推荐系统-28495|可做计算机毕业设计J
    摘要随着人们生活水平的提高和饮食习惯的多样化,甜品在日常生活中扮演着越来越重要的角色。特别是在中国南方地区,甜品店和糖水店已经成为人们经常光顾的地方,而广州作为美食之都,拥有众多具有独特风味的糖水甜品店。然而,由于市场竞争激烈,消费者往往面临选择困难,需要花费大量时间......
  • SpringBoot医院管理系统5nr0z--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着医疗技术的不断进步和医疗需求的日益增长,医院管理面临着前所未有的挑战。传统的医院管理方式已难以满足现代医疗服务的需要,存在信......