面向对象综合案例:电影信息系统
在面向对象的编程中,我们学习了如何定义类、创建对象、封装数据和行为等概念。为了将这些知识应用到实际项目中,我们将通过构建一个电影信息系统来加深理解。该系统将允许用户查看所有电影的信息,并根据电影的编号查询特定电影的详细信息。
1. 需求分析
电影信息系统需要满足以下需求:
- 展示系统中全部的电影信息(每部电影包括编号、名称、价格、评分等)。
- 允许用户根据电影的编号查询某个电影的详细信息。
2. 设计思路
我们将按照以下步骤来构建该系统:
-
定义电影类:创建一个
Movie
类来封装电影的相关信息。 -
定义电影操作类:创建一个
MovieManager
类来管理电影数据并提供操作电影的方法。 -
定义测试类:在
Main
类中准备电影数据,并调用MovieManager
类的方法来展示和查询电影信息。
3. 代码实现
3.1 定义电影类
首先,我们定义一个Movie
类来封装电影的信息:
// Movie.java
public class Movie {
private int id; // 电影的编号
private String name; // 电影的名称
private double price; // 电影的价格
private double rating; // 电影的评分
private String director; // 电影的导演
private String actors; // 电影的主演们
private String summary; // 电影的简介
// 构造方法
public Movie(int id, String name, double price, double rating, String director, String actors, String summary) {
this.id = id;
this.name = name;
this.price = price;
this.rating = rating;
this.director = director;
this.actors = actors;
this.summary = summary;
}
// Getter和Setter方法
// ...(省略了getter和setter方法,实际开发中需要包含这些方法)
// 为了方便展示,我们添加一个toString方法
@Override
public String toString() {
return "Movie{" +
"id=" + id +
", name='" + name + '\'' +
", price=" + price +
", rating=" + rating +
", director='" + director + '\'' +
", actors='" + actors + '\'' +
", summary='" + summary + '\'' +
'}';
}
}
3.2 定义电影操作类
接下来,我们定义一个MovieManager
类来管理电影数据并提供操作电影的方法:
// MovieManager.java
import java.util.ArrayList;
import java.util.List;
public class MovieManager {
private List<Movie> movies; // 使用List来存储电影数据,以便动态添加电影
// 构造方法,初始化电影列表
public MovieManager() {
this.movies = new ArrayList<>();
}
// 添加电影到列表中
public void addMovie(Movie movie) {
movies.add(movie);
}
// 展示全部电影信息
public void printAllMovies() {
System.out.println("-----系统全部电影信息如下:-------");
for (Movie movie : movies) {
System.out.println(movie); // 使用toString方法展示电影信息
System.out.println("------------------------");
}
}
// 根据电影的编号查询出该电影的详细信息并展示
public void searchMovieById(int id) {
for (Movie movie : movies) {
if (movie.getId() == id) {
System.out.println("该电影详情如下:");
System.out.println(movie); // 使用toString方法展示电影详细信息
return; // 已经找到了电影信息,没有必要再执行了
}
}
System.out.println("没有该电影信息~");
}
}
3.3 定义测试类
最后,我们在Main
类中准备电影数据,并调用MovieManager
类的方法来展示和查询电影信息:
// Main.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 创建一个MovieManager对象来管理电影数据
MovieManager movieManager = new MovieManager();
// 准备电影数据,并添加到MovieManager中
movieManager.addMovie(new Movie(1, "水门桥", 38.9, 9.8, "徐克", "吴京", "12万人想看"));
movieManager.addMovie(new Movie(2, "出拳吧,妈妈", 39, 7.8, "唐晓白", "田雨", "3.5万人想看"));
movieManager.addMovie(new Movie(3, "月球陨落", 42, 7.9, "罗兰·艾默里奇", "帕特里克·威尔森", "17.9万人想看"));
movieManager.addMovie(new Movie(4, "一点就到家", 35, 8.7, "许宏宇", "刘昊然", "10.8万人想看"));
// 创建一个Scanner对象来读取用户输入
Scanner scanner = new Scanner(System.in);
// 循环读取用户命令并执行相应操作
while (true) {
System.out.println("==电影信息系统==");
System.out.println("1、查询全部电影信息");
System.out.println("2、根据id查询某个电影的详细信息展示");
System.out.println("3、退出系统");
System.out.println("请您输入操作命令:");
int command = scanner.nextInt();
switch (command) {
case 1:
// 展示全部电影信息
movieManager.printAllMovies();
break;
case 2:
// 根据id查询某个电影的详细信息展示
System.out.println("请您输入查询的电影id:");
int id = scanner.nextInt();
movieManager.searchMovieById(id);
break;
case 3:
// 退出系统
System.out.println("感谢使用电影信息系统,再见!");
scanner.close();
return;
default:
System.out.println("您输入的命令有问题,请重新输入!");
}
}
}
}
4. 总结
通过构建电影信息系统,我们深入理解了面向对象编程的思想,包括类的定义、对象的创建、数据的封装和方法的调用等。同时,我们也学会了如何使用List集合来动态管理数据,并通过Scanner类读取用户输入来实现交互功能。希望这个案例能够帮助大家更好地掌握面向对象编程的知识。