0

0

初学者怎么用Java写学生成绩管理系统_集合存储与CRUD操作

P粉602998670

P粉602998670

发布时间:2026-03-04 12:37:23

|

604人浏览过

|

来源于php中文网

原创

应使用student类封装学生信息并用arraylist管理,而非string拼接;需重写equals和hashcode以支持对象作hashmap键;遍历时删改元素须用iterator避免concurrentmodificationexception。

初学者怎么用java写学生成绩管理系统_集合存储与crud操作

ArrayList 存学生对象,别用 String 拼成绩数据

很多人一上来就用 ArrayList<string></string> 存“张三,85,92,78”,后面查平均分、按总分排序全得手动切字符串、转数字、容错处理——这不是在写系统,是在给自己埋雷。

正确做法是定义一个 Student 类,字段包括 idnamemathScoreenglishScorechineseScore,然后用 ArrayList<student></student> 管理:

public class Student {
    private int id;
    private String name;
    private double mathScore;
    private double englishScore;
    private double chineseScore;
    // 构造方法和 getter/setter(略)
}
  • 所有计算逻辑(如 getTotalScore()getAverage())直接封装在类里,调用时干净利落
  • 增删改查都基于对象语义,比如 list.removeIf(s -> s.getId() == 1001),不是靠字符串匹配
  • 避免运行时 NumberFormatException 或空指针——只要构造时校验了字段,后续基本不会崩

HashMap 做 ID 快速查找,但别忘了重写 equalshashCode

如果频繁按学号查学生(比如录入成绩时输入 ID 找人),用 ArrayList 遍历是 O(n),换成 HashMap<integer student></integer> 就是 O(1)。但有个关键前提:你没打算把 Student 当作 HashMap 的 key。

常见错误是这样写:Map<student string> scoreMap = new HashMap();</student>,结果发现两个内容相同的 Student 对象被当成不同 key——因为默认的 equals 比的是引用地址。

Lexica
Lexica

一个搜索 AI 生成图片的网站,可以上传图片或prompts搜索图片。

下载

立即学习Java免费学习笔记(深入)”;

  • 如果真要用对象作 key(比如按姓名+班级组合查),必须重写 Student.equals()Student.hashCode(),且只基于不可变字段(如 id
  • 更稳妥的做法是用 Integer(学号)作 key:Map<integer student> studentMap = new HashMap();</integer>,天然支持哈希定位
  • 注意 HashMap 不保证顺序,需要遍历时保持插入顺序?换 LinkedHashMap

增删改操作要防 ConcurrentModificationException

遍历 ArrayList 时直接调用 remove()add(),十有八九抛这个异常。比如想删掉所有不及格的学生:

// ❌ 错误示范:边遍历边删
for (Student s : list) {
    if (s.getAverage() < 60) {
        list.remove(s); // 这里爆
    }
}
  • 用迭代器的 remove() 方法:Iterator<student> it = list.iterator(); while (it.hasNext()) { ... it.remove(); }</student>
  • 或者用 removeIf()(Java 8+):list.removeIf(s -> s.getAverage() ,简洁安全
  • 修改操作(比如给某学生加 5 分)没问题,但注意:修改的是对象内部状态,不是集合结构,所以不触发异常

保存到文件用 ObjectOutputStream 要小心序列化兼容性

很多初学者用 ObjectOutputStream 直接把 ArrayList<student></student> 写进文件,下次启动再读回来,看似省事,实际隐患很大。

  • Student 类必须实现 Serializable 接口,且最好显式声明 private static final long serialVersionUID = 1L;,否则类结构稍一改动(比如加个字段),旧文件就读不出来,报 InvalidClassException
  • 二进制文件不可读、不可跨语言、版本升级困难;真要持久化,优先考虑 CSV 或 JSON(用 Jacksonorg.json 库)
  • 如果坚持用序列化,至少加个 try-catch 包住 readObject(),并准备好降级方案(比如清空数据重新开始)

最常被忽略的一点:集合本身不是问题,问题是把业务逻辑和数据容器混在一起。比如在 Student 类里写“打印成绩单”方法,或者在主程序里反复手写循环算总分——这些该抽成独立工具类或服务方法,不然代码会随着需求变多迅速失控。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

452

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

546

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

328

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

910

2023.08.02

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

104

2023.09.25

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

698

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.09.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

0

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.1万人学习

C# 教程
C# 教程

共94课时 | 10.6万人学习

Java 教程
Java 教程

共578课时 | 76.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号