面向对象基础综合案例

1.业务需求

在这里插入图片描述

2.代码

2.1实体类,用于对电影的信息进行存储

package com.itheima.Case;

//写一个实体类,用于对电影的信息进行存储
public class Movie {
    //将private定义成员变量,进行合理隐藏,使用get 和set方法进行合理暴露(封装)
    private  int id;//通过id来查询更加详细的信息
    private  String name;  //电影的名称
    private  double price;//电影票价格
    private  double score;//对电影的评分
    private  String director;    //电影的导演
    private  String actor;//电影的演员
    private  String info ;//其他的相关信息
    //提高开发效率,右键选择generate,进而选择getter和setter进行创建get和set方法
    //同样的方法,新建有参(constructer全部勾选)和无参的构造器(勾选null)
    public Movie() {
    }

    public Movie(int id, String name, double price, double score, String director, String actor, String info) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.score = score;
        this.director = director;
        this.actor = actor;
        this.info = info;
    }



    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public String getDirector() {
        return director;
    }

    public void setDirector(String director) {
        this.director = director;
    }

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }
}


2.2处理数据

package com.itheima.Case;

//现在开发的主流写法,保存数据和处理数据的进行分开
public class MovieOperator {
    private Movie[] movies;
    public MovieOperator(Movie[] movies){
        this.movies = movies;  //this关键词用于指向该对象
    }
    /**需求1:展示系统中全部电影信息 movies = [m1,m2,m3,m4];*/
    //定义一个打印信息的方法,不需要返回值,void即可
    public void printAllMovies(){
        System.out.println("--------系统全部电影信息如下--------");
        for (int i = 0; i < movies.length; i++) {
            Movie m = movies[i];
            //电影的信息
            System.out.println("编号:" + m.getId());
            System.out.println("名称:" + m.getName());
            System.out.println("价格:" + m.getPrice());
            System.out.println("--------------");

        }
    }
    /**需求2:根据电影的编号查询出该电影的详细信息*/
    public void searchMovieByID(int id){
        for (int i = 0; i < movies.length; i++) {
            Movie m = movies[i];
            if(m.getId() == id){
                System.out.println("该电影的详情如下:");
                System.out.println("编号:" + m.getId());
                System.out.println("名称:" + m.getName());
                System.out.println("价格:" + m.getPrice());
                System.out.println("评分:" + m.getScore());
                System.out.println("导演:" + m.getDirector());
                System.out.println("演员:" + m.getActor());
                System.out.println("其他信息:" + m.getInfo());
                return ;//表示已经找到了电影信息,没有必要再接着执行了
            }
        }
        //需要全面考虑各种情况
        System.out.println("没有该电影信息~");
    }
}


2.3.操作部分设计

package com.itheima.Case;

//现在开发的主流写法,保存数据和处理数据的进行分开
public class MovieOperator {
    private Movie[] movies;
    public MovieOperator(Movie[] movies){
        this.movies = movies;  //this关键词用于指向该对象
    }
    /**需求1:展示系统中全部电影信息 movies = [m1,m2,m3,m4];*/
    //定义一个打印信息的方法,不需要返回值,void即可
    public void printAllMovies(){
        System.out.println("--------系统全部电影信息如下--------");
        for (int i = 0; i < movies.length; i++) {
            Movie m = movies[i];
            //电影的信息
            System.out.println("编号:" + m.getId());
            System.out.println("名称:" + m.getName());
            System.out.println("价格:" + m.getPrice());
            System.out.println("--------------");

        }
    }
    /**需求2:根据电影的编号查询出该电影的详细信息*/
    public void searchMovieByID(int id){
        for (int i = 0; i < movies.length; i++) {
            Movie m = movies[i];
            if(m.getId() == id){
                System.out.println("该电影的详情如下:");
                System.out.println("编号:" + m.getId());
                System.out.println("名称:" + m.getName());
                System.out.println("价格:" + m.getPrice());
                System.out.println("评分:" + m.getScore());
                System.out.println("导演:" + m.getDirector());
                System.out.println("演员:" + m.getActor());
                System.out.println("其他信息:" + m.getInfo());
                return ;//表示已经找到了电影信息,没有必要再接着执行了
            }
        }
        //需要全面考虑各种情况
        System.out.println("没有该电影信息~");
    }
}


3.执行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.一点碎碎念

1.利用死循环,来让直到输入为正确(按住需要循环体+ctrl+alt+t,快捷键生成选择死循环的形式
2.scanner需要放在死循环之外,以免占用过多的内存
3.早上用的jdk-21,运行出现了中文字符乱码的情况,网上搜集了一下
在这里插入图片描述
有一个这样的做法,但还是没有解决掉问题,遂而用jdk-17,就可以了,也不是很理解是哪里的问题。

4.还需要注意一件事,建package的时候,一定不要出现java的关键字,否则新建的时候,会找不到java class,没办法接着下一步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值