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

news2025/2/24 12:20:43

说明:学生管理系统案例需求和步骤1请查看上一张《阶段二10_面向对象高级_分类分包思想》

一.学生管理系统案例

步骤2:搭建主菜单和学生管理系统菜单

(0).主菜单和学习菜单界面和思路
界面:
--------欢迎来到信息管理系统--------
请输入您的选择: 1.学生管理 2.老师管理 3.退出
--------欢迎来到 <学生> 管理系统--------
请输入您的选择: 1.添加学生 2.删除学生 3.修改学生 4.查看学生 5.退出
思路:
用输出语句完成主界面的编写
用Scanner实现键盘录入数据
用switch语句完成操作的选择
(1).主菜单代码[InfoManagerEntry(程序的入口类提供一个main方法)]

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    while (true) {
        System.out.println("--------欢迎来到信息管理系统--------");
        System.out.println("请输入您的选择: 1.学生管理  2.老师管理  3.退出");
        String c = sc.next();
        switch (c) {
            case "1":
                //System.out.println("学生管理");
                //开启学生管理系统
                StudentController studentController = new StudentController();
                studentController.start();
                break;
            case "2":
                System.out.println("老师管理");
                break;
            case "3":
                System.out.println("欢迎下次再次使用信息管理系统,再见。");
                System.exit(0); //退出当前程序的jvm平台
                break;
            default:
                System.out.println("输入有误,请重新输入");
                break;
        }
    }
}

(2).学生管理系统菜单代码[StudentController(和用户打交道客服接待)]

 //1.开启学生管理系统并输出对应的菜单
    public void start() {
        Scanner sc = new Scanner(System.in);
       studentLoop:
       while (true) {
            System.out.println("--------欢迎来到 <学生> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加学生  2.删除学生  3.修改学生  4.查看学生  5.退出");
            String c = sc.next();
            switch (c) {
                case "1":
                    System.out.println("添加学生");
                    break;
                case "2":
                    System.out.println("删除学生");
                    break;
                case "3":
                    System.out.println("修改学生");
                    break;
                case "4":
                    System.out.println("查看学生");
                    break;
                case "5":
                    System.out.println("退出学生管理系统");
                    break studentLoop;
                default:
                    System.out.println("输入有误,请重新输入");
                    break;
            }
        }
    }

步骤3:基本添加功能-思路分析

1_基本添加功能-思路分析.png
在这里插入图片描述

步骤4:基本添加功能-代码实现

1.在客户类[StudentController]中接受学生信息并封装对象

 public void addStudent() {
        //1.输入学生信息提示和获取学生信息
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生id:");
        String id = sc.next();
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        System.out.println("请输入学生年龄:");
        String age = sc.next();
        System.out.println("请输入学生生日:");
        String birthday = sc.next();
        //2.把学生信息封装对象
        Student student = new Student(id,name,age,birthday);
        //3.把学生信息传给业务员添加方法处理,并返回处理结果
        StudentService  studentService = new StudentService();
        boolean bole = studentService.addStudent(student);
        //根据处理结果,提示添加成功或失败
        if(bole){
            System.out.println("添加成功");
        }else{
            System.out.println("添加失败");
        }
    }

2.在业务类[StudentService]接受客户类传递的学生对象并提交给库管

 public boolean addStudent(Student student) {
        //1.接受学生对象并传给库管处理
        StudentDao studentDao = new StudentDao();
        boolean bol = studentDao.addStudent(student);
        //根据库管处理的结果返回给客户
        return bol;
    }

3.库管类[],根据业务类传递过来得学生对象进行添加操作

 public boolean addStudent(Student student) {
        //1.创建存放学生数组对象,长度为5
        Student[] students = new Student[5];
        //2.把学生对象存放到数组中
        //2.1 获取存放的数组索引位置
        int index = -1;
        for (int i = 0; i < students.length; i++) {
            //2.2 如果对象数组有null,表示找到存在的索引
            if(students[i] == null){
                //2.3 记录索引位置
                index = i;
                //2.4 接受本次查找
                break;
            }
        }
        //3.根据存放的结果返回给业务员
        if(index==-1){
            //3.1表示学生数组对象已放满,添加失败
            return  false;
        }else{
            //3.2 没有满可以添加学生,添加成功
            students[index] = student;
            return  true;
        }
    }

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

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

相关文章

CMake编译opencv4.6

openCV系列文章目录 文章目录openCV系列文章目录前言一、准备工作二、使用步骤1.使用CMake编译openCV总结前言 最近在项目中遇到图片处理&#xff0c;一拍脑袋就想到大名鼎鼎的opencv 一、准备工作 1.openCV官网下载 2.CMake官方下载 3.vs2019官方下载 二、使用步骤 1.使用…

[ vulhub漏洞复现篇 ] Drupal XSS漏洞 (CVE-2019-6341)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

Qt基础之二十九:图形视图框架(Graphics View Framework)及其应用

无意中从网络获取一份俄罗斯方块源码,基于图形视图框架(Graphics View Framework)实现的。当然源码的核心从来都不是界面,而是方块的移动、变形和消除等算法。源码非常完整,注释详细,经改动后已能在Qt5中运行,下面是运行效果,背景音乐和音效也是有的。 一.效果 二.原理 …

Spring MVC 源码 - HandlerMapping 组件(二)之 HandlerInterceptor 拦截器

HandlerMapping 组件HandlerMapping 组件&#xff0c;请求的处理器匹配器&#xff0c;负责为请求找到合适的 HandlerExecutionChain 处理器执行链&#xff0c;包含处理器&#xff08;handler&#xff09;和拦截器们&#xff08;interceptors&#xff09;handler 处理器是 Objec…

复旦大学邱锡鹏团队发布类 ChatGPT 模型MOSS

不知道这个人工智能&#xff0c;有没有获得完整的一生。 ChatGPT 是最先进的 AI&#xff0c;也是最热门的应用 —— 自去年 11 月底发布以来&#xff0c;它的月活跃用户两个月超过一亿&#xff0c;轻松拿到了全球互联网史上用户增长速度的第一。 它也是一种门槛很高的技术。由…

Metasploit 使用篇(二)

文章目录前言一、侦察1.banner信息2.http头检测小结二、枚举DNS枚举枚举文件三、漏洞扫描四、漏洞评估前言 内容均来自《Web渗透测试实战 基于Metasploit5.0》&#xff0c;包括渗透测试生命周期中的4个部分&#xff1a; 侦察Web应用枚举漏洞扫描漏洞评估 以对metasplitable …

入门力扣自学笔记236 C++ (题目编号:1326)(贪心算法)

1326. 灌溉花园的最少水龙头数目 题目&#xff1a; 在 x 轴上有一个一维的花园。花园长度为 n&#xff0c;从点 0 开始&#xff0c;到点 n 结束。 花园里总共有 n 1 个水龙头&#xff0c;分别位于 [0, 1, ..., n] 。 给你一个整数 n 和一个长度为 n 1 的整数数组 ranges …

江南爱窗帘十大品牌 | 推荐3种简单的窗帘上色方法

窗帘可以在色彩搭配好的空间里营造温度和情调&#xff1f;窗帘不仅是用来挡光的&#xff0c;更能营造温暖和氛围家。除了成品家具&#xff0c;家中软装的另一大部分就是窗帘了。窗帘的颜色搭配好&#xff0c;我们家瞬间有温度。今天我们将讨论一些简单的窗帘上色方法。1、窗帘我…

计算机网络基础知识--数据链路层协议

目录 使用点对点信道的数据链路层 数据链路层的三个基本问题 封装成帧 透明传输 差错检测 点对点协议PPP PPP协议的组成 PPP帧的格式 数据链路层的协议数据单元是帧。数据链路层把网络层交下来的数据构成帧发送到链路上&#xff0c;以及把接收到的帧中的数据取出并上交网…

VR全景带你打卡《狂飙》经典取景地!

热度“狂飙”&#xff01;电视剧《狂飙》的取景地——江门墟顶老街人气火爆&#xff0c;720VR全景带您了解&#xff0c;这个具有新活力的老街区&#xff0c;蛙色3DVR提供技术支持&#xff01;通过航拍VR全景&#xff0c;全方位展示江门历史文化街区&#xff0c;720浏览&#xf…

3 nacos与其他注册中心对比以及提升

对比如下&#xff1a; CAP模型&#xff1a; 计算机专家 埃里克布鲁尔&#xff08;Eric Brewer&#xff09;于 2000 年在 ACM 分布式计算机原理专题讨论会&#xff08;简称&#xff1a;PODC&#xff09;中提出的分布式系统设计要考虑的三个核心要素&#xff1a; (1) 一致性&am…

appium自动化测试

获取应用包名和入口activity&#xff1a;aapt命令 aapt目录&#xff1a; 安卓sdk的build-tools目录下(如果要在cmd里直接运行&#xff0c;要配置环境变量&#xff0c;否则需要在aapt所在目录下打开cmd) 示例&#xff1a; adt-bundle-windows-x86_64-20140702\sdk\build-too…

微信小程序开发(二)

一、封装request.js请求文件 目的&#xff1a;优化代码结构以及后期项目版本迭代和维护更加方便&#xff0c;提升代码的执行速度。 假设在原生page中使用基本写法创建ajax请求&#xff0c;则会出现以下问题&#xff1a; 1、page界面业务操作代码混乱&#xff0c;代码多层嵌套…

Hudi(26):Hudi集成Hive之同步工具

目录 0. 相关文章链接 1. 同步工具概述 2. 使用语法及参数 2.1. 语法 2.2. 参数说明 3. 解决依赖问题 3.1. 解决点一&#xff1a;修改hadoop、hive、hudi-hive-sync-bundle-0.12.0.jar的依赖加载 3.2. 解决点二&#xff1a;解决parquet-column的版本冲突 4. JDBC模式同…

buu [WUSTCTF2020]dp_leaking_1s_very_d@angerous 1

题目描述&#xff1a; e 65537 n 1568083435985787749573756968151889806821667406093028310996964920682463371987925108988184962391663390152073051021014316342831685444929845865667999964711502523821441482572367072472675061656708775063702531276953141639870840764…

Docker竟如此简单!

文章目录什么是容器&#xff1f;容器隔离何为“边界”&#xff1f;容器和虚拟机一样吗&#xff1f;基于 Linux Namespace 隔离机制的弊端容器限制何为“限制”&#xff1f;Cgroups 对资源的限制能力缺陷单进程模型容器镜像容器的诞生容器的一致性何为“层&#xff08;layer&…

前端必须知道的http知识

HTTP协议也叫超文本传输协议&#xff0c;是一种基于TCP/IP的应用层通信协议&#xff0c;这个协议详细规定了浏览器和万维网服务器之间互相通信的规则&#xff08;报文&#xff0c;请求报文、响应报文&#xff09; 请求方式 HTTP设定了八种发送请求方式&#xff0c;这八种方法没…

SpringCloud(二)配置中心

配置中心Nacos配置中心多环境共享Nacos集群搭建Nacos配置中心 作用&#xff1a; 统一配置管理配置自动刷新&#xff0c;热更新 实现&#xff1a; 统一配置管理 在nacos服务端&#xff0c;配置管理配置列表中新建配置了解配置获取的步骤&#xff1a; 项目启动->读取nacos中…

MySQL中有多少种索引?索引的底层实现原理

索引存储在内存中&#xff0c;为服务器存储引擎为了快速找到记录的一种数据结构。索引的主要作用是加快数据查找速度&#xff0c;提高数据库的性能。索引的分类(1) 普通索引&#xff1a;最基本的索引&#xff0c;它没有任何限制。(2) 唯一索引&#xff1a;与普通索引类似&#…

Java技术之注解

前言 Java的反射和注解是Java和Android程序员必须掌握的技术&#xff0c;注解使程序员可以将重复冗余的工作封装到一个框架里面&#xff0c;提供一个简单的API接口给程序使用&#xff0c;典型的有黄油刀(ButterKnife)、ARouter、EventBus等都使用了注解。这些优秀的框架都是使…