先建一个学生类用于将学生属性定义出来,将属性私有,使用getter和setter方法调用,然后建立一个空参一个有参构造,方便调用
//Student学生类
public class Student {
// 学号:sid
private String sid;
// 姓名:name
private String name;
// 年龄:age
private int age;
// 生日:birthday
private String birthday;
public Student() {
}
//有参构造
public Student(String sid, String name, int age, String birthday) {
this.sid = sid;
this.name = name;
this.age = age;
this.birthday = birthday;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
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;
}
}
然后创建一个执行类,用于完成程序运行,将每个功能都设置为了一个方法用switch case去调用方法
import java.util.ArrayList;
import java.util.Scanner;
/*
* 1.添加学生:通过键盘录入学生信息,添加到集合中
2.删除学生:通过键盘录入要删除学生的学号,如果学号存在,将该学生对象从集合中删除;
* 如果学号不存在, 提示,无法删除
3.修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改, 修改完毕保存在集合中
4.查看学生:将集合中的学生对象信息进行展示
5.退出系统:结束程序
* */
public class StudentManager {
//因为为了方便调用,特别将ArrayList和Scanner方法放在了成员变量里面。
static Scanner sc = new Scanner(System.in);
static ArrayList<Student> list = new ArrayList<>();
public static void main(String[] args) {
//为了多次输出,因此使用了while(true)死循环
while(true){
System.out.println("欢迎使用学生管理系统,请从1-5中选择操作,1添加 2删除 3修改 4查询 5退出系统");
int choose = sc.nextInt();
//适应switch case方法提供选择操作
switch(choose){
case 1:
addNumber();
// 添加学生方法调用
// 添加学生学号不重复
break;
case 2:
delete();
// 删除学生方法调用
break;
case 3:
revise();
// 修改学生信息方法调用
break;
case 4:
reach();
// 查看所有学生方法调用
break;
case 5:
System.out.println("谢谢使用,退出系统");
// System.exit(0);
return;
default:
System.out.println("输入数据有误,请从1-5中选择,如需退出系统,输入5");
}
}
}
//添加学生信息
public static void addNumber(){
System.out.println("请输入学号");
String sid = sc.next();
//调用的根据学号查学生信息的方法判断键盘录入的学号是否存在
//使的学号唯一
Student s = chaSid(sid);
//如果不存在可以向里面加入该学号的学生信息
if (s == null){
System.out.println("请输入姓名");
String name = sc.next();
System.out.println("请输入年龄");
int age = sc.nextInt();
System.out.println("请输入生日");
String birthday = sc.next();
//使用Student类里面的构造方法赋值
Student stu = new Student(sid,name,age,birthday);
list.add(stu);
System.out.println("添加成功");
}else {
System.out.println("已有该学生无法再次添加");
}
}
//根据学号查询该学生信息
public static Student chaSid(String sid){
for (Student s: list){
String a = s.getSid();
if (a.equals(sid)){
//如果查询到则返回学生信息
return s;
}
}
return null;
}
//查询学生信息
//遍历集合然后输出即可
public static void reach(){
System.out.println("学号"+" "+"姓名"+" "+"年龄"+" "+"生日");
for (Student s: list){
System.out.println(s.getSid()+" "+s.getName()+" "+s.getAge()+"岁"+" "+s.getBirthday());
}
}
//删除学生信息
//先通过调用chaSi的方法通过学号来查询学生信息
//如果查询到,那么就可以根据学号进行删除
//如果没有查询到,那么返回为找到该同学
public static void delete(){
System.out.println("请输入你要删除的学生的学号");
String sid = sc.next();
Student s = chaSid(sid);
if (s == null){
System.out.println("没有找到该同学");
}else {
list.remove(s);
System.out.println("删除成功");
}
}
//修改学生信息
//先通过chaSid先根据学号查询集合里面学生信息
//如果查询到那么可以修改
//如果没有查询到,那么输出没有找到该学生
public static void revise(){
System.out.println("请输入你要修改的学生的学号");
String sid = sc.next();
//查询sid是否在集合中存在
Student s = chaSid(sid);
System.out.println("请输入姓名");
String name = sc.next();
System.out.println("输入年龄");
int age = sc.nextInt();
System.out.println("输入生日");
String birthday = sc.next();
//如果不存在
if (s == null){
System.out.println("没有查到该同学的信息");
}else {
int Index = 0;
//通过遍历查询在集合中所有的学号
for (int index = 0;index <list.size();index++){
Student ss = list.get(index);
//如果输入的学号所查询到的信息等于集合中的某一个学号的信息
if (s.equals(ss)){
//将集合中的那个学号的索引位置传递出来
Index = index;
}
//将集合中该索引位置的元素进行替换
//以便于进行修改
list.set(Index,new Student(sid,name,age,birthday));
}
}
}
}