尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

项目案例作业1:学生信息管理系统(面向对象初步接触)

项目案例作业1:学生信息管理系统(面向对象初步接触)
📅 发布时间:2026/6/22 3:39:11

集美大学课程实验报告-项目案例作业1:学生信息管理系统(面向对象初步接触)

项目名称 内容
课程名称 数据结构
班级 网安2413
指导教师 郑如滨
学生姓名 林沁茹
学号 202421336067
实验项目名称 项目案例作业1:学生信息管理系统(面向对象初步接触)
上机实践日期
上机实践时间 2学时

一、目的(本次实验所涉及并要求掌握的知识点)

  • 运行、读懂学生管理系统
  • 掌握学生管理系统里的基本语法与逻辑

二、功能解答

数据处理

问题1-该程序主要处理什么数据?

该程序主要处理自定义类StudentManagementSystem和Student里的数据

问题2-这些数据存储在哪里?

自定义类的数据(对象本身)存储在堆中,而我们用来操作这些对象的引用(变量名)和基本类型变量则存储在栈中

问题3-与C语言程序相比,Java代码处理这些数据有何不同之处?

  • 对于StudentManagementSystem.java的对比分析
1.在Java中,数据和操作被封装在StudentManagementSystem这一类里面;而C语言没有类这一概念,而是定义一个数据结构,再使用函数来实现以上功能
2.在Java中,使用了List<Student>和ArrayList,这是一个动态数组,可以根据输入的内容自动扩容;而C语言没有内置动态数组,想要达到类似的效果需要使用链表,自己手动来写逻辑,实现扩容
3.在Java中,会自动分配内存,不需要人为干预;而C语言则需要自己手动请求内存,最后还需要手动释放内存
  • 对于Student.java的对比分析
1.在Java中,使用访问控制(private)来强制使数据被隐藏,保证数据的安全性;而在C语言中,没有访问控制,所有内容默认公开
2.在Java中,使用this方法,将传进来的局部变量的值,赋给我(当前对象)自己的成员变量,可以在此时加点判断,保证数据的正确性;在C语言中,没有这种this方法,是直接就可以对变量赋值,不进行封装,不可以内置检查算法
3.在Java中,在类中的方法中返回对象的引用;在C语言中,返回的是整个结构体的完整拷贝
  • 对于StudentManagementSystemTest.java的对比分析
1.在Java中,采取System.out.println来进行输出和换行;在C语言中,使用printf("\n")来进行输出和换行
2.在Java中,使用new来创建一个类型,并启动了一个完整的生命周期,其构建的是一个已经构造好、处于可用状态的对象;在C语言中,使用malloc来进行内存的申请,其是在堆上动态分配指定字节数的内存块,并返回这块内存的起始地址
  • 对于Main.java的对比分析
1.在Java中,采用scanner类型来进行面板的读取;在C语言中,使用scanf来进行面板的读取
2.在Java中,==永远可以用来比较任何类型的变量,但对于引用类型,它比较的是内存地址,如果想比较其内容是否相等,应该使用 equals() 方法。但要注意,equals() 方法的行为是否满足我们的要求取决于它是否在类中被正确地重写;C语言对于任何类型都可以使用==来进行比较,但对于结构体需要逐个成员进行比较

功能说明

Main.java文件运行

1. 根据要求,添加学生信息

image

2.根据输入的学生姓名,在数组中寻找该名学生对应的信息

image

3.根据科目的查找,输出对应科目的学生信息

image

4.根据绩点的查找,输出对应绩点的学生信息

image

5.展示所有信息

image

6.根据ID,删除学生信息

image

7.退出程序

image

StudentManagementSystemTest.java文件运行

根据要求,先后输出所有学生信息,查找John的信息,查找学科为Mathematics的学生信息,查找绩点为3.5的学生信息,去除一个学生信息后存储的所有学生信息
image


三、类功能讲解

  • 对于Student.java的分析(Student类)

1. public Student(String name, int age, String gender, String id, String major, double gpa)

方法:类的构造方法
功能概述:对对象的属性进行初始化
属性用途:存储学生的具体数据

2.public String getName()

方法:类中的一个getter方法
功能概述:获取并返回当前Student对象的name属性的值
属性用途:name是String类型的私有成员变量,用于存储学生的姓名

3.public void setName(String name)

方法:类中的一个setter方法
功能概述:给当前的Student对象的name属性赋一个新值
属性用途:用于存储学生的姓名

4.public int getAge()

方法:类中的一个getter方法
功能概述:获取并返回当前Student对象的age属性的值
属性用途:age是String类型的私有成员变量,用于存储学生的年龄

5.public void setAge(int age)

方法:类中的一个setter方法
功能概述:给当前的Student对象的age属性赋一个新值
属性用途:用于存储学生的年龄

6.public String getGender()

方法:类中的一个getter方法
功能概述:获取并返回当前Student对象的gender属性的值
属性用途:gender是String类型的私有成员变量,用于存储学生的性别

7.public void setGender(String gender)

方法:类中的一个setter方法
功能概述:给当前的Student对象的gender属性赋一个新值
属性用途:用于存储学生的性别

8.public String getId()

方法:类中的一个getter方法
功能概述:获取并返回当前Student对象的id属性的值
属性用途:id是String类型的私有成员变量,用于存储学生的学号

9.public void setId(String id)

方法:类中的一个setter方法
功能概述:给当前的Student对象的id属性赋一个新值
属性用途:用于存储学生的学号

10.public String getMajor()

方法:类中的一个getter方法
功能概述:获取并返回当前Student对象的major属性的值
属性用途:major是String类型的私有成员变量,用于存储学生的科目

11.public void setMajor(String major)

方法:类中的一个setter方法
功能概述:给当前的Student对象的major属性赋一个新值
属性用途:用于存储学生的项目

12.public double getGpa()

方法:类中的一个getter方法
功能概述:获取并返回当前Student对象的gpa属性的值
属性用途:gpa是String类型的私有成员变量,用于存储学生的绩点

13.public void setGpa(double gpa)

方法:类中的一个setter方法
功能概述:给当前的Student对象的gpa属性赋一个新值
属性用途:用于存储学生的绩点

14.public String toString()

方法:重写了Java中所有类都默认继承自Object类的toString()方法
功能概述:将当前Student对象的所有属性信息,格式化成一个易于阅读的字符串形式并返回
属性用途:私有属性被直接访问,并通过字符串拼接的方式组合成一个完整的表达形式
  • 对于StudentManagementSystem.java的分析(StudentManagementSystem类)

1.public StudentManagementSystem()

方法:类的构造方法
功能概述:对对象进行初始化,确保在students内部已经被正确创建
属性用途:存储所有学生的具体数据

2.public void addStudent(Student student)

方法:类中的一个setter方法
功能概述:添加一名学生信息到数组中

3.public void removeStudent(Student student)

方法:类中的一个setter方法
功能概述:去除数组中一名学生信息

4.public List getStudents()

方法:类中的一个getter方法
功能概述:获取并返回数组中一名学生的信息

5.public List searchByName(String name)

方法:类中的一个setter方法
功能概述:在数组中根据输入的名字查找学生的信息,并返回所有符合条件的学生信息

6.public List searchByMajor(String major)

方法:类中的一个setter方法
功能概述:在数组中根据输入的科目查找学生的信息,并返回所有符合条件的学生信息

7.public List searchByGpa(double gpa)

方法:类中的一个setter方法
功能概述:在数组中根据输入的绩点查找学生的信息,并返回所有符合条件的学生信息
  • 对于StudentManagementSystemTest.java的分析(测试类)

public static void main(String[] args)

方法:类中的一个main方法
功能概述:给当前的StudentManagementSystem对象存入三个Student对象信息,并展示所有信息和StudentManagementSystem类里方法调用后的结果
属性用途:用于存储学生的年龄
  • 对于Main.java的分析(Main类)

public static void main(String[] args)

方法:类中的一个main方法
功能概述:使用Scanner读取面板,调用while循环和switch方法,实现功能的选取,并根据面板输入内容调用相应StudentManagementSystem类里的方法,并展示
属性用途:读取面板和用于存储学生的年龄
  • 对于Main类不同于其它类的分析

Main类是整个应用程序的启动器和用户交互层,负责启动和运行整个程序,它的存在不是为了解决问题本身,而是为了让问题能够在一个特定的环境(这里是命令行)中被用户使用和解决;其它类都属于应用程序的核心领域模型,它们共同定义了“学生管理”这个问题的本质

四、基本语法讲解

List

1.是Java中最核心、最常用的接口之一
2.是一个有序的、允许重复元素的集合,可以把它想象成一个动态数组或者一个序列
3.需要使用new ArrayList<>()来进行实例化

方法

  • 方法的分类
1.构造方法,实现对象的初始化
2.普通方法,可以对于输入内容进行自定义判断和返回格式(即定义对象的行为,让对象能执行操作),可以被反复的调用
  • 方法重写
子类对父类中允许访问的方法的实现过程进行重新编写,其中返回值和形参都不能改变

读取

采用Scanner类来读取命令行内容

输出

采用System.out.println来进行输出和换行

五、实验使用环境(本次实验所使用的平台和相关软件)

以下请根据实际情况编写

  • 操作系统:Windows 11专业版
  • 编程语言:Java
  • 开发工具:[eclipse)

四、附件-参考文件

  1. Java实验教学大纲

  2. PTA中提交Java程序的一些套路

  3. Java9相关资料(JShell简易教程等)

  4. IntelliJ IDEA的基本使用

相关新闻

  • Linux网络:初识网络 - 详解
  • 20250909比赛总结
  • 手动下载vscode扩展的方法

最新新闻

  • 心理学驱动的AI越狱攻击:PRJA框架原理与防御实战
  • 2026遵义本地人必选防水补漏检测维修公司靠谱服务商TOP5推荐:房屋渗漏水检测维修/卫生间/厨房/天花板/阳台/外墙渗漏水检测补漏维修-暗管漏水检测专业仪器精准定位漏水点 - 即刻修防水
  • React+Prisma+GraphQL构建食谱应用:工程化实践指南
  • 细粒度认知如何赋能无人机视觉语言导航:从零样本泛化到精准执行
  • 对话信息增益(CIG)评估:基于语义记忆的公共审议质量量化方法
  • 2026年贵阳工伤维权律师怎么挑?3个判断标准不踩雷 - 本地品牌推荐

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号