电影管理系统项目详解:基于Java的控制台应用

项目概述

这是一个完整的Java控制台应用程序,实现了电影管理系统的基本功能。系统允许用户对电影进行增删改查操作,并支持按明星封杀的特殊功能。项目采用了面向对象的设计思想,结构清晰,适合Java初学者学习和参考。

项目结构

复制代码
MovieSystem/
├── Movie.java          # 电影实体类
├── MovieService.java  # 电影业务服务类(主逻辑)
└── Test.java          # 程序入口类

详细代码解析

1. Movie.java - 电影实体类

java 复制代码
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Movie {
    // 电影系统搭建
    private String name;    // 电影名称
    private double score;   // 电影评分
    private String actor;   // 电影主演
    private double price;   // 电影价格
}

核心特性:

  • 使用Lombok注解简化代码

  • @Data:自动生成getter/setter、toString等方法

  • @AllArgsConstructor:生成全参数构造函数

  • @NoArgsConstructor:生成无参数构造函数

  • 包含电影的四个基本属性

2. MovieService.java - 业务逻辑类

类定义与初始化
java 复制代码
public class MovieService {
    //准备一个集合容器:存储全部上架的电影数据
    private static List<Movie> movies=new ArrayList<>();
    private static Scanner sc=new Scanner(System.in);
    public void start() {
        //
        System.out.println("欢迎来到电影管理系统");
        System.out.println("1.上架电影");
        System.out.println("2.下架电影");
        System.out.println("3.查询电影");
        System.out.println("4.封杀某个明星");
        System.out.println("5.展示全部电影");
        System.out.println("6.退出系统");
        while(true){
            System.out.println("请输入您的选择:");
            String choice = sc.next();
            switch (choice) {
                case "1":
                    System.out.println("上架电影");
                    //独立成方法
                    addMovie();
                    break;
                case "2":
                    System.out.println("下架电影");
                    removeMovie();
                    break;
                case "3":
                    System.out.println("查询电影");
                    quaryMovie();
                    break;
                case "4":
                    System.out.println("封杀某个明星");
                    banStar();
                    break;
                case "5":
                    System.out.println("展示全部电影");
                    qurryAllmovies();
                    break;
                case "6":
                    System.out.println("退出系统");
                    return;
                default:
                    System.out.println("输入有误,请重新输入");
                    break;
            }
        }


    }
核心功能方法

1. 上架电影 (addMovie)

java 复制代码
private void addMovie() {
    Movie movie = new Movie();
    System.out.println("请输入电影名称:");
    movie.setName(sc.next());
    System.out.println("请输入电影主演:");
    movie.setActor(sc.next());
    System.out.println("请输入电影价格");
    movie.setPrice(sc.nextDouble());
    System.out.println("请输入电影评分");
    movie.setScore(sc.nextDouble());
    
    movies.add(movie);
    System.out.println("上架成功!");
}

2. 按名称查询电影 (queryMovie)

java 复制代码
public Movie queryMovieByName(String name) {
    for (Movie m : movies) {
        if(m.getName().equals(name)){
            return m;
        }
    }
    return null;
}

   private void quaryMovie() {
        System.out.println("查询电影");
        System.out.println("请输入要查询的电影名称:");
        String name = sc.next();
        Movie movie = queryMovieByName(name);
        if (movie != null) {
            System.out.println(movie);
        }
        else {
            System.out.println("没有此电影");
        }
    }

3. 封杀明星功能 (banStar) - 特色功能

java 复制代码
private void banStar() {
    System.out.println("封杀某个明星");
    System.out.println("请输入要封杀的明星:");
    String star = sc.next();

    // 使用迭代器安全地遍历和删除
    java.util.Iterator<Movie> iterator = movies.iterator();
    while (iterator.hasNext()) {
        Movie m = iterator.next();
        if(m.getActor().contains(star)){
            iterator.remove(); // 使用迭代器的remove方法
            System.out.println("封杀成功!");
        }
    }
}

关键点:

  • 使用迭代器遍历集合,避免ConcurrentModificationException

  • 使用contains()方法匹配明星姓名

  • 删除成功后显示提示信息

4.删除电影(removeMovie)

java 复制代码
   private void removeMovie() {
        System.out.println("下架电影");
        System.out.println("请输入要删除的电影名称:");
        String name = sc.next();
        Movie movie = queryMovieByName(name);
        if (movie != null) {
            movies.remove(movie);
        }
        else {
            System.out.println("没有此电影");
        }
    }

5. 展示全部电影(qurryAllmovies)

java 复制代码
private void qurryAllmovies() {
    for (Movie m : movies) {
        System.out.println(m.getName()+"  评分:"+m.getScore()+"  主演:"+m.getActor()+"  价格:"+m.getPrice());
    }
}

3. Test.java - 程序入口

java 复制代码
public class Test {
    public static void main(String[] args) {
        // 创建电影操作对象
        MovieService movieService = new MoviceService();
        // 启动系统
        movieService.start();
    }
}

系统功能详解

1. 上架电影

  • 输入电影名称、主演、价格、评分

  • 将电影对象添加到集合中

  • 提供成功反馈

2. 下架电影

  • 按电影名称查找

  • 从集合中移除电影

  • 处理电影不存在的情况

3. 查询电影

  • 按名称精确查询

  • 显示电影的详细信息

  • 友好的错误提示

4. 封杀明星

  • 特色功能:删除包含指定明星的所有电影

  • 支持部分匹配(如输入"刘"会删除所有姓刘的明星电影)

  • 使用迭代器安全删除

5. 展示全部电影

  • 遍历显示所有电影信息

  • 格式化输出电影属性

6. 退出系统

  • 结束程序运行

技术亮点

  1. 面向对象设计:Movie类封装电影数据,MoviceService处理业务逻辑

  2. 集合框架应用:使用ArrayList存储电影对象

  3. 迭代器模式:安全地遍历和删除集合元素

  4. 用户友好交互:清晰的菜单提示和错误处理

  5. 代码复用queryMovieByName方法被多个功能复用

运行展示

项目改进建议

  1. 数据持久化:添加文件或数据库存储,重启程序不丢失数据

  2. 输入验证:对用户输入进行合法性检查

  3. 异常处理:添加更完善的异常处理机制

  4. UI优化:可以考虑使用图形界面

  5. 功能扩展:添加电影分类、搜索排序等功能

学习价值

这个项目非常适合Java初学者学习:

  • 理解面向对象编程的基本概念

  • 掌握集合框架的使用

  • 学习控制台应用程序的开发

  • 实践业务流程设计

  • 理解迭代器的使用场景

总结

这个电影管理系统虽然简单,但涵盖了Java编程的核心概念。通过这个项目,可以学习到Java基础语法、面向对象设计、集合操作和用户交互设计等关键技能。项目结构清晰,代码易于理解,是Java学习者的优秀实践案例。

相关推荐
龙之叶4 小时前
【Android Monkey源码解析四】- 异常捕获/页面控制
android·windows·adb·monkey
优选资源分享5 小时前
Advanced Renamer v4.20 便携版 批量文件重命名工具
windows·实用工具
开开心心就好10 小时前
PDF密码移除工具,免费解除打印编辑复制权限
java·网络·windows·websocket·pdf·电脑·excel
霸道流氓气质10 小时前
Java 实现折线图整点数据补全与标准化处理示例代码讲解
java·开发语言·windows
时光不弃青栀11 小时前
Windows服务器无法复制粘贴文件
运维·服务器·windows
m0_7482523812 小时前
Java 变量类型
java·数据结构·windows
lbb 小魔仙12 小时前
【Harmonyos】开源鸿蒙跨平台训练营DAY2:多终端工程创建运行、代码提交至AtomGit平台自建公开仓库全流程(附带出现问题及解决方法)
windows·flutter·开源·harmonyos·鸿蒙·开源鸿蒙·鸿蒙开平台应用
luyun02020212 小时前
精简版本,绿色便携
java·windows·figma
非凡ghost13 小时前
批量转双层PDF(可识别各种语言)
windows·学习·pdf·软件需求
Whoami!13 小时前
⓫⁄₁ ⟦ OSCP ⬖ 研记 ⟧ Windows权限提升 ➱ Windows特权结构与访问控制介绍
windows·网络安全·信息安全·权限提升