当前位置: 首页 > news >正文

面向对象初步接触-学生信息管理系统

1. 功能讲解

1.1 数据处理

  1. 该程序主要处理学生数据,包含学生的name、age、gender、id、major、gpa这些基本信息。
  2. 学生数据存储在StudentManagementSystem类的students成员变量中,每个学生的具体信息封装在Student类的对象中,这些对象被添加到List集合中统一管理。
  3. 不同之处:
    • a. Java利用Student类将学生的属性封装为对象并private,对外提供getter/setter方法访问和修改,而在C语言中则是依靠结构体来存储数据,并且成员是共有的。
    • b. Java使用ArrayList存储学生对象,简化代码和操作,C语言一般会利用链表来实现这一功能,操作稍微复杂繁琐。
    • c. Java中当学生对象不再被引用时,由JVM自动释放内存,无需手动释放,C语言中需手动通过malloc分配内存、free释放内存,较为麻烦,若操作不当容易导致内存泄漏或指针出现问题。

1.2 功能说明

屏幕截图 2025-09-18 194703

图1.菜单
(图1为菜单,展示该系统所拥有的功能,方便用户使用。)

屏幕截图 2025-09-19 105235

图2.功能1展示
(图2为该系统的第一个功能添加学生,并为学生自动生成6位的id。)

屏幕截图 2025-09-19 105455

图3.功能2展示
(图3为该系统的第二个功能删除学生,利用id的唯一性精准删除学生,避免删除同名学生。)

屏幕截图 2025-09-19 105300

图4.功能3展示
(图4为该系统的第三个功能按学生名字查找并展示该学生的基本信息。)

屏幕截图 2025-09-19 105325

图5.功能4展示
(图5为该系统的第四个功能按学生专业查找并展示该学生的基本信息。)

屏幕截图 2025-09-19 105341

图6.功能5展示
(图6为该系统的第五个功能按学生gpa查找并展示该学生的基本信息。)

屏幕截图 2025-09-19 105356

图7.功能6展示
(图7为该系统的第六个功能列出系统内已存入的学生及其对应信息。)

屏幕截图 2025-09-19 105509

图8.功能7展示
(图8为该系统的第七个功能退出系统,结束操作。)

2. 类功能讲解

2.1 简述每个类的功能概述、属性的用途、所包含的方法

2.1.1 Student

  1. 功能概述:封装学生的基本信息,包括name、age、gender、id、major和gpa等属性,并提供属性的访问和修改方法。
  2. 属性用途
    • name:存储学生姓名
    • age:存储学生年龄
    • gender:存储学生性别
    • id:存储自动生成的学生学号
    • major:存储学生专业
    • gpa:存储学生GPA成绩
  3. 包含的方法
    • Student(String name, int age, String gender, String major, double gpa):构造方法,初始化学生的姓名、年龄、性别、专业和GPA属性
    • setId(String id):设置学生学号
    • getName()/setName(String name):获得/设置学生姓名
    • getAge()/setAge(int age):获得/设置学生年龄
    • getGender()/setGender(String gender):获得/设置学生性别
    • getId():获得学生学号
    • getMajor()/setMajor(String major):获得/设置学生专业
    • getGpa()/setGpa(double gpa):获得/设置学生GPA
    • toString():返回学生信息的字符串表示

2.1.2 StudentManagementSystem

  1. 功能概述:管理学生,提供添加、删除学生以及按姓名、专业、GPA搜索学生的功能。
  2. 属性用途
    • students:存储所有学生对象的列表
    • nextId:生成下一个学生学号的计数器
  3. 包含的方法
    • StudentManagementSystem():构造方法,初始化学生列表
    • generateId():生成6位数字的学生学号
    • addStudent(Student student):为学生设置学号并添加到列表中
    • removeStudent(Student student):从列表中移除指定学生
    • getStudents():返回所有学生的列表
    • searchByName(String name):根据姓名搜索学生并返回结果列表
    • searchByMajor(String major):根据专业搜索学生并返回结果列表
    • searchByGpa(double gpa):根据GPA搜索学生并返回结果列表

2.1.3 Main

  1. 功能概述:提供交互菜单,允许用户通过菜单选择添加、删除学生、搜索学生、显示所有学生及退出系统等操作。
  2. 属性用途:无。
  3. 包含的方法
    • main(String[] args):程序入口。

2.1.4 StudentManagementSystemTest

  1. 功能概述:用于测试StudentManagementSystem类的功能。
  2. 属性用途:无。
  3. 包含的方法
    • main(String[] args):测试入口。

2.2 简述哪个类与所有其它类都不太一样

StudentManagementSystemTest类与所有其它类都不太一样,它是用于测试的类,验证StudentManagementSystem类功能的正确性,不参与实际运行时的数据封装、用户交互,也不被其他类依赖。

3. 基本语法讲解

  1. 类与访问修饰符:使用class定义类,publicprivate等访问修饰符控制类成员的可见性。
  2. 封装与getter/setter:通过private与公共访问方法如getName()实现数据封装。
  3. ArrayList集合:使用ArrayList<Student> students,指定存储元素类型为Student
  4. 入口与静态方法public static void main(String[] args)作为程序入口,static关键字使方法无需实例化即可调用。
  5. 异常处理:可能通过try-catch处理用户输入错误。
  6. this:在构造方法或成员方法中用于指代当前对象,区分成员变量与局部变量。

相关文章:

面向对象初步接触-学生信息管理系统

1. 功能讲解 1.1 数据处理该程序主要处理学生数据,包含学生的name、age、gender、id、major、gpa这些基本信息。 学生数据存储在StudentManagementSystem类的students成员变量中,每个学生的具体信息封装在Student类的对象中,这些对象被添加到List集合中统一管理。 不同之处:…...

Numpy高维数组的索引()

# 创建一个形状为 (3, 4, 2) 的随机数组 # arr 代表 3 个实例,每个实力有 4 个任务点,每个任务点有 (x, y) 坐标 arr = np.random.randint(0, 10, size=(3, 4, 2))arr:[[[8 4][2 9][0 5][4 7]][[5 5][1 6][8 5][1 8]][[6 2][5 5][4 5][9 6]]]索引或切片 描述 这里的ijk都要加…...

详细介绍:jQuery 操作指南:从 DOM 操作到 AJAX

详细介绍:jQuery 操作指南:从 DOM 操作到 AJAXpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace …...

一个 Blazor/WinForm 开发者的 WPF 学习记:通往 Avalonia 的那条路

一个 Blazor/WinForm 开发者的 WPF 学习记:通往 Avalonia 的那条路 写在前面 做了几年 Blazor 和 WinForm,本来以为桌面端这件事就这么过去了。直到我认真考虑跨平台桌面方案,才发现绕不开 Avalonia。而要真正用好 Avalonia,最好先补 WPF 这一课。这篇文章不是教程,更多是…...

VulkanAPI细节梳理2

// --- 创建渲染通行证(支持多视图和深度缓冲) ---std::vector<VkAttachmentDescription> attachments(2);// 颜色附件attachments[0].format = format;attachments[0].samples = VK_SAMPLE_COUNT_1_BIT;attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;attachme…...

React 状态丢失:组件 key 用错引发的渲染异常 - 指南

React 状态丢失:组件 key 用错引发的渲染异常 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monos…...

快速实现 Excel 表格转 SVG:Java 教程 - E

如果你曾尝试过把 Excel 表格导出为 SVG 图片,就会发现 Excel 本身并不支持这种格式。虽然市面上存在一些在线转换工具,但上传文件存在效率与安全方面的顾虑。对于开发者来说,使用 Java 来实现 Excel 到 SVG 的转换,是一种更灵活、可控的方式。本文将演示如何通过简单的 Ja…...

绕过文件上传限制实现客户端路径遍历漏洞利用的技术解析

本文详细解析了如何通过精心构造JSON文件绕过PDF和图像上传验证机制,利用mmmagic、pdflib和file命令的检测特性实现客户端路径遍历攻击的技术方法与实战案例。绕过文件上传限制实现客户端路径遍历漏洞利用 在我之前的博客文章中,我演示了如何利用JSON文件作为客户端路径遍历(…...

事件总线之初步学习

第一步:创建一个eventBus.js 文件名可根据个人爱好取名即可; 内容:import Vue from vue const eventBus = new Vue(); export default eventBus;第二步:使用import EventBus from @/common/eventBus;//监听全局事件clear-login-interval EventBus.$on(clear-login-interva…...

Markdown Day04

常用DOS命令 ##查看当前目录下所有文件dir ##切换目录cd change directory ##cd..回到上一个 ##清理屏幕cls ##退出exit ##查看电脑IP,ipconfig ##打开应用 calc notepad mspaint ##ping 命令 ping www.baidu.com ##文件操作 ad 创建目录 cd> 新增文件 del 删除文件 rd 移…...

C++中类的内存存储

目录类类对象的非虚成员函数类的成员变量空类对象具有虚函数的类对象 类 类本身不会存储在内存中,类实例化的对象才会保存在内存中。但是使用 sizeof 计算类大小时能得到结果,这是因为 sizeof 会在编译时就得到类型信息,这只与类的布局有关。 类对象的非虚成员函数 考虑如下…...

PyTorch 优化器(Optimizer)

优化器(Optimizer)是深度学习训练过程中用于更新模型参数的核心组件。在训练神经网络时,我们需要通过反向传播计算损失函数相对于模型参数的梯度,然后使用优化器根据这些梯度来更新参数,以最小化损失函数。PyTorch 优化器(Optimizer)技术指南 目录优化器概念 常用优化器…...

实用指南:域名市场中,如何确认域名的价值

实用指南:域名市场中,如何确认域名的价值pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !impo…...

初步了解Neo4j

1. 是什么? Neo4j 是一个原生图数据库。它与我们熟悉的关系型数据库(如 MySQL, PostgreSQL)和 NoSQL 数据库(如 MongoDB)有根本性的不同,因为它专门为存储和查询数据之间的关系而设计。 它的核心哲学是:“关系即一等公民”。这意味着关系(或连接)和数据本身同等重要,…...

多模态和语音 AI 年度收官大会,把握 2026 技术风向标!

如果今年只参加一场多模态和语音 AI 大会,来 Convo AI & RTE2025 就够了。你是否好奇:1⃣从端到端语音模型和全双工技术,未来音频还将有哪些突破方向?2⃣如何挖掘端侧 AI 潜能,定义下一代智能硬件终端?3⃣从主动智能体到可交互世界模型,实时多模态 AI 将驱动怎样的未…...

做题

P4159 [SCOI2009] 迷路 矩阵快速幂优化递推。 首先最暴力的想法,设 $ f_{i,j} $ 在 $ j $ 时刻,到达点 $ i $ 的种类数。 枚举时间和 $ i $,然后 $ f_{i,j} = \sum\limits_{k=1}^n {f_{k,j-w[i][k]}} $。 时间很大,所以肯定行不通。 这样显然是不能用矩阵来优化的。 考虑拆…...

解码C语言函数

一、函数基本概念 1.1 函数定义 概念:把一个功能的实现流程封装起来,使用户留下接口进行调用 作用:参数创建该功能进行封装操作,返回值即通过功能显示的产出 1.2 函数组成要素返回值类型:根据函数功能而定,需要在函数头中指定子程序类的返回值类型 参数名:在函数体中提取…...

SchemaStore

Hello World本文来自博客园,作者:南宫影,转载请注明原文链接:https://www.cnblogs.com/nangongying/p/19100468...

XSS攻击防御

目录背景和价值为什么需要输出编码?不同场景下的编码方式(白话版)1. 最常见场景:内容显示在HTML标签里(比如<div>、<span>中)2. 特殊场景:内容显示在HTML标签的属性里(比如value、href中)3. 特殊场景:内容要在JavaScript代码里使用4. 特殊场景:内容作为…...

imes开发部署

一.git地址下载源码 二.后端设置 1.增加配置文件:ktg-admin/src/main/resources/application-test.yml2.临时修改代码:ktg-mes/src/main/java/com/ktg/mes/task/MesTask.java,如图注释2行。 3.快捷键Ctrl+Alt+Shift+S,打开项目结构(Project Structure)对话框4.编辑配置5…...

思维题做题记录-1

CF2600左右有趣的思维题做题记录-1 CF1458C. Latin Square 考虑将原矩阵写成 \(n\times n\) 个限制形如 \((i,j,a_{i,j})\),那么所有操作就是对这些限制进行的修改:对于 UD 操作相当于将限制改为 \((i\mp 1,j,a_{i,j})\)。 对于 LR 操作相当于将限制改为 \((i,j\mp 1,a_{i,j}…...

如何在极短时间内通透一个大型开源项目

如何在极短时间内通透一个大型开源项目前言 在现代软件开发中,快速理解和掌握大型开源项目是一项至关重要的技能。无论是参与开源贡献、技术选型,还是学习先进架构模式,都需要我们具备高效解读项目的能力。本文将以 OpenDeepWiki 项目为例,深入剖析如何运用AI技术快速通透一…...

求 Ray Ping - Gon

rt(跟风...

LCT学习笔记

LCT学习笔记从例题开始: P3690 【模板】动态树(LCT) 对于一棵静态的树,常见方法是树剖然后走链,但是在动态的情况下常见的重链或长链就会很慢,因为修改连边情况后就不满足性质了 引入一个新的方法:实链剖分,对于一个节点,任选一个儿子,连边为实边,其余为虚边,注意这…...

Visual Studio 2026 Insiders 重磅发布:AI 深度集成、性能飞跃、全新设计

近日,微软正式发布 Visual Studio 2026 Insiders!这是迄今为止 Visual StudioE 极具跨越式的一次升级。新版本不仅将 AI 深度融入开发工作流,还带来了企业级性能的显著提升,以及更轻盈、现代的界面设计,全面提升开发体验。近日,微软正式发布 Visual Studio 2026 Insiders…...

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-29- 操作单选和多选按钮 - 下篇(详细教程) - 北京

1.简介 我们可能会遇到一直测试单选和复选按钮的测试场景,如果就十几道选择题,那就手工点击,马上完事,但是如果是让你测试题库呢?那不得那鼠标点击冒烟了,手指点到抽筋了。尤其是做教育类的软件测试,这些就是家常便饭了。因此今天这一篇宏哥主要是讲解一下,如何使用Pla…...

自定义注解实现服务分处理-策略模式

路由:请求标识→匹配 Service→调用 process 方法 通过自定义注解 @BusinessServiceMapping 标记具体业务 Service,注解值(如 DC 代表客户、ORD 代表订单)与请求参数中的业务标识关联;再通过 Spring 容器扫描 + 策略模式,实现 “请求标识→匹配 Service→调用 process 方…...

iOS26正式版全新风格!一文汇总实用新功能!

苹果在9月17日凌晨正式推送了iOS26系统更新,这次版本更新带来了多达61项新功能与优化。经过9个Beta版和近100天的测试,iOS26正式版终于与用户见面,版本号为23A340,更新包大小约8GB。 iOS26不仅在设计语言上焕然一新,更在AI能力、交互体验和隐私保护等多个维度进行了全面升…...

远程控制应用的中的全球节点功能如何开启?插件类型、并发数量怎么选?

不知道大家使用远程控制应用进行跨系统跨设备操作主要都是针对哪些场景呐?其实对于很多需要跨境远程办公的人群或进行售后设备升级管理的朋友来说无疑是必不可少的,甚至于海外学子们来说同样也至关重要,毕竟总有需要协助国内亲友处理问题的时刻,代操作远高于语音指导的效率…...

借助Aspose.HTML控件,使用 Python 将 HTML 转换为 DOCX

Aspose.HTML for Python via .NET提供了用于自动执行文件格式转换任务的类和方法。此外,它能够精确地转换 HTML 结构和样式,是 Python 开发人员的理想选择。本教程将向开发者展示如何在 Python 中以编程方式将HTML转换为DOCX。我们将使用一个非常快速的 Python SDK 将网页转换…...

openEuler 24.03 (LTS-SP2)安装mysql 8.0.41

环境:OS:openEuler 24.03 (LTS-SP2)(安装时候没有图形界面的选择项可选)mysql:8.0.41 glib.2.17 操作系统下载https://www.openeuler.org/en/download/#openEuler%2024.03%20LTS%20SP2查看系统glibc版本[root@localhost soft]# ldd --versionldd (GNU libc) 2.38Copyright (C) …...

7.数据库归档异常检查与处理

备库: select instance_name,status from v$instance; select open_mode from v$database; @dgstat 如果都是00:00:00则说明本地从生产到DR同步没有问题 @dgpro 与上面的RFS的sequence#进行对比,可以算出生产与DR相差的sequence Block# 1分钟前是852100,1分钟后是856100,…...

Gitlab 关键字

核心原则:一切路径始于项目根目录:https://blog.csdn.net/qq_14829643/article/details/150773286include: local:中的所有路径都是相对于当前项目的根目录进行解析的。它既不是传统意义上的“绝对路径”(如 /etc/gitlab-runner/config.toml,这会指向 Runner 服务器的文件…...

8.listener日志占用过大处理方法

ps -ef |grep tns asmenv 查询listener.log的位置路径 lsnrctl status [listener name] 例如: listener log file : /oracle/TEST/diag/tnslsnr/xianigux/listener/alert/log.xml cd /oracle/TEST/diag/tnslsnr/xianigux/listener/alert 删除除了log.xml以外的所有xml文件 rm …...

马建仓AI助手完成全链路升级:三十余项新能力重塑研发工作流

马建仓AI助手完成全链路升级:三十余项新能力重塑研发工作流 在数字化转型浪潮席卷各行各业的当下,研发效率正成为企业竞争力的关键指标。马建仓AI助手近日宣布完成面向真实研发流程的全面升级,新增三十余项智能能力,覆盖需求、开发、测试、项目管理等关键环节,标志着企业级…...

线性回归与 Softmax 回归:深度学习基础模型解析 - 实践

线性回归与 Softmax 回归:深度学习基础模型解析 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", mon…...

浏览器下载,一定要开启这个隐藏功能!

大家好,我是 Immerse,一名独立开发者、内容创作者。关注公众号:沉浸式趣谈,获取最新文章(更多内容只在公众号更新) 个人网站:https://yaolifeng.com 也同步更新。 转载请在文章开头注明出处和版权信息。我会在这里分享关于编程、独立开发、AI干货、开源、个人思考等内容…...

开源项目进度管理系统 PJMan:让技术项目进度可视化、数据化的利器

在软件项目管理过程中,进度不透明、任务卡点难定位、人员效率难量化是许多技术团队面临的痛点。今天为大家介绍一款开源项目进度管理系统 ——PJMan,其「项目概览」页面通过分层可视化与数据驱动的设计,将项目的 “全局趋势、任务细节、人员效率” 全方位呈现,为技术团队提…...

【光照】[漫反射]UnityURP兰伯特能量守恒吗?

【从UnityURP开始探索游戏渲染】专栏-直达兰伯特漫反射的能量守恒性 ‌能量守恒基本原理‌ 在物理正确的渲染中,能量守恒要求:表面反射的光能总量 ≤ 入射光能 漫反射+高光反射 ≤ 1.0 没有能量凭空产生或消失‌经典兰伯特模型的能量守恒问题‌ 传统兰伯特漫反射公式: $漫反…...

Microsoft AI Genius 限时挑战赛:实战开启,等你应战!

通过 Microsoft AI Genius 系列 2.0 的实战专题课程,相信各位开发者对智能 GitHub Copilot 副驾驶 Agent Mode、Azure AI Foundry Agent Service(国际版)及 Copilot Studio 的理解与掌握达到了新高度。现在,是时候将所学理论转化为实际行动,投身真实场景检验成果了。 ↓↓…...

DevSecOps革命:测试工具如何重塑企业数字化转型的质量防线

DevSecOps革命:测试工具如何重塑企业数字化转型的质量防线 在数字化转型浪潮席卷全球的当下,软件质量保障体系正经历着前所未有的范式转变。DevSecOps作为这场变革的核心方法论,正在重新定义测试工具在企业技术栈中的战略地位。从单纯的"质量守门员"到贯穿全生命周…...

3.sysaux tablesace 清理

select min(snap_id),max(snap_id) from dba_hist_snapshot; 查完后,记录min和max的值 select dbid from v$database; 18701与18953分别为min与max的snap_id的值,387090299为dbid的值,将这些值代入下面的语句执行 begin dbms_workload_repository.drop_snapshot_range( low_…...

2.LOCK session

select * from v$session_blockers; 或者 select * from gv$session_blockers; (在rac情况下) 通过 select count(1) from v$locked_object; 可以查出内容 首先询问客户能否提供lock table的session sid和serial#,如果客户只能提供session sid,则 可以使用: select sid,ser…...

2025 ~ 2026 游击 - gfoi

2025/09/19 试了试 CSP-S 的历年题目,2019 年有 84.5 分。...

【初赛】第二类斯特林数意义 - Slayer

第二类斯特林数(斯特林子集数) \(\begin{Bmatrix}n\\ k\end{Bmatrix}\),也可记做 \(S(n,k)\),表示将 \(n\) 个两两不同的元素,划分为 \(k\) 个互不区分的非空子集的方案数。 通项公式 \(\begin{Bmatrix}n\\m\end{Bmatrix}=\sum\limits_{i=0}^m\dfrac{(-1)^{m-i}i^n}{i!(m-…...

在AI技术快速实现功能的时代,挖掘新需求成为核心竞争力——某知名Android面试题库需求洞察

该篇文章无摘要a.内容描述 该项目是一个专注于Android开发领域的技术面试题库,核心功能定位为提供全面的Android面试问题与答案集合,帮助开发者准备技术面试。关键应用场景包括Android开发者求职准备、技术知识查漏补缺、面试官题库参考等。项目内容覆盖了Android开发的各个方…...

php本地搭建知识库实现rag遇到的一些问题解决方式

1、向量化的问题,中文的话,使用尽量使用国内的嵌入模型,国外的虽然支持中文,但是还是比不上国内专门针对中文的优化 本地使用ollama 搭建的话 ,我使用的是 quentinz/bge-large-zh-v1.5:latest2、不规则的pdf文件,无法使用pdf插件读取内容问题,我是php 使用 smalot/pdf…...

docker操作包括使用docker制作为接口

Docker 化 Flask OCR 应用指南 1. 创建必要的文件 在你的 Flask 应用项目根目录下,你需要创建以下文件: 1.1 Dockerfile 这是一个文本文件,包含了构建 Docker 镜像所需的所有指令1 # 使用官方 Python 3.10 (Python 3.13)精简版作为基础镜像,减小镜像体积2 FROM python:3.…...

BuildingSystemPlugin使用指南

使用自定义碰撞 1.启用Use Custom Overlay:2.修改Overlapping Box的BoxExtent来设置大小(不能设置Scale来设置大小):...

openEuler 24.03 (LTS-SP2)安装mysql5.7.42

环境:OS:openEuler 24.03 (LTS-SP2)(安装时候没有图形界面的选择项可选)mysql:5.7.42 glib.2.17 操作系统下载https://www.openeuler.org/en/download/#openEuler%2024.03%20LTS%20SP2 查看系统glibc版本[root@localhost soft]# ldd --versionldd (GNU libc) 2.38Copyright (C)…...