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

JavaSE核心知识点05实践项目(学生管理系统-控制台版)

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关

  • 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息

文章目录

  • JavaSE核心知识点05实践项目(学生管理系统-控制台版)
      • **1. 系统功能分析**
      • **2. 项目结构设计**
      • **3. 学生实体类(Student.java)**
      • **4. 管理系统主类(StudentManagementSystem.java)**
      • **5. 关键点解释**
      • **6. 如何运行?**
      • **7. 优化方向(后续可自行扩展)**


📃文章前言

  • 🔷文章均为学习工作中整理的笔记。
  • 🔶如有错误请指正,共同学习进步。

JavaSE核心知识点05实践项目(学生管理系统-控制台版)

下面我将从零开始,为你详细讲解如何用Java实现一个控制台版的学生管理系统。我们将分步骤进行,并提供完整的代码示例和解释。

在这里插入图片描述


1. 系统功能分析

我们需要实现以下核心功能:

  • 添加学生信息
  • 删除学生信息
  • 修改学生信息
  • 查询学生信息
  • 显示所有学生
  • 退出系统

2. 项目结构设计

我们将创建两个类:

  • Student:学生实体类(存储学生信息)
  • StudentManagementSystem:管理系统主类(包含业务逻辑和主菜单)

3. 学生实体类(Student.java)

public class Student {private String id;      // 学号private String name;    // 姓名private int age;        // 年龄private String gender;  // 性别// 构造方法public Student(String id, String name, int age, String gender) {this.id = id;this.name = name;this.age = age;this.gender = gender;}// Getter和Setter方法(略)// 通过快捷键 Alt+Insert 自动生成
}

4. 管理系统主类(StudentManagementSystem.java)

import java.util.ArrayList;
import java.util.Scanner;public class StudentManagementSystem {private static ArrayList<Student> students = new ArrayList<>();private static Scanner scanner = new Scanner(System.in);public static void main(String[] args) {while (true) {showMenu();int choice = scanner.nextInt();switch (choice) {case 1:addStudent();break;case 2:deleteStudent();break;case 3:updateStudent();break;case 4:queryStudent();break;case 5:showAllStudents();break;case 6:System.out.println("感谢使用,再见!");System.exit(0);default:System.out.println("输入错误,请重新选择!");}}}// 显示菜单private static void showMenu() {System.out.println("======== 学生管理系统 ========");System.out.println("1. 添加学生");System.out.println("2. 删除学生");System.out.println("3. 修改学生");System.out.println("4. 查询学生");System.out.println("5. 显示所有学生");System.out.println("6. 退出系统");System.out.print("请输入您的选择:");}// 添加学生private static void addStudent() {System.out.print("请输入学号:");String id = scanner.next();// 检查学号是否重复for (Student s : students) {if (s.getId().equals(id)) {System.out.println("学号已存在,添加失败!");return;}}System.out.print("请输入姓名:");String name = scanner.next();System.out.print("请输入年龄:");int age = scanner.nextInt();System.out.print("请输入性别:");String gender = scanner.next();students.add(new Student(id, name, age, gender));System.out.println("添加成功!");}// 删除学生private static void deleteStudent() {System.out.print("请输入要删除的学号:");String id = scanner.next();for (Student s : students) {if (s.getId().equals(id)) {students.remove(s);System.out.println("删除成功!");return;}}System.out.println("未找到该学生!");}// 修改学生private static void updateStudent() {System.out.print("请输入要修改的学号:");String id = scanner.next();for (Student s : students) {if (s.getId().equals(id)) {System.out.print("请输入新姓名:");s.setName(scanner.next());System.out.print("请输入新年龄:");s.setAge(scanner.nextInt());System.out.print("请输入新性别:");s.setGender(scanner.next());System.out.println("修改成功!");return;}}System.out.println("未找到该学生!");}// 查询学生private static void queryStudent() {System.out.print("请输入要查询的学号:");String id = scanner.next();for (Student s : students) {if (s.getId().equals(id)) {System.out.println("学号\t姓名\t年龄\t性别");System.out.println(s.getId() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getGender());return;}}System.out.println("未找到该学生!");}// 显示所有学生private static void showAllStudents() {System.out.println("学号\t姓名\t年龄\t性别");for (Student s : students) {System.out.println(s.getId() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getGender());}}
}

5. 关键点解释

  1. 数据结构:使用ArrayList<Student>存储学生对象,动态管理数据。
  2. 输入处理:通过Scanner类实现控制台输入。
  3. 学号唯一性检查:在添加学生时遍历列表检查学号是否重复。
  4. 菜单循环:通过while(true)实现持续操作,直到选择退出。

6. 如何运行?

  1. 使用IDE(如IntelliJ IDEA或Eclipse)创建Java项目
  2. 分别创建Student.javaStudentManagementSystem.java
  3. 运行StudentManagementSystem类的main方法

7. 优化方向(后续可自行扩展)

  1. 数据持久化:将学生数据保存到文件(如.txt
  2. 输入验证:处理非法输入(如年龄输入字母时的异常)
  3. 更多查询方式:按姓名、年龄范围查询
  4. 排序功能:按学号或成绩排序显示

希望这个详细的教程能帮助你入门Java编程!如果有任何问题,欢迎随时提问。



📜文末寄语

  • 🟠关注我,获取更多内容。
  • 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
  • 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
  • 🔵​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 🟣点击下方名片获取更多内容🍭🍭🍭👇

http://www.xdnf.cn/news/9705.html

相关文章:

  • 前向渲染和延迟渲染
  • 利用仿真软件学习一下RC无源滤波和有源滤波电路
  • 【部署】手搓一个dify可用的rerank模型接口服务
  • VSCode Agent 和 Cursor Agent 系统提示词对比
  • There is a chart instance already initialized on the dom. 柱状图初始化时报前面这个错误如何解决?
  • Python异常处理:优雅地应对程序运行时的“意外”
  • 三轴云台之不完全微分PID控制算法篇
  • 可视化数据大屏适配方案之Scale等比缩放
  • java上机测试错题回顾(3)
  • YOLOv11冻结训练+微调策略实战教程(含效果对比分析)
  • 运维三剑客——grep
  • 【动态规划】子数组系列(二)
  • GEO革命:重新定义AI时代的内容规则
  • 代码随想录算法训练营第五十二天
  • 【笔试训练4】Fibonacci数列|单词搜索|杨辉三角
  • 11、总账管理(GL)数字化转型:财务核心支柱,承担着业务系统复杂多变的重任
  • 测试W5500的第9步_使用SNTP实现网络时间同步
  • 尚硅谷redis7 63-69 redis哨兵监控之理论简介
  • javase JDK 环境变量配置
  • 关于线程死锁的相关知识
  • PortSwigger-01-信息泄露
  • 借助Java,让Cloudflare API为你的网站管理加速
  • 篇章五 数据结构——链表(一)
  • 【CAPL实战】LIN校验和测试
  • 电脑硬盘空间大量被占用怎么办
  • 低功耗双目云台监控设备采用国标控制装置
  • 扩散模型原理详解:从噪声到艺术的神奇之旅
  • win32相关(进程间通信)
  • RISC-V特权模式及切换
  • Python中质数筛选及优化效率对比