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.mzph.cn/diannao/46303.shtml

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

相关文章

网络请求优化:如何让你的API飞起来

网络请求优化&#xff1a;如何让你的API飞起来 亲爱的开发者朋友们&#xff0c;你是否曾经遇到过这样的场景:用户疯狂点击刷新按钮,你的服务器却像老年人散步一样慢吞吞地响应。或者,你的应用像个贪吃蛇,疯狂吞噬用户的流量包。如果你对这些情况再熟悉不过,那么恭喜你,你正需要…

Unity ColorSpace 之 【颜色空间】相关说明,以及【Linear】颜色校正 【Gamma】的简单整理

Unity ColorSpace 之 【颜色空间】相关说明&#xff0c;以及【Linear】颜色校正 【Gamma】的简单整理 目录 Unity ColorSpace 之 【颜色空间】相关说明&#xff0c;以及【Linear】颜色校正 【Gamma】的简单整理 一、简单介绍 二、在Unity中设置颜色空间 三、Unity中的Gamma…

部队物资仓库出入库管理系统|实现物资有效的战备保障

随着科技的不断发展&#xff0c;智慧营区已成为现代军事管理的重要方向。后勤物资管控作为营区管理的重要组成部分&#xff0c;对于保障营区正常运转和提高部队战斗力具有重要意义。智慧营区后勤物资管控平台作为数字化后勤建设的重要组成部分&#xff0c;能够实现营区物资的智…

Ubuntu下载安装chrome浏览器

方法一&#xff1a;wget下载并安装 1、创建文件夹存安装包 cd /root/Downloads mkdir chrome 2、下载安装包到文件夹内 wget -c https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -P /root/Downloads/chrome 3、安装 cd chrome sudo dpkg -i go…

药品类别功能助力智慧校园医务管理向前迈进

在智慧校园的医务管理框架下&#xff0c;药品类别管理模块发挥着举足轻重的作用&#xff0c;它以智能化的方式优化药品的存储、分配流程&#xff0c;确保每一步都符合安全与效率的标准。这一功能围绕着科学分类的核心理念&#xff0c;细致入微地组织药品信息&#xff0c;为校园…

力扣1963.使字符串平衡的最小交换次数

力扣1963.使字符串平衡的最小交换次数 把所有匹配的消了 剩下的一定是k个‘ [ ’和k个‘ ] ’的组合k为偶数 则res k / 2;k为奇数 则res (k-1)/2 1; class Solution {public:int minSwaps(string s) {int cnt0;for(char c:s){if(c ]){if(cnt > 0) cnt--;}elsecnt;}co…

TCP传输控制协议二

TCP 是 TCP/IP 模型中的传输层一个最核心的协议&#xff0c;不仅如此&#xff0c;在整个 4 层模型中&#xff0c;它都是核心的协议&#xff0c;要不然模型怎么会叫做 TCP/IP 模型呢。 它向下使用网络层的 IP 协议&#xff0c;向上为 FTP、SMTP、POP3、SSH、Telnet、HTTP 等应用…

威纶通触摸屏连接MySQL数据库步骤

目录 概要威纶通支持数据库的触摸屏类型测试Step 1 选择触摸屏型号Step 2 新增数据库服务器Step 3 添加SQL数据库查询功能Step 4 仿真测试 概要 通过使用威纶通带数据库类型的触摸屏&#xff0c;实现连接本地/远程MySQL数据库&#xff0c;并实现数据查询功能 威纶通支持数据库…

Datawhale AI 夏令营_基于术语词典干预的机器翻译挑战赛 .md

基于术语词典干预的机器翻译 在baseline的基础上添加了soft attention&#xff0c;当N2000时&#xff0c;没有问题&#xff0c;但是一旦增加数据量就会爆显存&#xff0c;还需要找一下问题 完整代码如下 from typing import Listimport torch import torch.nn as nn import …

使用harbor作为chart仓库实现内网部署

使用harbor作为chart仓库实现内网部署 制作好的chart包可以传到chart仓库进行共享&#xff0c;chart仓库可以是公有仓库或者使用Harbor搭建的私有仓库。 本文使用的环境信息&#xff1a; rootmaster1:~# kubectl get node NAME STATUS ROLES AGE VERSION…

react antd table拖拽

下载node包 npm install react-resizable -D npm install types/react-resizable --save-dev 定义一个公用组建 ResizableTable.tsx import { useEffect, useState } from "react"; import { Resizable } from "react-resizable"; import "./resize.s…

使用Python + Scrapy + Django构建企业级爬虫平台

引言 在大数据时代&#xff0c;信息就是力量。对于企业而言&#xff0c;掌握行业动态、竞品分析、市场趋势等关键数据&#xff0c;是决策制定的重要依据。然而&#xff0c;手动收集这些信息既费时又低效。因此&#xff0c;自动化数据采集变得至关重要。本文将向你展示如何使用…

专业条码二维码扫描设备和手机二维码扫描软件的区别?

条码二维码技术已广泛应用于我们的日常生活中&#xff0c;从超市结账到公交出行&#xff0c;再到各类活动的入场验证&#xff0c;条码二维码的便捷性不言而喻&#xff0c;而在条码二维码的扫描识别读取过程中&#xff0c;专业扫描读取设备和手机二维码扫描软件成为了两大主要工…

- vuex路由:

vuex vue的状态管理工具(状态就是数据的管理仓库 话语中级语法modules是vuex的高级用法。 react---redux(状态管理工具) vue2--vuex vue3--pinia(小菠萝) 核心概念(是有五个): 1.state:--存放数据 2.getters:计算属性的&#xff0c;通过筛选数组中大于2的&#xff0c;需要…

MySQL表操作(增删改查)

添加字段 ALTER TABLE 表名 ADD 字段名字 类型&#xff08;长度&#xff09;[COMMENT 注释] [自己给当前字段注释命名];修改字段 &#xff08;1&#xff09;仅仅修改指定字段的一些属性&#xff0c;不能重命名 ALTER TABLE 表名 字段名 新数据类型&#xff08;长度);&#x…

ssh升级

文章目录 ssh升级一、解包ssh、ssl二、更新安装ssl三、手动更新手动复制库文件四、创建符号链接五、更新库路径六、验证库文件七、设置库路径环境变量八、配置、编译、安装OpenSSH&#xff1a;意外&#xff1a;缺少 zlib 的开发库解决方法&#xff1a; 九、刷新ssh服务、查看ss…

力扣第九题

回文数 提示&#xff1a; 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 代码展示&#…

用GPT 4o提高效率

**GPT-4o可以通过提高编程效率、优化工作流程、增强文档管理和知识分享等多方面帮助用户提升工作效率**。具体如下&#xff1a; 1. **代码生成与优化** - **快速原型开发**&#xff1a;程序员可以通过向GPT-4o描述需求或功能来生成初步的代码框架或关键函数&#xff0c;从而节省…

TCP流量控制是怎么实现的?

流量控制就是让发送方发送速率不要过快&#xff0c;让接收方来得及接收。利用滑动窗口机制就可以实施流量控制&#xff0c;主要方法就是动态调整发送方和接收方之间数据传输速率。 发送方维护一个窗口&#xff0c;表示可以发送但尚未被确认的数据量。接收方同样维护一个窗口&a…

C基础入门题:石头剪刀布

1.题目描述 石头剪子布&#xff0c;是一种猜拳游戏。起源于中国&#xff0c;然后传到日本、朝鲜等地&#xff0c;随着亚欧贸易的不断发展它传到了欧洲&#xff0c;到了近现代逐渐风靡世界。简单明了的规则&#xff0c;使得石头剪子布没有任何规则漏洞可钻&#xff0c;单次玩法…