简述
在控制台实现一个对学生信息的控制。并且自行编写一个仿ArrayList< E >集合的集合
目录
- 实体类
- 自定义集合接口
- 自定义集合实现类
- 过滤器接口
- 比较排序接口
- 服务层面类
- 管理类
- 菜单
实体类
package com.project.entity;
import java.io.Serializable;
import java.util.UUID;
/**
* Student实体类
*/
public class Student implements Serializable {
// 学号
private int id;
// 姓名
private String name;
// 年龄
private int age;
// 性别
private char gender;
// 班级名
private String className;
// java分数
private double javaScore;
// html分
private double htmlScore;
// spring分
private double springScore;
// 总分
private double totalScore;
// 自增id
public static int count = 0; // 扩展、属性不是私有
// 无参
public Student() {}
// 无成绩有参数 基本信息
public Student(String name, int age, char gender, String className) {
this.id = ++count;
this.name = name;
this.age = age;
this.gender = gender;
this.className = className;
}
// 有成绩,有参构造
public Student(String name, int age, char gender, String className, double javaScore, double htmlScore, double springScore) {
this(name,age,gender,className);
this.javaScore = javaScore;
this.htmlScore = htmlScore;
this.springScore = springScore;
this.totalScore = javaScore + htmlScore + springScore;
}
public int getId() {
return 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 char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public double getJavaScore() {
return javaScore;
}
public void setJavaScore(double javaScore) {
this.javaScore = javaScore;
//修改总成绩
setTotalScore();
}
public double getHtmlScore() {
return htmlScore;
}
public void setHtmlScore(double htmlScore) {
this.htmlScore = htmlScore;
//修改总成绩
setTotalScore();
}
public double getSpringScore() {
return springScore;
}
public void setSpringScore(double springScore) {
this.springScore = springScore;
// 修改总成绩
setTotalScore();
}
public double getTotalScore() {
return totalScore;
}
//修改总分
private void setTotalScore(){
this.totalScore = this.htmlScore + this.javaScore + this.springScore;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", gender=" + gender +
", className='" + className + '\'' +
", javaScore=" + javaScore +
", htmlScore=" + htmlScore +
", springScore=" + springScore +
", totalScore=" + totalScore +
'}';
}
}
自定义集合接口
package com.project.util;
/**
* 增加:
* add(E e)
* add(int index,E e)
* 删除:
* remove(E e)
* remove(int index)
* 改:
* set(int index,E e)
* 获取:
* int size()
* Object[] toArray();
* boolean isEmpty();
* boolean contains(Object o);
* MyList<E> subList(int start,int index)
* int indexOf(Object o)
* int lastIndexOf(Object o)
* E get(int index)
* @param <E>
*/
public interface MyList<E> {
/**
* 添加方法,添加到元素集合末尾
* @param e 泛型
* @return true成功 false失败
*/
boolean add(E e);
/**
* 添加方法,指定下标位置进行添加
* @param index 指定的下标位置
* @param e 元素泛型
* @return true成功 false失败
*/
boolean add(int index,E e);
/**
* 移除方法,指定移除 的元素
* @param o 元素
* @return 移除的元素
*/
E remove(Object o);
/**
* 移除方法,指定移除的下标
* @param index 指定的下标
* @return 移除的元素
*/
E remove(int index);
/**
* 覆盖方法,替换指定下标的元素
* @param index 指定的下标
* @param e 替换的元素
* @return 被替换的元素
*/
E set(int index,E e);
/**
* 获取集合中有效元素的个数
* @return
*/
int size();
/**
* 获取当前集合中,所有元素的Object类型的数组
*
* @return Object[] 包含集合中所有的对象
*/
Object[] toArray();
/**
* 判断当前集合是否为空
* @return 如果一个元素都没有,返回true,有返回false
*/
boolean isEmpty();
/**
* 判断某个对象o在集合中是否存在
* @param o 需要查找的对象
* @return 存在true,否则false
*/
boolean contains(Object o);
/**
* 根据需求,返回start到end之间的MyList集合子元素
* @param start 要求有效的下标范围,不能超过end
* @param index 要求有效的下标范围,不能小于等于start
* @return 数据符合要求,返回一个当前集合的子集合。若数据不符合要求,返回NULL
*/
MyList<E> subList(int start,int index);
/**
* 获得指定元素在几何中第一次出现的位置
* @param o 指定元素
* @return 找到返回值 返回下标,没找到返回-1
*/
int indexOf(Object o);
/**
* 获取指定元素在集合中最后一次出现的位置
* @param o 指定的元素
* @return 找到返回值 返回下表,没找到返回-1
*/
int lastIndexOf(Object o);
/**
* 根据指定的下标位置,获取元素
* @param index 下标
* @return 返回对象
*/
E get(int index);
}
自定义集合实现类
package com.project.util.impl;
import com.project.util.MyList;
import java.util.Arrays;
/**
* 自定义一个ArrayList类
* @param <E>
*/
public class MyArrayList<E> implements MyList<E> {
// 定义一个Object类型数组
private Object[] elementData = null;
// 定义数组默认初始化长度
private final static int DEFAULT_CAPACITY = 10;
// 定义一个数组下标标识
private int size = 0;
// 无参构造方法
public MyArrayList(){
this(DEFAULT_CAPACITY);
}
// 有参构造方法
public MyArrayList(int initCapacity){
// 判断initCapacity范围
if(initCapacity <0 || initCapacity> Integer.MAX_VALUE){
throw new IllegalArgumentException("init param error!");
}
elementData = new Object[initCapacity];
}
/**
* 添加方法,添加到元素集合末尾
*
* @param e 泛型
* @return true成功 false失败
*/
@Override
public boolean add(E e) {
// 1.判断数组容量是否需要扩容
if(size == elementData.length){
grow(size+1); //每次库容一个
}
elementData[size++] = e;
return true;
}
/**
* 添加方法,指定下标位置进行添加
*
* @param index 指定的下标位置
* @param e 元素泛型
* @return true成功 false失败
*/
@Override
public boolean add(int index, E e) {
// 判断index是否正常范围
checkIndex(index);
if(elementData.length == size){
grow(size+1);
}
//移动for
for (int i = size;i > index;i--){
elementData[i] = elementData[i-1];
}
size ++;
elementData[index] = e;
return true;
}
/**
* 移除方法,指定移除 的元素
*
* @param o 元素
* @return 移除的元素
*/
@Override
public E remove(Object o) {
int record = -1;
//1.遍历查询元素o是否存在,存在则记录下标
for(int i=0;i <size;i++){
if(elementData[i].equals(o)){
record = i;
break;
}
}
if(record == -1){
throw new RuntimeException("no this element!");
}
Object e = elementData[record];
//2.移动数组
for (int i = record; i < size;i++){
elementData[i] = elementData[i+1];
}
elementData[size] = null;
size--;
// 这里可以写一个缩小容量的方法
return (E)e;
}
/**
* 移除方法,指定移除的下标
*
* @param index 指定的下标
* @return 移除的元素
*/
@Override
public E remove(int index) {
// 查询元素是否存在
checkIndex(index);
// 保存该对象
Object obj = elementData[index];
// 遍历删除指定
for (int i = index; i < size;i ++) {
elementData[i] = elementData[i+1];
}
size--;
// 返回该对象
return (E)obj;
}
/**
* 覆盖方法,替换指定下标的元素
*
* @param index 指定的下标
* @param e 替换的元素
* @return 被替换的元素
*/
@Override
public E set(int index, E e) {
//检验下标
checkIndex(index);
//存储对应的元素
Object obj = elementData[index];
// 修改对应的位置值
elementData[index] = e;
// 返回被替换的元素
return (E)obj;
}
/**
* 获取集合中有效元素的个数
*
* @return
*/
@Override
public int size() {
return size;
}
/**
* 获取当前集合中,所有元素的Object类型的数组
*
* @return Object[] 包含集合中所有的对象
*/
@Override
public Object[] toArray() {
// 将集合转换成数组
return Arrays.copyOf(elementData,size);
}
/**
* 判断当前集合是否为空
*
* @return 如果一个元素都没有, 返回true, 有返回false
*/
@Override
public boolean isEmpty() {
return size==0 ? true:false;
}
/**
* 判断某个对象o在集合中是否存在
*
* @param o 需要查找的对象
* @return 存在true, 否则false
*/
@Override
public boolean contains(Object o) {
for (int i = 0; i < size ; i++) {
if(elementData[i].equals(o)){
return true;
}
}
return false;
}
/**
* 根据需求,返回start到end之间的MyList集合子元素
*
* @param start 要求有效的下标范围,不能超过end
* @param index 要求有效的下标范围,不能小于等于start
* @return 数据符合要求, 返回一个当前集合的子集合。若数据不符合要求,返回NULL
*/
@Override
public MyList<E> subList(int start, int index) {
if (start >= index) throw new IllegalArgumentException("The first parameter should not be greater than the second!");
checkIndex(index);
// 复制
MyList<E> o = new MyArrayList<>();
// 这里就不用内部类了,直接用遍历赋值
for(int i = start; i<index;i++){
o.add((E) elementData[i]);
}
return o;
}
/**
* 获得指定元素在几何中第一次出现的位置
*
* @param o 指定元素
* @return 找到返回值 返回下标,没找到返回-1
*/
@Override
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
/**
* 获取指定元素在集合中最后一次出现的位置
*
* @param o 指定的元素
* @return 找到返回值 返回下标,没找到返回-1
*/
@Override
public int lastIndexOf(Object o) {
//对于任何非空引用值 x,x.equals(null) 都应返回 false
if (o == null) {
for (int i = size; i >0 ; i--)
if (elementData[i]==null)
return i;
} else {
for (int i = size; i > 0; i--)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
/**
* 根据指定的下标位置,获取元素
*
* @param index 下标
* @return 返回对象
*/
@Override
public E get(int index) {
checkIndex(index);
return (E)elementData[index];
}
/**
* 指定下标的安全检查! 如果下标值不符合要求抛出异常
* @param index
*/
public void checkIndex(int index){
if(index < 0 || index >= size){
throw new ArrayIndexOutOfBoundsException(index);
}
}
/**
* 为底层数组elementData做扩容
* @param minCapacity 扩容需要的最小容量!
*/
private void grow(int minCapacity){
//旧的长度
int oldCapacity = elementData.length;
//新的长度
int newCapacity = oldCapacity + (oldCapacity >> 1);
// 判断是否溢出
if(newCapacity > Integer.MAX_VALUE - 8){
// Error的错误
throw new OutOfMemoryError("collection overflow");
}
// 防止1 和 其他以外的情况
if(newCapacity - oldCapacity <= 0){
newCapacity = DEFAULT_CAPACITY;
}
// 复制数组
elementData = Arrays.copyOf(elementData,newCapacity);
}
}
过滤器接口
ackage com.project.util;
/**
* 过滤器接口
* @param <E>
*/
public interface MyFilter<E> {
boolean accept(E e);
}
比较排序接口
package com.project.util;
public interface MyComparator<E> {
/**
* 自定义排序方法,方法返回值是int类型
* @param e1 student 类型
* @param e2
* @return
*/
int compare(E e1,E e2);
}
服务层面类
package com.project.service;
import com.project.entity.Student;
import com.project.manager.StudentManager;
import java.util.Scanner;
public class StudentService {
// 接收菜单类的请求,执行对应的方法
// 调用StudentManager,传递数组,插入到底层
private static Scanner sc = new Scanner(System.in);
private StudentManager stm = new StudentManager();
/**
* 展示所有学生
*/
public void show(){
stm.get();
}
/**
* 新增学员的方法
* 该方法,让用户输入数据!并判断数据
*/
public void addStudent(){
System.out.println("请输入学员姓名");
String name = sc.next().trim();
System.out.println("请输入学员年龄");
int age = sc.nextInt();
System.out.println("请输入学员性别(男/女)");
char sex = sc.next().charAt(0);
System.out.println("请输入学员班级名称");
String className = sc.next();
System.out.println("请输入学员JAVA成绩(若没有,则0)");
double javaScore = sc.nextDouble();
System.out.println("请输入学员HTML成绩(若没有,则0)");
double htmlScore = sc.nextDouble();
System.out.println("请输入学员Spring成绩(若没有,则0)");
double springScore = sc.nextDouble();
// 封装成对象
Student stu = new Student(name,age,sex,className,javaScore,htmlScore,springScore);
boolean add = stm.add(stu);
if (add){
System.out.println("新增成功!");
}else{
System.out.println("新增失败!");
}
}
public void addStudent(Student stu){
boolean add = stm.add(stu);
if (add){
System.out.println("新增成功!");
}else{
System.out.println("新增失败!");
}
}
/**
* 根据id查询
*/
public void getStudyById() {
//1.判断输入是否正确
int id = inputId();
//2.有没有该学员
Student student = stm.get(id);
if(student!=null){
System.out.println("学号为:"+id+"的学员信息:");
System.out.println("ID"+student.getId());
System.out.println("姓名"+student.getName());
System.out.println("性别"+student.getGender());
System.out.println("班级"+student.getClassName());
System.out.println("班级"+student.getAge());
System.out.println("JavaScore"+student.getJavaScore());
System.out.println("HTMLScore"+student.getHtmlScore());
System.out.println("SpringScore"+student.getSpringScore());
System.out.println("--------------------------------------");
}else{
System.out.println("学号为:"+id+"的学员不存在");
}
}
/**
* 根据ID更新修改学员信息
*/
public void updateStuById() {
//1.判断输入是否正确
int id = inputId();
//2.判断该学员是否存在
Student student = stm.get(id);
if(student!=null){
//学员存在
// 修改信息
System.out.println(student.toString());
int choice = 0;
boolean flag = true;
while (flag){
System.out.println("1.修改学生姓名");
System.out.println("2.修改学生性别");
System.out.println("3.修改学生班级");
System.out.println("4.修改学生年龄");
System.out.println("5.修改学生JavaScore");
System.out.println("6.修改学生HTMLScore");
System.out.println("7.修改学生SpringScore");
System.out.println("8.退出,并保存");
System.out.println("请选择");
choice = sc.nextInt();
switch (choice){
case 1:
System.out.println("请输入学生的新姓名:");
String name = sc.next();
student.setName(name);
break;
case 2:
System.out.println("请输入学生的性别:");
char name2 = sc.next().charAt(0);
student.setGender(name2);
break;
case 3:
System.out.println("请输入学生的新班级:");
String name3 = sc.next();
student.setClassName(name3);
break;
case 4:
System.out.println("请输入学生的新年龄:");
int name4 = sc.nextInt();
student.setAge(name4);
break;
case 5:
System.out.println("请输入学生的新JavaScore:");
double name5 = sc.nextDouble();
student.setJavaScore(name5);
break;
case 6:
System.out.println("请输入学生的新HTMLScore:");
double name6 = sc.nextDouble();
student.setHtmlScore(name6);
break;
case 7:
System.out.println("请输入学生的新SpringScore:");
double name7 = sc.nextDouble();
student.setSpringScore(name7);
break;
case 8:
System.out.println("保存并退出");
boolean result = stm.set(id,student);
// 替换
if(result){
System.out.println("修改成功");
}else{
System.out.println("修改失败");
}
flag = false;
break;
case 0:
System.out.println("暂未开发,不要违规操作!");
break;
}
}
}else{
//学员不存在
System.out.println("学号为:"+id+"的学员不存在");
}
}
/**
* 根据ID删除
*/
public void deleteStuById() {
//1.判断输入是否正确
int id = inputId();
//2.有没有该学员
Student student = stm.remove(id);
if(student!=null){
System.out.println("学号为:"+id+"的学员删除成功");
System.out.println(student.toString());
}else{
System.out.println("学号为:"+id+"的学员不存在");
}
}
private int inputId(){
int id = 0;
System.out.println("请输入学员的ID:");
do {
id=sc.nextInt();
if(id<=0){
System.out.println("请输入正确的ID");
}
}while (id<=0);
return id;
}
/**
* 根据班级名称查询对应的学员
*/
public void getStudyByClassName() {
System.out.println("请输入班级名称");
String className = sc.next().trim();
stm.get(className);
}
/**
* 模糊查询
*/
public void getStudentByLike(){
int choice = 0;
while(true){
System.out.println("请选择:");
System.out.println("1.根据姓查询 2、根据字典查询 0、退出");
choice =sc.nextInt();
switch (choice){
case 1:
System.out.println("根据姓查询");
String surname = sc.next();
stm.getSurname(surname);
break;
case 2:
System.out.println("根据名字");
String lastname = sc.next();
stm.getLastname(lastname);
break;
case 0:
System.out.println("退出!");
return; //直接结束方法
}
}
}
/**
* 实现学员的排序
*/
public void sortStu(){
//1.排序规则 升序
//2.升序的方式有多种:id、age、score
//3.底层排序
int choice = 0;
while(true){
System.out.println("将按照升序排列学员信息,请选择条件:");
System.out.println("1、根据id 2、根据年龄 3、根据score");
choice = sc.nextInt();
switch (choice){
case 1:stm.sort((v,k)->v.getId()-k.getId());break;
case 2:stm.sort((v,k)->v.getAge()-k.getAge());break;
case 3:stm.sort((v,k)->(int)((v.getTotalScore()-k.getTotalScore())*100));break;
case 0:
System.out.println("退出");
return;
default:
System.out.println("暂未开发!");
break;
}
}
}
/**
* 过滤方法
*/
public void showFilter() {
//1.查询年龄大于15的
//2.查询总分大于150分的
int choice = 0;
while (true){
System.out.println("请选择过滤规则:");
System.out.println("1.年龄大于15岁的 2.总分大于150分的");
choice = sc.nextInt();
switch (choice){
case 1:
stm.showStuForFilter(v->v.getAge()>15);
break;
case 2:
stm.showStuForFilter(v->v.getTotalScore() > 150.00);
break;
case 0:
return;
}
}
}
/**
* 退出时候写入文件
*/
public void saveStuForFile() {
stm.saveByStream();
}
}
管理类
package com.project.manager;
import com.project.entity.Student;
import com.project.util.MyComparator;
import com.project.util.MyFilter;
import com.project.util.MyList;
import com.project.util.impl.MyArrayList;
import java.io.*;
/**
* 完成所有学生管理系统的相关功能
* 逻辑代码、输入数据、
*/
public class StudentManager {
// 只负责接收前端数据,调用后端
// 使用自定义的MyArrayList,存储学生对象
private MyList<Student> allMyList = null;
public StudentManager(){
allMyList = new MyArrayList<>();
load();
}
/**
* 传入初始容量,创建集合对象,要求数据大于等于0,小于Integer.MAV_VALUE-8如果不满足报错
* @param initCapacity
*/
public StudentManager(int initCapacity){
allMyList = new MyArrayList<>(initCapacity);
load();
}
/**
* 添加学生对象的方法,采用尾插法,插入到集合的末端
* @param stu Student 类对象
* @return 添加学生成功返回true,反之,false
*/
public boolean add(Student stu){
if(stu == null){
System.out.println("存入的学生不能为空对象");
return false;
}
this.allMyList.add(stu);
return true;
}
/**
* 根据学生的唯一ID,删除指定的学生
* @param studentId 要删除的学生编号
* @return 删除的学生对象
*/
public Student remove(int studentId){
//1.检查id在几何中的下标位置
int index = findIndexById(studentId);
try {
return allMyList.remove(index);
}catch (ArrayIndexOutOfBoundsException e){
System.out.println(e.getMessage());
}
return null;
}
/**
* 查单个
* @param studentId
* @return
*/
public Student get(int studentId){
//1.判断下标的数值正确
int n = findIndexById(studentId);
if(n!=-1){
//2.在获得学员 对象返回给StudentService
return allMyList.get(n);
}
return null;
}
/**
* 根据学员的id,查询该学生在集合中的下标位置
* @param studentId 查询的id
* @return 存在的话返回大于等于0的数字,没有找到,返回-1
*/
private int findIndexById(int studentId){
int index = -1; //学员在集合中的下标位置
//从下标0开始遍历集合
for (int i = 0;i<allMyList.size();i++){
//依此获取当前学生对象的id和传入的StudentId作比较
if(allMyList.get(i).getId() == studentId){
index = i;
break;
}
}
return index;
}
/**
* 查询所有,直接遍历集合
*/
public void get(){
// 打印所有学生信息
for (int i =0; i < allMyList.size();i++){
System.out.println(allMyList.get(i));
}
}
/**
* 根据班级名称,查询学生列表
* @param className className
*/
public void get(String className){
for (int i = 0; i < allMyList.size() ; i++) {
if(allMyList.get(i).getClassName().equals(className)){
System.out.println(allMyList.get(i).toString());
}
}
}
/**
* 根据姓式查找
* @param surname
*/
public void getSurname(String surname){
for (int i = 0; i < allMyList.size() ; i++) {
if(allMyList.get(i).getName().startsWith(surname)){
System.out.println(allMyList.get(i).toString());
}
}
}
/**
* 根据名字模糊查询
* @param lastname
*/
public void getLastname(String lastname){
for (int i = 0; i < allMyList.size() ; i++) {
if(allMyList.get(i).getName().contains(lastname)){
System.out.println(allMyList.get(i).toString());
}
}
}
/**
* 修改覆盖
*/
public boolean set(int studentId,Student stu){
int index = findIndexById(studentId);
Student set = allMyList.set(index, stu);
if(set==null){
return false;
}
return true;
}
public void sort(MyComparator<Student> com){
Object[] objects = allMyList.toArray();
// 选择排序
for (int i = 0; i < objects.length-1 ; i++) {
for (int j = i+1; j <objects.length ; j++) {
// 是升序
if(com.compare((Student)objects[i],(Student)objects[j])>0){
Student temp = (Student)objects[i];
objects[i] = objects[j];
objects[j] = temp;
}
}
}
for (Object obj:objects){
System.out.println(obj);
}
}
/**
*
*/
public void showStuForFilter(MyFilter<Student> filter) {
for (int i = 0; i <allMyList.size() ; i++) {
if (filter.accept(allMyList.get(i))){
System.out.println(allMyList.get(i));
}
}
}
public void saveByStream(){
File file = new File("D:\\data.txt");
try(
FileOutputStream fis = new FileOutputStream(file);
ObjectOutputStream ois = new ObjectOutputStream(fis);) {
for (int i = 0; i <allMyList.size() ; i++) {
Student stu = allMyList.get(i);
ois.writeObject(stu);
ois.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void load() {
try {
File file = new File("D:\\data.txt");
if(file.exists() && file.length()>0){
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
int max = 0;
while(true){
Object obj;
try{
obj = ois.readObject();
Student student = (Student)obj;
if(student.getId()>max){
max = student.getId();
}
}catch (Exception e) {
break;
}
allMyList.add((Student)obj);
Student.count = max;
}
}else{
System.out.println("为了避免出错,创建一个文件!");
file.createNewFile();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e){
}
}
}
菜单类
package com.project.SystemMain;
import com.project.entity.Student;
import com.project.service.StudentService;
import java.util.Scanner;
public class SystemMain {
static Scanner sc = new Scanner(System.in);
private static StudentService ss = new StudentService();
public static void main(String[] args) {
// for (int i = 0; i <10 ; i++) {
// String name="吴彦祖"+i;
// int age = (int)(Math.random()*5);
// char sex = '男';
// String className = "nz2002";
// double javaScore = 0;
// double htmlScore = 0;
// double springScore = 0;
//
// ss.addStudent(new Student(name,age,sex,className,javaScore,htmlScore,springScore));
// //String name, int age, char gender, String className, double javaScore, double htmlScore, double springScore
// }
// 默认选择
int choice = 0;
while (true){
System.out.println("欢迎来到某某系统!");
System.out.println("1.查看所有");
System.out.println("2.新增");
System.out.println("3.查询指定ID的学生信息");
System.out.println("4.根据ID修改学员");
System.out.println("5.根据ID删除学员");
System.out.println("6.根据班级名称查询学员");
System.out.println("7.根据姓名(姓、名)查询学员");
System.out.println("8.根据需求排序学员信息");
System.out.println("9.根据需求展示符合条件的学员信息");
System.out.println("0.退出");
System.out.println("请选择:");
choice = sc.nextInt();
switch (choice){
case 1: //查看所有
ss.show();
break;
case 2: //新增
ss.addStudent();
break;
case 3:
ss.getStudyById();
break;
case 4:
ss.updateStuById();
break;
case 5:
ss.deleteStuById();
break;
case 6:
ss.getStudyByClassName();
break;
case 7:
ss.getStudentByLike();
break;
case 8:
ss.sortStu();
break;
case 9:
ss.showFilter();
break;
case 0: // 退出
ss.saveStuForFile();
System.out.println("退出该程序");
return;
default: break;
}
}
}
}