【CSDN 首发】
30 分钟撸个“电影信息管理系统”——命令行版(Java 源码 + 逐行讲解 + 踩坑笔记)

—— 灰太狼出品,2025-10-29


一、前言

还在用 Excel 管理电影?今天带大家手撕一个 纯命令行 的电影信息管理系统,功能覆盖 上架 / 下架 / 查询 / 封杀明星 / 全量查看,总代码量 <300 行,零基础也能看懂。文末附完整源码与扩展思路,直接复制可跑!


二、技术栈

技术 说明
JavaSE 8+ 无第三方依赖
ArrayList 内存级数据存储
Scanner 控制台交互
面向过程 + 简单 OOP 新手友好

三、功能一览

  1. 上架电影
  2. 下架电影
  3. 按片名查询
  4. 封杀明星(一键批量下架其所有影片)
  5. 查看所有电影
  6. 退出系统

四、运行效果(GIF 省略)

====电影信息操作系统
1、上架
2、下架某个电影
3、查询某个电影
4、封杀某个明星
5、退出
6、查看所有电影
请您输入操作命令:1
==========上架电影==========
请输入电影名称:流浪地球3
请输入电影评分:9.1
请输入电影主演:吴京
请输入电影价格:45
上架成功

五、核心类设计

1. Movie 实体
public class Movie {
    private String name;
    private String score;  // 保留 String 避免 parse 异常
    private String actor;
    private String price;
    // 省略 getter/setter/toString
}
2. MovieOpera 控制器
  • 所有方法均为 实例方法,方便后续改成 Swing/JavaFX。
  • 统一使用 Scanner sc = new Scanner(System.in),避免重复创建。
  • 集合采用 static List<Movie> list = new ArrayList<>(),全局内存数据库。

六、亮点方法逐行解读

① 封杀明星 —— 批量删除
private void killStar() {
    System.out.println("==========封杀明星==========");
    String name = sc.next();
    for (int i = 0; i < list.size(); i++) {
        if (list.get(i).getActor().contains(name)) {  // 支持模糊匹配
            list.remove(i);
            i--;   // 重点:删除后指针回退,防止漏检
        }
    }
}

踩坑:foreach 删除会 ConcurrentModificationException,必须用索引遍历。

② 公共复用 —— 按片名查询
private Movie queryMoiveByName(String name) {
    for (Movie movie : list) {
        if (movie.getName().equals(name)) {
            return movie;
        }
    }
    return null;   // 约定优于异常
}

其余模块直接复用,避免冗余代码。


七、完整源码(复制即用)

Movie.java
package com.wlcSky.Collection.List.mode;

public class Movie {
    private String name;
    private String score;
    private String actor;
    private String price;

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getScore() { return score; }
    public void setScore(String score) { this.score = score; }
    public String getActor() { return actor; }
    public void setActor(String actor) { this.actor = actor; }
    public String getPrice() { return price; }
    public void setPrice(String price) { this.price = price; }

    @Override
    public String toString() {
        return "电影名称:" + name + ",评分:" + score + ",主演:" + actor + ",价格:" + price;
    }
}
MovieOpera.java

见提问代码,已可直接运行。


八、可能的扩展方向

方向 实现思路
持久化 每步操作后 Serializable 写入文件,启动反序列化。
模糊查询 正则 / contains 忽略大小写。
分页展示 subList(start, end) 控制打印。
Web 版 SpringBoot + Thymeleaf,30 分钟搞定。

九、小结

命令行项目虽小,却覆盖了 集合增删改查 / 控制台交互 / 防踩坑技巧,非常适合 Java 入门练手。源码已上传个人 GitCode,公众号后台回复【电影系统】即可获取。
如果本文帮到你,记得 一键三连 ❤️+👍+🌟,评论区交流你的优化思路!


作者:灰太狼
CSDN 博客专家 | 专注 Java 基础与实战
2025-10-29 首发于 CSDN

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐