1.思路分析實現
- 要求一和要求二,一個要求使用順序表一個使用鏈表,但又因為這兩個都是List的實現類,所以我就使用多態的形式通過一個方法進行實現上面兩種內容,需要用什么方法實現就傳入什么實現類,形參是List類型。
- 創建一個Student的javabean封裝,學生的信息。
- 實現的增刪該查,我都是直接先判斷是否符合要求,比如刪除的是否需要判斷這個要刪除的位置是否有效,有效我才進行刪除,不能你給我傳個位置然后我在越界報錯吧。然后在轉調list中的方法。
- 排序,就自定義了排序規則,按照Student的javabean的成績排序
- 使用swich控制臺輸入選項,然后對應的選項對應一個功能然后轉調方法即可。
代碼實現
studentjavabean
package entity;public class Student {private String name;private Integer age;private Integer mark;public Student() {}public Student(String name, Integer age, Integer mark) {this.name = name;this.age = age;this.mark = mark;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Integer getMark() {return mark;}public void setMark(Integer mark) {this.mark = mark;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", mark=" + mark +'}';}
}
1.創建Service(業務層接口)
package service;import entity.Student;import java.util.List;public interface StudentService {/*** 初始化的創建和輸出*返回創建好的學生信息集合*/void init();//打印void info();/*** 添加學生信息* @param student 學生信息* @return 是否添加成功*/boolean addStudent(Student student);/*** 修改學生信息* @param index 學生位置* @param student 學生信息* @return 是否修改成功*/boolean updateStudent(int index,Student student);/*** 刪除學生信息* @param index 要刪除學生的位置* @return 是否刪除成功*/boolean deleteStudent(int index);/*** 按照學生成績排序** @return 排序完的集合*/void sort();/*** 查詢學生的最高成績** @return 返回最高成績的信息*/Student lookUp();}
2.創建業務層實現類
package service.Impl;import entity.Student;
import service.StudentService;import java.util.Collections;
import java.util.List;public class StudentServiceImpl implements StudentService {private List<Student> students;public StudentServiceImpl(List<Student> students) {this.students = students;}@Overridepublic void init() {students.add(new Student("張三",18,98));students.add(new Student("李四",18,54));students.add(new Student("周小燕",28,92));students.add(new Student("李旭",21,79));students.add(new Student("李想",19,50));for (Student student : students) {System.out.println("姓名為:" + student.getName());System.out.println("年齡為:" + student.getAge());System.out.println("成績為:" + student.getMark());System.out.println("-------------------------------");}}@Overridepublic void info() {for (Student student : students) {System.out.println("姓名為:" + student.getName());System.out.println("年齡為:" + student.getAge());System.out.println("成績為:" + student.getMark());System.out.println("-------------------------------");}}@Overridepublic boolean addStudent(Student student) {if (student.getMark() > 100 || student.getMark() < 0){return false;}return students.add(student);}@Overridepublic boolean updateStudent(int index,Student student) {if (index <= 0 || index > students.size()) return false;Student student1 = students.get(index - 1);if (student1 == null){return false;}student1.setAge(student.getAge());student1.setName(student.getName());student1.setMark(student.getMark());return true;}@Overridepublic boolean deleteStudent(int index) {if (index <= 0 || index > students.size()) return false;students.remove(index - 1);return true;}@Overridepublic void sort() {students.sort((a, b) -> {return b.getMark() - a.getMark();});}@Overridepublic Student lookUp() {int max = -1;Student student1 = new Student();for (Student student : students) {if (student.getMark() > max){max = student.getMark();student1 = student;}}return student1;}}
3.打印等細節信息的輸出
package info;import entity.Student;
import service.Impl.StudentServiceImpl;
import service.StudentService;import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;public class TestStudent {public TestStudent() {app();}public static void printInfo(){System.out.println("1. 初始化學生信息");System.out.println("2. 添加學生信息");System.out.println("3. 按成績進行排序");System.out.println("4. 修改學生信息");System.out.println("5. 刪除學生信息");System.out.println("6. 查看最高成績的學生信息");System.out.println("任意數字. 退出程序");System.out.println("----------------------------");}public static void studentInfo(List<Student> students) {StudentService studentService = new StudentServiceImpl(students);Scanner scanner = new Scanner(System.in);while(true){printInfo();int x = scanner.nextInt();switch (x){case 1:{//1.初始化studentService.init();break;}case 2:{//2.添加學生Student addStudent = new Student();System.out.println("請輸入添加的學生姓名:");addStudent.setName(scanner.next());System.out.println("請輸入添加的學生年齡:");addStudent.setAge(scanner.nextInt());System.out.println("請輸入添加的學生成績:");addStudent.setMark(scanner.nextInt());boolean flag = studentService.addStudent(addStudent);if (flag) studentService.info();else System.out.println("添加有誤");break;}case 3:{//3.排序studentService.sort();studentService.info();break;}case 4:{//4.修改System.out.println("請輸入要修改第幾位學生");int index = scanner.nextInt();Student updateStudent = new Student();System.out.println("請輸入修改的學生姓名:");updateStudent.setName(scanner.next());System.out.println("請輸入修改的學生年齡:");updateStudent.setAge(scanner.nextInt());System.out.println("請輸入修改的學生成績:");updateStudent.setMark(scanner.nextInt());boolean flag = studentService.updateStudent(index, updateStudent);if (flag) studentService.info();else System.out.println("修改有誤");break;}case 5:{//5.刪除System.out.println("請輸入要刪除第幾位學生");int index = scanner.nextInt();boolean flag = studentService.deleteStudent(index);if (flag) studentService.info();else System.out.println("刪除有誤");break;}case 6:{//6.查詢最高成績Student student = studentService.lookUp();System.out.println("最高成績學生的信息如下");System.out.println("姓名為:" + student.getName());System.out.println("年齡為:" + student.getAge());System.out.println("成績為:" + student.getMark());System.out.println("-------------------------------");break;}default:{//退出系統System.exit(0);}}}}//1.使用順序表實現public static void arraysList(){List<Student> list = new ArrayList<>();studentInfo(list);}//2.使用鏈表實現public static void linkedList(){List<Student> list = new LinkedList<>();studentInfo(list);}public static void app() {Scanner sc = new Scanner(System.in);System.out.println("1. 使用順序表實現");System.out.println("2. 使用鏈表實現");switch (sc.nextInt()){case 1:{arraysList();break;}case 2:{linkedList();break;}}}
}
啟動類
import info.TestStudent;//啟動類
public class App {public static void main(String[] args) {new TestStudent();}
}