Java实现简易的学生管理系统
Java实现简易的学生管理系统
文章目录
基于Java开发的学生管理系统的简单实现
- 四、完整代码
- 五、总结
前言
该项目旨在为新手提供一个快速上手的学习平台,在所学的面向对象技术与相关知识模块的基础上设计并实现学生管理系统的基础功能。主要涉及面向对象编程中的核心概念如抽象性、继承性和多态性应用实例、条件判断语句以及构造器方法等技术手段。项目的代码量相对简洁但内容丰富,在解决问题的过程中注重培养逻辑思维能力,并掌握相应的编程技巧与实践方法。从而为后面学习我们的集合、多线程、框架等打牢基础
一、如何实现
1、首先需要我们去分析需要定义哪些类?
2、定义类后赋予的数据类型是否合适?
3、是否需要提供get和set方法?同时是否有参数化的构造方法?
4、为了实现增删改查的功能,则完成这些功能的最佳顺序是什么?
5、在实现增删改查的过程中需要用到哪些知识点呢?
二、实现的方法(示意图)
为了更好的使我们更熟悉实现流程,为此做出以下示意图作为参考

三、开始实现
3.1 定义类
基于我们提供的这个示意图可知,在实现过程中主要涉及两个核心实体:一个是学生实体(Student),另一个是学生消息实体(StudentMessage)。具体而言,并为每个实体明确成员属性与对象集合关系,并为每个实体明确成员属性与对象集合关系。
在 Student 实体中,默认配置了获取器、设置器功能以及带有参数的构造方法。
Student类
public class Student {
private String stuId;
private String name;
private Integer age;
private String address;
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Student(String stuId, String name, Integer age, String address) {
this.stuId = stuId;
this.name = name;
this.age = age;
this.address = address;
}
}
代码解读
StudentMessage类
public class StudentMessage {
private static ArrayList<Student> stus = new ArrayList<>();
}
代码解读
3.2 定义主界面
主界面实现方式:
1、我们这里直接使用输出语句即可

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("请选择[1-5]");
代码解读
请阐述如何通过数字输入使某个功能得以执行?
应采用Scanner来读取用户在命令行界面输入的数据。
使用条件判断机制(如switch或if)来决定用户的数值对应的功能路径,在此方案中选用switch结构是为了提高代码可读性。
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
//判断用户输入哪一个数字 我们可以使用switch 或 if
switch (number) {
case 1:
System.out.println("1、新增学生");
addStudent();
break;
case 2:
System.out.println("2、修改学生");
updateStudent();
break;
case 3:
System.out.println("3、删除学生");
deleteStudent();
break;
case 4:
System.out.println("4、查询学生");
showStudent();
break;
case 5:
System.out.println("5、退出系统");
return;
}
代码解读
3.3 实现添加功能
实现功能步骤如下:
1、声明该方法,并命名为addStudent
2、在此操作中需要获取输入数据时应确保其与现有数据类型一致
3、将相关的学生信息存储到集合变量中
4、然后调用此方法以完成功能执行
public static void addStudent() {
//在这里 我们需要把数据类型相同的先进行键盘获取 否则会出现读取不了下一个数据提前结束获取
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生学号");
String stuId = scanner.nextLine();
System.out.println("请输入学生姓名");
String name = scanner.nextLine();
System.out.println("请输入学生地址");
String address = scanner.nextLine();
System.out.println("请输入学生年龄");
int age = scanner.nextInt();
//直接将学生的信息存入到集合中
stus.add(new Student(stuId,name,age,address));
//确认我们是否成功新增学生信息
System.out.println("新增成功");
}
代码解读
注意事项:
注意事项:
getStuIdStudent方法
public static Student getStuIdStudent(String stuId) {
for (int i = 0; i < stus.size(); i++) {
Student student = stus.get(i);
//用户录入的学号 与 集合中存在学生学号相同 则该学号已经被使用 不允许继续插入
if (student.getStuId().equals(stuId)) {
return student;
}
}
return null;
}
代码解读
addStudent()进行调用
//根据用户输入学号从集合中查询 如果存在的话 就不允许插入
Student student = getStuIdStudent(stuId);
if (student!=null) {
System.out.println("该学号已经被" + student.getName() + "占用,不能够继续插入相同的学号");
return;
}
代码解读
3.4 实现查询功能
查询功能实现过程:
1、在此过程中,我们实现了名为showStudent的方法
2、通过遍历所有学生实例的方式获取每个学生对象
3、最终呈现每位学生的相关信息
public static void showStudent() {
System.out.println("学号\t姓名\t年龄\t地址\t");
for (int i = 0; i < stus.size(); i++) {
Student student = stus.get(i);
System.out.println(student.getStuId() + "\t"
+ student.getName() + "\t" + student.getAge() + "\t" +student.getAddress() + "\t");
}
}
代码解读
在查询过程中可能会出现无法找到对应的学生记录的情况。这时我们需要建立一个判断机制以便于输出对应的提示信息。
if (stus.size()==0) {
System.out.println("对象集合中没有学生");
return;
}
代码解读
3.5 实现删除功能
删除功能的实现过程:
首先,在此我们实现了名为deleteStudent的方法。
接下来,请接收用户从键盘上输入的学生学号。
然后,在所有学生记录中逐一查看每位学生对象。
最后,请核实是否有该学号,并将其与当前输入的学号进行比对。
public static void deleteStudent() {
//删除学生 学号是唯一的 所以我们可以根据学号来进行删除
System.out.println("请输入需要删除的学生学号");
Scanner scanner = new Scanner(System.in);
String stuId = scanner.nextLine();
//先根据是否有这个学号 在进行删除
for (int i = 0; i < stus.size(); i++) {
Student student = stus.get(i);
//根据输入进来的学号 与 集合中的学号 进行对比
if (student.getStuId().equals(stuId)) {
stus.remove(i);
System.out.println("删除学生的学号:" + stuId + "成功!");
return;
}
}
//没有根据学号进行查找删除
System.out.println("没有根据学号查找到删除的学生");
}
代码解读
3.6 实现修改功能
实现修改功能的过程如下:
在本流程中, 首先需要定义一个名为 updateStudent 的方法。
此过程中, 将通过学号来定位并执行相应的修改操作。
接着, 在查询过程中会检查学生对象中的学号字段是否为空。
随后会将新的数据赋值给该对象。
public static void updateStudent() {
//修改学生 同样是根据学号来进行查找修改
System.out.println("请输入需要修改的学生学号");
Scanner scanner = new Scanner(System.in);
String stuId = scanner.nextLine();
//根据学号 查找学生对象
Student student = getStuIdStudent(stuId);
if (student==null) {
System.out.println("从集合中没有查找到该学号对应的学生对象");
return; // 不会向下执行
}
//能够执行到这里 说明这个对象是存在的 我们可以给对象进行新的赋值
System.out.println("请输入需要修改的新名称:");
String newName = scanner.nextLine();
System.out.println("请输入需要修改的新地址:");
String newAddress = scanner.nextLine();
System.out.println("请输入需要修改的新年龄:");
Integer newAge = scanner.nextInt();
student.setName(newName);
student.setAge(newAge);
student.setAddress(newAddress);
//修改了原来学生对象信息内容
System.out.println("修改成功");
}
代码解读
四、完整代码
Student类
package com.gance.xyz.day15;
/** * @author 杰仔正在努力
* @create 2022-11-25 11:17
*/
public class Student {
private String stuId;
private String name;
private Integer age;
private String address;
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Student(String stuId, String name, Integer age, String address) {
this.stuId = stuId;
this.name = name;
this.age = age;
this.address = address;
}
}
代码解读
StudentMessage类
package com.gance.xyz.day15;
import java.util.ArrayList;
import java.util.Scanner;
/** * @author 杰仔正在努力
* @create 2022-11-25 11:26
*/
public class StudentMessage {
private static ArrayList<Student> stus = new ArrayList<>();
public static void main(String[] args) {
while (true) {
//系统主界面
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("请选择[1-5]");
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
//判断用户输入哪一个数字 我们可以使用switch 或 if
switch (number) {
case 1:
System.out.println("1、新增学生");
addStudent();
break;
case 2:
System.out.println("2、修改学生");
updateStudent();
break;
case 3:
System.out.println("3、删除学生");
deleteStudent();
break;
case 4:
System.out.println("4、查询学生");
showStudent();
break;
case 5:
System.out.println("5、退出系统");
return;
}
}
}
/** * 新增学生
*/
public static void addStudent() {
//在这里 我们需要把数据类型相同的先进行键盘获取 否则会出现读取不了下一个数据提前结束获取
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生学号");
String stuId = scanner.nextLine();
//根据用户输入学号从集合中查询 如果存在的话 就不允许插入
Student student = getStuIdStudent(stuId);
if (student!=null) {
System.out.println("该学号已经被" + student.getName() + "占用,不能够继续插入相同的学号");
return;
}
System.out.println("请输入学生姓名");
String name = scanner.nextLine();
System.out.println("请输入学生地址");
String address = scanner.nextLine();
System.out.println("请输入学生年龄");
int age = scanner.nextInt();
//直接将学生的信息存入到集合中
stus.add(new Student(stuId,name,age,address));
//确认我们是否成功新增学生信息
System.out.println("新增成功");
}
/** * 封装提供方法 就是根据学号查询 对象在集合中 学生信息
* 如果我们能够在集合中查找到该学号 则进行返回
*/
public static Student getStuIdStudent(String stuId) {
for (int i = 0; i < stus.size(); i++) {
Student student = stus.get(i);
//用户录入的学号 与 集合中存在学生学号相同 则该学号已经被使用 不允许继续插入
if (student.getStuId().equals(stuId)) {
return student;
}
}
return null;
}
/** * 查询学生
*/
public static void showStudent() {
if (stus.size()==0) {
System.out.println("对象集合中没有学生");
return;
}
//主要是为了更加美观
System.out.println("学号\t姓名\t年龄\t地址\t");
for (int i = 0; i < stus.size(); i++) {
Student student = stus.get(i);
System.out.println(student.getStuId() + "\t"
+ student.getName() + "\t" + student.getAge() + "\t" +student.getAddress() + "\t");
}
}
/** * 删除学生
*/
public static void deleteStudent() {
//删除学生 学号是唯一的 所以我们可以根据学号来进行删除
System.out.println("请输入需要删除的学生学号");
Scanner scanner = new Scanner(System.in);
String stuId = scanner.nextLine();
//先根据是否有这个学号 在进行删除
for (int i = 0; i < stus.size(); i++) {
Student student = stus.get(i);
//根据输入进来的学号 与 集合中的学号 进行对比
if (student.getStuId().equals(stuId)) {
stus.remove(i);
System.out.println("删除学生的学号:" + stuId + "成功!");
return;
}
}
//没有根据学号进行查找删除
System.out.println("没有根据学号查找到删除的学生");
}
/** * 修改学生
*/
public static void updateStudent() {
//修改学生 同样是根据学号来进行查找修改
System.out.println("请输入需要修改的学生学号");
Scanner scanner = new Scanner(System.in);
String stuId = scanner.nextLine();
//根据学号 查找学生对象
Student student = getStuIdStudent(stuId);
if (student==null) {
System.out.println("从集合中没有查找到该学号对应的学生对象");
return; // 不会向下执行
}
//能够执行到这里 说明这个对象是存在的 我们可以给对象进行新的赋值
System.out.println("请输入需要修改的新名称:");
String newName = scanner.nextLine();
System.out.println("请输入需要修改的新地址:");
String newAddress = scanner.nextLine();
System.out.println("请输入需要修改的新年龄:");
Integer newAge = scanner.nextInt();
student.setName(newName);
student.setAge(newAge);
student.setAddress(newAddress);
//修改了原来学生对象信息内容
System.out.println("修改成功");
}
}
代码解读
五、总结
对于那些刚开始学习编程的同学来说,
这个项目非常适合他们动手实践。
通过这个项目的参与学习,
我们可以有效提升自己的逻辑思维能力。
它不仅有助于加深对所学知识的理解,
还能让我们从多个角度全面掌握相关知识。
通过实践操作,
我们可以更好地巩固所学知识。
同时也能显著提升我们的编程技能水平。
在完整的代码实现中,
我们可以选择将我们的现有代码进一步整合,
对我们的部分核心代码块进行优化调整,
主要依赖于... getStuIdStudent() 方法,
在这里我们可以对这部分代码结构进行优化调整。
这里就不做演示说明。
各位可以自行尝试实践。
