文章目录
简单概述
本部分是学习课程多易教育-Java基础篇当中的一个简单实例,这里做了一个实例相关的笔记进行记录。
任务目标
实现类似下图的简易学生管理系统,具有的功能有添加学生,修改学生,删除学生,查看所有学生以及退出功能。
功能分析与实现
在实现此功能的时候,我们需要先分析构造出一个学生类,只有通过学生类才可以保存我们需要的一些相关的信息,在完成学生类构建后,我们要考虑到学生的数量是会变动的,因此我们需要能够添加并且删除数据,所以这里使用的是ArrayList
来实现对数据的增加或者减少,因为其本身是可变的。
学生类
学生类的实现只需要完成基本的内容,也就是能够实现对学生基本属性进行操作即可,这里我们就使用三条属性,分别是学生id,学生姓名以及学生年龄。
package com.doit.demo05;
public class Student {
// 学生id
String id;
// 学生姓名
String name;
// 学生年龄
int age;
}
辅助函数功能
判断学生id是否被使用
通过学生id与学生集合来判断某个学生的id是否被使用,我们这里直接通过顺序遍历来完成对所有对象的查找操作。
// 定义一个判断学号在集合中是否存在的一个方法,如果存在返回true,如果不存在返回false
public static boolean isUsed(String id, ArrayList<Student> list) {
// 遍历学生集合 依次获取到每个学生对象
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
// 判断id是否与学生的id相同 有相同则返回true
if (s.id.equals(id)) {
return true;
}
}
return false;
}
查找一个学生对象
查找一个学生对象的操作就是通过判断每个学生对象的id与我们查找的id是否一致,如果出现一致的情况,这个时候我们就可以将其返回,如果没有查找到我们就返回一个null,当然在这个小Demo中,我们只有验证存在时,才进行学生对象的查找。
// 定义一个获取对应学号id对象的方法
public static Student getStudent(String id, ArrayList<Student> list) {
// 遍历学生集合 依次获取到每个学生对象
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
// 判断id是否与学生的id相同 有相同则返回true
if (s.id.equals(id)) {
return s;
}
}
return null;
}
输入字符串与整数
输入字符串与输入整数部分,就是进行一个简单的封装,让系统能够实现我们我们输入字符串与整数的要求,更加方便快捷的操作。
// 输入整数
public static int enterInt() {
Scanner sc = new Scanner(System.in);
return sc.nextInt();
}
// 输入字符串
public static String enterString() {
Scanner sc = new Scanner(System.in);
return sc.next();
}
添加学生
添加学生功能的实现主要是通过键入学生id,然后通过对学生id的相关信息进行验证,如果验证发现没有使用过,就添加新的学生,如果验证发现使用过了,就让其重新输入新的学号。
// 添加学生
public static void addStudent(ArrayList<Student> list) {
// 创建新学生对象
Student s = new Student();
while (true) {
System.out.println("请输入学生的id:");
String id = enterString();
// 如果存在返回true 如果不存在返回false
boolean used = isUsed(id, list);
if (used) {
System.out.println("已存在,不能使用,重新输入学生的学号:");
} else {
// 将用户输入的id 为新学生对象的id赋值
s.id = id;
break;
}
}
System.out.println("请输入学生的姓名:");
s.name = enterString();
System.out.println("请输入学生的年龄:");
s.age = enterInt();
// 将学生添加到集合中
list.add(s);
System.out.println("添加成功!");
}
修改学生
当我们能够查找到学生id的时候,我们可以通过获取到学生对象,然后对学生对象进行相关的修改,当然这里修改我们默认设定了不可以修改学生id对象,因为这个是我们判断学生对象的一个基本条件。
// 修改学生信息
public static void changeStudent(ArrayList<Student> list) {
while (true) {
if (list.size() == 0 || list == null) {
System.out.println("还没有一个学生对象,请先添加学生再进行修改");
break;
}
System.out.println("请输入学生的id:");
String id = enterString();
boolean used = isUsed(id, list);
if (used) {
Student student = getStudent(id, list);
System.out.println("请输入修改的学生的姓名,现在的名字为:" + student.name);
student.name = enterString();
System.out.println("请输入修改的学生的年龄,现在的年龄为:" + student.age);
student.age = enterInt();
break;
} else {
System.out.println("请确认您输入的学生id是否正确");
}
}
}
删除学生
删除学生对象其主要是将获取到学生对象后,将学生对象进行删除,由于我们不能够直接通过索引对应我们需要的删除学生,因此这个部分我们需要将对象获取到后进行删除。
// 删除学生
public static void deleteStudent(ArrayList<Student> list) {
while (true) {
if (list.size() == 0 || list == null) {
System.out.println("还没有一个学生,请先添加学生再进行删除");
break;
}
// 输入要删除学生的id
System.out.println("请输入要删除学生的id:");
String id = enterString();
boolean used = isUsed(id, list);
if (used) {
System.out.println("正在删除id为:" + id + "的学生");
Student removeStudent = getStudent(id, list);
// 删除学生对象
list.remove(removeStudent);
break;
} else {
System.out.println("请确认您输入的学生id是否正确");
break;
}
}
}
查看所有学生
查看所有学生函数, 主要是将学生信息进行一个整体的遍历,因此这里我们需要使用顺序遍历来遍历出学生对象,通过获取学生对象当中的信息来实现我们的一个需要。
// 完成查看所有学生的功能 实际上就是对集合的遍历展示
public static void show(ArrayList<Student> list) {
if (list == null || list.size() == 0) {
System.out.println("没有学生信息,请先添加!");
return;
}
System.out.println("学号\t\t姓名\t\t年龄");
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.id + "\t\t" + s.name + "\t\t" + s.age);
}
}
主函数
主函数部分主要实现一个循环操作,能够在函数执行结束后输出相关的字符,这里可能需要留意的就是退出操作了,退出操作其通过break 跳出a这个整体部分,然后整个循环操作也出现了终止,实现了程序的结束操作。
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
System.out.println("---------------欢迎来到学生管理系统------------------");
a:
while (true) {
System.out.println("1.添加学生");
System.out.println("2.修改学生");
System.out.println("3.删除学生");
System.out.println("4.查看所有学生");
System.out.println("5.退出");
System.out.println("请输入您的选择:");
int choose = enterInt();
switch (choose) {
case 1:
addStudent(list);
break;
case 2:
changeStudent(list);
break;
case 3:
deleteStudent(list);
break;
case 4:
show(list);
break;
case 5:
System.out.println("您确定要退出吗?Y/N");
String enter = enterString();
// 比较字符串是否相同 不能使用 == 而是equals比较
// equalsIgnoreCase 忽略大小写比较是否相同
if (enter.equalsIgnoreCase("Y")) {
System.out.print("再见来不及握手!");
break a;
} else {
break;
}
default:
System.out.println("输入的数字有错误");
break;
}
}
}
附录
整体代码
Student
package com.doit.demo05;
public class Student {
String id;
String name;
int age;
}
Test
package com.doit.demo05;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Scanner;
/*
1. 定义一个学生类
2. 定义一个集合用来存储所有的学生对象
3. 欢迎界面
4. 键盘录入接收用户输入选择
5. 判断用户选择哪一个
6. 添加
向集合添加学生对象
修改
修改集合中的学生对象的属性
删除
删除集合中的学生对象
查看所有学生
遍历 展示
*/
public class Test {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
System.out.println("---------------欢迎来到学生管理系统------------------");
a:
while (true) {
System.out.println("1.添加学生");
System.out.println("2.修改学生");
System.out.println("3.删除学生");
System.out.println("4.查看所有学生");
System.out.println("5.退出");
System.out.println("请输入您的选择:");
int choose = enterInt();
switch (choose) {
case 1:
addStudent(list);
break;
case 2:
changeStudent(list);
break;
case 3:
deleteStudent(list);
break;
case 4:
show(list);
break;
case 5:
System.out.println("您确定要退出吗?Y/N");
String enter = enterString();
// 比较字符串是否相同 不能使用 == 而是equals比较
// equalsIgnoreCase 忽略大小写比较是否相同
if (enter.equalsIgnoreCase("Y")) {
System.out.print("再见来不及握手!");
break a;
} else {
break;
}
default:
System.out.println("输入的数字有错误");
break;
}
}
}
// 输入整数
public static int enterInt() {
Scanner sc = new Scanner(System.in);
return sc.nextInt();
}
// 输入字符串
public static String enterString() {
Scanner sc = new Scanner(System.in);
return sc.next();
}
// 完成查看所有学生的功能 实际上就是对集合的遍历展示
public static void show(ArrayList<Student> list) {
if (list == null || list.size() == 0) {
System.out.println("没有学生信息,请先添加!");
return;
}
System.out.println("学号\t\t姓名\t\t年龄");
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.id + "\t\t" + s.name + "\t\t" + s.age);
}
}
// 添加学生
public static void addStudent(ArrayList<Student> list) {
// 创建新学生对象
Student s = new Student();
while (true) {
System.out.println("请输入学生的id:");
String id = enterString();
// 如果存在返回true 如果不存在返回false
boolean used = isUsed(id, list);
if (used) {
System.out.println("已存在,不能使用,重新输入学生的学号:");
} else {
// 将用户输入的id 为新学生对象的id赋值
s.id = id;
break;
}
}
System.out.println("请输入学生的姓名:");
s.name = enterString();
System.out.println("请输入学生的年龄:");
s.age = enterInt();
// 将学生添加到集合中
list.add(s);
System.out.println("添加成功!");
}
// 删除学生
public static void deleteStudent(ArrayList<Student> list) {
while (true) {
if (list.size() == 0 || list == null) {
System.out.println("还没有一个学生,请先添加学生再进行删除");
break;
}
// 输入要删除学生的id
System.out.println("请输入要删除学生的id:");
String id = enterString();
boolean used = isUsed(id, list);
if (used) {
System.out.println("正在删除id为:" + id + "的学生");
Student removeStudent = getStudent(id, list);
// 删除学生对象
list.remove(removeStudent);
break;
} else {
System.out.println("请确认您输入的学生id是否正确");
break;
}
}
}
// 修改学生信息
public static void changeStudent(ArrayList<Student> list) {
while (true) {
if (list.size() == 0 || list == null) {
System.out.println("还没有一个学生对象,请先添加学生再进行修改");
break;
}
System.out.println("请输入学生的id:");
String id = enterString();
boolean used = isUsed(id, list);
if (used) {
Student student = getStudent(id, list);
System.out.println("请输入修改的学生的姓名,现在的名字为:" + student.name);
student.name = enterString();
System.out.println("请输入修改的学生的年龄,现在的年龄为:" + student.age);
student.age = enterInt();
break;
} else {
System.out.println("请确认您输入的学生id是否正确");
}
}
}
// 定义一个获取对应学号id对象的方法
public static Student getStudent(String id, ArrayList<Student> list) {
// 遍历学生集合 依次获取到每个学生对象
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
// 判断id是否与学生的id相同 有相同则返回true
if (s.id.equals(id)) {
return s;
}
}
return null;
}
// 定义一个判断学号在集合中是否存在的一个方法,如果存在返回true,如果不存在返回false
public static boolean isUsed(String id, ArrayList<Student> list) {
// 遍历学生集合 依次获取到每个学生对象
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
// 判断id是否与学生的id相同 有相同则返回true
if (s.id.equals(id)) {
return true;
}
}
return false;
}
}
关于我
我的Github: PorterZhang2021
我的博客地址:PorterZhang