IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 面向对象Day01 -> 正文阅读

[人工智能]面向对象Day01

分类思想## 分包思想##黑马信息管理系统

  1. 分类思想
  2. 包的概述和定义
  3. 包的注意事项和类访问
  4. 需求说明和效果演示
  5. 环境搭建
  6. 菜单搭建
  7. 基本添加功能 - 思路分析
  8. 基本添加功能 - 代码实现
  9. 添加功能 - 加入学号判断
  10. 添加功能 - 问题分析
  11. static关键字特点
  12. static注意事项 - 学号存在问题解决
  13. 查看学生 - 代码实现
  14. 删除功能 - 代码实现
  15. 修改功能 - 代码实现
  16. 学生管理系统代码优化

  • 老师管理系统 - 环境搭建

?

?

?
通过我们已掌握的知识点,先实现一个案例,然后找出案例中存在的一些问题
通过新知识点,提高代码的复用性、可读性、维护性
存在的问题:
1. 代码冗余(复杂)
2. 可读性差(多个功能放在一个模块/类)
3. 可维护性差(耦合高)

学生管理系统代码分析:
业务逻辑都在一张java文件中
重复代码比较多(索引判断,封装学生对象的代码)
学生管理系统在这里插入图片描述
在这里插入图片描述
请添加图片描述
请添加图片描述------------------------------------------------------------------------------------------------------

  1. 分类思想
    分类思想:
    分工协作,专人干专事

老板管理:
客服接待 -> 业务员 -> 库管 -> 仓库

黑马信息管理系统分类:
Student类:
标准类,封装键盘录入的学生信息(id、name、age、birthday)
StudentDao类:库管
Data Access Object,该类用于访问存储数据的容器(数组、集合、数据库)
StudentService类:业务员
进行业务逻辑的处理(例如判断录入的id是否存在)
StudentController类:客户接待
与用户打交道(接收请求、采集信息、打印数据到控制台等)
------------------------------------------------------------------------------------------------------
2. 包的概述和定义
由于划分出来的类文件很多,我们要对文件进行管理,管理方式:
分包(分文件夹)

分包思想:
如果所有的类文件都在同一个包下,不利于管理和后期维护
所以,对于不同功能的类文件,可以放在不同的包下进行管理

包:本质就是文件夹

包的创建:
可创建单级包、多级包
多级包之间使用.分隔
包的命名规范是公司域名去掉www后的反写(com.baidu)
包的命名都是纯小写字母

package关键字:
使用package定义包:文本文档要手动添加,开发工具自动添加(在代码的第一行)
格式:package 包名.包名.类名;


3.包的注意事项和类访问
包的注意事项:
package语句必须是文件的第一行代码
package关键字,在一个java文件中只能有一个
如果没有package,默认表示无包名(在IDEA中可以放在根目录scr下)

类与类之间的访问:
同一个包下类的访问:
不需要导包,直接访问即可
不同包下类的访问:
1. 通过全类名(包名+类名)访问,中间用.分隔
2. import导包后访问(常用)

通过全类名导包的应用场景:
多个包下,出现了相同名称类时
要在另一个类中,使用这个两个相同名称的类
我们如果使用import导了第一个类,那么第二个就不能使用import了

注意import、package、class三个关键字书写位置的关系:
package:必须是文件第一行代码
import:写在package下,class上
class:在import下


  1. 需求说明和效果演示
    【黑马信息管理系统】包含:
    1. 学生管理系统
      增:录入信息有id、name、age、birthday;使用数组存储学生信息,id不能重复
      删:录入要删除的学生id,如果录入的id不存在,需要重新录入;存在则从数组中移除
      改:录入要修改的学生id,如果录入的id不存在,需要重新录入;存在则继续录入其他信息,修改数组中的旧信息
      查:将数组中所有对象信息,打印在控制台

    2. 老师管理系统
      增:(同上)
      删:(同上)
      改:(同上)
      查:(同上)

案例要求:使用分类思想、分包思想完成

代码:
增(在StudentController类:客户接待):

private void addStudent(){
        //提升id的作用域
        String id;
        //接收学生信息
        //判断学号是否重复
        while (true) {
            System.out.println("请输入学生学号:");
            id = sc.next();
            //指派业务层的isExists方法判断
            boolean result = studentService.isExists(id);
            //判断返回结果
            if (result) {
                //如果存在,错误提示
                System.out.println("学号已存在,请重新输入!");
            } else {
                //放行
                break;
            }
        }
    }
(StudentDao类:库管)
public boolean addStudent(Student stu){
/*
            添加学生的思路:
                哪个索引处为null,就给顺着给哪里添加
                定义index为-1,假设数组存满,没有null元素
                遍历获取每一个元素,判断是否为null
                如果为null,让index记录该位置索引,并结束循遍历环,就拿到了要存储位置的索引
         */
        int index=-1;
        for (int i = 0; i < stuArray.length; i++) {
            // 如果找到了null
            if(stuArray[i] == null){
                // 记录索引
                index = i;
                // 结束循环
                break;
            }
        }
        // 判断index
        if (index == -1) {
            // 如果还是-1,代表没有null,存满了,返回false
            return false;
        } else {
            // 如果有位置,添加学生对象到数组,返回true
            stuArray[index] = stu;
            return true;
        }
    }

删(在StudentController类:客户接待):

/*
           删除学生
        */
    private void deleteStudentById(){
        // 指派Service层,调用findAllStudent(),得到学生数组
        Student[] stuArray = studentService.findAllStudent();
        // 判断数组地址
        if (stuArray == null) {
            System.out.println("数组中还未添加学生,请先添加");
            //停止方法
            return;
        }
        //提升id的作用域
        String id;
        while (true) {
            System.out.println("请输入要删除的学生学号:");
            id = sc.next();
            //判断学号
            boolean result = studentService.isExists(id);
            if (!result) {
                //如果不存在,错误提示(不存在不能删除)
                System.out.println("输入的学号不存在,请重新输入");
            } else {
                //放行
                break;
            }
        }

    }
(StudentDao类:库管)

    /*
        删除学生
    */
    public void deleteStudentById(String id) {
        // 根据学号查找对象的索引
        int index = getIndex(id);
        // 将该索引位置的对象,使用null替换
        stuArray[index] = null;
    }

改(在StudentController类:客户接待):

   /*
           修改学生
        */
    private void updateStudentById() {
        // 指派Service层,调用findAllStudent(),得到学生数组
        Student[] stuArray = studentService.findAllStudent();
        // 判断返回值如果为null,代表没有数据,不能删除
        if (stuArray == null) {
            System.out.println("数组中还未添加学生,请先添加");
            // 停止方法
            return;
        }
        //提升id的作用域
        String id;
        while (true) {
            System.out.println("请输入要修改的学生学号:");
            id = sc.next();
            //判断学号
            boolean result = studentService.isExists(id);
            if (!result) {
                //如果不存在,错误提示(不存在不能修改)
                System.out.println("输入的学号不存在,请重新输入");
            } else {
                //放行
                break;
            }
        }
    }
(StudentDao类:库管)

查(在StudentController类:客户接待):

在这里插入代码片
在这里插入代码片

–5. 环境搭建


  1. 菜单搭建

  1. 基本添加功能 - 思路分析

  1. 基本添加功能 - 代码实现

  1. 添加功能 - 加入学号判断

  1. 添加功能 - 问题分析

  1. static关键字特点

  1. static注意事项 - 学号存在问题解决

  1. 查看学生 - 代码实现

  1. 删除功能 - 代码实现

  1. 修改功能 - 代码实现

  1. 学生管理系统代码优化

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-11 12:23:47  更:2021-08-11 12:26:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 21:01:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码