项目案例作业2:对案例进行面向对象分析
集美大学课程实验报告-项目案例作业2:对案例进行面向对象分析
项目名称 | 内容 |
---|---|
课程名称 | Java |
班级 | 网安2413 |
指导教师 | 郑如滨 |
学生姓名 | 林沁茹 |
学号 | 202421336067 |
实验项目名称 | 项目案例作业2:对案例进行面向对象分析 |
上机实践日期 | |
上机实践时间 | 2学时 |
目录
- 集美大学课程实验报告-项目案例作业2:对案例进行面向对象分析
一、目的(本次实验所涉及并要求掌握的知识点)
- 解读案例信息,了解其中的知识点
题目1—案例中哪里体现出了封装性及其好处(姓名:林沁茹 学号:202421336067)
1. Student 类的封装
2.StudentManagementSystem 类的封装
通过private使这些属性只能在类内部被访问,使任何外部类无法直接访问,提高了数据的安全性和代码的可维护性
题目2—案例中的setter/getter模式与封装性(姓名:林沁茹 学号:202421336067)
1.什么是setter/getter?
setter 和 getter 是类中两种特殊的方法,它们被用于访问和修改类中 private 属性的 public 方法
2.有什么用?
- getter 通常用于读取私有属性的值,一般有一个返回值,返回值的类型与属性的类型相同,并且它不接收任何参数。
- setter 通常用于设置私有属性的值,一般没有返回值(返回类型为 void),并且它接收一个参数,参数的类型与属性的类型相同,这个参数就是要赋予属性的新值
3.怎么自动生成?
1.在IntelliJ IDEA中按 Alt + Insert
2.选择目标属性和方法
3.创建完成
题目3—案例中某些类的toString()方法(姓名:林沁茹 学号:202421336067)
1.简述toString方法有什么用?
toString()方法的主要作用是将一个对象转换成其自己需要的字符串表示形式(诺不重写,返回的会是数据的地址)
2.toString一般应包含什么内容?
toString() 一般包含数据的返回格式和明确的对象信息
3.toString()方法从哪里来?
toString()方法来源于Java中的数据库java.lang.Object( 重写时用@Override 注解来标记)
题目4—案例中几个常用方法解析(姓名:林沁茹 学号:202421336067)
- Student类
- Student.Student(String name, int age, String gender, String id, String major, double gpa)
在创建一个新的 Student 对象时,对其进行初始化 - Student.getName()
获取当前 Student 对象的 name 属性的值 - public void setName(String name)
修改当前Student 对象的name的值 - toString()
根据要求返回符合要求的字符串格式
- StudentManagementSystem 类
- StudentManagementSystem.StudentManagementSystem()
构建了一个新的 ArrayList 实例,并将其赋值给私有属性 students - StudentManagementSystem.addStudent(Student student)
传入的学生对象添加到内部的学生列表中 - StudentManagementSystem.removeStudent(Student student)
从内部的students列表中移除指定的学生对象 - StudentManagementSystem.searchByName(String name)
在内部的students列表中寻找同名学生对象 - StudentManagementSystem.searchByMajor(String major)
在内部的students列表中寻找同科目学生对象 - StudentManagementSystem.getStudents()
获取系统中所有学生数据的列表
5. 案例中的面向对象设计(姓名:林沁茹 学号:202421336067)
5.1 尝试用一段话描述案例所解决的问题。找到其中的名词与动词。
- 该案例旨在构建一个简易的学生信息管理系统,用于解决如何结构化地存储、管理(增加和删除)和查询学生数据的问题。通过StudentManagementSystem 类来集中管理学生的所有数据,通过Student类来关联一个学生的所有数据,使之成为一个整体。
- 名词:学生,学号,姓名,年龄,性别,科目,绩点
- 动词:存储,增加,删除,查询,获取,修改,输出
5.2 如果让你设计,根据上面的分析你会抽象出什么类?各具备什么功能?
- 一个包含学生的全部信息,使之具有单独获取和修改实例中每一个信息的功能
- 入口,直接在此实现案例中StudentManagementSystem 类中的功能,并会有一个展示功能选项的功能
三、实验使用环境(本次实验所使用的平台和相关软件)
以下请根据实际情况编写
- 操作系统:Windows 11专业版
- 编程语言:Java
- 开发工具:[eclipse)
四、附件-参考文件
- Main.java
点击查看代码
package code;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
/**
* This program is a student management system that allows users to add, remove,
* and search for students by name, major, and GPA. It uses the Student and
* StudentManagementSystem classes to store and manage student data.
*/
// Initialize the scanner
Scanner scanner = new Scanner(System.in);
StudentManagementSystem sms = new StudentManagementSystem();
boolean running = true;
while (running) {
// Prompt user for input
System.out.println("Enter 1 to add a student");
System.out.println("Enter 2 to remove a student");
System.out.println("Enter 3 to search for a student by name");
System.out.println("Enter 4 to search for a student by major");
System.out.println("Enter 5 to search for a student by GPA");
System.out.println("Enter 6 to show all students");
System.out.println("Enter 7 to exit");
// Get user input
int choice = scanner.nextInt();
// Process user input
switch (choice) {
case 1:
// Add a student
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");
break;
case 2:
// Remove a student
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!");
}
break;
case 3:
// Search for a student by name
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);
}
}
break;
case 4:
// Search for a student by major
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);
}
}
break;
case 5:
// Search for a student by GPA
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);
}
}
break;
case 6:
// Show all Students
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());
}
}
break;
case 7:
// Exit the program
running = false;
System.out.println("Exit Successfully!");
break;
default:
// Invalid input
System.out.println("Invalid choice!");
break;
}
}
// Close scanner
scanner.close();
}
}
- Student.java
点击查看代码
package code;
public class Student {
private String name;
private int age;
private String gender;
private String id;
private String major;
private double gpa;
public Student(String name, int age, String gender, String id, String major, double gpa) {
this.name = name;
this.age = age;
this.gender = gender;
this.id = id;
this.major = major;
this.gpa = gpa;
}
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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public double getGpa() {
return gpa;
}
public void setGpa(double gpa) {
this.gpa = gpa;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", id='" + id + '\'' +
", major='" + major + '\'' +
", gpa=" + gpa +
'}';
}
}
- StudentManagementSystem.java
点击查看代码
package code;
import java.util.ArrayList;
import java.util.List;
public class StudentManagementSystem {
private List<Student> students;
public StudentManagementSystem() {
students = new ArrayList<>();
}
public void addStudent(Student student) {
students.add(student);
}
public void removeStudent(Student student) {
students.remove(student);
}
public List<Student> getStudents() {
return students;
}
public List<Student> searchByName(String name) {
List<Student> result = new ArrayList<>();
for (Student student : students) {
if (student.getName().equals(name)) {
result.add(student);
}
}
return result;
}
public List<Student> searchByMajor(String major) {
List<Student> result = new ArrayList<>();
for (Student student : students) {
if (student.getMajor().equals(major)) {
result.add(student);
}
}
return result;
}
public List<Student> searchByGpa(double gpa) {
List<Student> result = new ArrayList<>();
for (Student student : students) {
if (student.getGpa() == gpa) {
result.add(student);
}
}
return result;
}
}
- StudentManagementSystemTest.java
点击查看代码
package code;
import java.util.List;
import java.util.Scanner;
public class StudentManagementSystemTest {
public static void main(String[] args) {
StudentManagementSystem sms = new StudentManagementSystem();
Student s1 = new Student("John", 20, "Male", "001", "Computer Science", 3.5);
Student s2 = new Student("Mary", 21, "Female", "002", "Mathematics", 3.8);
Student s3 = new Student("Tom", 19, "Male", "003", "Physics", 3.2);
sms.addStudent(s1);
sms.addStudent(s2);
sms.addStudent(s3);
System.out.println("All students: " + sms.getStudents());
System.out.println("Search by name: " + sms.searchByName("John"));
System.out.println("Search by major: " + sms.searchByMajor("Mathematics"));
System.out.println("Search by GPA: " + sms.searchByGpa(3.5));
sms.removeStudent(s2);
System.out.println("All students after removing Mary: " + sms.getStudents());
}
}