项目概述
这是一个完整的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. 退出系统
- 结束程序运行
技术亮点
-
面向对象设计:Movie类封装电影数据,MoviceService处理业务逻辑
-
集合框架应用:使用ArrayList存储电影对象
-
迭代器模式:安全地遍历和删除集合元素
-
用户友好交互:清晰的菜单提示和错误处理
-
代码复用 :
queryMovieByName方法被多个功能复用
运行展示

项目改进建议
-
数据持久化:添加文件或数据库存储,重启程序不丢失数据
-
输入验证:对用户输入进行合法性检查
-
异常处理:添加更完善的异常处理机制
-
UI优化:可以考虑使用图形界面
-
功能扩展:添加电影分类、搜索排序等功能
学习价值
这个项目非常适合Java初学者学习:
-
理解面向对象编程的基本概念
-
掌握集合框架的使用
-
学习控制台应用程序的开发
-
实践业务流程设计
-
理解迭代器的使用场景
总结
这个电影管理系统虽然简单,但涵盖了Java编程的核心概念。通过这个项目,可以学习到Java基础语法、面向对象设计、集合操作和用户交互设计等关键技能。项目结构清晰,代码易于理解,是Java学习者的优秀实践案例。