题目需求:
学生类:
属性 :id、姓名、年龄、家庭住址
添加功能
键盘录入每一个学生信息并添加,需要满足以下要求:
*id唯一
删除功能
键盘录入要删除的学生id,需要满足以下要求:
*id存在才能删除
*id不存在,需要提示不存在,并回到初始菜单
修改功能
键盘录入要修改的学生id,需要满足以下要求:
*id存在,继续录入需要修改的信息
*id不存在,需要提示不存在,并回到初始菜单
查询功能
打印所有学生信息,需要满足以下要求:
*如果没有学生信息,提示:当前无学生信息,请添加后再查询
学生类
package com.iweb.list.test1.StudentSystem;
/**
* @author Caesar
* @date 2022 11 2022/11/14 15:50
* @description 类的描述与介绍
*/
public class Student {
private int id;
private String name;
private int age;
private String address;
public Student() {
}
public Student(int id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public int getId() {
return id;
}
public void setId(int 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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
测试类:
package com.iweb.list.test1.StudentSystem;
import java.util.ArrayList;
import java.util.Scanner;
/**
* @author Caesar
* @date 2022 11 2022/11/14 16:01
* @description 类的描述与介绍
*/
public class StudentSystem {
public static void main(String[] args) {
// 定义一个集合,用于存储学生对象
ArrayList<Student> list = new ArrayList<>();
loop:
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:退出<<<<<<<<<<<<<<<<<<<<<<<");
Scanner scr = new Scanner(System.in);
String chose = scr.next();
switch (chose) {
case "1":
addStudents(list);
break;
case "2":
deleteStudent(list);
break;
// for (int i = 0; i < list.size(); i++) {
// System.out.println(list.get(i).getId());
// }
case "3":
updateStudent(list);
break;
case "4":
searchStudent(list);
break;
case "5":
System.out.println("谢谢惠顾!!!");
// break loop;
// 这里的loop用于给while循环起名
// 结束指定循环,才会结束
// 若直接break,只能跳出switch case这个循环,不能跳出外面的while循环
// 退出的第二种写法:
System.exit(0);
// 表示虚拟机停止运行
default:
System.out.println("没有这个选项!请重新输入");
}
}
}
// 用于添加学生
public static void addStudents(ArrayList<Student> list) {
Scanner scr = new Scanner(System.in);
Student stu = new Student();
// 利用空参构造创建学生对象
System.out.println("请输入学生id");
int sid = scr.nextInt();
stu.setId(sid);
boolean flag = contains(list, sid);
if (flag) {
// 表示id已经存在
System.out.println("学生信息已存在!");
} else {
// 表示id不存在,并插入学生信息
System.out.println("请输入学生姓名");
String sname = scr.next();
stu.setName(sname);
System.out.println("请输入学生年龄");
int sage = scr.nextInt();
stu.setAge(sage);
System.out.println("请输入学生地址");
String saddress = scr.next();
stu.setAddress(saddress);
list.add(stu);
System.out.println("学生信息添加成功!");
}
}
public static void deleteStudent(ArrayList<Student> list) {
Scanner scr = new Scanner(System.in);
System.out.println("请输入要删除的学生id");
int sid = scr.nextInt();
int index=getIndex(list,sid);
// 调用下面的getIndex方法获取集合的索引
// 如果索引>=0,则表示对象存在,反之不存在
if(index>=0){
// 添加确认删除
// Y:确认删除,N:取消删除
System.out.println("确认删除:Y,取消删除:N");
String delete=scr.next();
if(delete.equals("Y")||delete.equals("y")){
list.remove(index);
System.out.println("删除成功!");
}else if(delete.equals("N")||delete.equals("n")){
System.out.println("已取消删除!");
}else {
System.out.println("输入有误!");
}
}else{
System.out.println("你要删除的id不存在!");
}
}
public static void updateStudent(ArrayList<Student> list) {
Scanner scr = new Scanner(System.in);
Student stu = new Student();
System.out.println("请输入需要修改信息的学生id");
int sid = scr.nextInt();
int index = getIndex(list, sid);
if (index >= 0) {
list.remove(index);
stu.setId(sid);
System.out.println("请输入需要求改的姓名");
String sname = scr.next();
stu.setName(sname);
System.out.println("请输入需要修改的年龄");
int sage = scr.nextInt();
stu.setAge(sage);
System.out.println("请输入需要求改的地址");
String saddress = scr.next();
stu.setAddress(saddress);
System.out.println("您要修改的信息为:");
System.out.println("姓名:"+sname);
System.out.println("年龄:"+sage);
System.out.println("地址:"+saddress);
System.out.println("确认修改:Y,取消修改:N");
String comfirm=scr.next();
if(comfirm.equals("Y")||comfirm.equals("y")){
System.out.println("修改成功!");
list.add(stu);
}else if(comfirm.equals("N")||comfirm.equals("n")){
System.out.println("已取消!");
}else {
System.out.println("输入有误!");
}
} else {
System.out.println("学生信息不存在!");
}
}
// 查询学生
public static void searchStudent(ArrayList<Student> list) {
if (list.size() == 0) {
System.out.println("当前无学生信息,请添加后再查");
// 结束方法
return;
} else {
System.out.println("id\t姓名\t年龄\t家庭住址");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getId() + "\t" + list.get(i).getName() +
"\t" + list.get(i).getAge() + "\t\t" + list.get(i).getAddress());
}
}
}
// 写一个方法用于判断id是否在集合中存在
public static boolean contains(ArrayList<Student> list, int id) {
int index = getIndex(list, id);
if (index >= 0) {
return true;
}
return false;
// 3.存在,true,不存在,false
}
// 写一个方法用于获取学生对象的索引
public static int getIndex(ArrayList<Student> list, int id) {
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
int sid = stu.getId();
if (id == sid) {
return i;
}
}
return -1;
}
}