案例需求
针对目前我们的所学内容,完成一个综合案例:
学生管理系统!该系统主要功能如下:
添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示
退出系统:结束程序
实现步骤
1.定义学生类,包含以下成员变量
学生类:Student成员变量:
学号:sid
姓名:name
年龄: age
生日:birthday
构造方法:无参构造
带四个参数的构造成员方法:
每个成员变量对应给出get/set方法
学生管理系统主界面的搭建
1 用输出语句完成主界面的编写
2 用Scanner实现键虚录入数据
3 用swiich语句完成操作的选择
4 用循环完成再次回到主界面
学生管理系统的添加学生功能实现步骤
1 用键盘录入选择添加学生
2定义一个方法,用于添加学生
显示提示信息,提示安输入何种信息
键盘录入学生对象所需要的数据
创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
将学生对象添加到集合中(保存)
给出添加成功提示
3调用方法
学生营理系统的查看学生功能实现步骤
1用键虚录入选择查看所有学生信息
2定义一个方法,用于直看学生信息
显示表头信息
将集合中数据取出按照对应格式显示学生信息,年龄显示补充”岁“
3调用方法
学生管理系统的删除学生功能实现步骤
1 用键盘录入选择删除学生信息
2定义一个方法,用于删除学生信息
显示提示信息
键盘录入要删除的学生学号
调用getIndex方法,查找该学号在集合的索引
如果索引为-1,提示信息不存在
如果索引不是-1,
调用remove方法删除并提示删除成功
调用方法
学生管理系统的修改学生功能实现步骤
1用键盘录入选择修改学生信息
2定义一个方法,用于修改学生信息
显示提示信息
键盘录入要修改的学生学目
调用getIndex方法,查找该学号在集合的索引
如果索引为-1,提示信息不存在
如果索引不是-1,键盘录入要修改的学生信息
集合修改对应的学生信息
给出修改成功提示
3调用方法
退出系统 使用System.exit(0)退出 JVM
总代码
package com.student.app;
import com.student.bean0.Student;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManagerApp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//
ArrayList<Student> students = 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实现键虚录入数据
System.out.println("请选择(1-5):");
String choose = sc.next();
//用swich语句完成操作的选择
switch (choose) {
case "1":
// System.out.println("添加学生信息");
//添加学生信息
//调用添加学生的方法
addStudent(students);
break;
case "2":
System.out.println("删除学生信息");
//删除学生信息
deleterStudent(students);
//students.size();
break;
case "3":
System.out.println("修改学生信息");
//修改学生信息
updateStudent(students);
break;
case "4":
System.out.println("查看学生信息");
//查看学生信息
queryAllStudents(students);
break;
case "5":
System.out.println("再见,欢迎下次再来");
//退出系统
break loop;
default:
System.out.println("您的输入有误,请重新输入");
break;
}
}
}
public static void updateStudent(ArrayList<Student> list) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要修改学生的学号");
//键盘录入要删除的学生学号
String sid = sc.next();
//调用getIndex方法,查找该学号在集合的索引
int index = getIndex(list, sid);
//如果索引为-1,提示信息不存在
if (index == -1) {
System.out.println("您输入的学号不存在,请重新输入");
} else {
//如果索引不是-1,键盘录入要修改的学生信息 学号不能修改
//集合修改对应的学生信息
//给出修改成功提示
System.out.println("请输入新的学生姓名");
String name = sc.next();
System.out.println("请输入新的学生年龄");
int age = sc.nextInt();
System.out.println("请输入新的学生生日");
String birthday = sc.next();
//获取集合中指定索引的学生对象
Student stu = list.get(index);
//集合修改对应的学生信息
stu.setName(name);
stu.setAge(age);
stu.setBirthday(birthday);
System.out.println("学生信息修改成功");
}
}
public static void deleterStudent(ArrayList<Student> list){
//显示提示信息
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要删除学生的学号");
//键盘录入要删除的学生学号
String sid = sc.next();
//调用getIndex方法,查找该学号在集合的索引
int index = getIndex(list,sid);
//如果索引为-1,提示信息不存在
if(index==-1){
System.out.println("您输入的学号不存在,请重新输入");
}else{
//如果索引不是-1,调用remove方法删除并提示删除成功
list.remove(index);
System.out.println("删除学生信息成功");
}
}
//通过学号查询学生在集合中的索引
public static int getIndex(ArrayList<Student>list,String sid){
//定义一个索引的变量 表示需要查询学号的学生在集合中的索引
int index = -1;
//循环遍历集合 进行比对
for(int i=0;i<list.size();i++){
//学生对象
Student student = list.get(i);
if(student.getSid().equals(sid)){
index = i;
break;
}
}
return index;
}
//向集合对象中添加学生信息
public static void addStudent(ArrayList<Student> list) {
Scanner sc = new Scanner(System.in);
//显示提示信息,提示安输入何种信息
//键盘录入学生对象所需要的数据
String sid = null;
while (true){
System.out.println("请输入学号:");
sid = sc.next();
int index = getIndex(list,sid);
//index = -1 该学号不存在 新增
if(index == -1){
break;
}else{
//index = -1 存在
System.out.println("您输入的学号重复了,请重新输入");
}
}
System.out.println("请输入姓名:");
String name = sc.next();
System.out.println("请输入年龄:");
int age = sc.nextInt();
System.out.println("请输入生日:");
String birthday = sc.next();
//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
Student student = new Student(sid, name, age, birthday);
// 将学生对象添加到集合中(保存)
list.add(student);
//给出添加成功提示
System.out.println("学生信息保存成功");
}
//查询所有学生信息
public static void queryAllStudents(ArrayList<Student>list) {
//判断如果没有学生信息 不展示表头
if(list.size()==0){
System.out.println("没有查询到学生信息,请添加学生后再操作此功能");
return;
}
//显示表头信息
System.out.println("学号\t\t\t姓名\t\t年龄\t\t生日");
// 将集合中数据取按照对应格式显示学生信息,年龄显示补充”岁“
for(int i=0;i< list.size();i++){
Student student = list.get(i);
System.out.println(student.getSid()+"\t\t\t"+student.getName()+"\t\t"+student.getAge()+"岁\t\t"+student.getBirthday());
}
}
}