java实战项目-学生管理系统(附带全套源代码)--《基础篇》

一、前言

第一个java小型学生管理系统,思路和其他语言都一样,因为有C语言的基础,写这个并不是太难,不过,进阶篇的就难太多了。明天晚上更新进阶篇,因为目前代码还没有完善,保守估计需要500行代码左右。基础篇适合大家练习,没什么特别的注意事项,都是面向对象那部分的知识点。

如果感兴趣的话,可以将小编用C语言编写的那几个系统用java进行改写一下。

C语言实战项目--图书管理系统(附带全套源代码)

C语言项目--企业员工管理系统(附带全套源代码)

C语言实战项目-学生成绩管理系统(附带全套源代码)

明天又是周一了,写完这个系统就要开始进阶篇的学习了。

同时,c++系列也开始更新了。有兴趣的小伙伴们可以看一下,链接放下面了。这个是全套通关系列,预计28篇文章,目前才有一篇文章了,想要学习c++的小伙伴们可以订阅专栏欧Thanks♪(・ω・)


http://t.csdnimg.cn/n5eUnicon-default.png?t=N7T8http://t.csdnimg.cn/n5eUn

二、系统设计思路

针对每一个功能都应设计相应的方法

1. 添加学生

2. 删除学生

3. 修改学生

4. 查询学生

三、效果展示

添加学生信息

 删除学生信息

修改学生信息

 

四、方法实现

javabeen部分

public class Student {private String id;private String name;private int age;private String gender;private String address;public Student() {}public Student(String id, String name, int age, String gender, String address) {this.id = id;this.name = name;this.age = age;this.gender = gender;this.address = address;}public String getId() {return id;}public void setId(String id) {this.id = id;}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 getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

1. 添加学生

添加学生信息的时候要对id进行检查,如果id重复,那就重新输入。

代码实现:

//1.添加学生public static void addStudent(ArrayList<Student> students) {Student student = new Student();Scanner sc = new Scanner(System.in);while(true) {System.out.println("请输入学生ID");String id = sc.next();boolean flag = contains(students, id);if(flag) {//已经存在System.out.println("id已经存在请重新录入");}else {//不存在student.setId(id);System.out.println("请输入学生的姓名");String name = sc.next();student.setName(name);System.out.println("请输入学生年龄");int age = sc.nextInt();student.setAge(age);System.out.println("请输入学生性别");String gender = sc.next();student.setGender(gender);System.out.println("请输入学生家庭住址");String address = sc.next();student.setAddress(address);students.add(student);System.out.println("学生信息添加成功");break;}}}

逻辑分析:

  • 使用一个无限循环 while(true),直到成功添加学生信息并退出循环。
  • 提示用户输入学生ID,并检查是否已经存在于 students 列表中,使用 contains 方法来检查。
  • 如果ID已经存在 (flag 为 true),则提示用户重新输入。
  • 如果ID不存在 (flag 为 false),则依次输入学生的姓名、年龄、性别和家庭住址,并通过 student 对象的 set 方法设置这些属性。
  • 将填好信息的 student 对象添加到 students 列表中。
  • 输出 "学生信息添加成功" 并结束循环。

2. 删除学生

如果id存在,删除学生信息,如果不存在就给出相应的提示。

代码实现:

//2.删除学生public static void delStudent(ArrayList<Student> students) {System.out.println("请输入你要删除学生的id");Scanner sc = new Scanner(System.in);String id = sc.next();boolean flag = contains(students, id);if(flag) {//id存在for (int i = 0; i < students.size(); i++) {if(students.get(i).getId().equals(id)) {students.remove(i);System.out.println("id为"+id+"的学生删除成功");break;}}}else{//id不存在System.out.println("id不存在,删除失败");}}

逻辑分析:

  • 如果 flag 为 true,表示 students 列表中存在要删除的ID:
    • 使用 for 循环遍历 students 列表。
    • 当找到ID与输入的ID匹配的学生对象时,使用 remove(i) 方法从列表中删除该学生。
    • 输出删除成功的信息并使用 break 结束循环。
  • 如果 flag 为 false,表示 students 列表中不存在输入的ID,则输出删除失败的信息。

3. 修改学生

修改学生信息是根据学生的id进行修改的,如果集合中有改学生id,就可以修改该学生的信息,如果没有,会给出相应的提示语句。

代码实现:

//3.修改学生public static void changeStudent(ArrayList<Student> students) {System.out.println("请输入要修改学生的id");Scanner sc = new Scanner(System.in);String id = sc.next();boolean flag = contains(students, id);if(flag) {//id存在for (int i = 0; i < students.size(); i++) {if(students.get(i).getId().equals(id)) {System.out.println("请输入要修改的学生姓名");students.get(i).setName(sc.next());System.out.println("请输入要修改的学生年龄");students.get(i).setAge(sc.nextInt());System.out.println("请输入要修改的学生性别");students.get(i).setGender(sc.next());System.out.println("请输入要修改的学生地址");students.get(i).setAddress(sc.next());break;}}}else{//id不存在System.out.println("要修改的id"+id+"不存在,请重新输入");}}

逻辑分析:

  • 如果 flag 为 true,表示 students 列表中存在要修改的ID:
    • 使用 for 循环遍历 students 列表。
    • 当找到ID与输入的ID匹配的学生对象时,依次提示用户输入要修改的学生信息(姓名、年龄、性别、地址),并使用对应的 set 方法更新学生对象的属性。
    • 使用 break 结束循环,因为每个ID应该只对应一个学生。
  • 如果 flag 为 false,表示 students 列表中不存在输入的ID,则输出提示信息,要求用户重新输入。

4. 查询学生

代码实现:

//4.查询学生public static void findStudent(ArrayList<Student> students) {if(students.size() == 0) {System.out.println("当前没有任何学生信息,请添加后再查询");return;}System.out.println("id\t\t"+"姓名\t\t"+"年龄\t\t"+"性别\t\t"+"家庭住址");for (int i = 0; i < students.size(); i++) {Student stu = students.get(i);System.out.println(stu.getId()+"\t\t"+stu.getName()+"\t\t"+stu.getAge()+"\t\t"+stu.getGender()+"\t\t"+stu.getAddress());}}

逻辑分析: 

空列表检查
  • 首先检查 students 列表的大小,如果列表为空,即没有学生信息,就打印提示信息并直接返回。这是为了避免在空列表上执行查询操作。
输出学生信息
  • 如果列表不为空,首先打印表头,显示每列的信息。
  • 然后使用 for 循环遍历 students 列表中的每个学生对象 (Student)。
  • 对于每个学生对象,使用其相应的 get 方法获取学生的ID、姓名、年龄、性别和地址,并按格式输出到控制台。

5. 判断id在集合中是否存在

代码实现:

//5.判断id是否在集合中存在public static boolean contains(ArrayList<Student> students, String id) {for (int i = 0; i < students.size(); i++) {if(students.get(i).getId().equals(id)) {return true;}}return false;}

方法签名

public static boolean contains(ArrayList<Student> students, String id)

这是一个公共静态方法,返回一个布尔值 (boolean),用来表示是否存在指定ID的学生。

接受两个参数:students,一个存储 Student 对象的 ArrayListid,一个 String 类型的学生ID,用于查找匹配的学生。

遍历学生列表

for (int i = 0; i < students.size(); i++) {if(students.get(i).getId().equals(id)) {return true;}
}

使用 for 循环遍历 students 列表中的每个学生对象。

对于每个学生对象,通过 getId() 方法获取其ID,并与输入的 id 进行比较。

如果找到匹配的学生ID,即 students.get(i).getId().equals(id) 返回 true,则立即返回 true 表示找到了匹配。

未找到匹配的处理

return false;

如果整个列表都遍历完毕都没有找到匹配的学生ID,则返回 false 表示没有找到。

五、全套源代码展示

SyuStudent部分(syu应该是stu,懒得改了)

package com.von.StudentSystem;import java.util.ArrayList;
import java.util.Scanner;public class SyuSystem {public static void main(String[] args) {ArrayList<Student> students = new ArrayList<Student>();//菜单loop: while(true) {System.out.println("===================欢迎来到VON学生管理系统===================");System.out.println("====================1:添加学生============================");System.out.println("====================2:删除学生============================");System.out.println("====================3:修改学生============================");System.out.println("====================4:查找学生============================");System.out.println("====================5:退出系统============================");System.out.println("请输入您的选择");Scanner sc = new Scanner(System.in);String choose = sc.nextLine();switch (choose) {case "1" -> addStudent(students);case "2" -> delStudent(students);case "3" -> changeStudent(students);case "4" -> findStudent(students);case "5" -> {System.out.println("系统退出成功。欢迎再次使用");break loop;}default -> System.out.println("没有该选项");}}}//1.添加学生public static void addStudent(ArrayList<Student> students) {Student student = new Student();Scanner sc = new Scanner(System.in);while(true) {System.out.println("请输入学生ID");String id = sc.next();boolean flag = contains(students, id);if(flag) {//已经存在System.out.println("id已经存在请重新录入");}else {//不存在student.setId(id);System.out.println("请输入学生的姓名");String name = sc.next();student.setName(name);System.out.println("请输入学生年龄");int age = sc.nextInt();student.setAge(age);System.out.println("请输入学生性别");String gender = sc.next();student.setGender(gender);System.out.println("请输入学生家庭住址");String address = sc.next();student.setAddress(address);students.add(student);System.out.println("学生信息添加成功");break;}}}//2.删除学生public static void delStudent(ArrayList<Student> students) {System.out.println("请输入你要删除学生的id");Scanner sc = new Scanner(System.in);String id = sc.next();boolean flag = contains(students, id);if(flag) {//id存在for (int i = 0; i < students.size(); i++) {if(students.get(i).getId().equals(id)) {students.remove(i);System.out.println("id为"+id+"的学生删除成功");break;}}}else{//id不存在System.out.println("id不存在,删除失败");}}//3.修改学生public static void changeStudent(ArrayList<Student> students) {System.out.println("请输入要修改学生的id");Scanner sc = new Scanner(System.in);String id = sc.next();boolean flag = contains(students, id);if(flag) {//id存在for (int i = 0; i < students.size(); i++) {if(students.get(i).getId().equals(id)) {System.out.println("请输入要修改的学生姓名");students.get(i).setName(sc.next());System.out.println("请输入要修改的学生年龄");students.get(i).setAge(sc.nextInt());System.out.println("请输入要修改的学生性别");students.get(i).setGender(sc.next());System.out.println("请输入要修改的学生地址");students.get(i).setAddress(sc.next());break;}}}else{//id不存在System.out.println("要修改的id"+id+"不存在,请重新输入");}}//4.查询学生public static void findStudent(ArrayList<Student> students) {if(students.size() == 0) {System.out.println("当前没有任何学生信息,请添加后再查询");return;}System.out.println("id\t\t"+"姓名\t\t"+"年龄\t\t"+"性别\t\t"+"家庭住址");for (int i = 0; i < students.size(); i++) {Student stu = students.get(i);System.out.println(stu.getId()+"\t\t"+stu.getName()+"\t\t"+stu.getAge()+"\t\t"+stu.getGender()+"\t\t"+stu.getAddress());}}//5.判断id是否在集合中存在public static boolean contains(ArrayList<Student> students, String id) {for (int i = 0; i < students.size(); i++) {if(students.get(i).getId().equals(id)) {return true;}}return false;}
}

Student部分

package com.von.StudentSystem;public class Student {private String id;private String name;private int age;private String gender;private String address;public Student() {}public Student(String id, String name, int age, String gender, String address) {this.id = id;this.name = name;this.age = age;this.gender = gender;this.address = address;}public String getId() {return id;}public void setId(String id) {this.id = id;}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 getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/376789.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaweb学习day5--《HTML篇》Springboot的模块创建、HTML的相关知识点详解

一、前言 从今天开始&#xff0c;就要启动后端的学习了&#xff0c;Springboot会贯穿到底&#xff0c;一定要跟着小编严谨的去搭建Springboot环境&#xff0c;依赖添加的过程可能需要2分钟左右&#xff0c;读者们要耐心等待一下&#xff0c;搭建好Springboot之后才算正式的开始…

【JavaWeb程序设计】Servlet(二)

目录 一、改进上一篇博客Servlet&#xff08;一&#xff09;的第一题 1. 运行截图 2. 建表 3. 实体类 4. JSP页面 4.1 login.jsp 4.2 loginSuccess.jsp 4.3 loginFail.jsp 5. mybatis-config.xml 6. 工具类&#xff1a;创建SqlSessionFactory实例&#xff0c;进行 My…

fortran简单排序算法,对一维、二维矩阵进行正序或倒序排序

fortran简单排序算法&#xff0c;对一维、二维矩阵进行正序或倒序排序 0. 引言1. 算法实现1.1 一维数组排序1.2 二维数组排序1.2 module文件 2. 结语 0. 引言 排序算法是计算机科学中的一项重要技术&#xff0c;它将一组数据按照特定的顺序排列起来。排序算法有很多种&#xff…

Three.js相机简明教程

相机校准是 3D 计算机图形学中的一个基本概念&#xff0c;涉及设置虚拟相机以模拟真实世界相机的视角和行为。在 Three.js&#xff08;一种流行的 3D 渲染 JavaScript 库&#xff09;中&#xff0c;了解相机校准对于创建逼真且身临其境的 3D 场景至关重要。在本文中&#xff0c…

2、ASPX、.NAT(环境/框架)安全

ASPX、.NAT&#xff08;环境/框架&#xff09;安全 源自小迪安全b站公开课 1、搭建组合&#xff1a; WindowsIISaspxsqlserver .NAT基于windows C开发的框架/环境 对抗Java xx.dll <> xx.jar 关键源码封装在dll文件内。 2、.NAT配置调试-信息泄露 功能点&#xf…

《Linux系统编程篇》Visual Studio Code配置下载,中文配置,连接远程ssh ——基础篇

引言 vscode绝对值得推荐&#xff0c;非常好用&#xff0c;如果你能体会其中的奥妙的话。 工欲善其事&#xff0c;必先利其器 ——孔子 文章目录 引言下载VS Code配置VS Code中文扩展连接服务器 连接服务器测试确定服务器的IP地址VS code 配置ssh信息选择连接到主机选择这个添…

【D3.js in Action 3 精译】1.3 D3 视角下的数据可视化最佳实践(下)

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介 ✔️ 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知 1.2.1 HTML 与 DOM1.2.2 SVG - 可缩放矢量图形1.2.3 Canvas 与 WebGL1.2.4 CSS1.2.5 JavaScript1.2.6 Node 与 JavaScript 框架1.2.7 Observable 记事…

go-高效处理应用程序数据

一、背景 大型的应用程序为了后期的排障、运营等&#xff0c;会将一些请求、日志、性能指标等数据保存到存储系统中。为了满足这些需求&#xff0c;我们需要进行数据采集&#xff0c;将数据高效的传输到存储系统 二、问题 采集服务仅仅针对某个需求开发&#xff0c;需要修改…

Profibus协议转Profinet协议网关模块连接智能电表通讯案例

一、背景 在工业自动化领域&#xff0c;Profibus协议和Profinet协议是两种常见的工业通讯协议&#xff0c;而连接智能电表需要用到这两种协议之间的网关模块。本文将通过一个实际案例&#xff0c;详细介绍如何使用Profibus转Profinet模块&#xff08;XD-PNPBM20&#xff09;实…

Kubernetes 为pod指定DNS

在k8s里面&#xff0c;默认创建pod会给pod默认分配一个默认的dns&#xff0c;这个dns是哪来的呢&#xff1f;可不可以改成其他的dns呢&#xff1f; 先进入到pod里面来&#xff0c;可以看到这里面默认设置的DNS服务器&#xff0c;这个服务器地址为10.96.0.10。这个地址是k8s自动…

[web]-图片上传、文件包含-图片上传

题目内容提示&#xff1a;上传图片试试吧&#xff0c;注意统一时区问题 打开页面如图&#xff0c;源码没有过滤&#xff0c;随便输入&#xff0c;进入上传目录 根据链接可以看到是文件包含&#xff0c;可以利用编码读取源码&#xff0c;这里只列出有用页面的编码&#xff08;?…

一文入门【NestJs】Providers

Nest学习系列 ✈️一文入门【NestJS】 ✈️一文入门【NestJs】Controllers 控制器 &#x1f6a9; 前言 在NestJS的世界里&#xff0c;理解“Providers”是构建健壮、可维护的后端服务的关键。NestJS&#xff0c;作为Node.js的一个现代框架&#xff0c;采用了Angular的一些核…

科普文:微服务技术栈梳理

概叙 如上两图所示&#xff0c;微服务架构下&#xff0c;需要的组件很多&#xff0c;上面中也并未列全。下面将梳理一下国内微服务架构下&#xff0c;用到的技术栈&#xff0c;仅供参考。 科普文&#xff1a;12种常见的软件架构-CSDN博客 没有最好的架构&#xff0c;只有最适…

基于springboot+vue+uniapp的机电公司管理信息系统

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

【C++】 List 基本使用

C List 基本使用 基本概念 list 是一个序列容器&#xff0c;它内部维护了一个双向链表结构。与 vector 或 deque 等基于数组的容器不同&#xff0c;list 在插入和删除元素时不需要移动大量数据&#xff0c;因此在这些操作上具有较高的效率。然而&#xff0c;访问列表中的特定…

MAC通过SSH连接VirtualBox中的虚拟机

1、虚拟机网络连接方式使用桥接方式-桥接网卡 2、重启虚拟机&#xff0c;查看虚拟机ip地址是否跟Mac宿主机在同一网段 3、SSH工具&#xff08;推荐Tabby&#xff09;输入IP、用户名和密码就能连接虚拟机了

通过Bugly上报的日志查找崩溃闪退原因

第一步&#xff0c;解析堆栈信息 在bugly上收集到的信息是这样的 0x000000010542e46c 0x0000000104db4000 6792300 OS应用发生崩溃时&#xff0c;系统会生成一份崩溃日志&#xff0c;这份日志中包含了崩溃时的堆栈信息&#xff0c;但这些堆栈信息并非直接指向源代码&#x…

[ACM独立出版]2024年虚拟现实、图像和信号处理国际学术会议(ICVISP 2024)

最新消息ICVISP 2024-已通过ACM出版申请投稿免费参会&#xff0c;口头汇报或海报展示(可获得相应证明证书) ————————————————————————————————————————— [ACM独立出版]2024年虚拟现实、图像和信号处理国际学术会议&#xff08;ICVI…

ArduPilot开源飞控之AP_Mount_Topotek

ArduPilot开源飞控之AP_Mount_Topotek 1. 源由2. 框架设计3. 重要函数3.1 动态过程3.1.1 AP_Mount_Topotek::update3.1.2 AP_Mount_Backend::calculate_poi 3.2 基础能力3.2.1 AP_Mount_Topotek::healthy3.2.2 AP_Mount_Topotek::has_pan_control 3.3 设备功能3.3.1 AP_Mount_T…

(十一) Docker compose 部署 Mysql 和 其它容器

文章目录 1、前言1.1、部署 MySQL 容器的 3 种类型1.2、M2芯片类型问题 2、具体实现2.1、单独部署 mysql 供宿主机访问2.1.1、文件夹结构2.1.2、docker-compose.yml 内容2.1.3、运行 2.2、单独部署 mysql 容器供其它容器访问&#xff08;以 apollo 为例&#xff09;2.2.1、文件…