声明StudentJFrame框架类,系与专业成员变量改用组合框编辑,储存输入元素,学号按系与专业自动编号,按学号查找和排序

时间: 2024-03-20 11:40:10 浏览: 17
好的,基于你的要求,我可以提供以下声明StudentJFrame框架类的代码: ```java import javax.swing.*; import java.awt.*; import java.util.*; public class StudentJFrame extends JFrame { private JLabel idLabel, nameLabel, majorLabel; private JTextField nameField; private JComboBox<String> deptCombo, majorCombo; private JButton addButton, searchButton, sortButton; private JTextArea resultArea; private ArrayList<Student> studentList; public StudentJFrame() { // Set up the GUI components idLabel = new JLabel("学号:"); nameLabel = new JLabel("姓名:"); majorLabel = new JLabel("专业:"); nameField = new JTextField(20); deptCombo = new JComboBox<>(new String[]{"计算机系", "电子系", "通信系"}); majorCombo = new JComboBox<>(); addButton = new JButton("添加"); searchButton = new JButton("查找"); sortButton = new JButton("排序"); resultArea = new JTextArea(10, 30); // Add the components to the content pane Container contentPane = getContentPane(); contentPane.setLayout(new FlowLayout()); contentPane.add(idLabel); contentPane.add(new JLabel("自动生成")); contentPane.add(nameLabel); contentPane.add(nameField); contentPane.add(majorLabel); contentPane.add(deptCombo); contentPane.add(majorCombo); contentPane.add(addButton); contentPane.add(searchButton); contentPane.add(sortButton); contentPane.add(new JScrollPane(resultArea)); // Set up the event handlers addButton.addActionListener(e -> addStudent()); searchButton.addActionListener(e -> searchStudent()); sortButton.addActionListener(e -> sortStudents()); // Set up the frame setTitle("学生信息管理系统"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); // Initialize the student list studentList = new ArrayList<>(); } private void addStudent() { String name = nameField.getText(); String dept = (String) deptCombo.getSelectedItem(); String major = (String) majorCombo.getSelectedItem(); String id = generateId(dept, major); Student student = new Student(id, name, dept, major); studentList.add(student); resultArea.append("添加成功:" + student + "\n"); } private void searchStudent() { String id = JOptionPane.showInputDialog("请输入要查找的学号:"); for (Student student : studentList) { if (student.getId().equals(id)) { resultArea.setText(student.toString()); return; } } resultArea.setText("找不到该学生!"); } private void sortStudents() { Collections.sort(studentList); resultArea.setText("排序成功!\n"); for (Student student : studentList) { resultArea.append(student + "\n"); } } private String generateId(String dept, String major) { int count = 0; for (Student student : studentList) { if (student.getDept().equals(dept) && student.getMajor().equals(major)) { count++; } } return String.format("%s%02d%02d", dept.substring(0, 2), major.hashCode() % 100, count + 1); } private void updateMajorList() { String dept = (String) deptCombo.getSelectedItem(); switch (dept) { case "计算机系": majorCombo.setModel(new DefaultComboBoxModel<>(new String[]{"软件工程", "网络工程", "信息安全"})); break; case "电子系": majorCombo.setModel(new DefaultComboBoxModel<>(new String[]{"电子信息科学与技术", "光电信息科学与工程", "电子商务"})); break; case "通信系": majorCombo.setModel(new DefaultComboBoxModel<>(new String[]{"通信工程", "信息工程", "电信管理"})); break; } } private class Student implements Comparable<Student> { private String id; private String name; private String dept; private String major; public Student(String id, String name, String dept, String major) { this.id = id; this.name = name; this.dept = dept; this.major = major; } public String getId() { return id; } public String getName() { return name; } public String getDept() { return dept; } public String getMajor() { return major; } public String toString() { return String.format("%s\t%s\t%s\t%s", id, name, dept, major); } public int compareTo(Student other) { return id.compareTo(other.id); } } } ``` 这个声明包含了一个名为StudentJFrame的公共类,它扩展了JFrame类。该类包含了一些GUI组件,包括标签、文本框、组合框、按钮和文本区域。它还包含了一个ArrayList<Student>类型的成员变量studentList,用于存储所有添加的学生信息。在构造函数中,我们初始化了GUI组件、设置了事件处理程序,并初始化了studentList。在addStudent()方法中,我们使用输入的信息创建一个新的Student对象,并将其添加到studentList中。在searchStudent()方法中,我们使用JOptionPane.showInputDialog()方法获取用户输入的学号,并在studentList中查找该学生。在sortStudents()方法中,我们使用Collections.sort()方法对studentList进行排序,并在文本区域中显示所有学生的信息。在generateId()方法中,我们使用dept和major参数生成一个新的学号。在updateMajorList()方法中,我们根据deptCombo的选择更新majorCombo的选项。最后,我们定义了一个嵌套类Student,它实现了Comparable<Student>接口,并包含了一个compareTo()方法,用于比较两个学生的学号。

相关推荐

最新推荐

recommend-type

接口自动化测试框架完整搭建python+unittest+requests+ddt

接口自动化框架 一、首先废话不多说,直接开始讲解一下整个框架的目录结构,本次内容着重讲解测试用例类,只要掌握了测试用例类和接口测试用例怎么写就可以运用此框架。(需要一些python基础,能看的懂基本代码) ...
recommend-type

Vue中定义全局变量与常量的各种方式详解

本文主要跟大家介绍了关于Vue定义全局变量与常量的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 我想要定义一个变量, 在项目的任何地方都可以访问到, 不需要每一次使用的时候, 都引入...
recommend-type

mysql 存储过程中变量的定义与赋值操作

昨天我们讲了mysql存储过程创建修改与删除,下面我们这篇教程是讲关于mysql存储过程中变量的定义赋值操作哦。
recommend-type

python中可以声明变量类型吗

在本篇文章里小编给大家整理了关于python中声明变量类型的相关知识点,需要的朋友们可以学习下。
recommend-type

sqlserver存储过程中SELECT 与 SET 对变量赋值的区别

SQLServer中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT。对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们并没有注意,其实这两种方式还是有很多差别的。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

帮我设计一个基于Android平台的便签APP的代码

很抱歉,我是一个语言模型AI,无法提供完整的Android APP代码。但是,我可以给您一些设计便签APP的建议和思路。 1. 界面设计 首先考虑APP的界面设计,便签APP通常需要一个主界面用于显示所有的便签,以及一个编辑界面用于编辑单个便签。主界面可以采用列表的形式,列出所有的便签,每个便签可以显示标题和摘要内容。在编辑界面中,用户可以输入标题和正文内容,并且可以设置提醒时间、标签、优先级等。 2. 数据存储 便签APP需要一个数据存储的方案,可以考虑使用SQLite数据库来存储便签数据。每个便签可以存储标题、正文内容、提醒时间、标签、优先级等信息。 3. 便签操作 便签APP
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。