该系统登录的用户分为商家用户和普通用户两种,这两种用户要进行的操作不同,但两者的也有部分的共同特征,所以可以定义一个父类存储两者的共同属性

//充当用户和商家的父类。
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;}
}

然后再分别定义商家类和用户类
商家类:

public class Business extends User {private String shopname;private String place;public String getShopname() {return shopname;}public void setShopname(String shopname) {this.shopname = shopname;}public String getPlace() {return place;}public void setPlace(String place) {this.place = place;}
}

用户类:
因为父类User中定义的变量已经满足成员的所有属性,所以直接用Customer类继承User类就行了

public class Customer extends User{}

最后还要定义一个电影类用来定义电影的属性:

import java.util.Date;public class Movie {private String name;private String actor;private double score;private double time;private double price;private int number;private Date starttime;public Date getStarttime() {return starttime;}public void setStarttime(Date starttime) {this.starttime = starttime;}public Movie() {}//因为评分功能不是由商家进行评价的,而是由看过电影后的用户进行评价的,所以此处有参构造器处暂时不用加入score。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 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 getScore() {return score;}public void setScore(double score) {this.score = score;}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;}
}

准备好需要的东西后就可以开始写实现的方法:

package RUN;import Bean.Business;
import Bean.Customer;
import Bean.Movie;
import Bean.User;import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;public class MovieSystem {/*定义系统的数据容器用于储存数据。1.储存很多对象(客户对象,商家对象)*/public static final List<User> ALL_USER=new ArrayList<>();/*储存系统全部商家和其排片信息。商品1=【p1,p2,p3...】商品2=【p1,p2...】电影信息应用键值对进行储存,所以采用Map集合。*/public static final Map<Business,List<Movie>> ALL_MOVIES=new HashMap<>();//将Scanner定义为静态,这样就可以在这个类的任何地方调用public static final Scanner sc=new Scanner(System.in);//定义一个静态的User类型的变量记住当前登录成功的用户public static User loginuser;//定义输入的时间的格式public static SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");/*准备一些测试数据*/static {Customer c=new Customer();c.setLoginname("zyf888");c.setPassword("123456");c.setUsername("小刘");c.setSex('男');c.setMoney(10000);c.setPhone("110110");ALL_USER.add(c);Customer c1=new Customer();c1.setLoginname("gzl888");c1.setPassword("123456");c1.setUsername("小关");c1.setSex('女');c1.setMoney(2000);c1.setPhone("111111");ALL_USER.add(c1);Business b=new Business();b.setLoginname("baozugong888");b.setPassword("123456");b.setUsername("小包");b.setMoney(0);b.setSex('男');b.setPhone("110110");b.setPlace("火星6号2b二层");b.setShopname("甜甜圈国际影城");ALL_USER.add(b);List<Movie> Movies=new ArrayList<>();ALL_MOVIES.put(b,Movies);Business b1=new Business();b1.setLoginname("lsp888");b1.setPassword("123456");b1.setUsername("老包");b1.setMoney(0);b1.setSex('女');b1.setPhone("110110");b1.setPlace("火星8号88二层");b1.setShopname("巧克力国际影城");ALL_USER.add(b1);List<Movie> Movies1=new ArrayList<>();ALL_MOVIES.put(b1,Movies1);}//通过调用showmain方法进入之后的操作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.商家注册");System.out.println("请输入操作命令");String commend=sc.nextLine();switch (commend){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=sc.nextLine();System.out.println("请输入登录密码");String password=sc.nextLine();//根据登录名称查询用户对象。(重新定义一个方法进行判断)User u= GetUserByLoginName(loginname);if (u!=null){if (u.getPassword().equals(password)){//登录成功loginuser=u;//判断登录进去的是商家用户还是普通用户if (u instanceof Customer){//当前登录的是普通用户showCustomer();}else {//当前登陆的是商家用户showBusiness();}return;}else {System.out.println("密码有误");}}else {System.out.println("登录名称错误");}}}//用户操作界面private static void showCustomer() {System.out.println("===电影客户端===");System.out.println(loginuser.getLoginname()+(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("请输入您要操作的命令");String commend=sc.nextLine();switch (commend){case "1"://展示所有影片信息showAllMovies();break;case "2"://根据电影名称查询电影信息break;case "3"://评分功能break;case "4"://购票功能buyMovie();break;case "5"://退出功能return;default:System.out.println("不存在该命令");break;}}}private static void buyMovie() {showAllMovies();System.out.println("===用户购票信息===");while (true) {System.out.println("请输入需要购票的门店");String shopname= sc.nextLine();//查询是否存在商家Business business=getbussinessbyshopname(shopname);if (business==null){System.out.println("对不起,没有该店铺");}else {//此时商家的全部排片List<Movie> movies=ALL_MOVIES.get(business);//判断是否存在上架的电影if (movies.size()>0){//开始进行购买System.out.println("请输入需要购买的电影名称");String name= sc.nextLine();//去当前商家下,查询该电影对象Movie movie=getMovieByShopAndName(business,name);if (movie!=null){//开始购买System.out.println("请输入要购买的电影票个数");String number= 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 commend= sc.nextLine();switch (commend){case "y":break;case "n":System.out.println("好的");return;}}}else {//票数不够System.out.println("您当前最多可购买"+movie.getNumber());System.out.println("是否继续买票 y/n");String commend= sc.nextLine();switch (commend){case "y":break;case "n":System.out.println("好的");return;}}}}else {System.out.println("该电影院暂不营业");System.out.println("是否继续买票 y/n");String commend= sc.nextLine();switch (commend){case "y":break;case "n":System.out.println("好的");return;}}}}}//在普通用户够票时判断是否存在输入的电影public static Movie getMovieByShopAndName(Business business,String name){List<Movie> movies=ALL_MOVIES.get(business);for (Movie movie : movies) {if (movie.getName().equals(name)){return movie;}}return null;}//在普通用户够票时判断是否存在输入的影院private static Business getbussinessbyshopname(String shopname) {Set<Business> businesses=ALL_MOVIES.keySet();for (Business business : businesses) {if (business.getShopname().equals(shopname)){return business;}}return null;}/*用户操做所有商家影片信息*/private static void showAllMovies() {System.out.println("===展示全部商品排片信息===");ALL_MOVIES.forEach((business, movies) -> {System.out.println(business.getShopname()+"\t\t电话"+business.getPhone()+"\t\t地址"+business.getPlace());System.out.println("片名\t\t\t主演\t\t时长\t\t评分\t\t票价\t\t余票数量\t\t放映时间");for (Movie movie : movies) {System.out.println(movie.getName()+"\t\t\t"+movie.getActor()+"\t\t"+movie.getTime()+"\t\t"+movie.getScore()+"\t\t"+movie.getPrice()+"\t\t"+movie.getNumber()+"\t\t"+sdf.format(movie.getStarttime()));}});}/*进入商家后台操作界面*/private static void showBusiness() {while (true){System.out.println("===商家界面===");System.out.println(loginuser.getLoginname()+(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 commend=sc.nextLine();switch (commend){case "1"://展示全部排片信息showBussinessInfos();break;case "2"://上架电影信息addMovie();break;case "3"://下架电影信息deleteMovie();break;case "4"://修改电影信息updateMovie();break;case "5"://退出return;default:System.out.println("不存在该命令");break;}}}/*电影信息更新*/private static void updateMovie() {System.out.println("===修改电影===");Business business=(Business) loginuser;List<Movie> movies=ALL_MOVIES.get(loginuser);if (movies.size()==0){System.out.println("当前无片可修改");return;}while (true) {System.out.println("请您输入需要修改的电影名称");String moviename= sc.nextLine();//去查询有没有这个影片对象Movie movie=getmoviebyname(moviename);if (movie!=null){System.out.println("请输入修改后的新片名:");String name= sc.nextLine();System.out.println("请输入修改后的主演:");String actor=sc.nextLine();System.out.println("请输入修改后的时长");double time= sc.nextDouble();System.out.println("请输入修改后的票价");double price= sc.nextInt();System.out.println("请输入修改后的票数");int number=sc.nextInt();while (true) {try {System.out.println("请输入修改后的放映时长");String stime= sc.nextLine();movie.setName(name);movie.setActor(actor);movie.setTime(time);movie.setPrice(price);movie.setNumber(number);movie.setStarttime(sdf.parse(stime));System.out.println("恭喜您成功修改影片");showBussinessInfos();return;} catch (Exception e) {e.printStackTrace();System.out.println("输入时长形式可能有误");}}}else {System.out.println("您的店铺没有上架该影片");System.out.println("请问还要继续修改吗? y/n");String commend= sc.nextLine();switch (commend){case "y":break;case "n":System.out.println("好的");return;}}}}/*电影下架*/private static void deleteMovie() {System.out.println("===下架电影===");//将登录的用户信息强转为Business类型。Business business=(Business) loginuser;List<Movie> movies=ALL_MOVIES.get(loginuser);if (movies.size()==0){System.out.println("当前无片可下架");return;}//让用户选择需要下架的电影名称while (true) {System.out.println("请您输入需要下架的电影名称");String moviename= sc.nextLine();//去查询有没有这个影片对象Movie movie=getmoviebyname(moviename);if (movie!=null){movies.remove(movie);System.out.println("已成功下架"+movie.getName());showBussinessInfos();return;}else {System.out.println("您的店铺没有上架该影片");System.out.println("请问还要继续下架吗? y/n");String commend= sc.nextLine();switch (commend){case "y":break;case "n":System.out.println("好的");return;}}}}private static Movie getmoviebyname(String moviename) {Business business= (Business) loginuser;List<Movie> movies=ALL_MOVIES.get(loginuser);for (Movie movie : movies) {if (movie.getName().equals(moviename)){return movie;}}return null;}/*进行电影上架*/private static void addMovie() {System.out.println("===上架电影===");Business business= (Business) loginuser;List<Movie> movies=ALL_MOVIES.get(loginuser);System.out.println("请输入新片名:");String name= sc.nextLine();System.out.println("请输入主演:");String actor=sc.nextLine();System.out.println("请输入时长");double time= sc.nextDouble();System.out.println("请输入票价");double price= sc.nextInt();System.out.println("请输入票数");int number=sc.nextInt();while (true) {try {System.out.println("请输入放映时长");String stime= sc.nextLine();Movie movie=new Movie(name,actor,time,price,number,  sdf.parse(stime));movies.add(movie);System.out.println("您已成功上架了,《"+movie.getName()+"》");return;} catch (ParseException e) {e.printStackTrace();System.out.println("输入时长形式可能有误");}}}//展示电影信息private static void showBussinessInfos() {System.out.println("===商家详情界面===");//根据商品的建,提取的值就是电影信息Business business= (Business) loginuser;System.out.println(business.getLoginname()+"\t\t电话"+business.getPhone()+"\t\t地址"+business.getPlace());//loginuser中储存的可以看作Map集合的建,然后调用API根据建提取出对应的值。List<Movie> movies=ALL_MOVIES.get(loginuser);if (movies.size()>0){System.out.println("片名\t\t\t主演\t\t时长\t\t评分\t\t票价\t\t余票数量\t\t放映时间");for (Movie movie : movies) {System.out.println(movie.getName()+"\t\t\t"+movie.getActor()+"\t\t"+movie.getTime()+"\t\t"+movie.getScore()+"\t\t"+movie.getPrice()+"\t\t"+movie.getNumber()+"\t\t"+sdf.format(movie.getStarttime()));}}else {System.out.println("您的店铺当前无片可播");}}public static User GetUserByLoginName(String loginname){for (User user : ALL_USER) {if (user.getLoginname().equals(loginname)){return user;}}return null;}

至此可实现一些基本的功能。

简易购买电影票系统(Java)相关推荐

  1. 简易银行账户系统 java

    简易银行账户系统 java Bank类 import java.util.Random;public class Bank {String name, password;double money;in ...

  2. 购买披萨系统-Java

    题目 代码 Pizza父类 package com.zxf01;//父类public class Pizza {//构造器public Pizza(){}//属性private String name ...

  3. 视频教程-项目实战:在线电影票购买系统-Java

    项目实战:在线电影票购买系统 系统分析师,项目经理,特级讲师:11年项目经验,8年教学经验:在多个大型企业级项目中担任过重要角色. 肖海鹏 ¥359.00 立即订阅 扫码下载「CSDN程序员学院APP ...

  4. 基于JAVA简易在线教学系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA简易在线教学系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA简易在线教学系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目架构 ...

  5. java计算机毕业设计简易在线教学系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计简易在线教学系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计简易在线教学系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S ...

  6. Java小项目实现——简易的登录系统实现

    前段时间用Java写了一个简易的登录系统,代码不长,仅供大家学习使用 程序的结构不难,只用了do-while循环和简单的if条件判断.逻辑也比较简单,系统对用户的输入进行判断,用户输入完之后,提醒用户 ...

  7. java计算机毕业设计简易在线教学系统源码+数据库+lw文档+系统

    java计算机毕业设计简易在线教学系统源码+数据库+lw文档+系统 java计算机毕业设计简易在线教学系统源码+数据库+lw文档+系统 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开 ...

  8. java计算机毕业设计简易在线教学系统源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计简易在线教学系统源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计简易在线教学系统源码+数据库+系统+lw文档+mybatis+运行部署 本源码技术栈 ...

  9. Java图书购买订单系统的简单实现(使用ArrayList集合框架)

    实现了一个简单的图书购买订单系统 主要类为: Admin类: **购买方法:**通过对预设的图书列表进行遍历.如果输入的购买图书编号与集合中的某个元素对象的图书编号相同,且此元素对象的库存大于购买数, ...

最新文章

  1. [LeetCode系列]最大连续子列递归求解分析
  2. 图论500题 ---- 枚举(最短路上的边)+最短路 删掉任意一条边的最长最短路 HDU1595
  3. (转)Windows重启延迟删除,重命名技术原理
  4. CVE-2019-8341 Jinja2 RCE漏洞学习
  5. 虚拟机安装服务器2008,VMware Workstation 虚拟机安装64位windows 2008 R2 系统
  6. 6.深度学习练习:Initialization
  7. c语言中循环结构的作用,C语言中对于循环结构优化的一些入门级方法简介
  8. 【跃迁之路】【593天】程序员高效学习方法论探索系列(实验阶段350-2018.09.21)...
  9. SQL Server 连接查询(内连接查询)
  10. Atitit 初级 中级 高级 软件工程师的区别 非功能性需求 目录 1. 初级 业务功能 1 1.1. 中级 独立完成业务功能 已经非常见api功能 更加广阔 1 2. 高级 非功能性需求
  11. LaTeX中的魔法注释
  12. 哈希库--uthash的详细讲解(附uthash相关头文件下载)
  13. STM32驱动WS2811
  14. 变速齿轮修改服务器时间,可改变游戏速度!游戏变速齿轮安装使用说明
  15. c 语言中析构函数,全面解析C++中的析构函数
  16. oracle 11g 解决临时表空间占满问题
  17. 基于Java的飞机大战游戏的设计与实现论文
  18. 椭圆算法加密,java实现
  19. SyntaxError: invalid syntax(遇到问题)(已解决)
  20. Visual Studio 2019 v16.10 和 v16.11 Preview 1 现已推出!

热门文章

  1. 谷歌面试题-单位换算
  2. 中国互联网流行文化缔造者百度贴吧,如何拥抱新时代?
  3. 敏捷管理 -- 时间和成本管理
  4. 删除文件夹时,显示“错误0x80070091 文件夹不是空的”
  5. 计算机双工模式,windows10系统如何设置网络双工模式?
  6. 论文阅读三:基于改进人工蜂群算法的SDN负载均衡策略研究
  7. 娱乐而已,认真你就输了
  8. MFC AFX_EXT_CLASS
  9. AFX_VIRTUAL
  10. 只要干不死,就往死里干