1.案例需求
添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从 集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示
退出系统:结束程序
ArrayList实现这个小项目
2.实现步骤
1、书写一个学生类Student:学号num 姓名name 年龄age 生日brithday
2、Application 入口类
构建欢迎页面,(菜单功能)
1、创建键盘录入对象
2、书写死循环重复展示每次选择功能页面内容
3、循环内:
输出页面内容
3、选择功能:
1、添加学生
1、提示用户录入学生的相关信息--- 使用到键盘录入对象
2、把这些信息封装到学生对象中 ---- 创建对象
3、创建添加学生的容器 --- 容器的长度未知选择集合, ArrayList
添加一次不能创建一次容器,添加到一个容器中 ,容器在循环外部创建唯一的容器
4、把学生对象添加到集合中
2、查看学生
1、判断集合中有没有学员
没有:
提示:没有人 先添加再查看
有:
1、制作显示学员信息的表头-----输出语句
2、遍历ArrayList集合获取学生对象
3、遍历过程中获取到学生对象,通过对象获取学生信息打印
3、修改学生
1、键盘录入要修改的学员的学号 都是通过唯一的标识修改,学号
2、查看学号的学员是不是存在
不存在:提示查无此人
存在:
提示输入修改的姓名 年龄 生日
重新跟学生对象这个属性赋值即可
提示修改成功
4、删除学生
1、键盘录入要删除的学员的学号 都是通过唯一的标识修改,学号
2、查看学号的学员是不是存在
不存在:提示查无此人
存在:
直接删除
提示删除成功
5、退出系统
//学生类
public class Student {
//创建student类
// 学号num 姓名name
// 年龄age 生日brithday
private String num;//学号
private String name;//姓名
private int age;//年龄
private String birthday;//生日
//属性set/get方法
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
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;
}
public Student() {//空参构造
}
public Student(String num, String name, int age, String birthday) {
//含参构造
this.num = num;
this.name = name;
this.age = age;
this.birthday = birthday;
}
@Override
public String toString() {//toString方法
return "Student{" +
"num='" + num + '\'' +
", name='" + name + '\'' +
", age=" + age +
", birthday='" + birthday + '\'' +
'}';
}
}
//实现功能
import java.util.ArrayList;
import java.util.Scanner;
//程序入口
public class Application {
//1.创建键盘录入对象
// 2、书写死循环重复展示每次选择功能页面内容
// 3、循环内:输出页面内容
public static Scanner sc = new Scanner(System.in);
//创建ArrayList集合,用于存储学生信息
public static ArrayList<Student> stus = new ArrayList<>();
public static void main(String[] args) {
while (true){
System.out.println("~~~欢迎使用XL'S学生信息管理系统~~~");
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("请选择:");
//用户确定进入的程序
String select = sc.nextLine();
switch (select){
case "1":
System.out.println("当前所在功能:添加学生信息");
addStudent();
break;
case "2":
System.out.println("当前所在功能:查看学生信息");
selectStudent();
break;
case "3":
System.out.println("当前所在功能:修改学生信息");
updateStudent();
break;
case "4":
System.out.println("当前所在功能:删除学生信息");
deleteStudent();
break;
case "5":
System.out.println("系统已退出,请确保信息以储存");
break;
default:
System.out.println("请选择正确的功能进行使用,其他功能请等待后续上线!");
break;
}
if (select.equals("5")){
break;//如果用户输入5,退出系统
}
}
}
//定义方法封装添加学生功能
public static void addStudent(){
System.out.println("请按照要求依次输入学生信息,并检查核对");
System.out.print("请输入学生学号:");
String num = sc.nextLine();
System.out.print("请输入学生姓名:");
String name = sc.nextLine();
System.out.print("请输入学生年龄:");
String age = sc.nextLine();
System.out.print("请输入学生生日:");
String birthday = sc.nextLine();
//创建学生对象,存储录入的学生信息;
Student s = new Student(num,name,Integer.parseInt(age)/*使用int转Integer方法*/,birthday);
//将学生对象添加到集合stus
//方法返回boolean类型,接收后可判别是否添加成功
boolean isSuc = stus.add(s);
System.out.println(isSuc? "信息录入成功!":"录入失败,请复核!");
}
//定义方法,封装查看学生信息的功能
public static void selectStudent(){
if (stus.isEmpty()){
//当返回为true时表示没有学生
System.out.println("暂时没有学生,请先去添加吧!");
}else {
//返回false,有学生
//显示学生信息,进行遍历
System.out.println("~~~ 学号 ~~~ 姓名 ~~~ 年龄 ~~~ 生日");
for (Student stu : stus) {
System.out.println(" "+stu.getNum()+" "+stu.getName()+" "+stu.getAge()+" "+stu.getBirthday());
}
}
}
//封定义方法封装修改学生信息的功能
public static void updateStudent(){
System.out.print("请输入需要修改学生的学号:");
String num = sc.nextLine();
//根据学号获取到学生对象
Student s = null;//创建默认学生对象 为空
//遍历学生对象
for (Student stu : stus) {
//判断学生学号和输入的学号是否相等
if (stu.getNum().equals(num)){
//学号相等,学生对象赋值给s
s = stu;
break;//跳出语句
}
}
//修改学生对象信息
if (s == null){//没有学生对象
System.out.println("查无此人,请检查学号是否正确!");
}else {
//找到学生对象了,开始修改
System.out.print("请输入需要修改的姓名:");
String name = sc.nextLine();
System.out.print("请输入需要修改的年龄:");
String sage = sc.nextLine();
System.out.print("请输入需要修改的生日:");
String birthday = sc.nextLine();
//设置学生信息
s.setName(name);
s.setAge(Integer.parseInt(sage));//年龄属性转为Integer类型
s.setBirthday(birthday);
System.out.println("修改完毕!");
}
}
//定义方法,封装删除学生的功能
public static void deleteStudent(){
System.out.print("请输入需要删除学生的学号:");
String num = sc.nextLine();//键盘获取学号
//遍历学生,查看是否有该学生
boolean flag = true;//定义标识记录是否找到要删除的学生
for (int i = 0; i < stus.size(); i++) {
Student stu = stus.get(i);
if (stu.getNum().equals(num)){//判断学号值是否一样
//为true(学号符合)
System.out.println("是否删除该学生:");
System.out.println("学号为:"+stu.getNum()+"姓名为:"+stu.getName()+"年龄为:"+stu.getAge()+"生日为:"+stu.getBirthday());
System.out.println("是,请按1;~~否,请按2;");
String choise = sc.nextLine();
switch (choise){
case "1":
stus.remove(i);
flag = false;
System.out.println("成功删除!");
break;
case "2":
System.out.println("已取消删除!");
break;
}
}
}
if (flag){
System.out.println("查无此人,请确认学号是否正确!");
}
}
}