题目:使用 List 集合实现简易的学生信息管理系统,要求打印字符界面提示用户选择相应的功 能,根据用户输入的选择去实现增加、删除、修改、查找以及遍历所有学生信息的功能。其中学生的信息有:学号、姓名、年龄。 要求: 尽量将功能拆分为多个.java 文件。
思路:增删改查遍历分别对应5种方法,先创建一个学生类用来封装学生的学号,姓名和年龄,然后创建一个List用来保存学生信息,最后分别对这个List进行增删改查遍历的操作即可,具体代码如下。
package com.lagou.homework.part3.student;
/**
* student类
*/
public class Student {
private int number;
private String name;
private int age;
public Student() {
}
public Student(int number, String name, int age) {
this.number = number;
this.name = name;
this.age = age;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
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;
}
@Override
public String toString() {
return "Student{" +
"number=" + number +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
package com.lagou.homework.part3.student;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
/**
* student功能实现类
*/
public class StudentImpl {
// 初始化界面
public static int show(){
System.out.println("简易学生信息管理系统");
System.out.println("--------------------------------------------");
System.out.println("1.新增学生 2.删除学生 3.修改学生信息");
System.out.println("4.查找学生信息 5.查看所有学生信息 6.退出系统");
System.out.println("--------------------------------------------");
System.out.println("请选择相应功能:");
Scanner sc = new Scanner(System.in);
int choose = sc.nextInt();
return choose;
}
/**
* 简易新增学生功能,目前不对是否有重复学号做验证
* @param lt 保存学生信息的list
*/
public static void add(List<Student> lt){
Scanner sc = new Scanner(System.in);
System.out.println("新增学生界面");
int number;
String name;
int age;
// 用来控制是否继续新增学生
String isContinue = "Y";
while ("Y".equals(isContinue) || "y".equals(isContinue) ){
System.out.println("请输入新增学生的学号:");
number = sc.nextInt();
System.out.println("请输入新增学生的姓名:");
name = sc.next();
System.out.println("请输入新增学生的年龄:");
age = sc.nextInt();
lt.add(new Student(number, name, age));
System.out.println("是否继续新增?Y/N");
isContinue = sc.next();
System.out.println("是否继续" + isContinue);
}
System.out.println("退出新增学生界面。。。");
}
/**
* 按学号删除学生信息,如果学号有重复,则只删除找到的第一个符合学号的学生
* @param lt 保存学生信息的list
*/
public static void delStu(List<Student> lt){
Scanner sc = new Scanner(System.in);
System.out.println("删除学生界面");
// 学生学号
int number ;
// list里下标位置
int listIndex = 0;
// 用来识别是否已经删除了学生
int isDel = 0;
// 用来控制是否继续删除学生
String isContinue = "Y";
while ("Y".equals(isContinue) || "y".equals(isContinue) ){
isDel = 0;
listIndex = 0;
System.out.println("请输入待删除学生的学号:");
number = sc.nextInt();
// 循环获取list里所有学生信息
for (Student s:lt){
// 如果找到该学生学号,则删除该学生
if (number == s.getNumber()){
lt.remove(listIndex);
System.out.println("学号为" + number +"的学生已删除。。。");
isDel++;
}
listIndex++;
}
// 说明输入的学号没有在list里找到
if (0 == isDel){
System.out.println("未找到该学号的学生,请重新输入!");
}
System.out.println("是否继续删除?Y/N");
isContinue = sc.next();
}
System.out.println("退出删除学生界面。。。");
}
/**
* 按学号修改学生信息,默认学号不能被修改,如果学号有重复则只会修改查找到的第一个学号
* 目前一次只能修改学生的一个信息,如果需要修改多个信息,需重新输入该学生学号
* @param lt 保存学生信息的list
*/
public static void modifyStu(List<Student> lt){
Scanner sc = new Scanner(System.in);
System.out.println("修改学生界面");
int number;
String name;
int age;
// 用来控制是否找修改了学生
int isModify = 0;
// 用来控制是否继续修改学生
String isContinue = "Y";
while ("Y".equals(isContinue) || "y".equals(isContinue) ){
isModify = 0;
System.out.println("请输入待修改学生的学号:");
number = sc.nextInt();
// 查找该学生信息
for (Student s:lt){
// 如果找到该学生学号,则先显示
if (number == s.getNumber()){
System.out.println("学号为" + number +"的学生信息为" );
System.out.println("学号:" +number + " 姓名:" + s.getName() + " 年龄:" + s.getAge());
System.out.println("请输入待修改的信息");
System.out.println("-----------------------------------");
System.out.println("1.姓名 2.年龄");
System.out.println("-----------------------------------");
// 用来接收输入信息
number = sc.nextInt();
// 判断是需要修改姓名还是要修改年龄
if (1 == number){
System.out.println("请输入学生新的姓名");
name = sc.next();
s.setName(name);
}else if(2 == number){
System.out.println("请输入学生新的年龄");
age = sc.nextInt();
s.setAge(age);
}else{
System.out.println("输入错误,请重新输出!");
}
// 说明有学生信息被修改了
isModify++;
}
}
// 说明学生没有被修改过
if (0 == isModify){
System.out.println("未找到该学号的学生,请重新输入!");
}
System.out.println("是否继续修改?Y/N");
isContinue = sc.next();
System.out.println("是否继续" + isContinue);
}
System.out.println("退出修改学生界面。。。");
}
/**
* 查找学生功能
* @param lt 保存学生信息的list
*/
public static void findStu(List<Student> lt){
Scanner sc = new Scanner(System.in);
System.out.println("查找学生界面");
int number;
String name;
int age;
// 用来控制是否找找到了学生
int isFind = 0;
// 用来控制是否继续查找学生
String isContinue = "Y";
while ("Y".equals(isContinue) || "y".equals(isContinue) ){
isFind = 0;
System.out.println("请输入按哪种条件查找学生:");
System.out.println("---------------------------");
System.out.println("1.学号 2.姓名 3.年龄");
System.out.println("---------------------------");
number = sc.nextInt();
// 查找该学生信息
switch (number){
case 1:
System.out.println("请输入待查找学生的学号");
number = sc.nextInt();
// 循环从list里取出学生信息去做对比
for (Student s:lt){
if (number == s.getNumber()){
System.out.println("学号为" + number + "的学生姓名为:" +
s.getName() + "年龄为:" + s.getAge());
isFind++;
}
}
break;
case 2:
System.out.println("请输入待查找学生的姓名");
name = sc.next();
for (Student s:lt){
if (name.equals(s.getName()) ){
System.out.println("姓名为" + name + "的学生学号为:" +
s.getNumber() + "年龄为:" + s.getAge());
isFind++;
}
}
break;
case 3:
System.out.println("请输入待查找学生的年龄");
age = sc.nextInt();
for (Student s:lt){
if (age == s.getAge()){
System.out.println("年龄为" + age + "的学生学号为:" +
s.getNumber() + "姓名为:" + s.getName());
isFind++;
}
}
break;
default:
System.out.println("请输入正确序号!");
}
// 没有找到学生信息
if (0 == isFind){
System.out.println("未找到学生信息,请重新输入!");
}
System.out.println("是否继续查找?Y/N");
isContinue = sc.next();
System.out.println("是否继续" + isContinue);
}
System.out.println("查找学生界面。。。");
}
/**
* 遍历所有学生信息
* @param lt 保存学生信息的list
*/
public static void findAllStu(List<Student> lt){
Scanner sc = new Scanner(System.in);
System.out.println("所有学生信息界面");
int number;
String name;
int age;
for (Student s:lt){
System.out.println(s.getNumber() + "学生姓名为:" + s.getName()
+ "学生年龄为:" + s.getAge());
}
System.out.println("退出所有学生信息界面。。。");
}
}
package com.lagou.homework.part3.student;
import java.util.LinkedList;
import java.util.List;
/**
* student测试类
*/
public class StudentTest {
public static void main(String[] args) {
List<Student> lt = new LinkedList<>();
Boolean isExit = false;
while (!isExit){
int choose = StudentImpl.show();
// 根据界面选择来调用增删改查遍历方法
switch (choose){
case 1:
StudentImpl.add(lt);
break;
case 2:
StudentImpl.delStu(lt);
break;
case 3:
StudentImpl.modifyStu(lt);
break;
case 4:
StudentImpl.findStu(lt);
break;
case 5:
StudentImpl.findAllStu(lt);
break;
case 6:
System.out.println("退出登录。。。。。");
isExit = true;
break;
default:
System.out.println("请输入正确的序号!");
}
}
}
}