数组、集合、链表实现学生成绩管理系统(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;}@Overridepublic 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;@Overridepublic void add(Student student) {if (count >= students.length) {// 扩充数组students = Arrays.copyOf(students, students.length * 2);}// 添加学生students[count] = student;count++;selectAll();}@Overridepublic 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();}@Overridepublic 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();}@Overridepublic void selectAll() {// 排序后输出Arrays.stream(students).filter(Objects::nonNull).sorted(Comparator.comparing(Student::getId)).forEach(System.out::println);}@Overridepublic 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<>();@Overridepublic void add(Student2 student) {list.add(student);System.out.println("添加成功");selectAll();}@Overridepublic void delete(long id) {list.remove(selectById(id));System.out.println("------删除成功-----");selectAll();}@Overridepublic 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();}@Overridepublic void selectAll() {list.stream().sorted(Comparator.comparing(Student2::getId)).forEach(System.out::println);}@Overridepublic 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();}}}
}

数组、集合、链表实现学生成绩管理系统相关推荐

  1. C语言基础篇02:单链表实现学生成绩管理系统

    单链表实现学生成绩管理系统 前言 需求分析 详细设计 增加成绩信息 删除成绩信息 修改成绩信息 查询学生信息和浏览学生信息 总结 前言 上篇已经讲过单链表的基本实现,这篇将以一个简单的管理系统入手. ...

  2. 用链表c语言程序设计,C语言程序设计-基于链表的学生成绩管理系统

    <C语言程序设计-基于链表的学生成绩管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计-基于链表的学生成绩管理系统(18页珍藏版)>请在人人文库网上搜索. 1.华北科技 ...

  3. c语言用链表实现成绩管理系统,C语言基于单链表得学生成绩管理系统

    前言 传说中讲课通俗而不庸俗,说话风流而不下流的小编又来了哦,今天的主要内容是:C语言基于单链表得学生成绩管理系统.首先给年夜家总结下为什么你们学习C语言会觉得难,尤其是对单链表这块,主要原因得是因为 ...

  4. C语言链表学生成绩制作成链表,C语言程序设计课程设计基于链表的学生成绩管理系统.doc...

    C语言程序设计课程设计基于链表的学生成绩管理系统 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 10 页 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C语言程序设计 实验学 ...

  5. c语言程序设计 链表,c语言程序设计基于链表的学生成绩管理系统.doc

    c语言程序设计基于链表的学生成绩管理系统 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 10 页 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C语言程序设计 实验学期 20 ...

  6. c语言实现学生二科成绩的单链表,c++链表实现学生成绩管理系统(简易版)

    #include using namespace std; typedef struct student{ int id;//学号 string sex; string name; int cpp;/ ...

  7. 用C语言链表编写学生成绩管理系统

    本代码供读者学习使用,请不要随意转载. 一.设计题目:学生成绩管理系统 二.目的与要求 每位学生记录包含有学号.姓名.性别.出生日期.三门功课的成绩(高等数学.大学英语.C语言).总分和平均分 系统菜 ...

  8. C语言链表实现学生成绩管理系统

    #include<stdio.h> #include<string.h> #include<stdlib.h> #include<iostream> i ...

  9. 基于链表的学生成绩最高分计算问题计算用c语言编写课程设计,C语言程序设计课程设计-基于链表的学生成绩管理系统.doc...

    xh,p->xm,p->gs,p->yy,p->wl); p=p->next; } fclose(fp); printf("保存结束按任意键继续\n" ...

  10. c语言按给定成绩查询,C语言学生成绩管理系统(简易版)

    #include #include #include int readstudents(struct students stu[]); //读取学生信息 int readsexcode(struct ...

最新文章

  1. 客户端渲染 服务端渲染_这就是赢得客户端渲染的原因
  2. WCF服务端运行时架构体系详解[下篇]
  3. Java如何接收前端传来的多层嵌套的复杂json串
  4. Linux安装PHP报错Sorry, I cannot run apxs. Possible reasons follow:
  5. 基础知识(十二)Opengl回顾记录
  6. 如何控制表格的宽度_利用Word制作表格,这些实用技巧一定要知道!制作表格更加快捷...
  7. (12)System Verilog随机变量
  8. Django+Scrapy结合使用并爬取数据入库
  9. 网页页面禁止用户复制源代码
  10. 23.3. DELETE
  11. 就产品测试问题又吵架了
  12. ps计算机内存不足请保存文件并关闭,保存技巧,如何解决PS内存不足无法存储的错误提示情况...
  13. 微信企业号获取永久素材/删除永久素材/修改永久图文素材
  14. 未能启动apache服务器,教你apache服务无法启动一直失败怎么办
  15. 【Python入门教程】第45篇 集合的并集
  16. Python爬虫获取京东大数据!其实爬虫真的很简单!
  17. 常用软件安装及破解——IntelliJ IDEA
  18. ArcGIS地理数据库简介
  19. 视频webm怎么转换成mp4
  20. 1.5-瑞吉外卖-第五天

热门文章

  1. docker镜像的常用操作
  2. Linux下安装、配置、授权、调优Mysql
  3. 信息发布系统 Jquery+MVC架构开发(3) 解决方案创建
  4. 新申请了一个博客,这个博客主要用来记录编程学习笔记
  5. docker网络、bridge、host
  6. 你所不知道的Redis热点问题以及如何发现热点
  7. mybatis使用详解
  8. 我是如何用单例模式征服面试官的?
  9. 多线程之使用读写锁ReentrantReadWriteLock实现缓存系统
  10. SQL Server查询结果插入表