电影售票系统(2)

首先我们先创建需要的类文件,然后在一步步把需要的功能加上

Cinema.java文件代码如下:
/**
 * 电影票类
 * @author Administrator
 *
 */
public class Cinema { 
	private Schedule schedule;//日程表对象   (单向关联关系)
	private ArrayList<Seat> seats = new ArrayList<Seat>();//保存座位的集合
	//用于保存卖出去的电影票信息
	private ArrayList<Ticket> tickes = new ArrayList<Ticket>();
	public Cinema(){
		schedule = new Schedule();
	}
	
	public ArrayList<Ticket> getTickes() {
		return tickes;
	}
	public void setTickes(ArrayList<Ticket> tickes) {
		this.tickes = tickes;
	}

	public Schedule getSchedule() {
		return schedule;
	}
	public void setSchedule(Schedule schedule) {
		this.schedule = schedule;
	}
/**
* 根据座位号查找座位
*/

	public Seat getSeat(String num){
	}
	/**
	 * 初始化座位,把座位添加到集合
	 */
	public Seat getSeat(String num){
	}
	/**
	 * 显示所有的座位信息
	 */
	public void printSeat(){
	}
	/**
	 * 初始化座位,把座位添加到集合中
	 */
	public void initialSeat(){
	
	}
	/**
	 * 显示所有电影场次的方法
	 */
	public void printMoiveInfo(){
	
	}
}



CinemaName.java代码:
/**
 * 电影名称类
 * @author Administrator
 *
 */
public class CinemaName {
	private String name;


	public CinemaName(){
		
	}
	public String getName() {
		return name;
	}
	//存入电影名字的方法
	public void setName(String name){
	
	}
}

ScheaduleItem.java代码
/**
 * 电影对应的时段
 * @author Administrator
 *
 */
public class ScheaduleItem implements Serializable{
	private static final long serialversionUID = 1L;
	private String time;//时间
	private Movie movie;//建立关联关系(单项关联)
	
	public ScheaduleItem() {
		movie = new Movie();//最好每次都new一把,防止空指针异常
	}


	public String getTime() {
		return time;
	}


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


	public Movie getMovie() {
		return movie;
	}


	public void setMovie(Movie movie) {
		this.movie = movie;
	}


	@Override
	public String toString() {
		return "ScheaduleItem [time=" + time + ", movie=" + movie + "]";
	}
	
	
}

Schedule.java代码:
/**
 * 放映的日程类
 * @author Admin
 *
 */
public class Schedule implements Serializable{
	private static final long serialversionUID = 1L;
	/**
	 * 放映场次的集合,因为场次是重复的所以不直接封装成Movie对象
	 */
	private ArrayList<ScheaduleItem> list;
	
	public Schedule(){
		list = new ArrayList<ScheaduleItem>();
	}
	//创建存和取的方法
	public ArrayList<ScheaduleItem> getList() {
		return list;
	}
	public void setList(ArrayList<ScheaduleItem> list) {
		this.list = list;
	}
	/**
	 * 新建一个方法用来读取xml文件中的电影信息,并封装成Movie对象
	 * 而且将场次信息添加到list的集合中。
	 */
	public void loadItems(){
	
	}
	/**
	 * 查找电影信息
	 * 根据电影和场次时间来查找,并返回电影场次
	 */
}

Seat.java代码:
/**
 * 座位类
 * @author Admin
 *
 */
public class Seat implements Serializable{


	/**
		 */
	private static final long serialVersionUID = 1L;


	/**
	 * 座位编号
	 */
	private String number;


	public Seat() {
		
	}


	public String getNumber() {
		return number;
	}


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

Ticket.java代码
/**
 * 打印普通电影票的类
 * @author Administrator
 *
 */
public class Ticket implements Serializable{
	public double price;//价格
	public Seat seat;//座位
	public ScheaduleItem item;//时间段


	public Ticket(){
		
	}


	public Ticket(double price, Seat seat, ScheaduleItem item) {
		//递归
		setPrice(price);
		setItem(item);
		setSeat(seat);
	}


	public double getPrice() {
		return price;
	}


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


	public Seat getSeat() {
		return seat;
	}


	public void setSeat(Seat seat) {
		this.seat = seat;
	}


	public ScheaduleItem getItem() {
		return item;
	}


	public void setItem(ScheaduleItem item) {
		this.item = item;
	}
	
	//打印电影票方法
	public void print(){
	//

	}
}



StudentTicket.java代码:
/**
 * 打印学生票的类
 * @author Administrator
 *
 */
public class StudentTicket extends Ticket{
	private double discount;//折扣
	
	public StudentTicket() {
		
	}
	
	
	public StudentTicket(int dis,double price, Seat seat, ScheaduleItem item) {
		super(price, seat, item);
		setDiscount(dis);
		//计算折扣后的价格
		this.setPrice(item.getMovie().getPrice()*dis/10.0);
	}






	public double getDiscount() {
		return discount;
	}


	public void setDiscount(double discount) {
		this.discount = discount;
	}
	@Override
	public void print(){
	//
	}
}

TicketFactory.java代码:
/**
 * 判断选择的是什么票
 * @author Administrator
 *
 */
public class TicketFactory implements Serializable{
	static  Ticket ticket = null;
	public static Ticket createrTicket(int num,int dis,double price,Seat seat,ScheaduleItem item){
		
		switch(num){
			case 1:
				ticket = new Ticket(price,seat,item);
				
				break;
			case 2:
				ticket = new StudentTicket(dis, price, seat, item);
				break;
		}
		return ticket;
		
	}
}

MovieTpye.java代码:
/**
 * 枚举类型用来存放电影的类型,比如武侠
 * @author Admin
 *
 */
public enum MovieType {
	Comedy,War,Romance,Action,Cartoon,Thrille
}


Movie.java代码:
/**
 * 电影基本信息类
 * @author Administrator
 *
 */
public class Movie implements Serializable{
	private String name;//电影名
	private String poster;//英文名
	private String director;//导演
	private String actor;//演员
	private int price;//价格
	private MovieType Type;//关联关系,创建枚举类型,存放影片类型
	private static final long serialversionUID = 1L;
	//无参构造函数
	public Movie() {


	}
	//全参构造函数
	public Movie(String name, String poster, String director, String actor,
			int price, MovieType type) {
		super();
		this.name = name;
		this.poster = poster;
		this.director = director;
		this.actor = actor;
		this.price = price;
		Type = type;
	}
	/**
	 * 下面为get,set方法,分别对对象的属性类型进行操作
		 * @return
	 */
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPoster() {
		return poster;
	}
	public void setPoster(String poster) {
		this.poster = poster;
	}
	public String getDirector() {
		return director;
	}
	public void setDirector(String director) {
		this.director = director;
	}
	public String getActor() {
		return actor;
	}
	public void setActor(String actor) {
		this.actor = actor;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public MovieType getType() {
		return Type;
	}
	public void setType(MovieType type) {
		Type = type;
	}
	@Override
	public String toString() {
		return "Movie [name=" + name + ", poster=" + poster + ", director="
				+ director + ", actor=" + actor + ", price=" + price
				+ ", Type=" + Type + "]";
	}
}


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
明白又清楚的资源。 private void lblBuy_Click(object sender, EventArgs e) { IPrintable iprintTicket = TicketFactory.getTicket(); IPrintable iprintStudent = TicketFactory.getSutdent(); IPrintable iprintFree = TicketFactory.getFree(); if (lblMovieName.Text.Trim() == "") { MessageBox.Show("请选择电影!"); return; } string seatNumber = ((Label)sender).Text; ScheduleItem si = cinemaDty[selectStr].SheduleItem; if (rbnPresent.Checked == true && txtPresentName.Text == "") { MessageBox.Show("请填写曾送者的姓名!"); return; } if (rbnStudent.Checked == true && cboStudent.Text == "") { MessageBox.Show("请选择折扣率!"); return; } if (cinemaDty[selectStr].Seats[seatNumber].Color == Color.Red) { MessageBox.Show("此票以售出!"); return; } if (rbnPresent.Checked == true) { DialogResult result = MessageBox.Show("是否购买此票?","信息提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information); if (result==DialogResult.Yes) { seatLabel[seatNumber].BackColor = Color.Red; FreeTicket ticketFree = new FreeTicket(); ticketFree.Price = si.Movie.Price; ticketFree.ScheduleItem = si; ticketFree.Seat = new Seat(seatNumber, seatLabel[seatNumber].BackColor); ticketFree.CustomerName = txtPresentName.Text; Ticket ticket = ticketFree as Ticket; cinemaDty[selectStr].SoldTickets.Add(ticket); lblGetPrice.Text = ticket.Price.ToString(); ticket.Print(); } } else if (rbnStudent.Checked == true) { DialogResult result = MessageBox.Show("是否购买此票?", "信息提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (result == DialogResult.Yes) { seatLabel[seatNumber].BackColor = Color.Red; Ticket ticket = new StudentTicket(); ticket.Price = (int)((si.Movie.Price) * Convert.ToInt32(cboStudent.Text) * 0.1); ticket.ScheduleItem = si; ticket.Seat = new Seat(seatNumber, seatLabel[seatNumber].BackColor); cinemaDty[selectStr].SoldTickets.Add(ticket); lblGetPrice.Text = ticket.Price.ToString(); ticket.Print(); } } else { DialogResult result = MessageBox.Show("是否购买此票?", "信息提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (result == DialogResult.Yes) { TicketFactory.getTicket(); seatLabel[seatNumber].BackColor = Color.Red; Ticket ticket = new Ticket(si.Movie.Price, si, new Seat(seatNumber, seatLabel[seatNumber].BackColor)); cinemaDty[selectStr].SoldTickets.Add(ticket); lblGetPrice.Text = ticket.Price.ToString(); ticket.Print(); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值