一、案例需求:
针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下:
添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从 集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示
退出系统:结束程序
ArrayList实现这个小项目
二、实现步骤:
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
、退出系统
三、项目实现
废话不多说,咱直接上代码
Student类
package com.offcn.student;
public class Student {
//封装所有学生属性
private String id;
private String name;
private int age;
private 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;
}
//所有封装属性的setter、getter方法
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;
}
}
主类:
package com.offcn.main;
import com.offcn.student.Student;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentSystem {
private static ArrayList<Student> list = new ArrayList<>();
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
//创建学生管理系统欢迎界面及菜单
//死循环
//用if或者switch语句判断用户的选择(个人喜好if语句)
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.退出系统");
System.out.print("请输入您的选择:");
int select = sc.nextInt();
if(select==1){
//调用添加学生信息方法
addStudent();
}else if(select==2){
//调用修改学生信息方法
setStudent();
}else if (select==3){
//调用删除学生信息方法
removeStudent();
}else if(select==4){
//调用展示全部学生信息方法
showStudent();
}else if (select==5){
//退出程序
System.out.println("感谢使用学生管理系统!");
break;
}
}
}
//添加学生信息方法
public static void addStudent(){
System.out.println("添加学生信息");
while(true){
//通过键盘录入输入属性值
System.out.print("学号:");
String id = sc.next();
System.out.print("姓名:");
String name = sc.next();
System.out.print("年龄:");
int age = sc.nextInt();
System.out.print("生日:");
String birthday = sc.next();
//将输入的属性传给Student对象,并且将对象存入集合list
list.add(new Student(id,name,age,birthday));
//判断操作是否结束
System.out.print("是否继续(Y/N):");
String a = sc.next();
if(a.equals("N")){
break;
}
}
}
//修改学生信息方法
public static void setStudent(){
System.out.println("修改学生信息!");
//通过学号来寻找要修改学生的对象
System.out.print("输入学生学号:");
String id1 = sc.next();
//一个空学生对象待用
Student stu = null;
//增强for循环遍历集合
for (Student student : list) {
//将遍历得到的对象中的id与用户输入的id比较
if(id1.equals(student.getId())){
//如果相同,则进行修改
//将遍历得到的对象赋值给stu
stu = student;
//重新给对象的属性赋值
System.out.print("学号:");
stu.setId(sc.next());
System.out.print("姓名:");
stu.setName(sc.next());
System.out.print("年龄:");
stu.setAge(sc.nextInt());
System.out.print("生日:");
stu.setBirthday(sc.next());
break;
}
}
//如果执行了for循环之后师徒仍然为null,说明用户输入的id在集合中并不存在
if(stu==null){
System.out.println("查无此人");
}
System.out.println("是否继续(Y/N):");
String b = sc.next();
if(b.equals("Y")){
setStudent();
}
}
// 删除学生信息方法
public static void removeStudent(){
//通过学号在集合中寻找要删除的学生
System.out.print("输入你要删除学生的学号:");
String id = sc.next();
//避免并发异常的出现
//遍历出所有信息进行id比较
for (int i = 0;i<list.size();i++) {
Student student = list.get(i);
if(student.getId().equals(id)){
//删除相应的学生对象
list.remove(list.get(i));
System.out.println(student.getName()+"已被删除");
break;
}else if(i==list.size()-1&&!student.getId().equals(id)){//如果比较到最后仍然没有找到相同的,则是查无此人
System.out.println("查无此人");
}
}
System.out.println("是否继续(Y/N):");
String b = sc.next();
if(b.equals("Y")){
//这个方法没有用while循环保证操作的持续性,所以在用户选择继续时,重新调用方法自身
removeStudent();
}
}
//查看所有学生信息方法
public static void showStudent(){
while(true){
//判断集合是否为空,为空是isEmpty=true,反之为false
if(list.isEmpty()){
System.out.println("无任何学生信息!");
}else {
//不为空时遍历集合,打印所有学生信息
for (Student student : list) {
System.out.println("学号:" + student.getId() + " 姓名:" + student.getName() + " 年龄:" + student.getAge() + " 生日:" + student.getBirthday());
}
}
System.out.print("输入N退出:");
String a = sc.next();
if(a.equals("N")){
break;
}
}
}
}
四、运行结果
1、程序菜单
2、添加学生信息
3、修改学生信息
4、删除学生信息
5、查看所有学生信息