首页 > 编程语言 >使用java程序模拟电影案例(增删改查)

使用java程序模拟电影案例(增删改查)

时间:2024-11-19 18:14:13浏览次数:3  
标签:java 电影 改查 System print movie 增删 println out

public static void main(String[] args) {
        //完成电影案例
        //1、创建电影对象:定义电影类
        //2、创建一个电影操作对象:专门负责对电影数据进行业务处理(上架、下架、查询、封杀)
        MovieService movieService = new MovieService();
        movieService.start();
    }
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Movie {
    private String name;
    private double score;
    private String actor;
    private double price;

}
public class MovieService {
    //4、准备电影集合,存储全部上架的电影数据
    private static List<Movie> movies = new ArrayList<>();
    private static Scanner sc = new Scanner(System.in);

    public void start() {
        while (true) {
            //3、准备操作界面
            System.out.println("\t\t\t\t\t\t\t\t\t\t----电影信息操作系统----");
            System.out.print("1.上架\t");
            System.out.print("2.下架某个电影\t");
            System.out.print("3.查询某个电影\t");
            System.out.print("4.修改封杀某个明星\t");
            System.out.print("5.修改某个电影\t");
            System.out.print("6.展示全部电影\t");
            System.out.print("7.退出系统\t");
            System.out.print("\n请输入你的操作命令:");
            String command = sc.next();
            switch (command) {
                case "1":
                    //上架电影
                    addMovie();
                    break;
                case "2":
                    //下架某个电影
                    delistMovie();
                    break;
                case "3":
                    //查询某个电影
                    queryMovie();
                    break;
                case "4":
                    //修改封杀某个明星的电影
                    deleteStar();
                    break;
                case "5":
                    //修改某个电影
                    updateMovie();
                    break;
                case "6":
                    //展示全部电影
                    showAllMovie();
                    break;
                case "7":
                    //退出系统
                    System.out.println("退出系统");
                    return;
                default:
                    System.out.println("输入有误,请重新输入");
            }
        }
    }

    /**
     * @param
     * @return
     * @create by: 小郭
     * @description: 修改某个电影
     * @create time: 2024/11/18 20:41
     */
    private void updateMovie() {
        System.out.println("----修改电影信息----");
        System.out.print("请输入电影名称:");
        String name = sc.next();
        Movie movie = queryMovieByName(name);
        if (movie != null) {
            System.out.print("请输入新的电影名称:");
            movie.setName(sc.next());
            System.out.print("请输入新的电影评分:");
            movie.setScore(sc.nextDouble());
            System.out.print("请输入新的主演:");
            movie.setActor(sc.next());
            System.out.print("请输入新的电影价格:");
            movie.setPrice(sc.nextDouble());
            System.out.println("修改成功!");
        }else{
            System.out.println("没有找到该电影");
        }
    }

    /**
     * @param
     * @return
     * @create by: 小郭
     * @description: 展示全部电影
     * @create time: 2024/11/18 20:40
     */
    private void showAllMovie() {
        System.out.println("----全部电影信息----");
        for (Movie movie : movies) {
            System.out.println("名称:" + movie.getName() + ",评分:" + movie.getScore() + ",主演:" + movie.getActor() + ",价格:" + movie.getPrice());
        }
    }

    /**
     * @param
     * @return
     * @create by: 小郭
     * @description: 删除明星
     * @create time: 2024/11/18 20:32
     */

    private void deleteStar() {
        System.out.println("----封杀明星电影----");
        System.out.print("请输入要封杀的明星:");
        String name = sc.next();
        //1、遍历集合,获取每一个电影对象,判断是否包含明星
        for (int i = 0; i < movies.size(); i++) {
            Movie movie = movies.get(i);
            if (movie.getActor().contains(name)) {
                //2、如果包含,就删除
                movies.remove(movie);
                i--;  //退一步
            }
        }
        System.out.println("封杀成功!");
        //展示全部电影
        showAllMovie();
        if (movies.size() == 0) {
            System.out.println("全部电影已下架");
        }
    }

    /**
     * @param
     * @return
     * @create by: 小郭
     * @description: 下架电影
     * @create time: 2024/11/18 20:29
     */
    private void delistMovie() {
        System.out.println("----下架电影----");
        System.out.print("请输入电影名称:");
        String name = sc.next();
        Movie movie = queryMovieByName(name);
        if (movie != null) {
            //1、判断是否下架
            System.out.print("是否下架(y/n):");
            String answer = sc.next();
            if (answer.equals("y")) {
                //2、下架,从集合中删除
                movies.remove(movie);
                System.out.println("下架成功!");
            } else {
                System.out.println("取消下架!");
            }
        } else {
            System.out.println("没有找到该电影");
        }
    }

    /**
     * @param
     * @return
     * @create by: 小郭
     * @description: 查询电影
     * @create time: 2024/11/18 20:17
     */
    private void queryMovie() {
        System.out.println("----查询电影----");
        //分析:查询电影,其实就是根据电影名称,查询到对应的电影对象,然后打印出来
        //1、提示用户输入电影名称
        System.out.print("请输入电影名称:");
        String name = sc.next();
        Movie movie = queryMovieByName(name); // 调用业务方法
        if (movie != null) {
            //2、打印电影对象
            System.out.println("名称:" + movie.getName() + ",评分:" + movie.getScore() + ",主演:" + movie.getActor() + ",价格:" + movie.getPrice());
        } else {
            System.out.println("没有找到该电影");
        }
    }

    //根据电影名称查询电影对象返回
    private Movie queryMovieByName(String name) {
        //1、遍历集合,获取每一个电影对象,判断电影名称是否相同
        for (Movie movie : movies) {
            if (movie.getName().equals(name)) {
                return movie;  // 找到就返回
            }
        }
        return null;  // 没有找到就返回null
    }


    /**
     * @param
     * @return
     * @create by: 小郭
     * @description: 上架电影
     * @create time: 2024/11/18 20:16
     */

    private void addMovie() {
        System.out.println("----上架电影----");
        //分析:每次点击一次上架电影,其实就是新增一部电影,每部电影是一个电影对象封装数据的
        //1、创建电影对象,封装这部电影的信息
        Movie movie = new Movie();
        //2、给电影对象注入数据
        System.out.print("请输入电影名称:");
        movie.setName(sc.next());
        System.out.print("请输入电影评分:");
        movie.setScore(sc.nextDouble());
        System.out.print("请输入主演:");
        movie.setActor(sc.next());
        System.out.print("请输入电影价格:");
        movie.setPrice(sc.nextDouble());
        //3、调用业务方法,将电影对象添加到集合中
        movies.add(movie);
        System.out.println("添加成功!");
    }
}

标签:java,电影,改查,System,print,movie,增删,println,out
From: https://blog.csdn.net/Coisini__S/article/details/143892173

相关文章

  • [Java] String的hashCode方法
    简述java/lang/String#hashCode是用途极广的方法,其源码实现也存在一定变迁。其位于JRE的rt.jar包内OpenJDKOpenJDK8-b120版~9-b00版:=OracleJDK1.8.0-261jdk/jdk/src/share/classes/java/lang/String.javahttps://github.com/openjdk/jdk/blob/jdk8-b120/......
  • Java 实际开发中积累的几个小技巧
    一、枚举类的注解看起来很常见的枚举,可能也隐藏着使用上的问题:你有没有在代码里不小心做过改变枚举值的操作?或者为怎么合理规范地写构造方法/成员方法而烦恼?那么不妨来看看我的示例,注释写得比较清楚了:@Getter//只允许对属性get,不允许set@RequiredArgsConstructor//......
  • JavaScript函数式编程指南
    前言本文内容来自于《JavaScript函数式编程指南》,可以看作是对原书内容进行提炼和总结,若您有需要或感觉有出入请参原书。一、走进函数式面向对象编程(OOP)通过封装变化使得代码更易理解。函数式编程(FP)通过最小化变化使得代码更易理解。——MichaelFeathers(Twitter)函......
  • cat-3.1.0 单机搭建监控 java
    官网:https://github.com/dianping/cat/wiki/readme_server下载:https://github.com/dianping/cat/releases/download/3.1.0/cat-home.warhttps://github.com/dianping/cat/archive/refs/tags/3.1.0.tar.gz参考文档:https://github.com/dianping/cat/wiki/readme_server本次......
  • JAVA反序列化学习-CommonsCollections5(基于ysoserial)
    环境准备JDK1.8(8u421)我以本地的JDK8版本为准、commons-collections(3.x4.x均可这里使用3.2版本)cc3.2:<dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2</version>&l......
  • 来记录一下Java开发三年左右的心得体会
    Java开发三年心得大概一年多没有在CSDN上发表文章了,最近休息想来记录一下这几年的开发心得。深圳比亚迪的外包之路~开始北漂~24年被裁一周内又找到工作啦。最后的心得大概一年多没有在CSDN上发表文章了,最近休息想来记录一下这几年的开发心得。2021年大概冬天的时候......
  • java中使用Jackson代替fastjson进行序列化处理
    方法详解这里会列出常用方法的详解,更多方法可查阅jacksonapi文档ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构对象转json字符串ObjectMapper通过writeValue系列方法将java对象序列化为json,并将json存储成不同的格式:String(writeVa......
  • 大学生HTML期末大作业——HTML+CSS+JavaScript南宁绿城
    HTML+CSS+JS【旅游网站】网页设计期末课程大作业web前端开发技术web课程设计网页规划与设计......
  • Java防止反编译的技术方案
    背景由于Java字节码的抽象级别较高,因此它们较容易被反编译。本文介绍了几种常用的方法,用于保护Java字节码不被反编译。通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已,因为这些方法都有自己的使用环境和弱点。不同保护技术比较表以下几种技术都有不同的应用......
  • JAVA反序列化学习-CommonsCollections4(基于ysoserial)
    环境准备JDK1.8(8u421)这里ysoserial没有提及JDK版本的影响,我以本地的JDK8版本为准、commons-collections4(4.0以ysoserial给的版本为准)、javassist(3.12.1.GA)cc4.0、ClassPool<dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections......