用IDEA完成你的第一个小项目:命令行版学生信息管理(无数据库)
用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
更多推荐


所有评论(0)