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

java-从零打造学生管理系统

目录:

前言

1.输入与输出

2.if分支和while循环

3.数组

4.面向对象

5.集合

一、学生成绩管理系统

1.创建学生对象

1.在模块下新建一个包定义Student类:

2.私有化学生数据

3.随后重写tostring方法,和导入lombok包,进行有参无参get,set方法的调用

2.创建StudentScoreManager类,

1.创建集合用于存储学生信息

3.创建输入语句

4.用while死循环写学生系统操作页面

5.用switch语句,把创建方法然后alt回车,把操作逻辑写在方法里面

下面是四种方法的具体实现:

1.增加学生

2.打印学生列表

3.修改学生信息

4.删除学生

该类完整代码如下:

3.创建主函数类

最终呈现:

总结


前言

今天我们根据之前的内容开发一个简单的学生管理系统

在这篇文章学习实现"学生管理系统"之前,需要我们了解并学习过以下知识点(知识点不熟悉的同志可以点下面链接,里面有我对于该知识点的详细讲解):

1.输入与输出

https://blog.csdn.net/2502_94242477/article/details/158893531?fromshare=blogdetail&sharetype=blogdetail&sharerId=158893531&sharerefer=PC&sharesource=2502_94242477&sharefrom=from_linkhttps://blog.csdn.net/2502_94242477/article/details/158893531?fromshare=blogdetail&sharetype=blogdetail&sharerId=158893531&sharerefer=PC&sharesource=2502_94242477&sharefrom=from_link

2.if分支和while循环

https://blog.csdn.net/2502_94242477/article/details/159085629?fromshare=blogdetail&sharetype=blogdetail&sharerId=159085629&sharerefer=PC&sharesource=2502_94242477&sharefrom=from_linkhttps://blog.csdn.net/2502_94242477/article/details/159085629?fromshare=blogdetail&sharetype=blogdetail&sharerId=159085629&sharerefer=PC&sharesource=2502_94242477&sharefrom=from_link

3.数组

https://blog.csdn.net/2502_94242477/article/details/159085629?fromshare=blogdetail&sharetype=blogdetail&sharerId=159085629&sharerefer=PC&sharesource=2502_94242477&sharefrom=from_linkhttps://blog.csdn.net/2502_94242477/article/details/159085629?fromshare=blogdetail&sharetype=blogdetail&sharerId=159085629&sharerefer=PC&sharesource=2502_94242477&sharefrom=from_link

4.面向对象

https://blog.csdn.net/2502_94242477/article/details/159283721?fromshare=blogdetail&sharetype=blogdetail&sharerId=159283721&sharerefer=PC&sharesource=2502_94242477&sharefrom=from_linkhttps://blog.csdn.net/2502_94242477/article/details/159283721?fromshare=blogdetail&sharetype=blogdetail&sharerId=159283721&sharerefer=PC&sharesource=2502_94242477&sharefrom=from_link

5.集合

https://blog.csdn.net/2502_94242477/article/details/159893567?fromshare=blogdetail&sharetype=blogdetail&sharerId=159893567&sharerefer=PC&sharesource=2502_94242477&sharefrom=from_linkhttps://blog.csdn.net/2502_94242477/article/details/159893567?fromshare=blogdetail&sharetype=blogdetail&sharerId=159893567&sharerefer=PC&sharesource=2502_94242477&sharefrom=from_link


一、学生成绩管理系统

首先我们要知道学生管理系统有以下功能:

1.添加学生

2.查看学生列表

3.修改学生成绩

4.删除学生

5.退出

1.创建学生对象

1.在模块下新建一个包定义Student类:

2.私有化学生数据

这里我们仅存储学生名字数据和分数数据

private String name; private double score;

3.随后重写tostring方法,和导入lombok包,进行有参无参get,set方法的调用

Student类代码完整如下

这样Student类就写完了


2.创建StudentScoreManager类,

这个类用于我们系统的操作页面,和逻辑,所以最为复杂

1.创建集合用于存储学生信息

ArrayList<Student> students = new ArrayList<>();

3.创建输入语句

Scanner scanner = new Scanner(System.in);

4.用while死循环写学生系统操作页面

while (true) { System.out.println("\n=== 学生成绩管理系统 ==="); System.out.println("1. 添加学生"); System.out.println("2. 查看学生列表"); System.out.println("3. 修改成绩"); System.out.println("4. 删除学生"); System.out.println("5. 退出"); System.out.print("请选择操作: "); }

5.用switch语句,把创建方法然后alt回车,把操作逻辑写在方法里面

switch (choice) { case 1: addStudent(); break; case 2: listStudents(); break; case 3: updateScore(); break; case 4: deleteStudent(); break; case 5: return; default: System.out.println("无效的选择,请重新输入"); }

完整代码如下

下面是四种方法的具体实现:

1.增加学生
public void addStudent() { System.out.print("请输入学生姓名: "); String name = scanner.nextLine(); System.out.print("请输入学生成绩: "); double score = scanner.nextDouble(); scanner.nextLine(); // 清除缓冲区(\n) students.add(new Student(name, score)); System.out.println("学生信息添加成功!"); }

思路实现:

1.我们先用输出System提示用户输出内容,而后用Scanner输入把数据用一个变量存储

注意:第二个输入后我们用Scanner.nextLine();

因为这行代码用于清除Scanner输入缓冲区中残留的换行符。当之前调用nextDouble()、nextInt()等方法后,缓冲区会留下换行符,影响后续nextLine()的读取,因此需要此行代码来清理缓冲区,确保输入流正常。

2.把读取的两个数据存储到最开始创建的Student集合里面

2.打印学生列表
public void listStudents() { if (students.isEmpty()) { System.out.println("当前没有学生信息"); return; } System.out.println("\n=== 学生列表 ==="); for (int i = 0; i < students.size(); i++) { System.out.println((i + 1) + ". " + students.get(i)); } }

思路实现:

1.我们先判断当学生信息为空,也就是没有添加学生信息的情况,我们用到isEmpty方法

2.通过循环输出集合

3.修改学生信息
public void updateScore() { listStudents(); if (students.isEmpty()) return; System.out.print("请输入要修改成绩的学生编号: "); int index = scanner.nextInt() - 1; scanner.nextLine(); if (index >= 0 && index < students.size()) { System.out.print("请输入新的成绩: "); double newScore = scanner.nextDouble(); scanner.nextLine(); Student student = students.get(index); students.set(index, new Student(student.getName(), newScore)); System.out.println("成绩修改成功!"); } else { System.out.println("无效的学生编号"); }

思路实现:

1.先把学生列表打印

2.把需要被修改的学生编号用变量保持,这里要-1,因为索引从0开始.

3.用if条件语句判断索引是否正确,若正确,提示用户把要改的成绩输入

4.用set方法,修改要被修改的集合里面的内容

4.删除学生
public void deleteStudent() { listStudents(); if (students.isEmpty()) return; System.out.print("请输入要删除的学生编号: "); int index = scanner.nextInt() - 1; scanner.nextLine(); if (index >= 0 && index < students.size()) { students.remove(index); System.out.println("学生信息删除成功!"); } else { System.out.println("无效的学生编号"); } }

思路实现:

1.前面内容跟修改学生内容一致

2.用if语句判断正确后,用remove方法,移除集合当中该学生的成绩

该类完整代码如下:

package itheima.arraylist; import java.util.ArrayList; import java.util.Scanner; public class StudentScoreManager { ArrayList<Student> students = new ArrayList<>(); Scanner scanner = new Scanner(System.in); public void addStudent() { System.out.print("请输入学生姓名: "); String name = scanner.nextLine(); System.out.print("请输入学生成绩: "); double score = scanner.nextDouble(); scanner.nextLine(); // 清除缓冲区(\n) students.add(new Student(name, score)); System.out.println("学生信息添加成功!"); } public void listStudents() { if (students.isEmpty()) { System.out.println("当前没有学生信息"); return; } System.out.println("\n=== 学生列表 ==="); for (int i = 0; i < students.size(); i++) { System.out.println((i + 1) + ". " + students.get(i)); } } public void updateScore() { listStudents(); if (students.isEmpty()) return; System.out.print("请输入要修改成绩的学生编号: "); int index = scanner.nextInt() - 1; scanner.nextLine(); if (index >= 0 && index < students.size()) { System.out.print("请输入新的成绩: "); double newScore = scanner.nextDouble(); scanner.nextLine(); Student student = students.get(index); students.set(index, new Student(student.getName(), newScore)); System.out.println("成绩修改成功!"); } else { System.out.println("无效的学生编号"); } } public void deleteStudent() { listStudents(); if (students.isEmpty()) return; System.out.print("请输入要删除的学生编号: "); int index = scanner.nextInt() - 1; scanner.nextLine(); if (index >= 0 && index < students.size()) { students.remove(index); System.out.println("学生信息删除成功!"); } else { System.out.println("无效的学生编号"); } } public void run() { while (true) { System.out.println("\n=== 学生成绩管理系统 ==="); System.out.println("1. 添加学生"); System.out.println("2. 查看学生列表"); System.out.println("3. 修改成绩"); System.out.println("4. 删除学生"); System.out.println("5. 退出"); System.out.print("请选择操作: "); int choice = scanner.nextInt(); scanner.nextLine(); switch (choice) { case 1: addStudent(); break; case 2: listStudents(); break; case 3: updateScore(); break; case 4: deleteStudent(); break; case 5: return; default: System.out.println("无效的选择,请重新输入"); } } } }

3.创建主函数类

创建main类,在主函数里面创建StudentScoreManager对象,然后调用他的run方法

public class main { public static void main(String[] args) { StudentScoreManager manager = new StudentScoreManager(); manager.run(); } }

最终呈现:

添加学生和打印学生:

修改学生成绩

删除学生

退出


总结

今天我们写了一个学生成绩管理系统的小项目,把前面的知识串了一下。

本次分享到此结束,感谢大家的观看与支持!如果本内容对您有帮助,欢迎点赞、收藏,您的支持将是我持续创作的最大动力,谢谢!

http://www.jsqmd.com/news/605379/

相关文章:

  • OpenClaw安全加固:百川2-13B模型API的权限控制实践
  • BEV模型训练不再难:星图AI平台+PETRV2,新手友好教程
  • 易语言手游中控框架源码|逍遥模拟器专用模板
  • 从CTFT到FFT:六种傅里叶变换的演进与应用全景
  • 华为推送报错6003?手把手教你排查证书指纹不匹配问题(附详细日志抓取步骤)
  • 2026年不干胶复卷机梯队盘点:半自动模切分条复卷机、复卷机设备、无胶复卷机、标签复卷机、物流标签设备、空白标签设备选择指南 - 优质品牌商家
  • 用GD32F103C8T6的PWM驱动舵机:从接线到代码的保姆级教程(附源码)
  • 倩女幽魂手游全自动24小时系统|雷电模拟器多线程中控+自动倒米交易+智能喊话器(含易语言源码)
  • 紧急预警!银河麒麟文件剪切后数据“人间蒸发”?别慌,用数安寻3秒火速救援!
  • OpenClaw轻量部署:Qwen3-4B在树莓派上的优化运行
  • SDMatte命令行参数详解:从基础调用到高级功能的全配置指南
  • Vue3项目里用天地图API做个地图,从引入到显示覆盖物保姆级教程
  • OpenClaw备份方案:千问3.5-27B自动压缩关键文件上传网盘
  • SEO_从零开始,手把手教你制定SEO优化方案(237 )
  • 单片机核心功能解析与实战技巧
  • FLUX.1-dev图片生成实战:从文字描述到高清大图,只需5步
  • 2026年香榧产地专业度排行:香榧作用/香榧功效/香榧瘦身产品/天然榧塑膳食/天然膳食/安徽香榧种植园/岳西香榧产业园/选择指南 - 优质品牌商家
  • 关键词堆砌会对网站内容质量产生什么影响_SEO 关键词堆砌的危害有哪些
  • 企业网站 SEO 关键词优化的重要性是什么_SEO关键词优化需要注意哪些问题
  • 2026年湛江黑石材可靠厂商名录:中国黑菠萝面石材、火山岩洞石石材、蒙古黑石材、中国黑光面石材、中国黑哑光面石材选择指南 - 优质品牌商家
  • Laravel 11重磅更新:10大核心特性解析
  • Arduino非阻塞旋律播放库:事件驱动音效实现
  • 3个技巧让旧iPhone重获新生:Legacy iOS Kit降级实战指南
  • TonPE 6.0.0.0.exe
  • 别再被P2P卡顿困扰了!聊聊FullCone NAT这个‘直连神器’(附NAT类型检测方法)
  • 智慧化电力设备巡检-基于YOLOv8深度学习的无人机输电线路异物检测系统 YOLO模型如何训练无人机输电线异物检测数据集 识别鸟巢风筝及气球的检测
  • Servo328库解析:ATmega328P硬件PWM舵机驱动
  • 保姆级教程:用OpenCV+Wireshark搞定海康萤石摄像头RTSP视频流(附常见品牌地址格式)
  • OpenClaw+Gemma-3-12b-it内容创作:自动生成技术博客与SEO优化
  • OpenClaw多模型切换:Gemma-3-12b-it与Qwen混合部署方案