阶段二11_面向对象高级_学生管理系统案例3

news2024/11/24 1:19:51

主要功能:

完成学生信息添加,修改和删除功能。

一.查看学生

思路:
图片:5_查看学生思路图.png
在这里插入图片描述

代码:
StudentController[客服类中]

//查找学生
private void findAllStudent() {
    //1.方法内部创建StudentService业务员对象
    //2.调用业务员对象中的findAllStudent方法,得到学生数组
    Student[] stu_s = studentService.findAllStudent();
    //3.不为null,遍历数组,打印学生信息
    //4.判断数组地址是否为null,是的话,提示查无信息
    if(stu_s != null){
        System.out.println("学号\t\t姓名\t年龄\t生日");
        for (int i = 0; i <stu_s.length ; i++) {
            if(stu_s[i] != null){
                System.out.println(stu_s[i].getId()+"\t\t"+stu_s[i].getName()+"\t"+stu_s[i].getAge()+"\t"+stu_s[i].getBirthday());
            }
        }
    }else{
        System.out.println("查无信息");
    }
}

StudentService[业务员]

  public Student[] findAllStudent() {
        //1.从StudentDao中获取存储学生对象的数组,调用内部findAllStudent方法.
        Student[] stu_s = studentDao.findAllStudent();
        //2.判断学生数组中是否有数据 有:返回数组地址 无:返回null
        for (int i = 0; i < stu_s.length ; i++) {
            if(stu_s[i] != null){ //只有有一个学生信息就表示有
                return stu_s;
            }
        }
        return null;
    }

StudentDao[库管]

//1.直接返回全部学生对象
public Student[] findAll() {
    return students;
}

二.修改学生

思路:
6_修改学生思路图.png
在这里插入图片描述

代码:
StudentController[客服类中]

 public void updateStudent() {
        String updId;
        //2.调用StudentService业务员对象中的isExists方法,判断学号是否存在,不存在则继续录入
        while (true) {
            //1. 接收用户要修改的学生id
            System.out.println("请输入学生id");
            updId= sc.next();
            boolean flag = studentService.isExists(updId);
            if(flag){
                break;
            }else{
                System.out.println("学生学号,不存在请重输入");
            }
        }
        //3.录入新的学生信息,封装为学生对象
        System.out.println("请输入学号:");
        String stuId= sc.next();
        System.out.println("请输入姓名:");
        String name= sc.next();
        System.out.println("请输入年龄:");
        String age= sc.next();
        System.out.println("请输入生日:");
        String birthday= sc.next();
        Student newStu = new Student();
        newStu.setId(stuId);
        newStu.setAge(age);
        newStu.setName(name);
        newStu.setBirthday(birthday);
        //4. 调用StudentService业务员对象中的updateStudent方法,修改学生,并提示修改成功
        studentService.updateStudent(updId,newStu);
    }

StudentService[业务员]

 public void updateStudent(String updId, Student newStu) {
        // 调用StudentDao中的updateStudent方法,将参数传入。
        studentDao.updateStudent( updId,  newStu);
    }

StudentDao[库管]

 public void updateStudent(String updId, Student newStu) {
        //1.查找学生id,在数组中所在的索引位置
        int index = getIndex( updId);
        //2.将该索引位置的学生对象,使用新的学生对象进行替换
        students[index] = newStu; //因为前面判断过是否存在,所有到这边肯定是存在的
    }
    //查找学生id,在数组中所在的索引位置
    public int getIndex(String stuId){
        int index = -1;
        for (int i = 0; i <students.length ; i++) {
            if(students[i]!=null && stuId.equals(students[i].getId())){
                index = i;
            }
        }
        return index;
    }

三.删除学生

思路:
7_删除学生思路图.png
在这里插入图片描述

代码:
StudentController[客服类中]

public void deleteStudentById() {
    String delId;
    //2.调用StudentService业务员对象中的isExists方法,判断学号是否存在,不存在则继续录入
    while (true) {
        //1.接收用户要删除的学生id
        System.out.println("请输入学生id");
        delId= sc.next();
        boolean flag = studentService.isExists(delId);
        if(flag){
            break;
        }else{
            System.out.println("学生学号,不存在请重输入");
        }
    }
    //3.调用StudentService业务员对象中的deleteStudentById方法,根据id删除学生,并提示删除成功
    studentService.deleteStudentById(delId);
    System.out.println("删除成功");
}

StudentService[业务员]

   public void deleteStudentById(String delId) {
        // 调用StudentDao中的deleteStudentById方法删除学生
        studentDao.deleteStudentById( delId);
    }

StudentDao[库管]

public void deleteStudentById(String delId) {
//1.查找学生id,在数组中所在的索引位置
int index = getIndex(delId);
//2.将该索引位置的学生对象,使用null进行替换
students[index] = null;
}

完成老师菜单中的增删改查功能

功能和需求学生菜单一样
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

操作有问题请查看源码下载地址
http://www.gxcode.top/code
在这里插入图片描述

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

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

相关文章

Nacos 使用Postgresql数据库制作镜像

构建前提在 Nacos 2.2.0支持postgresql数据库基础上进行构建github地址&#xff1a;个人仓库编译打包源码mvn -Prelease-nacos clean package install -Dmaven.test.skiptrue若想跳过pmd和checkstyle检查请使用mvn -Prelease-nacos clean package install -Dmaven.test.skiptru…

Vue 3.0 组合式API 介绍 【Vue3 从零开始】

提示 在阅读文档之前&#xff0c;你应该已经熟悉了这两个 Vue 基础和创建组件。 在 Vue Mastery 上观看关于组合式 API 的免费视频。 通过创建 Vue 组件&#xff0c;我们可以将接口的可重复部分及其功能提取到可重用的代码段中。仅此一项就可以使我们的应用程序在可维护性和…

SAP ERP系统PP模块计划策略2050详解

SAP/ERP系统中面向订单生产的计划策略主要有20和50两个策略&#xff0c;这两个策略都是面向订单生产的计划策略&#xff0c;也是离散制造行业应用比较广泛的策略。它们之间最大差异就是在于20策略完全是由订单驱动&#xff0c;而50策略是预测加订单驱动&#xff0c;本文主要介绍…

【Leetcode 剑指Offer】第 14 天 搜索与回溯算法(中等)

文章目录剑指 Offer 12. 矩阵中的路径DFS剪枝面试题13. 机器人的运动范围剑指 Offer 12. 矩阵中的路径 典型矩阵搜索题 DFS剪枝 深度优先搜索&#xff1a; 可以理解为暴力法遍历矩阵中所有字符串可能性。DFS 通过递归&#xff0c;先朝一个方向搜到底&#xff0c;再回溯至上…

实现迭代回声服务器端/客户端

文章目录1.迭代服务器端/客户端2.迭代回声服务器端/客户端2.1 echo_server.c2.2 echo_client.c3.回声客户端存在的问题4.回声客户端问题解决方法1.迭代服务器端/客户端 之前讨论的 HelloWorld 服务器端处理完 111 个客户端连接请求即退出&#xff0c;连接请求等待队列实际没有…

唯品会盈利十年:韧性有余,冲劲不足

配图来自Canva可画唯品会在电商市场是一个特殊的存在&#xff0c;从2012年第四季度首次盈利至今&#xff0c;唯品会已经连续十年保持盈利。这十年&#xff0c;电商产业逐渐走向成熟&#xff0c;电商玩家新老接替成层出不穷&#xff0c;曾经家喻户晓的蘑菇街、聚美优品、苏宁易购…

Vue2.0开发之——购物车案例-Goods组件封装-商品数量的加减及总数量(53)

一 概述 Goods点击加减实现修改数量的原理Goods点击增加实现实例Goods点击-减少实现实例Footer计算商品总数量 二 Goods点击加减实现修改数量的原理 点击Counter组件里面的加减&#xff0c;修改Counter组件里面的数量Counter组件的数量变化时&#xff0c;Goods商品的数量相应…

leetcode-每日一题-807(中等,数组)

正常情况第一眼看这道题&#xff0c;看懂意思的话很简单就可以解出来。给你一座由 n x n 个街区组成的城市&#xff0c;每个街区都包含一座立方体建筑。给你一个下标从 0 开始的 n x n 整数矩阵 grid &#xff0c;其中 grid[r][c] 表示坐落于 r 行 c 列的建筑物的 高度 。城市的…

C++各类设计模式及实现详解

软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性&#xff1a;封装、继承、多态&#xff0c;真正领悟设计模式的精髓是可能一个漫长的过程&#xff0c;需要大量实践经验的积累。最近看设计模式的书&#xff0…

Jetpack Compose 中的重组作用域和性能优化

只有读取可变状态的作用域才会被重组 这句话的意思是只有读取 mutableStateOf() 函数生成的状态值的那些 Composable 函数才会被重新执行。注意&#xff0c;这与 mutableStateOf() 函数在什么位置被定义没有关系。读取操作指的是对状态值的 get 操作。也就是取值的操作。 从一…

Rasa 3.x 学习系列-Rasa [3.4.4] - 2023-02-17新版本发布

Rasa 3.x 学习系列-Rasa [3.4.4] - 2023-02-17新版本发布 任何人都可以学习Rasa之优秀Rasa学习资源推荐 欢迎同学们报名Gavin老师的Rasa系列课程,任何人都可以学习Rasa之优秀Rasa学习资源推荐: 1.NLP on Transformers高手之路137课 2 .Rasa 3.X 智能对话机器人案例开发硬核…

Linux如何性能优化,怎么理解平均负载?如何利用系统缓存优化程序的运行效率?内存泄漏如何定位和处理?如何“快准狠”找到系统内存存在的问题?

Linux如何性能优化&#xff0c;怎么理解平均负载&#xff1f;如何利用系统缓存优化程序的运行效率&#xff1f;内存泄漏如何定位和处理&#xff1f;如何“快准狠”找到系统内存存在的问题&#xff1f;1. 性能优化1.1 性能指标1.2 到底应该怎么理解"平均负载"1.3 平均…

插件系列 vue2安装tailwindcss

先说结论&#xff0c;tailwindcss在vue2中引入&#xff0c;可以与其它css预处理混用&#xff0c;并不冲突, vue3可以直接参考官网的安装方式即可。 官方网址&#xff1a;https://www.tailwindcss.cn/ 安装步骤&#xff1a; 直接安装 创建文件 tailwindcss.css main.js全局引…

分析了近500位产品经理后,得出这些产品经理的日常

前些天,我从实现网上抓取了497位产品经理的个人信息,这些产品人平均工作时间超过5年,来自200多家公司,其中152人拥有BAT 、京东、美团、网易、小米等一线互联网公司工作经历,当然也有很大一部分来自不知名的创业公司。 以下是正文: 对这里面各产品经理擅长技

HBase单机版安装详细步骤

目录 一、安装HBase前置环境 1.jdk 2.hadoop 3.zookeeper 二、安装HBase步骤 (一)解压 (二)修改文件名 (三)修改配置文件 (四)配置HBase的环境变量 (五)启动HBase 1.启动hadoop 2.启动zookeeper 3.启动hbase 4.jps出现HMaster和HRegionServer 5.HBase的WebUI (…

Docker那点事

Docker引擎是用于运行和编排容器的基础设施工具。有VMware管理经验的可以将其类比为ESXi。ESXi是运行虚拟机的核心管理程序,而Docker引擎是运行容器的核心容器运行时。 其他Docker公司或第三方的产品都是围绕Docker引擎进行开发和集成的。如图 所示,Docker引擎位于中心,其…

100种思维模型之升维思维模型-026

爱因斯坦曾说&#xff1a;这个层次的问题&#xff0c;很难靠这个层次的思考来解决。 如&#xff0c;你很穷&#xff0c;然后紧衣缩食&#xff0c;结果却依然入不敷出&#xff1b;你很胖&#xff0c;然后拼命节食&#xff0c;结果却依然大腹便便&#xff1b;你很忙&#xff0c;然…

海洋风场数据

本篇文章主要介绍了三种海洋风场数据集基本信息&#xff08;从官网中提取我认为比较重要的信息&#xff09;&#xff0c;以及如何下载&#xff08;下载中也遇到很多问题&#xff0c;有的问题现在也存在&#xff0c;大家集思广益&#xff0c;看看有没有好的方法&#xff01;&…

CSS - 选择器详解 - 子代、后代选择器详解 - 伪类选择器 - 测试

目录测试准备&#xff1a;子代选择器 >测试代码&#xff1a;指定id的子代选择器后代选择器 (以空格隔开)指定 id 的后代选择器指定 class 类 的后代选择器多空格后代选择器详解 (特别重要)伪类选择器 :参考链接&#xff1a;测试准备&#xff1a; 新建一个测试项目文件夹 te…

WebSocket与Socket、TCP、HTTP的关系

目录&#xff1a;1、名词解析&#xff1b;2、WebSocket简介与原理&#xff1b;3、WebSocket和Http的关系和异同点&#xff1b;4、WebSocket与Socket的区别&#xff1b;5、Socket和TCP/IP&#xff1b;6、一个应用程序的通信链路&#xff1b;1、基础名词解析&#xff1a;&#xf…