影院售票系统详细分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
影院售票系统
拿到要求后,能够分析系统功能并合理提取对象和类,会使用属性和方法构建类,从最简单的类开始。
entity实体包内
Movie 类(电影类)
包括属性:
private String movieName; // 电影名称
private String director; // 导演名
private String actor; //主演
private int price; // 电影定价
构造有参无参的构造方法。构造set,get方法。
此类无方法。
Seat类(座位类)
包括属性:
private String seatNum;//座位号
private int status;//座位状态(为int 类型,可用0,1代表)
构造有参无参的构造方法。构造set,get方法。
此类无方法。
ScheduleItem类(放映的场次类)
private String time;//放映的时间
private Movie movie;//播放的电影
private Map
《注意:在此处用泛型HashMap集合,用座位号作为键值,用来查找座位中的座位状态(是否可售)和座位号》
而你每次选一个电影的放映时间,就有一场电影上映,这场电影就有20个座位。因此可以这样获取20个座位。
Public final int seatall=20;
获取20个座位需要初始化。
Public void init(){
movie=new Movie();《movie需要初始化new》
seats=new HashMap
for(int i=1;i Seat s=new Seat(i+””,1);seat类中添加20张票的对象每个有一个号i;又有状态1,表示可售。 seats.put(s.getSeatNum(), s);创建HashMap集合的对象 } 构造有参无参的构造方法(都调用init()方法,因为不知道用哪个构造方法)。构造set,get方法。 Schedule类(放映列表类) 要想列出反放映列表,必须有电影名称,导演,主演,价格。(这些都在Moviel类中),而最重要的是每一场电影要播放的时间即场次(时间是唯一的,其他可能重复)。因此需要运用Hashmap集合运用时间来找其他的场次和电影(在ScheduleItem中)。 // 本影院的电影Movie feng, fei, qie, wu;(说明电影有重复的) // 场次ScheduleItem s1, s2, s3, s4, s5, s6, s7, s8; public Map 在类中有集合或者有类的对象时,一定要在构造方法中new 此时没在构造方法中new,在init()中new过后,可以把init()方法放在构造方法中 public Schedule(){ init(); } 之后要初始化影院的电影。初始化电影的场次 public void init(){ items=new HashMap 初始化影院的电影,比如: feng = new Movie("风声", "陈国富", "周迅、李冰冰、张涵予", 60);初始化电影的场次 比如:(用的有参的构造方法) s1 = new ScheduleItem("10:00", fei); 创建items集合的对象。形成播放列表; items.put(s1.getTime(), s1); Ticket类(票类)父类 private double price; //该场电影的价格 private ScheduleItem sitem; //该场电影的场次private Seat seat; / /该场电影的座位 构造有参无参的构造方法。构造set,get方法。 StudentTicket类(学生票类)子类(extends Ticket implements CalculTicketPrice)private double discount; //学生票所打的折扣 构造有参无参的构造方法。构造set,get方法。继承接口中的方法calculPrice();算出价格。 this.setPrice(this.getPrice*discount); FreeTicket类(赠票类)子类 Private String name;//赠票者姓名 构造有参无参的构造方法。构造set,get方法。继承接口中的方法calculPrice();算出价格。 this.setPrice(0); Inter包中(接口) public interface CalculTicketPrice { public void calculPrice(); } 在接口中创建了一个抽象方法。子类分别去继承并实现这个方法biz包中(业务逻辑包) Cinema类(电影院管理类) Schedule schedule; //放映日程(Schedule) List 一定在构造方法中new public Cinema() { schedule = new Schedule(); solds=new ArrayList } 在此类中写Start()方法显示影院的初始欢迎菜单 在此类中写showmenu()方法显示影院的操作列表菜单