項目案例作業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());
}
}

浙公網安備 33010602011771號