Java电影购票系统

public class MovieApp {

    //1.定义List集合来存储用户
    public static final List<User> ALL_USERS = new ArrayList<>();

    //2.定义Map集合存储商家电影信息
    public static final Map<Business, List<Movie>> ALL_MOVIES = new HashMap<>();

    public static final Scanner SYS_SC = new Scanner(System.in);
    public static User loginUser;
    public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    public static final Logger LOGGER = LoggerFactory.getLogger("MovieApp.class");

    //3.准备测试数据
    static {
        Customer c = new Customer();
        c.setLoginName("zyf888");
        c.setPassword("123456");
        c.setUserName("黑马刘德华");
        c.setSex('男');
        c.setMoney(10000);
        c.setPhoneNumber("110110");
        ALL_USERS.add(c);

        Customer c1 = new Customer();
        c1.setLoginName("gzl888");
        c1.setPassword("123456");
        c1.setUserName("黑马关之琳");
        c1.setSex('女');
        c1.setMoney(2000);
        c1.setPhoneNumber("111111");
        ALL_USERS.add(c1);

        Business b = new Business();
        b.setLoginName("ztt1022");
        b.setPassword("123456");
        b.setUserName("张霞");
        b.setMoney(0);
        b.setSex('女');
        b.setPhoneNumber("110110");
        b.setAddress("火星6号2B二层");
        b.setCinemaName("甜甜圈国际影城");
        ALL_USERS.add(b);
        // 注意,商家一定需要加入到店铺排片信息中去
        List<Movie> movies = new ArrayList<>();
        ALL_MOVIES.put(b, movies); // b = []

        Business b2 = new Business();
        b2.setLoginName("zxp0611");
        b2.setPassword("123456");
        b2.setUserName("宝刚");
        b2.setMoney(0);
        b2.setSex('男');
        b2.setPhoneNumber("110110");
        b2.setAddress("火星8号8B八层");
        b2.setCinemaName("巧克力国际影城");
        ALL_USERS.add(b2);
        // 注意,商家一定需要加入到店铺排片信息中去
        List<Movie> movies3 = new ArrayList<>();
        ALL_MOVIES.put(b2, movies3); // b2 = []
    }

    public static void main(String[] args) {
        showMain();
    }

    /**
     * 操作主页
     */
    private static void showMain() {
        while (true) {
            System.out.println("----------主页----------");
            System.out.println("请输入你要进行的操作");
            System.out.println("1.登录");
            System.out.println("2.商家入驻");
            System.out.println("3.用户注册");
            System.out.println("请输入操作命令:");
            String command = SYS_SC.nextLine();
            switch (command) {
                case "1":
                    login();
                    break;
                case "2":

                    break;
                case "3":

                    break;
                default:
                    System.out.println("命令有误");
            }
        }
    }

    /**
     * 登录功能
     */
    private static void login() {
        String regex = "\\w{6,}";
        while (true) {
            System.out.println("请输入你的登录名称:");
            String loginName = SYS_SC.nextLine();
            if (loginName.matches(regex)) {
                System.out.println("请输入你的登录密码:");
                String password = SYS_SC.nextLine();
                User u = searchUserByLoginName(loginName);
                if (u != null) {
                    if (u.getPassword().equals(password)) {
                        loginUser = u;
                        LOGGER.info(u.getUserName() + "登录了系统");
                        if (u instanceof Business) {
                            showBusinessMain();
                        } else if (u instanceof Customer) {
                            showCustomerMain();
                        }
                        return;
                    } else {
                        System.out.println("密码错误,请重新输入");
                    }
                } else {
                    System.out.println("密码错误,请重新输入");
                }
            } else {
                System.out.println("格式不正确");
            }
        }
    }

    /**
     * 根据用户名查找用户对象
     */
    private static User searchUserByLoginName(String loginName) {
        for (int i = 0; i < ALL_USERS.size(); i++) {
            User user = ALL_USERS.get(i);
            if (user.getLoginName().equals(loginName)) {
                return user;
            }
        }
        return null;
    }

    /**
     * 顾客操作界面
     */
    private static void showCustomerMain() {
        while (true) {
            System.out.println("============黑马电影客户界面===================");
            System.out.println(loginUser.getUserName() + (loginUser.getSex() == '男' ? "先生" : "女士" + "欢迎您进入系统" +
                    "\t余额:" + loginUser.getMoney()));
            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("请输入您要操作的命令:");
            String command = SYS_SC.nextLine();
            switch (command) {
                case "1":
                    // 展示全部排片信息
                    showAllMovies();
                    break;
                case "2":
                    //查询电影
                    while (true) {
                        System.out.println("请输入你要查询的电影名称");
                        String movieName = SYS_SC.nextLine();
                        Movie movie = searchMovieByName(movieName);
                        if (movie != null) {
                            showMovieInfos(movie);
                            break;
                        }else {
                            System.out.println("影片不存在");
                        }
                    }
                case "3":
                    // 评分功能
                    break;
                case "4":
                    // 购票功能
                    buyTicket();
                    break;
                case "5":
                    return; // 干掉方法
                default:
                    System.out.println("不存在该命令!!");
                    break;
            }
        }
    }

    /**
     * 用户功能:买票
     */
    private static void buyTicket() {
        while (true) {
            System.out.println("请输入您想看的影片:");
            String movieName = SYS_SC.nextLine();
            Business business = searchBusinessByMovieName(movieName);
            if (business != null){
                Movie movie = searchMovieByName(movieName);
                System.out.println("上映影院:" + business.getCinemaName());
                showMovieInfos(movie);
                System.out.println("票价为:" + movie.getPrice() + ",是否确定购买: y/n");
                String command = SYS_SC.nextLine();
                switch (command){
                    case "y":
                        movie.setTicketNumber(movie.getTicketNumber() - 1);
                        loginUser.setMoney(loginUser.getMoney() - movie.getPrice());
                        System.out.println("购买成功!");
                        return;
                    default:
                        System.out.println("取消购买");
                        return;
                }
            }else {
                System.out.println("影片未上架");
            }
        }
    }

    /**
     * 用户功能:展示所有电影信息
     */
    private static void showAllMovies() {
        ALL_MOVIES.forEach((business, movies) -> {
            System.out.println(business.getCinemaName());
            for (Movie movie : movies) {
                showMovieInfos(movie);
            }
        });
    }

    /**
     * 商家操作界面
     */
    private static void showBusinessMain() {
        while (true) {
            System.out.println("============黑马电影商家界面===================");
            System.out.println(loginUser.getUserName() + (loginUser.getSex() == '男' ? "先生" : "女士" + "欢迎您进入系统"));
            System.out.println("1、展示详情:");
            System.out.println("2、上架电影:");
            System.out.println("3、下架电影:");
            System.out.println("4、修改电影:");
            System.out.println("5、退出:");

            System.out.println("请输入您要操作的命令:");
            String command = SYS_SC.nextLine();
            switch (command) {
                case "1":
                    // 展示全部排片信息
                    showBusinessInfos();
                    break;
                case "2":
                    // 上架电影信息
                    addMovie();
                    break;
                case "3":
                    // 下架电影信息
                    deleteMovie();
                    break;
                case "4":
                    // 修改电影信息
                    updateMovie();
                    break;
                case "5":
                    System.out.println(loginUser.getUserName() + "请您下次再来啊~~~");
                    return; // 干掉方法
                default:
                    System.out.println("不存在该命令!!");
                    break;
            }
        }
    }

    /**
     * 商家功能:修改影片
     */
    private static void updateMovie() {
        Business loginBusiness = (Business) loginUser;
        List<Movie> movies = ALL_MOVIES.get(loginBusiness);
        if (movies.size() > 0) {
            System.out.println("影片列表如下:");
            for (Movie movie : movies) {
                System.out.println(movie.getMovieName());
            }
            while (true) {
                System.out.println("请输入你要修改的影片名称:");
                String movieName = SYS_SC.nextLine();
                Movie movie = searchMovieByName(movieName);
                if (movie != null) {
                    while (true) {
                        System.out.println("请选择你要修改的信息:");
                        System.out.println("1.修改价格");
                        System.out.println("2.修改上映时间");
                        String command = SYS_SC.nextLine();
                        switch (command) {
                            case "1":
                                System.out.println("请输入修改后的价格:");
                                String price = SYS_SC.nextLine();
                                movie.setPrice(Double.valueOf(price));
                                return;
                            case "2":
                                System.out.println("请输入修改后的上映时间:");
                                String date = SYS_SC.nextLine();
                                try {
                                    movie.setStartTime(sdf.parse(date));
                                } catch (ParseException e) {
                                    e.printStackTrace();
                                    LOGGER.error("修改上映时间出错");
                                }
                                return;
                            default:
                                System.out.println("没有该选项");
                        }
                    }
                } else {
                    System.out.println("名称错误,请重新输入");
                }
            }
        } else {
            System.out.println("没有可以修改的影片");
            return;
        }
    }

    /**
     * 商家功能:下架影片
     */
    private static void deleteMovie() {
        Business loginBusiness = (Business) loginUser;
        List<Movie> movies = ALL_MOVIES.get(loginBusiness);
        if (movies.size() > 0) {
            System.out.println("影片列表如下:");
            for (Movie movie : movies) {
                System.out.println(movie.getMovieName());
            }
            while (true) {
                System.out.println("请输入你要下架的影片名称:");
                String movieName = SYS_SC.nextLine();
                Movie movie = searchMovieByName(movieName);
                if (movie != null) {
                    movies.remove(movie);
                    System.out.println(movieName + "下架成功");
                    return;
                } else {
                    System.out.println("名称错误,请重新输入");
                }
            }
        } else {
            System.out.println("没有可以下架的影片");
            return;
        }
    }

    /**
     * 商家功能:上架影片
     */
    private static void addMovie() {
        Movie movie = new Movie();
        Business loginBusiness = (Business) loginUser;
        List<Movie> movies = ALL_MOVIES.get(loginBusiness);
        System.out.println("请您输入新片名:");
        String name = SYS_SC.nextLine();
        movie.setMovieName(name);
        System.out.println("请您输入主演:");
        String actor = SYS_SC.nextLine();
        movie.setActor(actor);
        System.out.println("请您输入时长:");
        String duration = SYS_SC.nextLine();
        movie.setDuration(Integer.valueOf(duration));
        System.out.println("请您输入票价:");
        String price = SYS_SC.nextLine();
        movie.setPrice(Double.valueOf(price));
        System.out.println("请您输入票数:");
        String ticketNumber = SYS_SC.nextLine(); // 200\n
        movie.setTicketNumber(Integer.valueOf(ticketNumber));
        while (true) {
            try {
                System.out.println("请输入影片上映时间:");
                String startTime = SYS_SC.nextLine();
                movie.setStartTime(sdf.parse(startTime));
                movies.add(movie);
                System.out.println(movie.getMovieName() + "上架成功");
                return;
            } catch (ParseException e) {
                e.printStackTrace();
                LOGGER.error("时间解析错误");
            }
        }
    }

    /**
     * 商家功能:展示商家的详细信息
     */
    private static void showBusinessInfos() {
        System.out.println("==========商家详细信息==========");
        Business loginBusiness = (Business) loginUser;
        System.out.println("名称:" + loginBusiness.getCinemaName());
        System.out.println("电话:" + loginBusiness.getPhoneNumber());
        System.out.println("地址:" + loginBusiness.getAddress());
        List<Movie> movies = ALL_MOVIES.get(loginBusiness);
        if (movies.size() > 0) {
            for (Movie movie : movies) {
               showMovieInfos(movie);
            }
        } else {
            System.out.println("没有电影上架");
        }
    }

    /**
     * 根据电影名称查找电影对象
     */
    private static Movie searchMovieByName(String movieName) {
        Set<Business> businesses = ALL_MOVIES.keySet();
        for (Business business : businesses) {
            List<Movie> movies = ALL_MOVIES.get(business);
            for (Movie movie : movies) {
                if (movie.getMovieName().contains(movieName)){
                    return movie;
                }
            }
        }
        return null;
    }

    /**
     * 根据电影名查找上映的商家
     */
    private static Business searchBusinessByMovieName(String movieName){
        Set<Business> businesses = ALL_MOVIES.keySet();
        for (Business business : businesses) {
            List<Movie> movies = ALL_MOVIES.get(business);
            for (Movie movie : movies) {
                if (movie.getMovieName().contains(movieName)){
                    return business;
                }
            }
        }
        return null;
    }

    /**
     * 根据名称展示电影信息
     */
    private static void showMovieInfos(Movie movie){
        System.out.println("==========电影信息==========");
        System.out.println("电影名称:" + movie.getMovieName());
        System.out.println("主演:" + movie.getActor());
        System.out.println("时长:" + movie.getDuration());
        System.out.println("评分:" + movie.getStar());
        System.out.println("票价:" + movie.getPrice());
        System.out.println("剩余票数:" + movie.getTicketNumber());
        System.out.println("放映时间:" + sdf.format(movie.getStartTime()));
        System.out.println("==========================");
    }
}

​

User类:

public class User {
    private String loginName;
    private String password;
    private String userName;
    private char sex;
    private String phoneNumber;
    private double money;

    public User() {
    }

    public User(String loginName, String password, String userName, char sex, String phoneNumber, double money) {
        this.loginName = loginName;
        this.password = password;
        this.userName = userName;
        this.sex = sex;
        this.phoneNumber = phoneNumber;
        this.money = money;
    }

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }
}

Business类:

public class User {
    private String loginName;
    private String password;
    private String userName;
    private char sex;
    private String phoneNumber;
    private double money;

    public User() {
    }

    public User(String loginName, String password, String userName, char sex, String phoneNumber, double money) {
        this.loginName = loginName;
        this.password = password;
        this.userName = userName;
        this.sex = sex;
        this.phoneNumber = phoneNumber;
        this.money = money;
    }

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }
}

Customer类:

public class Customer extends User {

    public Customer() {
    }

    public Customer(String loginName, String password, String userName, char sex, String phoneNumber, double money) {
        super(loginName, password, userName, sex, phoneNumber, money);
    }
}

Movie类:


public class Movie {
    private String movieName;
    private String actor;
    private double star;
    private int duration;
    private double price;
    private int ticketNumber;
    private Date startTime;

    public Movie() {
    }

    public Movie(String movieName, String actor, double star, int duration, double price, int ticketNumber, Date startTime) {
        this.movieName = movieName;
        this.actor = actor;
        this.star = star;
        this.duration = duration;
        this.price = price;
        this.ticketNumber = ticketNumber;
        this.startTime = startTime;
    }

    public String getMovieName() {
        return movieName;
    }

    public void setMovieName(String movieName) {
        this.movieName = movieName;
    }

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }

    public double getStar() {
        return star;
    }

    public void setStar(double star) {
        this.star = star;
    }

    public int getDuration() {
        return duration;
    }

    public void setDuration(int duration) {
        this.duration = duration;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getTicketNumber() {
        return ticketNumber;
    }

    public void setTicketNumber(int ticketNumber) {
        this.ticketNumber = ticketNumber;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值