JavaSE加强案例总结、电影院系统

目录

 一、系统角色分析

二、系统功能实现

 1、首页的实现

 2、登录操作

3、商家页面的实现

4、用户界面的实现

三、项目总结


 

 一、系统角色分析

基础搭建,导入依赖包和核心配置文件,最关键的一点:不要忘记导入依赖,将jar包全选右键。

定义系统类都是基础操作,此处不添加代码,直接实现功能。

准备好两个静态常量集合

用户类采用统一User类,使用多态的方式,对登录的账户进行判断是商户还是客户。

/**
     * 1、定义一个容器用来存储用户信息,由于这个容器只需要一个,定义成静态常量类型
     */
public static final List<User> ALL_USERS = new ArrayList<>();

/**
     * 2、定义一个容器存储全部商家和其排片信息,也只需要一个容器
     * 商家1 = [p1,p2,p3]
     * 商家2 = [p1,p2,p3]
       ...
     */
public static final Map<Business,List<Movie>> ALL_MOVIES = new HashMap<>();
//将扫描器设为静态常量,公共使用
    public static final Scanner SC = new Scanner(System.in);

    //定义静态用户对象,存储当前登录的用户信息
    public static User loginUser;

二、系统功能实现

 1、首页的实现

通过while死循环当用户输入错误命令时重新输入

public static void homePage(){
        System.out.println("===============欢迎来到黑马影院============");
        while (true) {
            System.out.println("请选择您要操作的功能:");
            System.out.println("1、登录");
            System.out.println("2、商家入驻");
            System.out.println("3、客户注册");
            System.out.print("请输入您要操作的命令:");
            String options = SC.nextLine();
            switch (options){
                case "1":
                    //判断是商家还是客户
                    login();
                    break;
                case "2":
                    //商家入驻
                    //settledMerchant();
                    break;
                case "3":
                    //客户注册
                    userRegister();
                    break;
                default:
                    System.out.println("命令有误,请重新输入!");
            }
        }

    }

 2、登录操作

通过判断账户是用户还是商家进入不同的功能页面。

/**
   * 登录操作
*/
    private static void login() {
        while (true) {
            System.out.print("请输入您的用户名:");
            String loginName = SC.nextLine();
            System.out.print("请输入您的登陆密码:");
            String loginPassword = SC.nextLine();
            //通过工具类的方法,校验用户名
            User u = MoviesUtil.checkoutName(loginName,loginPassword);
            loginUser = u;
            if (u != null){
                //判断对象是否属于另一个对象的类或子类
                if (u instanceof Customer){
                    //进入用户页面
                    CustomerOptions.showCustomerPage();
                }else
                    //进入商家界面
                    BussinessOptions.showBusinessPage();
            }else {
                System.out.println("您输入的用户名或密码错误,请重新输入!");
            }
        }
    }


//工具类MoviesUtil
/**
     * 判断用户名密码是否正确
     *
     * @param loginName 用户名
     * @return 用户对象
     */
    public static User checkoutName(String loginName,String loginPassword) {
        for (User user : ALL_USERS) {
            if (loginName.equals(user.getUserName())) {
                if (loginPassword.equals(user.getPassword())){
                    System.out.println("登陆成功");
                    return user;
                }
            }

        }
        return null;
    }

3、商家页面的实现

商家页面中的影片下架功能,我这里采用的是对影片再增加一个属性isAddMovie,对每一个上架的电影设置属性值为Y,如果下架则改为N,对影片遍历时只遍历出属性值为Y 的影片。

/**
     * 显示商家页面
     */
    public static void showBusinessPage() {
        System.out.println("=================黑马商家界面================");
        System.out.println("用户名:" + loginUser.getUserName() + "欢迎您进入系统!");
        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.print("请输入您要进行的操作:");
            String options = SC.nextLine();
            switch (options){
                case "1":
                    //展示全部排片信息
                    showMovies();
                    break;
                case "2":
                    //上架电影信息
                    addMovies();
                    break;
                case "3":
                    //下架电影信息
                    offMovies();
                    break;
                case "4":
                    //修改电影信息
                    changeMovies();
                    break;
                case "5":
                    //查看账户收益
                    checkAccountMoney();
                    break;
                case "6":
                    //退出系统
                    return;
                default:
                    System.out.println("您输入的操作有误,请重新输入");
            }
        }
    }

具体代码:电影院系统商家页面的实现-Java文档类资源-CSDN下载

4、用户界面的实现

 public static void showCustomerPage() {
        System.out.println("=================黑马用户界面================");
        System.out.println("用户名:" + loginUser.getUserName() + "欢迎您进入系统!");
        while (true) {
            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.print("请输入您要进行的操作:");
            String options = SC.nextLine();
            switch (options) {
                case "1":
                    //展示全部影片信息
                    showMovies();
                    break;
                case "2":
                    //根据电影名称查询电影信息
                    quaryMovies();
                    break;
                case "3":
                    //评分功能
                    rateMovie();
                    break;
                case "4":
                    //购票功能
                    buytickets();
                    break;
                case "5":
                    //退出系统
                    System.out.println("您已成功退出系统!");
                    return;
                default:
                    System.out.println("您输入的操作有误,请重新输入");
            }
        }
    }

具体代码: 电影院系统客户操作界面-Java文档类资源-CSDN下载

三、项目总结

  • 键盘输入数据最好使用 nextLine()方法,一次输入一行数据,然后对这一行数据进行类型转换 (Integer.valueOf(String s))、(Double.valueOf(String s)),不会引起数据类型接收错误而报错
  • 将不同的操作封装成方法进行调用,简化代码书写,不至于一个方法又臭又长。
  • 注意子类继承父类的构造器后重写构造方法时,记住toString方法打印对象内容也要记得更改,否则父类的属性不打印。
  • private static final Scanner SC = new Scanner(System.in);通过将扫描器设置成静态常量,只需要创建一次对象,全局使用。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值