项目概述
这是一个完整的Java控制台应用程序,实现了电影管理系统的基本功能。系统允许用户对电影进行增删改查操作,并支持按明星封杀的特殊功能。项目采用了面向对象的设计思想,结构清晰,适合Java初学者学习和参考。
项目结构
MovieSystem/ ├── Movie.java # 电影实体类 ├── MovieService.java # 电影业务服务类(主逻辑) └── Test.java # 程序入口类
详细代码解析
1. Movie.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 - 业务逻辑类
类定义与初始化
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)
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)
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) - 特色功能
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)
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)
private void qurryAllmovies() { for (Movie m : movies) { System.out.println(m.getName()+" 评分:"+m.getScore()+" 主演:"+m.getActor()+" 价格:"+m.getPrice()); } }3. Test.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学习者的优秀实践案例。