news 2026/9/23 7:29:02

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
电影管理系统项目详解:基于Java的控制台应用

项目概述

这是一个完整的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. 退出系统

  • 结束程序运行

技术亮点

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

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

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

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

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

运行展示

项目改进建议

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

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

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

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

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

学习价值

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

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

  • 掌握集合框架的使用

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

  • 实践业务流程设计

  • 理解迭代器的使用场景

总结

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/22 16:22:43

LeetCode 461 - 汉明距离

文章目录摘要描述题解答案题解代码分析为什么一定要用异或&#xff1f;怎么数 1 的个数&#xff1f;Swift 可运行 Demo 代码代码逐步解析示例测试及结果与实际场景结合时间复杂度空间复杂度总结摘要 汉明距离这道题&#xff0c;属于那种题目极短、考点极准的类型。 表面看是在…

作者头像 李华
网站建设 2026/9/20 10:17:51

大数据领域元数据管理的开源工具推荐

大数据领域元数据管理的开源工具推荐关键词&#xff1a;大数据、元数据管理、开源工具、数据治理、数据血缘摘要&#xff1a;本文旨在为大家介绍大数据领域元数据管理的开源工具。在大数据时代&#xff0c;元数据管理就像是数据世界的地图&#xff0c;能帮助我们更好地理解和利…

作者头像 李华
网站建设 2026/9/20 10:17:54

大模型入门实战(非常详细)零基础入门到精通,收藏这一篇就够了

Part.1 什么是生成式AI&#xff1f; **“所有产品都值得用大模型重做一次。”**是近几年在AI圈子非常火爆的观点。 当大家都在热议大模型和生成式AI时&#xff0c;怎么让这些炫酷的技术快速落地&#xff0c;真正帮到商业和社会&#xff0c;成了个大难题。不过&#xff0c;AWS已…

作者头像 李华
网站建设 2026/9/17 15:51:05

【程序员必看】大模型本地化部署指南:macOS系统下LLM运行详解与收藏

本文详细介绍了大模型的基本概念、发展历程和技术原理&#xff0c;重点讲解了在macOS系统下本地运行大模型的实践方法。文章探讨了模型部署中的内存挑战和量化技术(GPTQ、GGML)&#xff0c;并通过llama.cpp和whisper.cpp等项目提供了具体的操作指南&#xff0c;帮助开发者在本地…

作者头像 李华
网站建设 2026/9/22 2:50:31

Conda list导出已安装包:Miniconda-Python3.10生成环境快照

Conda list导出已安装包&#xff1a;Miniconda-Python3.10生成环境快照 在科研、AI开发和工程部署中&#xff0c;你是否曾遇到过这样的场景&#xff1f;——同事发来一份PyTorch模型代码&#xff0c;你兴冲冲地运行&#xff0c;结果第一行就报错&#xff1a;“torch not found”…

作者头像 李华
网站建设 2026/9/20 10:17:50

PyTorch autograd机制解析:Miniconda-Python3.10调试梯度计算

PyTorch autograd机制解析&#xff1a;Miniconda-Python3.10调试梯度计算 在深度学习模型的开发过程中&#xff0c;一个看似微小的梯度异常就可能导致整个训练流程崩溃——你是否曾遇到过 loss 突然变为 NaN、参数毫无更新&#xff0c;甚至反向传播时程序静默失败&#xff1f;这…

作者头像 李华