在控制台上实现简单的电影信息查询系统

Posted on 2023-11-05 13:53  流年ccc  阅读(77)  评论(0)    收藏  举报

电影信息系统

一.系统主要分为三个模块,分别用三个包中的类实现:

1.电影实体类Movie():主要用来储存电影对象的信息,不包含方法操作。

2.电影方法类MovieServiece():主要用来执行系统业务的逻辑

3.任务执行test():完成我们的需求实现。

 

二.1.电影类源代码:

package com.caseMovie.domain;

public class Movie {
    private int id;
    private String tittle;
    private String time;
    private double score;
    private String area;
    private String type;
    private String director;
    private String starring;

    public Movie() {
    }

    public Movie(int id, String tittle, String time, double score, String area, String type, String director, String starring) {
        this.id = id;
        this.tittle = tittle;
        this.time = time;
        this.score = score;
        this.area = area;
        this.type = type;
        this.director = director;
        this.starring = starring;
    }

    /**
     * 获取
     * @return id
     */
    public int getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * 获取
     * @return tittle
     */
    public String getTittle() {
        return tittle;
    }

    /**
     * 设置
     * @param tittle
     */
    public void setTittle(String tittle) {
        this.tittle = tittle;
    }

    /**
     * 获取
     * @return time
     */
    public String getTime() {
        return time;
    }

    /**
     * 设置
     * @param time
     */
    public void setTime(String time) {
        this.time = time;
    }

    /**
     * 获取
     * @return score
     */
    public double getScore() {
        return score;
    }

    /**
     * 设置
     * @param score
     */
    public void setScore(double score) {
        this.score = score;
    }

    /**
     * 获取
     * @return area
     */
    public String getArea() {
        return area;
    }

    /**
     * 设置
     * @param area
     */
    public void setArea(String area) {
        this.area = area;
    }

    /**
     * 获取
     * @return type
     */
    public String getType() {
        return type;
    }

    /**
     * 设置
     * @param type
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * 获取
     * @return director
     */
    public String getDirector() {
        return director;
    }

    /**
     * 设置
     * @param director
     */
    public void setDirector(String director) {
        this.director = director;
    }

    /**
     * 获取
     * @return starring
     */
    public String getStarring() {
        return starring;
    }

    /**
     * 设置
     * @param starring
     */
    public void setStarring(String starring) {
        this.starring = starring;
    }
}

2.电影方法类源代码:

package com.caseMovie.test;

import com.caseMovie.domain.Movie;

import java.util.Scanner;

public class MovieService {
    Movie[] movies;//要点2
    private Scanner sc = new Scanner(System.in);  //要点3
    //启动电影信息管理系统

    public void start() {
//创建死循环不断展示菜单直到用户选择退出
        lo:
        while (true) {
            System.out.println("--------电影信息系统--------");
            System.out.println("请输入您的选择:");
            System.out.println("1. 查询全部电影信息");
            System.out.println("2. 根据id查询电影信息");
            System.out.println("3. 退出");
            int choice = sc.nextInt();

            switch (choice) {
                case 1:
                    queryMovieInfo(this.movies);//要点2
                    break;
                case 2:
                    insertMovieInfo(this.movies);//要点2
                    break;
                case 3:
                    System.out.println("退出");
                    break lo;
                default:
                    System.out.println("wrong input!");
                    break;
            }
        }

    }
//根据id查询电影信息
    private void insertMovieInfo(Movie[] movies) {
        int id = sc.nextInt();
        for (int i = 0; i < movies.length; i++) {
            if (movies[i].getId() == id) {
                System.out.println(movies[i].getTittle() + "---" + movies[i].getId() + "---" + movies[i].getScore() + "---" + movies[i].getArea() + "---" + movies[i].getTime() + "---" + movies[i].getDirector() + "---" + movies[i].getStarring() + "---" + movies[i].getType());
            }

        }
        return;

    }
//将电影数组传入方法赋值给成员变量供调用
    public MovieService(Movie[] movies) {
        this.movies = movies;  //要点2

    }
//遍历电影名称和得分
    public void queryMovieInfo(Movie[] movies) { //要点2
        for (int i = 0; i < movies.length; i++) {
            System.out.println("电影名称:" + movies[i].getTittle() + "     评分:" + movies[i].getScore());
        }
    }
}

3.需求实现类:

package com.caseMovie.test;

import com.caseMovie.domain.Movie;

public class Test {

    public static void main(String[] args) {
        Movie movie1 = new Movie(1, "东八区的先生们", "2022", 2.1, "Chinese Land", "Comedy", "夏瑞", "张翰、王晓成");
        Movie movie2 = new Movie(2, "上海堡垒", "2019", 2.9, "Chinese Land", "Love、war、Technology", "疼华涛", "鹿晗、舒淇");
        Movie movie3 = new Movie(3, "纯洁心灵·逐梦演艺圈", "2015", 2.2, "Chinese Land", "Comedy", "毕志飞", "朱一文 李彦漫");
        Movie[] movies = {movie1, movie2, movie3};//要点1
        MovieService movieService = new MovieService(movies);//要点2
        movieService.start();
    }
}

要点:1.通过创建对象类型的数组来储存对象(如Test()代码片段中要点1部分)

   2. 通过构造方法的方式来传递数组对象:在构造方法中接受外部传递的数组对象,再在自身定义该对象类型的成员变量,再通过this来调用这个变量实现外部数据的输入

   3. 通过将方法内部的声明转化为自身成员变量声明的方式,以供自身类内部所有方法调用