栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java案例代码21-电影院购票系统[重要]

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java案例代码21-电影院购票系统[重要]

源代码下载地址

https://download.csdn.net/download/wtt234/46817852

(186条消息) 电影院java版本的项目的源代码-互联网文档类资源-CSDN文库https://download.csdn.net/download/wtt234/46817852

1.程序组成

2.

 
 

3.子类Business

package com.htit.bean;



public class Business extends User {

    private String shopName;  //商铺名称

    private String address;  //商铺地址


    public Business() {
    }

    public Business(String shopName, String address) {
        this.shopName = shopName;
        this.address = address;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Business{" +
                "shopName='" + shopName + ''' +
                ", address='" + address + ''' +
                '}';
    }
}

 4.子类

package com.htit.bean;



public class Customer extends User {

}

5.子类

package com.htit.bean;

import java.util.Date;


public class Movie {
    private String name;
    private String actor;
    private double score;

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    private double time;
    private double price;
    private int number;  //余票
    private Date startTime;   //放映时间



    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getActor() {
        return actor;
    }

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



    public double getTime() {
        return time;
    }

    public void setTime(double time) {
        this.time = time;
    }

    public double getPrice() {
        return price;
    }

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

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public Date getStartTime() {
        return startTime;
    }

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


    public Movie(String name, String actor, double time, double price, int number, Date startTime) {
        this.name = name;
        this.actor = actor;
        this.time = time;
        this.price = price;
        this.number = number;
        this.startTime = startTime;
    }

    public Movie() {
    }


    @Override
    public String toString() {
        return "Movie{" +
                "name='" + name + ''' +
                ", actor='" + actor + ''' +
                ", time=" + time +
                ", price=" + price +
                ", number=" + number +
                ", startTime=" + startTime +
                '}';
    }
}

6.子类

package com.htit.bean;



public class User {
    private String loginName;  //假名  不能重复
    private String userName;   //真名
    private String passWord;
    private char sex;
    private String phone;
    private double money;

    public User() {
    }



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


    public String getLoginName() {
        return loginName;
    }

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

    public String getUserName() {
        return userName;
    }

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

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public char getSex() {
        return sex;
    }

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

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public double getMoney() {
        return money;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "loginName='" + loginName + ''' +
                ", userName='" + userName + ''' +
                ", passWord='" + passWord + ''' +
                ", sex=" + sex +
                ", phone='" + phone + ''' +
                ", money=" + money +
                '}';
    }
}


7.主模块

package com.htit.run;

import com.htit.bean.Business;
import com.htit.bean.Customer;
import com.htit.bean.Movie;
import com.htit.bean.User;
import com.sun.org.apache.bcel.internal.generic.SIPUSH;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import org.slf4j.ILoggerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;



public class MovieSystem {
    

    public static final List ALL_USERS=new ArrayList<>();

    
    public static Map>  ALL_MOVIES=new HashMap<>();

    public static final Scanner SYS_SC=new Scanner(System.in);

    //定义一个静态的User类型的变量记住当前登录成功的用户对象。
    public static User loginUser;

    public static SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

    public static final Logger LOGGER= LoggerFactory.getLogger("MovieSystem.class");


    
    static {

        Customer c = new Customer();
        c.setLoginName("swk888");
        c.setPassWord("123456");
        c.setUserName("孙悟空");
        c.setSex('男');
        c.setMoney(10000);
        c.setPhone("1316666");
        ALL_USERS.add(c);

        Customer c1 = new Customer();
        c1.setLoginName("zbj888");
        c1.setPassWord("123456");
        c1.setUserName("猪八戒");
        c1.setSex('男');
        c1.setMoney(5000);
        c1.setPhone("1318888");
        ALL_USERS.add(c1);


        //商铺信息
        Business b=new Business();
        b.setLoginName("baozugong888");
        b.setPassWord("123456");
        b.setUserName("包租公");
        b.setMoney(0);
        b.setSex('男');
        b.setPhone("117117");
        b.setAddress("火星9999号");
        b.setShopName("甜蜜国际影城");
        ALL_USERS.add(b);

        //商家一定要加入到店铺拍片信息中去
        List movies=new ArrayList<>();
        ALL_MOVIES.put(b,movies);  //b=[]


        //商铺信息2
        Business b1=new Business();
        b1.setLoginName("baozupo888");
        b1.setPassWord("123456");
        b1.setUserName("包租婆婆");
        b1.setMoney(0);
        b1.setSex('女');
        b1.setPhone("117118");
        b1.setAddress("火星10000号");
        b1.setShopName("人来人往国际影城");
        ALL_USERS.add(b1);

        //商家一定要加入到店铺拍片信息中去
        List movies3=new ArrayList<>();
        ALL_MOVIES.put(b1,movies3);  //b1=[]

        //打印初始化内容,进行验证数据的正确性

        System.out.println(ALL_USERS);
        System.out.println("+++++++");
        System.out.println(ALL_MOVIES);


    }


    public static void main(String[] args) {
        //主函数,首页展示
        showMain();


    }

    

    private static void showMain() {
        System.out.println("=======电影首页========");
        System.out.println("1.登录");
        System.out.println("2.用户注册");
        System.out.println("3.商家注册");
        while (true){
            System.out.println("请输入操作命令:");
            String command=SYS_SC.nextLine();
            switch (command){

                case "1":
                    //登录了
                    login();
                    break;
                case "2":
                    //登录了
//                    login();
                    break;
                case "3":
                    //登录了
//                    login();
                    break;
                default:
                    System.out.println("输入命令错误,请确认!");
            }

        }
    }

    
    private static void login() {
        System.out.println("请输入登录名称:");
        String loginName=SYS_SC.nextLine();

        System.out.println("请输入登录密码:");
        String passWord=SYS_SC.nextLine();

        //1.根据登录名称查询用户对象
        User u= getUserByLoginName(loginName);

        //2.判断用户对象是否存在,存在说明了登录名称正确了
        if(u!=null){
            //3.比对密码是否正确
            if(u.getPassWord().equals(passWord)){
                //登录成功了
                loginUser=u;  //记住登录成功的用户,这个‘loginUser’是定义的静态变量
                //判断是商家用户登录的  还是普通用户登录的
                if(u instanceof Customer){
                    //当前用户是普通用户
                    showCustomerMain();


                }else {
                    //当前登录的用户  是商家用户
                    showBusinessMain();

                }

            }else {
                System.out.println("密码不正确 ");
            }
        }else {
            System.out.println("登录名称错误,请确认");
        }


    }

    

    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()+"请您下次再来啊~~");
                    break;  //结束方法
                default:
                    System.out.println("不存在的命令");
                    break;

            }
        }
    }

    private static void deleteMovie() {
        System.out.println("=======下架电影==========");
        Business business=(Business) loginUser;
        List movies=ALL_MOVIES.get(business);
        if(movies.size()==0){
            System.out.println("当前无片可以下架~~");
            return;
        }

        //2.让用户选择需要下架的电影名称
        System.out.println("请您输入需要下架的电影名称:");
        String movieName=SYS_SC.nextLine();


        //3.去查询有没有这个影片对象
        Movie movie= getMovieByName(movieName);

        if(movie!=null){
            movies.remove(movie);

        }else {
            System.out.println("您的店铺没有上架该影片!");
            System.out.println("请问继续吗?y/n");
            String command=SYS_SC.nextLine();
            switch (command){
                case "y":
                    break;
                default:
                    System.out.println("好的");
                    return;
            }



        }


    }

    private static Movie getMovieByName(String movieName) {
        Business business=(Business)loginUser;
        List movies=ALL_MOVIES.get(business);
        for (Movie movie : movies) {

            if(movie.getName().contains(movieName)){
                return movie;

            }

        }
        return  null;
    }

    
    private static void updateMovie() {
        System.out.println("=======修改电影===========");
        Business business=(Business)loginUser;
        List movies=ALL_MOVIES.get(business);
        if(movies.size()==0){
            System.out.println("当前无片可以修改~~");
            return;


        }

        //2.让用户选择需要修改的电影
        while (true){
            System.out.println("请您输入需要修改的电影名称:");
            String movieName=SYS_SC.nextLine();

            //3.去查询有没有这个影片对象
            Movie movie=getMovieByName(movieName);
            if(movie!=null){
                //修改它
                System.out.println("请输入修改后的片名:");
                String name=SYS_SC.nextLine();

                System.out.println("请您输入修改后主演:");
                String actor=SYS_SC.nextLine();

                System.out.println("请您输入修改后时长:");
                String time=SYS_SC.nextLine();

                System.out.println("请您输入修改后票价:");
                String price=SYS_SC.nextLine();

                System.out.println("请您输入修改后票数:");
                String totalNumber=SYS_SC.nextLine();

                while (true){
                    try{
                        System.out.println("请你输入修改后的影片放映时间");
                        String stime=SYS_SC.nextLine();

                        movie.setName(name);
                        movie.setActor(actor);
                        movie.setPrice(Double.valueOf(price));
                        movie.setTime(Double.valueOf(time));
                        movie.setNumber(Integer.valueOf(totalNumber));
                        movie.setStartTime(sdf.parse(stime));

                        System.out.println("恭喜您,您成功修改了该影片!!");

                        showBusinessInfos();  //调用函数,显示信息
                        return;    //直接退出去




                    }catch (Exception e){
                        e.printStackTrace();

                    }
                }


            }else {
                System.out.println("您的店铺没有上架该影片!");
                System.out.println("请问继续修改吗?y/n");
                String command=SYS_SC.nextLine();
                switch (command){
                    case "y":
                        break;
                    default:
                        System.out.println("好的!");
                        return;
                }

            }

        }


    }

    
    private static void addMovie() {
        //根据商家对象(就是邓丽的用户loginUser),作为map集合的键
        //提取对应的值就是其排片信息:
        //Map>  ALL_MOVIES
        Business business=(Business)loginUser;
        List movies=ALL_MOVIES.get(business);
        System.out.println("请输入新片名:");
        String name=SYS_SC.nextLine();

        System.out.println("请输入主演:");
        String actor=SYS_SC.nextLine();

        System.out.println("请输入时长:");
        String time=SYS_SC.nextLine();

        System.out.println("请输入票价:");
        String price=SYS_SC.nextLine();

        System.out.println("请输入票数:");
        String totalNumber=SYS_SC.nextLine();

        while (true) {
            try {
                System.out.println("请输入新片放映时间:");
                String stime=SYS_SC.nextLine();
                //public Movie(String name, String actor, double score, double time, int number, Date startTime)
                Movie movie=new Movie(name,actor,Double.valueOf(time),Double.valueOf(price),
                        Integer.valueOf(totalNumber),sdf.parse(stime));

                movies.add(movie);
                System.out.println("您已经成功上架了:《"+movie.getName()+"》");
                return;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }


    }

    
    private static void showBusinessInfos() {
        System.out.println("=========商家详情界面============");
        //根据商家对象(就是登录的用户loginUser)作为map集合的键 提取对应的值
        //        就是其排片信息:MAP> ALL_MOVIES
        Business business=(Business)loginUser;  //把接到的User用户,强制转换
        System.out.println(business.getShopName()+"tt电话:"+business.getPhone()+"tt地址:"+business.getAddress());
        List movies=ALL_MOVIES.get(business);
        if(movies.size()>0){
            System.out.println("片名ttt主演tt时长tt评分tt票价tt余票数量tt放映时间");
            for (Movie movie : movies) {

                System.out.println(movie.getName()+"ttt"+movie.getActor()+"tt"+movie.getTime()
                +"tt"+"tt"+movie.getPrice()+"tt"+movie.getNumber()+"tt"
                        +sdf.format(movie.getStartTime()));



            }

        }else {
            System.out.println("您的店铺当前无影片在放映!");
        }


    }

    private static void showCustomerMain() {
        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.退出系统:");
        while (true){
            System.out.println("请输入你要操作的命令:");
            String command=SYS_SC.nextLine();
            switch (command){
                case "1":
                    //展示全部排片信息
                    showAllMovies();
                    break;
                case "2":
                    //展示全部排片信息
                    break;
                case "3":
                    //评分功能
                    break;
                case "4":
                    //展示全部排片信息
                    buyMovie();

                    break;
                case "5":
                    //展示全部排片信息
                    break;
            }
        }

    }

    

    private static void buyMovie() {
        showAllMovies();
        System.out.println("========用户购票功能============");
        while (true) {
            System.out.println("请输入需要买票的门店");
            String shopName=SYS_SC.nextLine();
            //1.查询是否存在该商家
            Business business= getUserByShopName(shopName);
            if(business==null){
                System.out.println("对不起,没有该店铺,请确认");

            }else{
                //2.此商家全部的排片
                List movies=ALL_MOVIES.get(business);

                //3.判断是否上映的电影
                if(movies.size()>0){
                    //4.开始进行选片购买
                    System.out.println("请输入你需要购买的电影名称:");
                    String movieName=SYS_SC.nextLine();

                    //去当前商家下,查询该电影对象。
                    Movie  movie=getMovieByShopAndName(business,movieName);
                    if(movie!=null){
                        //开始购买
                        System.out.println("请输入购买的电影票数量:");
                        String number=SYS_SC.nextLine();
                        int buyNumber=Integer.valueOf(number);
                        //判断电影是否够票
                        if(movie.getNumber()>=buyNumber){
                            //可以购买票了
                            //当前需要花费的金额

                            double money= BigDecimal.valueOf(movie.getPrice()).multiply(BigDecimal.valueOf(buyNumber)).doublevalue();
                            if(loginUser.getMoney()>=money){
                                //终于可以买票了

                                System.out.println("您成功购买了"+movie.getName()+buyNumber+
                                        "张票!总结额是:"+money);
                                //更新自己的金额,更新商家的金额。
                                loginUser.setMoney(loginUser.getMoney()-money);
                                business.setMoney(business.getMoney()+money);
                                movie.setNumber(movie.getNumber()-buyNumber);
                                return;   //结束方法

                            }else {
                                //钱不够
                                System.out.println("是否继续~~~");
                                System.out.println("是否继续买票?/y/n");
                                String command=SYS_SC.nextLine();

                                switch (command){
                                    case "y":
                                        break;
                                    default:
                                        System.out.println("好的");
                                        return;
                                }
                            }

                        }else{
                            //票数不够
                            System.out.println("您当前最多可以购买:"+movie.getNumber());
                            System.out.println("是否继续买票?y/n");
                            String command=SYS_SC.nextLine();
                            switch (command){
                                case "y":
                                    break;
                                default:
                                    System.out.println("好的");
                                    return;
                            }
                        }

                    }else {
                        System.out.println("电影名称有毛病~~");

                    }


                }else{
                    System.out.println("该电影院关门了~~~~");
                    System.out.println("是否继续买票?y/n");
                    String command=SYS_SC.nextLine();
                    switch (command){
                        case "y":
                            break;
                        default:
                            System.out.println("好的!");
                            return;
                    }
                }
            }
        }

    }


    public static Movie getMovieByShopAndName(Business business,String name){
        //需要完善

        return null;

    }


    
    public static Business getUserByShopName(String shopName) {
        Set businesses= ALL_MOVIES.keySet();

        for (Business busine : businesses) {
            if (busine.getShopName().equals(shopName)){
                return busine;
            }

        }
        return null;

    }





    
    private static void showAllMovies(){
        ALL_MOVIES.forEach((business, movies) -> {
            System.out.println(business.getShopName()+"tt电话"+business.getPhone()+"tt地址:"+business.getAddress());
            System.out.println("tt片名ttt主演tt时长tt评分tt票价tt余票数量tt放映时间");
            for(Movie movie:movies){
                System.out.println("ttt"+movie.getName()+"ttt"+movie.getActor()+"tt"+movie.getTime()
                +"tt"+movie.getScore()+"tt"+movie.getPrice()+"tt"+movie.getNumber()+"tt"
                +sdf.format(movie.getStartTime()));
            }
        });

    }


    private static User getUserByLoginName(String loginName) {

        for (User user : ALL_USERS) {
            //判断这个用户的登录名称是否是我们想要的
            if(user.getLoginName().equals(loginName)){
                return user;  //返回 查找到的用户

            }

        }
        return null;  //查询次用户登录名称
    }


}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/582302.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号