数组、集合、链表实现学生成绩管理系统
数组、集合、链表实现学生成绩管理系统(JavaSe)
数组实现:
功能描述:学号为唯一识别符,不可重复,可进行增加、修改、删除、查看操作、升序输出。
学生类:
package com.lili.StudentManagerSystem.smsChar;
/**
* 学生实体类
*
* @author: QiJingJing
* @create: 2021/7/19
*/
public class Student {
/**
* 学号
*/
private long id;
/**
* 年龄
*/
private int age;
/**
* 姓名
*/
private String name;
/**
* 分数
*/
private double score;
public Student() {
}
public Student(long id, int age, String name, double score) {
this.id = id;
this.age = age;
this.name = name;
this.score = score;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", age=" + age +
", name='" + name + '\'' +
", score=" + score +
'}';
}
}
学生管理接口:
package com.lili.StudentManagerSystem.smsChar;
/**
* 学生管理接口
*
* @author: QiJingJing
* @create: 2021/7/19
*/
public interface StudentManager {
/**
* 添加一个学生
*
* @param student
* @return: void
* @author: QijingJing
* @date: 2021/7/19
*/
void add(Student student);
/**
* 根据学号删除一个学生
*
* @param id
* @return: void
* @author: QijingJing
* @date: 2021/7/19
*/
void delete(long id);
/**
* 修改学生信息
*
* @param student
* @return: void
* @author: QijingJing
* @date: 2021/7/19
*/
void update(Student student);
/**
* 查询所有学生信息
*/
void selectAll();
/**
* 通过学号查询学生信息
*
* @param id
* @return: com.lili.StudentManagerSystem.smsChar.Student
* @author: QijingJing
* @date: 2021/7/19
*/
Student selectById(long id);
}
学生管理具体实现:
package com.lili.StudentManagerSystem.smsChar;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Objects;
/**
* 学生管理系统具体实现类
*
* @author: QiJingJing
* @create: 2021/7/19
*/
public class StudentManagerImpl implements StudentManager {
/**
* 创建一个默认长度为10的数组存放学生信息
*/
private Student[] students = new Student[10];
/**
* 用于判断数组元素个数,以便及时扩充
*/
private static int count = 0;
@Override
public void add(Student student) {
if (count >= students.length) {
// 扩充数组
students = Arrays.copyOf(students, students.length * 2);
}
// 添加学生
students[count] = student;
count++;
selectAll();
}
@Override
public void delete(long id) {
for (int i = 0; i < count; i++) {
if (students[i].getId() == id) {
if (count - 1 - i >= 0) {
System.arraycopy(students, i + 1, students, i, count - 1 - i);
students[count - 1] = null;
count--;
break;
}
}
}
System.out.println("---删除成功---");
selectAll();
}
@Override
public void update(Student student) {
for (int i = 0; i < count; i++) {
if (students[i].getId() == student.getId()) {
students[i] = student;
break;
}
}
System.out.println("-----修改成功------");
selectAll();
}
@Override
public void selectAll() {
// 排序后输出
Arrays.stream(students).filter(Objects::nonNull).sorted(Comparator.comparing(Student::getId)).forEach(System.out::println);
}
@Override
public Student selectById(long id) {
for (int i = 0; i < count; i++) {
if (students[i].getId() == id) {
return students[i];
}
}
return null;
}
}
测试类:
package com.lili.StudentManagerSystem.smsChar;
import java.util.Scanner;
/**
* @author: QiJingJing
* @create: 2021/7/19
*/
public class TestStudent {
private static StudentManagerImpl impl = new StudentManagerImpl();
private static Scanner input = new Scanner(System.in);
/**
* 从键盘录入学生信息
*/
private static void getStudentInfo() {
System.out.println("请输入学生的学号:");
long id = input.nextLong();
// 先进行判断是否已经存在
// 判断该学号是否已经存在
if (impl.selectById(id) != null) {
System.out.println("----此学号已经存在,请重新操作----");
} else {
System.out.println("请输入学生的姓名:");
String name = input.next();
System.out.println("请输入学生的年龄:");
int age = input.nextInt();
System.out.println("请输入学生的分数:");
double score = input.nextDouble();
impl.add(new Student(id, age, name, score));
}
}
/**
* 从键盘删除学生信息
*/
private static void delStudentInfo() {
System.out.println("请输入需要删除的学生学号:");
long id = input.nextLong();
if (impl.selectById(id) == null) {
System.out.println("------此学号不存在,请重新操作------");
} else {
// 调用删除方法
impl.delete(id);
}
}
/**
* 从键盘修改学生信息
*/
private static void updateStudentInfo() {
System.out.println("请输入需要修改的学生学号:");
long id = input.nextLong();
if (impl.selectById(id) == null) {
System.out.println("------此学号不存在,请重新操作------");
} else {
System.out.println("请输入新的学生姓名:");
String name = input.next();
System.out.println("请输入新的学生年龄:");
int age = input.nextInt();
System.out.println("请输入新的学生分数:");
double score = input.nextDouble();
impl.update(new Student(id, age, name, score));
}
}
/**
* 从键盘修改学生信息
*/
private static void selectStudentInfo() {
System.out.println("请输入你需要查询的学生学号:");
long id = input.nextLong();
Student student = impl.selectById(id);
if (student == null) {
System.out.println("-----该学号不存在-----");
} else {
System.out.println(student);
}
}
public static void main(String[] args) {
System.out.println("------欢迎进入学生成绩管理系统------");
while (true) {
System.out.println("请选择你要操作的选项\n1.添加学生信息 2.删除学生信息 3.修改学生信息 4.查询单个学生信息");
int num = input.nextInt();
if (num == 1) {
// 调用录入学生信息的方法
getStudentInfo();
}
if (num == 2) {
delStudentInfo();
}
if (num == 3) {
updateStudentInfo();
}
if (num == 4) {
selectStudentInfo();
}
}
}
}
集合实现(对数组实现稍加修改即可)
接口实现类:
package com.lili.StudentManagerSystem.smsList;
import com.lili.StudentManagerSystem.smsChar.StudentManager;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
/**
* 学生管理系统具体实现类
*
* @author: QiJingJing
* @create: 2021/7/19
*/
public class StudentManagerImpl2 implements StudentManager2 {
List<Student2> list = new ArrayList<>();
@Override
public void add(Student2 student) {
list.add(student);
System.out.println("添加成功");
selectAll();
}
@Override
public void delete(long id) {
list.remove(selectById(id));
System.out.println("------删除成功-----");
selectAll();
}
@Override
public void update(Student2 student) {
for (Student2 student2 : list) {
if (student2.getId() == student.getId()) {
student2.setAge(student.getAge());
student2.setName(student.getName());
student2.setScore(student.getScore());
break;
}
}
System.out.println("-----修改成功----");
selectAll();
}
@Override
public void selectAll() {
list.stream().sorted(Comparator.comparing(Student2::getId)).forEach(System.out::println);
}
@Override
public Student2 selectById(long id) {
for (Student2 student2 : list) {
if (student2.getId() == id) {
return student2;
}
}
return null;
}
}
测试类:
package com.lili.StudentManagerSystem.smsList;
import com.lili.StudentManagerSystem.smsChar.Student;
import com.lili.StudentManagerSystem.smsChar.StudentManagerImpl;
import java.util.Scanner;
/**
* @author: QiJingJing
* @create: 2021/7/19
*/
public class TestStudent2 {
private static StudentManagerImpl2 impl = new StudentManagerImpl2();
private static Scanner input = new Scanner(System.in);
/**
* 从键盘录入学生信息
*/
private static void getStudentInfo() {
System.out.println("请输入学生的学号:");
long id = input.nextLong();
// 判断该学号是否已经存在
if (impl.selectById(id) != null) {
System.out.println("----此学号已经存在,请重新操作----");
} else {
System.out.println("请输入学生的姓名:");
String name = input.next();
System.out.println("请输入学生的年龄:");
int age = input.nextInt();
System.out.println("请输入学生的分数:");
double score = input.nextDouble();
impl.add(new Student2(id, age, name, score));
}
}
/**
* 从键盘删除学生信息
*/
private static void delStudentInfo() {
System.out.println("请输入需要删除的学生学号:");
long id = input.nextLong();
if (impl.selectById(id) == null) {
System.out.println("------此学号不存在,请重新操作------");
} else {
// 调用删除方法
impl.delete(id);
}
}
/**
* 从键盘修改学生信息
*/
private static void updateStudentInfo() {
System.out.println("请输入需要修改的学生学号:");
long id = input.nextLong();
if (impl.selectById(id) == null) {
System.out.println("------此学号不存在,请重新操作------");
} else {
System.out.println("请输入新的学生姓名:");
String name = input.next();
System.out.println("请输入新的学生年龄:");
int age = input.nextInt();
System.out.println("请输入新的学生分数:");
double score = input.nextDouble();
impl.update(new Student2(id, age, name, score));
}
}
/**
* 从键盘修改学生信息
*/
private static void selectStudentInfo() {
System.out.println("请输入你需要查询的学生学号:");
long id = input.nextLong();
Student2 student = impl.selectById(id);
if (student == null) {
System.out.println("-----该学号不存在-----");
} else {
System.out.println(student);
}
}
public static void main(String[] args) {
System.out.println("------欢迎进入学生成绩管理系统------");
while (true) {
System.out.println("请选择你要操作的选项\n1.添加学生信息 2.删除学生信息 3.修改学生信息 4.查询单个学生信息");
int num = input.nextInt();
if (num == 1) {
// 调用录入学生信息的方法
getStudentInfo();
}
if (num == 2) {
delStudentInfo();
}
if (num == 3) {
updateStudentInfo();
}
if (num == 4) {
selectStudentInfo();
}
}
}
}
链表实现:
package com.lili.StudentManagerSystem.smsLink;
import com.lili.StudentManagerSystem.smsChar.Student;
/**
* 链表实现学生成绩管理系统
*
* @author: QiJingJing
* @create: 2021/7/19
*/
public class Node {
public static void main(String[] args) {
Node node = new Node();
node.add(new Student(1, 12, "13", 12f));
node.add(new Student(0, 12, "13", 12f));
node.add(new Student(3, 12, "13", 12f));
node.select();
node.update(new Student(0, 112, "113", 112f));
node.select();
}
private StudentNode node = null;
// 增加学生的方法
public void add(Student student) {
if (node == null) {
node = new StudentNode(student);
} else {
node.add(student);
}
}
// 删除一个学生
public void del(long id) {
if (node != null) {
if (node.getStudent().getId() == id) {
node = node.next;
} else {
node.del(id);
}
}
}
// 修改一个学生
public void update(Student student) {
if (node != null) {
if (node.getStudent().getId() == student.getId()) {
node.student = student;
} else {
node.update(student);
}
}
}
// 查询所有学生
public void select() {
if (node != null) {
System.out.println(node.getStudent());
node.select();
}
}
static class StudentNode {
private Student student;
private StudentNode next;
public StudentNode(Student student) {
this.student = student;
}
public Student getStudent() {
return student;
}
// 增加学生的方法
public void add(Student student) {
if (this.next == null) {
this.next = new StudentNode(student);
} else {
this.next.add(student);
}
}
// 删除一个学生
public void del(long id) {
if (this.next != null) {
if (this.next.getStudent().getId() == id) {
this.next = this.next.next;
}
}
}
// 修改一个学生
public void update(Student student) {
if (this.next != null) {
if (this.next.getStudent().getId() == student.getId()) {
this.next.student = student;
} else {
this.next.update(student);
}
}
}
// 查询所有学生
public void select() {
if (this.next != null) {
System.out.println(this.next.getStudent());
this.next.select();
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!