闲着无聊~自制电影信息管理系统(命令版)
本文介绍了一个基于Java的命令行电影信息管理系统,仅需300行代码即可实现电影上架、下架、查询、封杀明星等功能。系统采用JavaSE 8+技术栈,使用ArrayList存储数据,Scanner实现控制台交互,适合Java初学者练手。文章详细解析了核心类设计(Movie实体和MovieOpera控制器)及关键方法实现,特别是封杀明星功能中的批量删除技巧和常见踩坑点。提供了完整源码和扩展思路(如持久
【CSDN 首发】
30 分钟撸个“电影信息管理系统”——命令行版(Java 源码 + 逐行讲解 + 踩坑笔记)
—— 灰太狼出品,2025-10-29
一、前言
还在用 Excel 管理电影?今天带大家手撕一个 纯命令行 的电影信息管理系统,功能覆盖 上架 / 下架 / 查询 / 封杀明星 / 全量查看,总代码量 <300 行,零基础也能看懂。文末附完整源码与扩展思路,直接复制可跑!
二、技术栈
| 技术 | 说明 |
|---|---|
| JavaSE 8+ | 无第三方依赖 |
| ArrayList | 内存级数据存储 |
| Scanner | 控制台交互 |
| 面向过程 + 简单 OOP | 新手友好 |
三、功能一览
- 上架电影
- 下架电影
- 按片名查询
- 封杀明星(一键批量下架其所有影片)
- 查看所有电影
- 退出系统
四、运行效果(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
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐


所有评论(0)