Java实现简易的学生管理系统
文章目录
- Java实现简易的学生管理系统
- 前言
- 一、如何实现
- 二、实现的方法(示意图)
- 三、开始实现
- 3.1 定义类
- 3.2 定义主界面
- 3.3 实现添加功能
- 3.4 实现查询功能
- 3.5 实现删除功能
- 3.6 实现修改功能
- 四、完整代码
- 五、总结
前言
该项目主要是作为新手快速上手实操,围绕面向对象所学知识实现学生管理系统的增删改查功能,所使用的知识点主要是面向对象的三大特征使用的方法、判断语句、构造方法等知识点,代码量并不是很多,主要是考察我们在做项目会遇到的一些问题,我们会用什么样的方法去解决,以及提高我们的逻辑能力,从而为后面学习我们的集合、多线程、框架等打牢基础
一、如何实现
1、首先我们要去分析我们需要定义哪些类?
2、定义类之后我们赋予的数据类型是否得当?
3、是否要提供get、set方法,有参、无参构造方法?
4、既然我们要实现增删改查的操作,那我们按怎样的顺序来完成才是最好的呢?
5、增删改查的每一步我们需要用到些什么知识点呢?
。。。。。。。。
二、实现的方法(示意图)
为了更好的使我们更熟悉实现流程,为此做出以下示意图作为参考
三、开始实现
3.1 定义类
按照我们的这个示意图可知,我们在实现的时候,主要是定义两个类,一个学生类(Student)和 学生管理类(StudentMessage),并分别定义成员属性以及对象集合,在Student类中,我们还要为它提供get、set方法和有参构造方法
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]");
如何实现用户在输入数字使用某个功能时,该功能可以实现?
1、就要使用到Scanner,获取用户从键盘中输入的数值
2、使用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),根据用户传入进来的学生学号与集合中存在的学生学号进行对比,如果存在就不允许继续插入,进行返回
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 实现删除功能
实现删除功能的过程:
1、定义方法,在这里我们定义的方法名为deleteStudent
2、获取用户从键盘中输入的学生学号
3、遍历学生对象,取出每位学生对象
4、确认是否有该学号,根据输入进来的学号与集合中的学号进行对比
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 实现修改功能
实现修改功能的过程:
1、定义方法,在这里我们定义的方法名为updateStudent
2、根据学号来进行查找修改
3、根据学号,查找学生对象里学号是否为空
4、给对象进行新的赋值
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()方法,这里我们是可以进行重构的,在这里,我就不演示了,各位可以自己去尝试一下