前言
说明:本项目使用Java语言实现,在控制台实现,目的是练习ArrayList集合的增删改查方法,整个项目思路如下图所示:
一、项目结构
二、创建student类
package com.ithiema;
public class Student {
String id; //学生ID
String name;// 学生姓名
int age; //学生年龄
String birthday; //学生生日
public Student() {
}
public Student(String id, String name, int age, String birthday) {
this.id = id;
this.name = name;
this.age = age;
this.birthday = birthday;
}
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 String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
三、 实现增删改查方法
1.增加学生
/**
* 增加学生信息
*
* @param arrayList 学生信息集合数组
*/
private static void addStudentInfo(ArrayList<Student> arrayList) {
//1.从控制台输入要添加的学生信息
Scanner scanner = new Scanner(System.in);
//2.控制台获取student信息并将其放到student对象中
String stuId = "";
while (true) {
System.out.println("请输入要输出的学生学号");
stuId = scanner.next();
if (getIndex(stuId, arrayList) != -1) {
System.out.println("学号已存在,请重新输入");
} else {
break;
}
}
System.out.println("请输入要输出的学生姓名");
String name = scanner.next();
System.out.println("请输入要输出的学生年龄");
int age = scanner.nextInt();
System.out.println("请输入要输出的学生生日");
String birthday = scanner.next();
Student student = new Student(stuId, name, age, birthday);
//3.将学生添加到数组中
arrayList.add(student);
}
2.删除学生
/**
* 删除学生信息
*
* @param arrayList 学生信息集合数组
* @return 返回是否删除成功 -1表示失败 1表示成功
*/
private static int deleteStudentInfo(ArrayList<Student> arrayList) {
//1.从控制台输入要删除的学号
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要输出的学生学号");
String stuId = scanner.next();
//2.获取该学号所在集合中的下标
int index = getIndex(stuId, arrayList);
//3.判断index值是否为-1
if (index == -1) {
System.out.println("查无此人,删除失败");
return -1; //删除失败
} else {
arrayList.remove(index);
System.out.println("删除成功");
return 1; //删除成功
}
}
3.修改学生
/**
* 根据学号修改学生信息
*
* @param arrayList 学生信息集合数组
* @return 返回修改是否成功
*/
private static int updateStudentInfo(ArrayList<Student> arrayList) {
//1.从控制台输入要修改的学号
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要输出的学生学号");
String stuId = scanner.next();
//2.获取该学号所在集合中的下标
int index = getIndex(stuId, arrayList);
//3.判断index值是否为-1
if (index == -1) {
System.out.println("查无此人,不能修改");
return -1; //修改失败
} else {
Student stu = new Student();
System.out.println("请输入姓名");
stu.setName(scanner.next());
System.out.println("请输入年龄");
stu.setAge(scanner.nextInt());
System.out.println("请输入生日");
stu.setBirthday(scanner.next());
stu.setId(stuId);
arrayList.set(index, stu);
System.out.println("修改成功");
return 1; //修改成功
}
}
4.查看学生
/**
* 查看学生信息
*
* @param arrayList 学生信息集合数组
*/
private static void queryStudentInfo(ArrayList<Student> arrayList) {
//查询集合是否为空,为空代表没有学生信息
if (arrayList.size() == 0) {
System.out.println("不存在学生");
} else {
System.out.println("学号\t\t\t姓名\t\t年龄\t生日");
for (int i = 0; i < arrayList.size(); i++) {
Student student = arrayList.get(i);
System.out.println(student.getId() + "\t\t\t" + student.getName()
+ "\t\t" + student.getAge() + "\t" + student.getBirthday());
}
}
}
5.整体代码
package com.ithiema;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentApplication {
public static void main(String[] args) {
//创建一个扫描类,目的是能够接受控制台的输入
Scanner scanner = new Scanner(System.in);
//创建一个ArrayList集合,用户存放学生集合
ArrayList<Student> arrayList = new ArrayList<>();
//测试假数据
arrayList.add(new Student("1008601", "张三", 18, "1999-01-13"));
arrayList.add(new Student("1008602", "李四", 19, "1999-01-14"));
arrayList.add(new Student("1008603", "王五", 20, "1999-01-15"));
//使用while,实现重复实现菜单,直到执行 System.exit(0); 退出Jvm
while (true) {
//菜单栏
System.out.println("---欢迎来到学生管理系统---");
System.out.println("-------------------------------");
System.out.println("1.添加学生 ");
System.out.println("2.删除学生 ");
System.out.println("3.修改学生 ");
System.out.println("4.查看学生 ");
System.out.println("5. 退出系统 ");
int number = scanner.nextInt();
switch (number) {
case 1:
addStudentInfo(arrayList);
break;
case 2:
deleteStudentInfo(arrayList);
break;
case 3:
updateStudentInfo(arrayList);
break;
case 4:
queryStudentInfo(arrayList);
break;
case 5:
System.out.println("已经退出....");
System.exit(0); // 0 表示正常退出虚拟机
break;
default:
System.out.println("非法输出...请重新输入");
}
}
}
/**
* 查看学生信息
*
* @param arrayList 学生信息集合数组
*/
private static void queryStudentInfo(ArrayList<Student> arrayList) {
//查询集合是否为空,为空代表没有学生信息
if (arrayList.size() == 0) {
System.out.println("不存在学生");
} else {
System.out.println("学号\t\t\t姓名\t\t年龄\t生日");
for (int i = 0; i < arrayList.size(); i++) {
Student student = arrayList.get(i);
System.out.println(student.getId() + "\t\t\t" + student.getName()
+ "\t\t" + student.getAge() + "\t" + student.getBirthday());
}
}
}
/**
* 获取学号在集合中的位置
*
* @param id 学生学号
* @param arrayList 学生信息集合数组
* @return 返回学生信息在数组集合中的下标
*/
private static int getIndex(String id, ArrayList<Student> arrayList) {
if (arrayList.size() == 0) return -1;
//1.循环遍历,获取下标
for (int i = 0; i < arrayList.size(); i++) {
//获取每一个对象
Student student = arrayList.get(i);
//判断当前Student中的ID与目标id是否相同
if (id.equals(student.getId())) {
return i;
}
}
// 不存在则返回-1
return -1;
}
/**
* 删除学生信息
*
* @param arrayList 学生信息集合数组
* @return 返回是否删除成功 -1表示失败 1表示成功
*/
private static int deleteStudentInfo(ArrayList<Student> arrayList) {
//1.从控制台输入要删除的学号
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要输出的学生学号");
String stuId = scanner.next();
//2.获取该学号所在集合中的下标
int index = getIndex(stuId, arrayList);
//3.判断index值是否为-1
if (index == -1) {
System.out.println("查无此人,删除失败");
return -1; //删除失败
} else {
arrayList.remove(index);
System.out.println("删除成功");
return 1; //删除成功
}
}
/**
* 根据学号修改学生信息
*
* @param arrayList 学生信息集合数组
* @return 返回修改是否成功
*/
private static int updateStudentInfo(ArrayList<Student> arrayList) {
//1.从控制台输入要修改的学号
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要输出的学生学号");
String stuId = scanner.next();
//2.获取该学号所在集合中的下标
int index = getIndex(stuId, arrayList);
//3.判断index值是否为-1
if (index == -1) {
System.out.println("查无此人,不能修改");
return -1; //修改失败
} else {
Student stu = new Student();
System.out.println("请输入姓名");
stu.setName(scanner.next());
System.out.println("请输入年龄");
stu.setAge(scanner.nextInt());
System.out.println("请输入生日");
stu.setBirthday(scanner.next());
stu.setId(stuId);
arrayList.set(index, stu);
System.out.println("修改成功");
return 1; //修改成功
}
}
/**
* 增加学生信息
*
* @param arrayList 学生信息集合数组
*/
private static void addStudentInfo(ArrayList<Student> arrayList) {
//1.从控制台输入要添加的学生信息
Scanner scanner = new Scanner(System.in);
//2.控制台获取student信息并将其放到student对象中
String stuId = "";
while (true) {
System.out.println("请输入要输出的学生学号");
stuId = scanner.next();
if (getIndex(stuId, arrayList) != -1) {
System.out.println("学号已存在,请重新输入");
} else {
break;
}
}
System.out.println("请输入要输出的学生姓名");
String name = scanner.next();
System.out.println("请输入要输出的学生年龄");
int age = scanner.nextInt();
System.out.println("请输入要输出的学生生日");
String birthday = scanner.next();
Student student = new Student(stuId, name, age, birthday);
//3.将学生添加到数组中
arrayList.add(student);
}
}