首页 > 其他分享 >学生管理系统案例初步分析报告

学生管理系统案例初步分析报告

时间:2024-09-17 12:24:02浏览次数:14  
标签:String 管理系统 sms System 学生 初步 案例 println out

学生管理系统

1.功能讲解

该部分是对于该系统主要功能的讲解,该系统的主要功能包括:添加学生、显示所有学生、按要求查询学生、删除学生以及退出该系统。下面将一一进行分析讲解。

1.1.添加学生

该功能使用户能够通过输入学生的姓名,年龄,学号将学生的信息添加到学生管理系统中。
通过方法addStudent实现,该方法的代码如下:

 private static void addStudent(Scanner scanner, StudentManagementSystem sms) {
		System.out.println("Enter student name:");
		String name = scanner.next();
		System.out.println("Enter student age:");
		int age = scanner.nextInt();
		System.out.println("Enter student gender:");
		String gender = scanner.next();
		System.out.println("Enter student ID:");
		String id = scanner.next();
		System.out.println("Enter student major:");
		String major = scanner.next();
		System.out.println("Enter student GPA:");
		double gpa = scanner.nextDouble();
		Student student = new Student(name, age, gender, id, major, gpa);
		sms.addStudent(student);
		System.out.println("Student added successfully!\n");
	}

运行结果如下图所示:功能1

1.2.显示学生

用户通过输入对应功能编号可实现获取系统中所有学生的相关信息,包括学生姓名,年龄,学号,性别,专业以及GPA。该功能通过方法showAllStudent实现,代码如下:

	private static void showAllStudent(StudentManagementSystem sms) {
		List<Student> studentList = sms.getStudents();
		if (studentList.size() == 0) {
			System.out.println("The System Data is empty Now!");
		}else {
			for (Student studentItem : studentList) {
				System.out.println(studentItem.toString());
			}
		}
	}

运行结果如下图所示:
功能2运行结果

1.3.查询学生

该功能分由三个子功能实现,用户可通过输入姓名或者专业名称或者GPA进行查询相应的学生信息,使查询结果更精准。

1.3.1.通过姓名查询学生

用户通过输入菜单中的相应功能编号后,可直接输入所要查询的学生姓名,进而获取指定学生的信息,该功能通过方法searchStudentByName实现,实现代码如下:

private static void searchStudentByName(Scanner scanner, StudentManagementSystem sms) {
		System.out.println("Enter student name to search:");
		String searchName = scanner.next();
		List<Student> searchResults = sms.searchByName(searchName);
		if (searchResults.isEmpty()) {
			System.out.println("No students found!");
		} else {
			System.out.println("Search results:");
			for (Student s : searchResults) {
				System.out.println(s);
			}
		}
	}

运行结果如下图所示:
查询学生信息-name

1.3.2.通过major查询学生

用户通过输入菜单中的相应功能编号后,可直接输入所要查询的学生major,进而获取指定学生的信息,该功能通过方法searchStudentByMajor实现,实现代码如下:

private static void searchStudentByMajor(Scanner scanner, StudentManagementSystem sms) {
		List<Student> searchResults;
		System.out.println("Enter student major to search:");
		String searchMajor = scanner.next();
		searchResults = sms.searchByMajor(searchMajor);
		if (searchResults.isEmpty()) {
			System.out.println("No students found!");
		} else {
			System.out.println("Search results:");
			for (Student s : searchResults) {
				System.out.println(s);
			}
		}
	}

运行结果如下图所示:
查询学生信息-major

1.3.3.通过GPA查询学生

用户通过输入菜单中的相应功能编号后,可直接输入所要查询的学生GPA,进而获取指定学生的信息,该功能通过方法searchStudentByGPA实现,实现代码如下:

private static void searchStudentByGPA(Scanner scanner, StudentManagementSystem sms) {
	List<Student> searchResults;
	System.out.println("Enter student GPA to search:");
	double searchGpa = scanner.nextDouble();
	searchResults = sms.searchByGpa(searchGpa);
	if (searchResults.isEmpty()) {
		System.out.println("No students found!");
	} else {
		System.out.println("Search results:");
		for (Student s : searchResults) {
			System.out.println(s);
		}
	}
}

运行结果如下图所示:
查询学生信息-GPA

1.4.删除学生

用户在输入相应功能编号后,可进入该功能。该功能需要用户通过输入所要删除的学生的id,进而删除id对应的学生的信息。该功能通过方法 removeStudent实现,该方法代码如下:

private static void removeStudent(Scanner scanner, StudentManagementSystem sms) {
	System.out.println("Enter student ID to remove:");
	String removeId = scanner.next();
	List<Student> students = sms.getStudents();
	boolean removed = false;
	for (Student s : students) {
		if (s.getId().equals(removeId)) {
			sms.removeStudent(s);
			removed = true;
			System.out.println("Student removed successfully!\n");
			break;
		}
	}
	if (!removed) {
		System.out.println("Student not found!");
	}
}

运行结果如下图所示:删除过程
删除后剩下的学生信息

1.5.退出

用户在输入该功能编号后退出程序。
运行结果如下如所示:
退出系统运行截图

2.基本语法讲解

2.1类和对象相关

  • 类的定义和使用:

定义了Main类StudentManagementSystem类Student类
在Main类的main方法中创建了StudentManagementSystem类的对象sms和Scanner类的对象scanner,通过对象来调用类中的方法实现相应功能。

  • 构造函数:

public Student(String name, int age, String gender, String id, String
major, double gpa)是构造函数,用于在创建Student对象时初始化对象的各个属性。

  • 封装:

类中的属性(name、age、gender、id、major、gpa)都被声明为private,这体现了封装的概念,将数据隐藏在类内部,通过公共的getter和setter方法来访问和修改这些属性。

  • 成员变量:

定义了private List students;,这是一个私有的List集合,用于存储Student对象。

2.2流程控制相关

  • 循环结构(while 循环):

使用while循环来持续运行程序,直到running变量变为false。在循环体中展示菜单选项,并根据用户输入执行相应操作。

  • 选择结构(switch - case)

switch - case语句根据用户输入的不同整数值(choice)执行不同的操作,如添加学生、删除学生、按不同条件搜索学生等。

  • 增强 for 循环:

在各个搜索方法(searchByName、searchByMajor、searchByGpa)中,使用增强型for循环for
(Student student :
students)遍历students集合中的每个Student对象,然后根据条件判断是否将该对象添加到结果集合中。

2.3输入输出相关

  • 输入(Scanner 类):

使用Scanner类从控制台读取用户输入。通过scanner.nextInt()读取整数(如选择操作的数字、学生年龄等),scanner.next()读取字符串(如学生姓名、性别、专业等),scanner.nextDouble()读取双精度浮点数(如学生的平均绩点)。

  • 输出(System.out.println):

使用System.out.println()在控制台输出提示信息、操作结果等。

2.4集合相关

  • 列表(List)的使用:

在StudentManagementSystem类中(假设该类中有相应方法),使用List来存储多个学生对象。在删除学生、搜索学生以及展示所有学生信息的操作中,都涉及对List集合的遍历和操作。

  • ArrayList 的使用:

在构造函数StudentManagementSystem()中,通过students = new ArrayList<>();初始化students集合,ArrayList是List接口的一个常用实现类,它可以动态地调整大小。

  • 集合的添加和删除元素:

addStudent(Studentstudent)方法使用students.add(student);将学生对象添加到students集合中。
removeStudent(Student student)方法使用students.remove(student);从集合中删除指定的学生对象。

  • 打印集合:

在输出语句中直接打印包含Student对象的List集合,System.out.println会自动调用集合元素的toString方法进行输出。

2.5字符串相关

  • 字符串比较(equals 方法):

在删除学生的操作中,使用equals()方法比较学生的id字符串,以确定是否找到要删除的学生对象。

  • 字符串比较:

在searchByName和searchByMajor方法中,使用equals()方法比较字符串,例如student.getName().equals(name)和student.getMajor().equals(major),这是比较字符串内容是否相等的正确方式。

  • 浮点数比较

在searchByGpa方法中,使用==来比较浮点数student.getGpa() ==gpa,不过在浮点数比较时,由于浮点数的精度问题,这种方式可能存在风险,更好的做法是使用一个较小的差值范围来判断是否相等。

2.6方法相关

  • getter 和 setter 方法:

提供了一系列的get方法(如getName()、getAge()等)和set方法(如setName()、setAge()等),用于获取和设置类中的私有属性。这是一种常见的编程实践,保证了数据的安全性和可维护性。

  • 重写 toString 方法:

重写了Object类的toString()方法,用于返回对象的字符串表示形式。当需要将Student对象转换为字符串时(例如在打印输出时),会自动调用这个重写后的方法。在上述代码中,重写后的toString()方法返回了包含学生所有属性信息的字符串。

  • 方法的返回值:

getStudents()方法返回存储学生对象的List集合。 searchByName(String
name)、searchByMajor(String major)和searchByGpa(double
gpa)方法分别根据姓名、专业和平均绩点进行搜索,它们都返回一个符合条件的Student对象的List集合。

  • 调用方法:

通过sms.addStudent(s1)等语句调用StudentManagementSystem类中的addStudent方法添加学生对象。
通过sms.getStudents()调用getStudents方法获取所有学生的列表。
通过sms.searchByName(“John”)等语句调用相应的搜索方法。
通过sms.removeStudent(s2)调用removeStudent方法删除指定学生对象。

3.类功能讲解

该部分主要针对该系统中的四大类进行功能分析讲解。该系统的类主要包括:Main类,Student类,StudentManagementSystem类以及StudentManagementSystemTest类。下面将逐一进行分析讲解

3.1.Main类

这个Main类是学生管理系统的主入口点,它包含了主方法main和一些辅助方法来处理用户输入和显示系统菜单。以下是该类中的方法讲解:
1.main(String[] args):程序的主方法,程序的执行从这里开始。
初始化Scanner和StudentManagementSystem。
进入一个循环,显示菜单并处理用户的选择,直到用户选择退出。
2.menu():显示系统菜单给用户,让用户选择要执行的操作。
addStudent(Scanner scanner, StudentManagementSystem sms):允许用户添加一个新的学生到系统中。
请求用户输入学生的详细信息。
创建一个新的Student对象并使用sms添加到系统中。
3.removeStudent(Scanner scanner, StudentManagementSystem sms):允许用户通过学生ID删除一个学生。
请求用户输入要删除的学生的ID。
遍历学生列表并删除匹配ID的学生。
4.searchStudentByName(Scanner scanner, StudentManagementSystem sms):允许用户通过名字搜索学生。
请求用户输入要搜索的学生名字。
使用sms搜索并显示结果。
5.searchStudentByMajor(Scanner scanner, StudentManagementSystem sms):允许用户通过专业搜索学生。
请求用户输入要搜索的专业。
使用sms搜索并显示结果。
6.searchStudentByGPA(Scanner scanner, StudentManagementSystem sms):允许用户通过GPA搜索学生。
请求用户输入要搜索的GPA。
使用sms搜索并显示结果。
7.showAllStudent(StudentManagementSystem sms):显示系统中的所有学生。
使用sms获取学生列表并显示每个学生的信息。

3.2.Student类

  1. Student类是一个简单的Java类,用于表示一个学生的实体。这个类包含了学生的基本信息,并提供了一系列的构造函数、getter和setter方法以及一个toString方法。

  2. 类成员变量: private String name;:表示学生的名字。 private int age;:表示学生的年龄。 private String gender;:表示学生的性别。 private String id;:表示学生的唯一标识符,如学号。
    private String major;:表示学生的专业。 private double gpa;:表示学生的平均成绩点(GPA)。

  3. Getter和Setter方法: getName() / setName(String name):获取/设置学生的名字。 getAge() / setAge(int age):获取/设置学生的年龄。 getGender() /
    setGender(String gender):获取/设置学生的性别。 getId() / setId(String
    id):获取/设置学生的ID。 getMajor() / setMajor(String major):获取/设置学生的专业。
    getGpa() / setGpa(double gpa):获取/设置学生的GPA。

  4. 构造函数: public Student(String name, int age, String gender, String id, String major, double
    gpa):这是一个参数化的构造函数,用于创建Student对象时初始化其属性。它接受学生的名字、年龄、性别、ID、专业和GPA作为参数,并将这些值赋给相应的成员变量。

3.3.StudentManagementSystem类

1.类的基本信息
StudentManagementSystem类用于管理学生信息相关的操作。它包含了一个List类型的私有成员变量students,用于存储学生对象。
2.构造函数

  • public StudentManagementSystem():这是类的构造函数,在创建StudentManagementSystem类的对象时会被调用。它初始化students列表,通过newArrayList<>()创建了一个空的ArrayList来存储学生信息。

3.方法

  • public List getStudents():该方法用于获取存储学生信息的students列表。它返回一个List类型的对象,调用者可以通过这个返回值来访问和操作存储在students列表中的学生信息。
  • public List searchByName(String name):这个方法用于根据学生姓名进行搜索。它接受一个String类型的参数name,遍历students列表中的每个Student对象,检查其姓名是否与给定的name相等,如果相等则将该学生对象添加到结果列表result中,最后返回包含所有匹配学生对象的result列表。
  • public List searchByMajor(String major):此方法用于按专业进行搜索。它接受一个String类型的参数major,通过遍历students列表,将专业与给定major匹配的学生对象添加到result列表中,最后返回result列表。
  • public List searchByGpa(double gpa):该方法用于根据平均绩点(gpa)进行搜索。它接受一个double类型的参数gpa,在遍历students列表时,将平均绩点与给定gpa相等的学生对象添加到result列表中,最后返回result列表。

3.4.StudentManagementSystemTest类

1.类的基本信息

  • StudentManagementSystemTest类是一个测试类,用于测试StudentManagementSystem类的功能。

2.main方法中的操作

  • 创建StudentManagementSystem对象

StudentManagementSystem sms = new
StudentManagementSystem();:创建了一个StudentManagementSystem的实例sms,用于管理学生信息。

  • 创建Student对象并添加到系统中

创建了三个Student对象s1、s2和s3,分别代表不同的学生信息,包括姓名、年龄、性别、学号、专业和平均绩点(GPA)。
通过sms.addStudent(s1)、sms.addStudent(s2)和sms.addStudent(s3)将这三个学生对象添加到sms管理系统中。

  • 执行搜索操作并输出结果

System.out.println("All students: " +
sms.getStudents());:输出所有学生的信息,通过调用sms.getStudents()获取存储在StudentManagementSystem中的学生列表并打印。
System.out.println("Search by name: " +
sms.searchByName(“John”));:根据姓名进行搜索,调用sms.searchByName(“John”)在学生列表中查找姓名为John的学生,并输出结果。
System.out.println("Search by major: " +
sms.searchByMajor(“Mathematics”));:按专业进行搜索,通过sms.searchByMajor(“Mathematics”)查找专业为Mathematics的学生,并输出结果。
System.out.println("Search by GPA: " +
sms.searchByGpa(3.5));:根据平均绩点进行搜索,调用sms.searchByGpa(3.5)找到平均绩点为3.5的学生,并输出结果。

  • 移除学生并输出结果

sms.removeStudent(s2);:从管理系统中移除s2(即Mary这个学生)。 System.out.println("All
students after removing Mary: " +
sms.getStudents());:输出移除Mary后的所有学生信息,通过再次调用sms.getStudents()获取并打印更新后的学生列表。

标签:String,管理系统,sms,System,学生,初步,案例,println,out
From: https://blog.csdn.net/2301_80052073/article/details/142305946

相关文章

  • springboot+vue智能家居项目管理系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着物联网、云计算、大数据等技术的飞速发展,智能家居行业正经历着前所未有的变革与增长。智能家居产品以其便捷性、智能化和高效能的特点,逐渐渗透到人们的日常生活中,成为现代家庭追求高品质生活的重要标志。然而,智能家居项目的实施涉......
  • springboot+vue在线药店管理系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网的飞速发展,电子商务已经渗透到人们生活的方方面面,医疗健康领域也不例外。传统药店面临着运营成本高、顾客覆盖面有限、药品管理繁琐等挑战。特别是在疫情期间,人们对于安全、便捷的药品购买方式需求激增,推动了在线药店的快速......
  • 基于Android的健身计划管理系统 基于Android的健身管理平台(程序+LW+PPT+部署)
    ......
  • 【架构设计】多级缓存:应用案例与问题解决策略
    【架构设计】多级缓存:应用案例与问题解决策略多级缓存系统的工作原理及其在提升应用性能方面的关键作用。通过对比本地缓存与分布式缓存的特点| 原创作者/编辑:凯哥Java                    | 分类:架构设计系列教程多级缓存系统:提升性能的......
  • 【架构设计】多级缓存:应用案例与问题解决策略
      【架构设计】多级缓存:应用案例与问题解决策略 多级缓存系统的工作原理及其在提升应用性能方面的关键作用。通过对比本地缓存与分布式缓存的特点 | 原创作者/编辑:凯哥Java                    | 分类:架构设计系列教程 ......
  • 关于Spring Boot+MySQL的房地产销售管理系统
    ​博客主页:   曾几何时…项目背景时代的进步使人们的生活实现了部分自动化,由最初的全手动办公已转向手动+自动相结合的方式。比如各种办公系统、智能电子电器的出现,都为人们生活的享受提供帮助。采用新型的自动化方式可以减少手动的办公时间,增加正确率从而增加人们......
  • 企业管理|基于springboot+vue的企业OA管理系统(源码+数据库+文档)
    企业管理目录基于springboot+vue的企业OA管理系统一、前言二、系统设计三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专家博主,CSDN平台Java领域......
  • 基于Java+Springboot+Vue开发的美容预约管理系统
    项目简介该项目是基于Java+Springboot+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的美容预约管理系统项目,大学生可以在实践中学习和提升自......
  • 基于Java+Springboot+Vue开发的房产销售管理系统
    项目简介该项目是基于Java+Springboot+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的房产销售管理系统项目,大学生可以在实践中学习和提升自......
  • 基于Java+Springboot+Vue开发的服装商城管理系统
    项目简介该项目是基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自......