package Moive.bean;import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;public class MovieSystem {/*** 定义一个容器存储多用户,包括商家和用户*/public static final List<User> ALL_USERS = new ArrayList<>();/*** 所有电影元的拍片信息*/public static final Map<Business, List<Movie>> ALL_MOVIE = new HashMap<>();public static final Scanner SYS_SC = new Scanner(System.in);public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");/*** 定义静态的用户变量,记住当前登录成功的用户对象*/public static User loginUser;/*** 准备一些测试数据*/static {Customer c = new Customer();c.setLoginName("z888");c.setPassWord("123456");c.setUserName("hm张三");c.setSex('男');c.setMoney(1000.0);c.setPhone("1232211");ALL_USERS.add(c);Customer c1 = new Customer();c1.setLoginName("z888");c1.setPassWord("123456");c1.setUserName("hm张三2");c1.setSex('男');c1.setMoney(1000.0);c1.setPhone("3455666");ALL_USERS.add(c1);Business b = new Business();b.setLoginName("b1");b.setPassWord("123456");b.setUserName("b1name");b.setMoney(0.0);b.setSex('男');b.setPhone("23444");b.setShopName("1号电影院");b.setAddress("address1");ALL_USERS.add(b);ArrayList<Movie> movies = new ArrayList<>();ALL_MOVIE.put(b, movies);Business b1 = new Business();b1.setLoginName("b2");b1.setPassWord("123456");b1.setUserName("b2name");b1.setMoney(0.2);b1.setSex('男');b1.setPhone("23444");b1.setShopName("2号电影院");b1.setAddress("address2");ALL_USERS.add(b1);ArrayList<Movie> movies2 = new ArrayList<>();ALL_MOVIE.put(b1, movies2);}public static void main(String[] args) {showMain();}/*** 首页展示*/private static void showMain() {while (true) {System.out.println("=============进入首页==============");System.out.println("1、登录");System.out.println("2、用户注册");System.out.println("3、商家注册");while (true) {System.out.println("请输入首页操作命令1、登录2、用户注册3、商家注册");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() {while (true) {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)) {System.out.println("登录成功");loginUser = u;  //记住登录成功的用户//4判断是用户登录的还是商家登录的if (u instanceof Customer) {//当前用户是普通用户showCustomerMain();} else {//当前用户是商家showBusinessMain();}return;  //结束login} else {System.out.println("密码错误");}} else {System.out.println("登录名错误,请确认");}}}/*** 商家的后台操作界面*/private static void showBusinessMain() {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、退出");while (true) {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("请下次再来");return; //干掉方法default:System.out.println("不存在该命令");break;}}}private static void updateMovie() {System.out.println("===========修改电影===============");Business business = (Business) loginUser;List<Movie> movies = ALL_MOVIE.get(business);if (movies.size() == 0) {System.out.println("当前无片可修改");return;}//2让用户选择需要修改的电影while (true) {System.out.println("请您输入需要修改的电影名称");String movieName = SYS_SC.nextLine();Movie movie = getMovieByName(movieName);if (movie != null) {System.out.println("请输入修改后的片名");String name = SYS_SC.nextLine();System.out.println("请输入修改后的评分");String score = 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 totalNum = 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(totalNum));movie.setStartTime(sdf.parse(stime));System.out.println("恭喜您,修改成功");showBusinessInfos();return;  //结束整个updateMovie方法} catch (ParseException e) {e.printStackTrace();System.out.println("时间解析除了错误");}}} else {System.out.println("您的店铺没有上架该影片");System.out.println("请问继续下架吗? y/n");String command = SYS_SC.nextLine();switch (command) {case "y":break;  //while循环重新执行一遍default:System.out.println("好的");return;  //结束整个deleteMovie方法}}}}private static void deleteMovie() {System.out.println("===========下架电影===============");Business business = (Business) loginUser;List<Movie> movies = ALL_MOVIE.get(business);if (movies.size() == 0) {System.out.println("当前无片可下架");return;}//2让用户选择需要下架的电影while (true) {System.out.println("请您输入需要下架的电影名称");String movieName = SYS_SC.nextLine();Movie movie = getMovieByName(movieName);if (movie != null) {movies.remove(movie);System.out.println("您当前已经成功下架" + movie.getName());showBusinessInfos();return;  //结束整个deleteMovie方法} else {System.out.println("您的店铺没有上架该影片");System.out.println("请问继续下架吗? y/n");String command = SYS_SC.nextLine();switch (command) {case "y":break;  //while循环重新执行一遍default:System.out.println("好的");return;  //结束整个deleteMovie方法}}}}/*** 查询当前商家下的拍片** @param movieName* @return*/public static Movie getMovieByName(String movieName) {Business business = (Business) loginUser;List<Movie> movies = ALL_MOVIE.get(business);for (Movie movie : movies) {if (movie.getName().contains(movieName)) {return movie;}}return null;}/*** 上架电影* Map<Business,List<Movie>> ALL_MOVIE = new HashMap<>();* b1=[p1,p2,p3....]*/private static void addMovie() {System.out.println("===========上架电影===============");Business business = (Business) loginUser;List<Movie> movies = ALL_MOVIE.get(business);System.out.println("请输入片名");String name = SYS_SC.nextLine();System.out.println("请输入pingfen");String score = 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 totalNum = SYS_SC.nextLine();while (true) {try {System.out.println("请输入影片放映时间");String stime = SYS_SC.nextLine();//封装成电影对象,放入movies中Movie movie = new Movie(name, actor, Double.valueOf(score), Double.valueOf(time), Double.valueOf(price), Integer.valueOf(totalNum), sdf.parse(stime));movies.add(movie);System.out.println("已成功上架" + movie.getName());return;  //直接退出去} catch (ParseException e) {e.printStackTrace();System.out.println("时间解析除了错误");}}}/*** 展示当前登录的商家信息*/private static void showBusinessInfos() {System.out.println("============商家详情页面===============");//根据商家对象,作为map集合的键,提取对应的值就是其拍片信息Business business = (Business) MovieSystem.loginUser;System.out.println("ShopName" + "\t\t" + "Address" + "\t\t" + "Money" + "\t\t" + "LoginName" + "\t\t"+ "UserName" + "\t\t" + "PassWord" + "\t\t" + "Phone" + "\t\t" + "Sex" + "\t\t");System.out.println(business.getShopName() + "\t\t" + business.getAddress() + "\t\t" + business.getMoney() + "\t\t"+ business.getLoginName() + "\t\t" + business.getUserName() + "\t\t" + business.getPassWord() + "\t\t" + business.getPhone() + "\t\t" + business.getSex());List<Movie> movies = ALL_MOVIE.get(MovieSystem.loginUser);if (movies.size() > 0) {System.out.println("片名\t\t主演\t\t时长\t\tnumber\t\tprice\t\tscore\t\tstartTime");for (Movie movie : movies) {System.out.println(movie.getName() + "\t\t" + movie.getActor() + "\t\t" + movie.getTime() + "\t\t"+ movie.getNumber() + "\t\t" + movie.getPrice() + "\t\t" + movie.getScore() + "\t\t" + sdf.format(movie.getStartTime()));}} else {System.out.println("当前无片可播放");}}/*** 客户登录界面*/private static void showCustomerMain() {System.out.println("===============客户界面================");System.out.println(loginUser.getUserName() + (loginUser.getSex() == '男' ? "先生" : "女士") + "您好,请选择客户操作功能");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("请输入需要操作的命令1、展示全部影片信息2、根据电影名称查询电影信息3、评分功能4、购票功能5、推出系统");String command = SYS_SC.nextLine();switch (command) {case "1"://展示全部卡片信息showAllMovies();break;case "2":break;case "3"://评分功能break;case "4"://购票功能buyMovie();break;case "5":return; //干掉方法default:System.out.println("不存在该命令");break;}}}/*** 用户购票功能  ALL_MOVIE ={b1=[p1,p2,...],b1=[p1,p2,...]}*/private static void buyMovie() {showAllMovies();System.out.println("++++++++++++++++用户购票功能+++++++++++++++++");while (true) {System.out.println("请输入您要购买的门店");String shopName = SYS_SC.nextLine();//查询是否存在该商家Business business = getBusinessByShopName(shopName);if (business == null) {System.out.println("对不起,没有该店铺");System.out.println("请问继续吗? y/n");String command = SYS_SC.nextLine();switch (command) {case "y":break;  //while循环重新执行一遍default:System.out.println("好的");return;  //结束整个deleteMovie方法}} else {//查询商家的拍片List<Movie> movies = ALL_MOVIE.get(business);if (movies.size() > 0) {//4开始购买while (true) {System.out.println("请输入需要购买的电影名称");String movieName = SYS_SC.nextLine();//当前商家下查询该电的名称Movie movie = getMovieByShopAndName(business, movieName);if (movie != null) {//开始购买while (true) {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("请问继续吗? y/n");String command = SYS_SC.nextLine();switch (command) {case "y":break;  //while循环重新执行一遍default:System.out.println("好的");return;  //结束整个deleteMovie方法}}} else {System.out.println("您购买的票数大于剩余票数,您可购买" + movie.getNumber());System.out.println("请问继续吗? y/n");String command = SYS_SC.nextLine();switch (command) {case "y":break;  //while循环重新执行一遍default:System.out.println("好的");return;  //结束整个deleteMovie方法}}}} else {System.out.println("电影名称存在毛病");}}} else {System.out.println("该电影元关门了");System.out.println("请问继续吗? y/n");String command = SYS_SC.nextLine();switch (command) {case "y":break;  //while循环重新执行一遍default:System.out.println("好的");return;  //结束整个deleteMovie方法}}}}}public static Movie getMovieByShopAndName(Business business, String name) {List<Movie> movies = ALL_MOVIE.get(business);for (Movie movie : movies) {if (movie.getName().equals(name)) {return movie;}}return null;}/*** 根据商家店铺名称查询商家对象** @return*/public static Business getBusinessByShopName(String shopName) {Set<Business> businesses = ALL_MOVIE.keySet();for (Business business : businesses) {if (business.getShopName().contains(shopName)) {return business;}}return null;}/*** 用户展示全部商家和其排片信息*/private static void showAllMovies() {System.out.println("++++++++++++++++展示全部商家拍片信息+++++++++++++++++");ALL_MOVIE.forEach((business, movies) -> {System.out.println("ShopName" + "\t\t" + "Address" + "\t\t" + "Money" + "\t\t" + "LoginName" + "\t\t"+ "UserName" + "\t\t" + "PassWord" + "\t\t" + "Phone" + "\t\t" + "Sex" + "\t\t");System.out.println(business.getShopName() + "\t\t" + business.getAddress() + "\t\t" + business.getMoney() + "\t\t"+ business.getLoginName() + "\t\t" + business.getUserName() + "\t\t" + business.getPassWord() + "\t\t" + business.getPhone() + "\t\t" + business.getSex());System.out.println("片名\t\t主演\t\t时长\t\tnumber\t\tprice\t\tscore\t\tstartTime");for (Movie movie : movies) {System.out.println(movie.getName() + "\t\t" + movie.getActor() + "\t\t" + movie.getTime() + "\t\t"+ movie.getNumber() + "\t\t" + movie.getPrice() + "\t\t" + movie.getScore() + "\t\t" + sdf.format(movie.getStartTime()));}});}public static User getUserByLoginName(String loginName) {for (User user : ALL_USERS) {//判断用户的登录名是否是想要的if (user.getLoginName().equals(loginName)) {return user;  //就是要找的用户}}return null;  //查无此用户}
}

购物车案例


package demo;public class Goods {int id;String name;double price;int buyNumber;}
package demo;import java.util.Scanner;public class ShopCarTest {public static void main(String[] args) {//1.定义商品类//2定义购物车对象Goods[] shopCar = new Goods[100];//3搭建操作架构while (true) {System.out.println("请输入如下操作命令:");System.out.println("添加商品到购物车:add");System.out.println("查询商品到购物车:query");System.out.println("修改商品的数量:update");System.out.println("结算商品的金额:pay");Scanner sc = new Scanner(System.in);System.out.println("请您输入命令:");String command = sc.next();switch (command) {case "add"://添加商品,按住alt+enter选择第一个,自动创建方法addGoods(shopCar, sc);break;case "query":queryGoods(shopCar);break;case "update":updateGoods(shopCar, sc);break;case "pay":payGoods(shopCar, sc);break;default:System.out.println("没有该功能");throw new IllegalStateException("Unexpected value: " + command);}}}private static void payGoods(Goods[] shopCar, Scanner sc) {queryGoods(shopCar);//定义一个求和变量累加金额double money = 0;//遍历购物车数组中的全部商品对象,累加单价*数量for (int i = 0; i < shopCar.length; i++) {Goods g = shopCar[i];if (g != null) {money += (g.price * g.buyNumber);} else {break;}}System.out.println("订单金额" + money);}private static void updateGoods(Goods[] shopCar, Scanner sc) {//让用户输入要查询商品的id,根据id查出需要修改的对象while (true) {System.out.println("请您输入要修改的商品id:");int id = sc.nextInt();Goods g = getGoodsById(shopCar, id);if (g == null) {//没有该商品System.out.println("sorry,没有该商品");} else {//说明存在该商品对象,可以修改了System.out.println("请输入" + g.name + "商品的购买数量");int buyNum = sc.nextInt();g.buyNumber = buyNum;System.out.println("修改完毕");queryGoods(shopCar);break;}}}public static Goods getGoodsById(Goods[] shopCar, int id) {//shopCar=[g1,g2,null.....]for (int i = 0; i < shopCar.length; i++) {Goods g = shopCar[i];if (g != null) {//判断这个商品的id是否是我们要找的if (g.id == id) {return g;}} else {return null;  //找完了前面存在的商品都没有找到}}return null; //找完了100个商品,都没有找到要找的商品}private static void queryGoods(Goods[] shopCar) {System.out.println("==================查询购物车的信息如下===================");System.out.println("编号\t\t名称\t\t价格\t\t购买数量");//shopCar=[g1,g2,g3,g4,null,null...]for (int i = 0; i < shopCar.length; i++) {Goods g = shopCar[i];if (g != null) {//显示这个商品对象System.out.println(g.id + "\t\t" + g.name + "\t\t" + g.price + "\t\t" + g.buyNumber);} else {//遍历结束break;}}}private static void addGoods(Goods[] shopCar, Scanner sc) {System.out.println("请输入购买商品的编号(不重复):");int id = sc.nextInt();System.out.println("请您输入购买商品的名称");String name = sc.next();System.out.println("请您输入购买商品的数量");int bugNumber = sc.nextInt();System.out.println("请您输入购买商品的价格");double price = sc.nextDouble();//把购买商品的信息封装成一个商品对象Goods g = new Goods();g.id = id;g.name = name;g.buyNumber = bugNumber;g.price = price;//把这个商品对象添加到购物车数组中//shopCar=[null,null,null.....]地址for (int i = 0; i < shopCar.length; i++) {if (shopCar[i] == null) {///说明此位置没有值,把商品存入购物车shopCar[i] = g;break;//因为商品存入了,不需要继续找位置}}System.out.println("您的商品" + g.name + "添加到购物车完成了");}
}

java学习笔记--黑马徐老师三--项目实战相关推荐

  1. java学习笔记--黑马徐老师二

    153 file文件 package File;import java.io.File;/*** 学会创建file对象,定位操做系统的文件*/ public class FileDemo {publi ...

  2. Java学习笔记——显示当前日期的三种方式

    一.Date类:这是一种过时的表达方式 import java.util.Date; Date date = new Date();System.out.println((1900+date.getY ...

  3. Java学习笔记10(面向对象三:接口)

    接口: 暂时可以理解为是一种特殊的抽象类 接口是功能的集合,可以看作是一种数据类型,是比抽象类更抽象的"类" 接口只描述所应该具备的方法,并没有具体实现,具体实现由接口的实现类(相 ...

  4. 达达博客项目-学习笔记,B站达内项目实战

    前后端分离优点: 1.各司其职前端:视觉层面,兼容性,前端性能优化后端:高并发,高可用,性能 2.解耦,前端后端均易于扩展 3.后端灵活搭配各类前端 4.提高用户体验 5.并行开发,提高开发效率htt ...

  5. 学习笔记(01):大数据金融信贷项目实战(Spark2.3.x Streaming)-Spark SQL架构原理

    立即学习:https://edu.csdn.net/course/play/19569/272049?utm_source=blogtoedu 哈哈哈哈

  6. Java学习笔记项目三:开发团队调度软件(尚硅谷)

    JAVA学习笔记开发团队调度软件 ①创建基础组件 Equipment 接口 package august.domain;/*** 设备领取** @author : Crazy_August* @Dat ...

  7. java学习笔记(二十八)——开发一个小项目(VMeeting3.0)

    上篇文章按照较规范的产品需求文档梳理了项目的逻辑,感觉开发起来明晰了很多:挂上一篇文章java学习笔记(二十七)--开发一个小项目(VMeeting2.0)_Biangbangbing的博客-CSDN ...

  8. java学习笔记(三):前端miniUI控件库入门

    java学习笔记(三):前端miniUI控件库入门 最近在一家公司实习学习,一上来就需要学习了解相关的前端内容--miniUI.而这个内容自己本身并没有了解学习过,上手也是遇到了不少的问题,于是想把自 ...

  9. java学习笔记:全部,txt版本

    java学习笔记:全部,txt版本 笔者注: 1.不知道怎么上传附件,所以就把txt文本内容全部贴在这里吧. 2.已经把txt版本的笔记上传到CSDN了,我没有设置索要积分才能下载,但是不知道为什么C ...

最新文章

  1. 简单分析MySQL 一则慢日志监控误报问题
  2. Present ViewController详解
  3. 廖雪峰python学习笔记——函数式编程
  4. 作业调度方案(codevs 1156)
  5. 20.Java集合框架(四)
  6. 在职测试多年整理了自己常用的Linux命令...
  7. execCommand指令集详解
  8. VS Code 取色器 插件 颜色选取
  9. 金蝶云php webapi,K/3 Cloud Web API销售出库单PHP完整示例【分享】
  10. [论文必备]解决pdf复制到word出现换行排版混乱-自动整理小工具 ScholarAssist-免费文献段落格式整理软件
  11. 51单片机与蓝牙模块连接
  12. SQL笔记(约束、外键、casewhen)
  13. 【IOS账号分享】《NBA 2K20》
  14. java webp图片转换为png或jpg
  15. 使用docker运行mysql:5.7
  16. Windows网络共享或共享打印机无法访问连接的简单终极解决方法
  17. 细节--Java必须先创建文件夹再创建文件
  18. 青藤《关键信息基础设施增强保护安全实践》论文入选中国科技核心期刊
  19. 土地利用转移矩阵分析与制图(以沮漳河流域为例)
  20. 浅析云原生模型推理服务框架KServe

热门文章

  1. 复制粘贴往事:竟是缘起苹果电脑
  2. 前端如何实现微信扫描二维码下载应用,根据手机系统跳转不同页面
  3. Matlab 列主元高斯消去法
  4. 1196_菊花链通信概念与基础
  5. Cisco C3750 菊花链 做堆叠
  6. Python scapy的简单使用
  7. MATLAB cvx工具箱中常用的替换函数汇总,解决表达式报错问题
  8. 商务部首次明确支持无人商店;重庆邮电大学大数据智能研究院今揭牌成立
  9. arguments.callee和caller的区别
  10. 单链表的基础操作(带头结点)