影院售票系统
拿到要求后,能够分析系统功能并合理提取对象和类,会使用属性和方法
构建类,从最简单的类开始。 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 seats;//本场电影的所有座位《注意:在此处用泛型HashMap集合,用座位号作为键值,用来查找座位中的座位状态(是否可售)和座位号》
而你每次选一个电影的放映时间,就有一场电影上映,这场电影就有20个座位。因此可以这样获取20个座位。
Public final int seatall=20;
获取20个座位需要初始化。
Public void init(){
movie=new Movie();《movie需要初始化new》
seats=new HashMap();《在类中有集合或者有类的对象时,一定要在构造方法中new》 此时没在构造方法中new,在init()中new过后,可以把init()方法放在构造方法中for(int i=1;iSeat 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 items;在类中有集合或者有类的对象时,一定要在构造方法中new
此时没在构造方法中new,在init()中new过后,可以把init()方法放在构造方法中
public Schedule(){
init();
}
之后要初始化影院的电影。初始化电影的场次
public void init(){
items=new HashMap();初始化影院的电影,比如:
feng = new Movie(\"风声 \陈国富\周迅、李冰冰、张涵予\
初始化电影的场次
比如:(用的有参的构造方法)
s1 = new ScheduleItem(\"10:00\
创建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 solds; //已售票集合一定在构造方法中new
public Cinema() {
schedule = new Schedule();
solds=new ArrayList();}
在此类中写Start()方法显示影院的初始欢迎菜单
在此类中写 showmenu()方法显示影院的操作列表菜单