用IDEA完成你的第一个小项目:命令行版学生信息管理(无数据库)

 

一、项目概述

 

1. 项目目标

 

基于Java语言+IDEA开发工具,实现一个无数据库依赖的命令行版学生信息管理系统,核心功能涵盖学生信息的增删改查,适合Java初学者巩固面向对象编程、集合框架、流程控制等基础知识点。

 

2. 技术栈

 

- 开发语言:Java 8+

- 开发工具:IntelliJ IDEA

- 数据存储:ArrayList(内存级存储,程序重启后数据不保留)

- 核心技术:面向对象(封装、继承)、Scanner输入处理、循环与条件判断

 

二、项目搭建步骤

 

1. IDEA项目创建

 

1. 打开IDEA,点击「File → New → Project」,选择「Java」,勾选本地JDK路径,点击「Next」。

2. 取消「Create project from template」,直接点击「Next」,输入项目名称(如StudentManager)和存储路径,点击「Finish」。

3. 右键项目根目录,选择「New → Package」,创建com.student.manager包(按业务分层规范命名)。

4. 在包下创建3个核心类:Student(实体类)、StudentManager(核心逻辑类)、Test(测试启动类)。

 

2. 项目结构说明

 

plaintext

StudentManager/

└── src/

    └── com/

        └── student/

            └── manager/

                ├── Student.java // 学生实体类(封装信息)

                ├── StudentManager.java// 业务逻辑类(增删改查)

                └── Test.java // 启动类(命令行交互)

 

 

三、核心功能实现

 

1. 实体类:Student.java(封装学生信息)

 

java

package com.student.manager;

 

// 学生实体类:封装学号、姓名、年龄、成绩信息

public class Student {

    private String id; // 学号(唯一标识)

    private String name; // 姓名

    private int age; // 年龄

    private double score; // 成绩

 

    // 无参构造

    public Student() {}

 

    // 有参构造(用于创建学生对象)

    public Student(String id, String name, int age, double score) {

        this.id = id;

        this.name = name;

        this.age = age;

        this.score = score;

    }

 

    // Getter和Setter方法(用于访问和修改私有属性)

    public String getId() { return id; }

    public void setId(String id) { this.id = id; }

    public String getName() { return name; }

    public void setName(String name) { this.name = name; }

    public int getAge() { return age; }

    public void setAge(int age) { this.age = age; }

    public double getScore() { return score; }

    public void setScore(double score) { this.score = score; }

 

    // 重写toString():格式化输出学生信息

    @Override

    public String toString() {

        return "学号:" + id + "\t姓名:" + name + "\t年龄:" + age + "\t成绩:" + score;

    }

}

 

 

2. 业务逻辑类:StudentManager.java(实现增删改查)

 

java

package com.student.manager;

 

import java.util.ArrayList;

import java.util.Scanner;

 

// 学生信息管理核心类:封装增删改查业务逻辑

public class StudentManager {

    // 用ArrayList存储学生对象(内存级数据存储)

    private static ArrayList<Student> studentList = new ArrayList<>();

    private static Scanner scanner = new Scanner(System.in);

 

    // 1. 添加学生信息

    public static void addStudent() {

        System.out.print("请输入学号(唯一):");

        String id = scanner.next();

 

        // 校验学号唯一性

        for (Student s : studentList) {

            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("请输入成绩:");

        double score = scanner.nextDouble();

 

        // 添加到集合

        studentList.add(new Student(id, name, age, score));

        System.out.println("学生信息添加成功!");

    }

 

    // 2. 删除学生信息(按学号删除)

    public static void deleteStudent() {

        System.out.print("请输入要删除的学生学号:");

        String id = scanner.next();

 

        // 遍历集合查找学生

        for (int i = 0; i < studentList.size(); i++) {

            if (studentList.get(i).getId().equals(id)) {

                studentList.remove(i);

                System.out.println("学生信息删除成功!");

                return;

            }

        }

 

        System.out.println("未找到该学号对应的学生,删除失败!");

    }

 

    // 3. 修改学生信息(按学号修改)

    public static void updateStudent() {

        System.out.print("请输入要修改的学生学号:");

        String id = scanner.next();

 

        for (Student s : studentList) {

            if (s.getId().equals(id)) {

                System.out.print("请输入新姓名:");

                s.setName(scanner.next());

                System.out.print("请输入新年龄:");

                s.setAge(scanner.nextInt());

                System.out.print("请输入新成绩:");

                s.setScore(scanner.nextDouble());

                System.out.println("学生信息修改成功!");

                return;

            }

        }

 

        System.out.println("未找到该学号对应的学生,修改失败!");

    }

 

    // 4. 查询学生信息(支持全部查询和按学号查询)

    public static void queryStudent() {

        System.out.println("1. 查询全部学生 2. 按学号查询");

        System.out.print("请选择查询方式:");

        int choice = scanner.nextInt();

 

        if (choice == 1) {

            // 查询全部

            if (studentList.isEmpty()) {

                System.out.println("当前无学生信息!");

                return;

            }

            System.out.println("===== 全部学生信息 =====");

            for (Student s : studentList) {

                System.out.println(s);

            }

        } else if (choice == 2) {

            // 按学号查询

            System.out.print("请输入要查询的学生学号:");

            String id = scanner.next();

            for (Student s : studentList) {

                if (s.getId().equals(id)) {

                    System.out.println("===== 学生信息 =====");

                    System.out.println(s);

                    return;

                }

            }

            System.out.println("未找到该学号对应的学生!");

        } else {

            System.out.println("输入错误,请重新选择!");

        }

    }

}

 

 

3. 启动类:Test.java(命令行交互入口)

 

java

package com.student.manager;

 

import java.util.Scanner;

 

// 项目启动类:提供命令行菜单交互

public class Test {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        while (true) {

            // 打印菜单

            System.out.println("\n===== 学生信息管理系统 =====");

            System.out.println("1. 添加学生 2. 删除学生 3. 修改学生 4. 查询学生 5. 退出系统");

            System.out.print("请选择功能(1-5):");

            int choice = scanner.nextInt();

 

            // 功能分发

            switch (choice) {

                case 1:

                    StudentManager.addStudent();

                    break;

                case 2:

                    StudentManager.deleteStudent();

                    break;

                case 3:

                    StudentManager.updateStudent();

                    break;

                case 4:

                    StudentManager.queryStudent();

                    break;

                case 5:

                    System.out.println("感谢使用,系统退出!");

                    scanner.close();

                    System.exit(0); // 终止程序

                default:

                    System.out.println("输入错误,请选择1-5之间的功能!");

            }

        }

    }

}

 

 

四、功能测试

 

1. 运行程序

 

在IDEA中右键Test.java,选择「Run 'Test.main()'」,启动程序后按菜单提示操作:

 

- 选择「1」添加学生,输入学号、姓名、年龄、成绩(注意学号唯一);

- 选择「4」查询全部学生,验证添加结果;

- 选择「3」修改学生信息,按学号修改对应字段;

- 选择「2」删除学生,按学号删除指定学生;

- 选择「5」退出系统。

 

2. 测试案例

 

plaintext

===== 学生信息管理系统 =====

1. 添加学生 2. 删除学生 3. 修改学生 4. 查询学生 5. 退出系统

请选择功能(1-5):1

请输入学号(唯一):2024001

请输入姓名:张三

请输入年龄:20

请输入成绩:95.5

学生信息添加成功!

 

===== 学生信息管理系统 =====

1. 添加学生 2. 删除学生 3. 修改学生 4. 查询学生 5. 退出系统

请选择功能(1-5):4

1. 查询全部学生 2. 按学号查询

请选择查询方式:1

===== 全部学生信息 =====

学号:2024001 姓名:张三 年龄:20 成绩:95.5

 

 

五、项目优化方向(进阶拓展)

 

1. 数据持久化:用IO流(如FileWriter/FileReader)将学生信息存储到本地文件(.txt/.csv

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐