影院售票系统设计报告Net项目报告.docx

上传人:b****5 文档编号:3319023 上传时间:2022-11-21 格式:DOCX 页数:14 大小:264.31KB
下载 相关 举报
影院售票系统设计报告Net项目报告.docx_第1页
第1页 / 共14页
影院售票系统设计报告Net项目报告.docx_第2页
第2页 / 共14页
影院售票系统设计报告Net项目报告.docx_第3页
第3页 / 共14页
影院售票系统设计报告Net项目报告.docx_第4页
第4页 / 共14页
影院售票系统设计报告Net项目报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

影院售票系统设计报告Net项目报告.docx

《影院售票系统设计报告Net项目报告.docx》由会员分享,可在线阅读,更多相关《影院售票系统设计报告Net项目报告.docx(14页珍藏版)》请在冰豆网上搜索。

影院售票系统设计报告Net项目报告.docx

影院售票系统设计报告Net项目报告

影院售票系统

设计报告

设计人:

指导教师:

组员:

班级:

2009年xx月xx日

一、设计目的

为了研究影院售票系统软件的开发途径和应用方法。

同时它也是进行项目策划、概要设计和详细设计的基础,是维护人员进行内部维护,信息更新,验收和测试的依据。

本需求的购票人是与影院售票系统软件开发有联系的决策人,开发组成人员,扶助开发者,支持本项目的领导和公司人员,软件验证者!

二、需求设计分析

1、使用XML个TreeView显示影院放映列表。

2、使用泛型集合维护有继承关系的电影票对象。

3、座位数可以在系统中指定。

4、点击座位可以购买不同类型的电影票。

5、使用简单工厂模式创建不同类型的电影票。

6、使用多态实现不同类型电影票的价格计算。

7、使用借口实现电影票的打印。

8、使用序列化和反序列化实现销售情况的保存和读取。

2、画出项目功能图。

(宋体、小四、行间距20磅)

三、类设计分析

(1)ScheduleItem:

影院每天计划放映电影的场次,保存每场电影的信息。

放映时间属性(Time):

String类型。

本厂所放电影属性(Movie):

自定义Movie类型。

publicclassScheduleItem

{

publicScheduleItem()

{

movie=newMovie();

}

///

///放映时间

///

privatestringtime;

publicstringTime

{

get{returntime;}

set{time=value;}

}

///

///要放映的电影对象

///

privateMoviemovie;

publicMovieMovie

{

get{returnmovie;}

set{movie=value;}

}

}

(2)Schedule:

放映计划类:

保存电影当天的放映计划集合。

放映场次属性(Items):

自定义泛型集合Dictionary类型。

读取XML文件放映计划集合方法:

Loaditems()。

下面的详细功能有实现代码

(3)Cinema:

电影院类,保存放映计划和座位类。

座位集合属性(Seats):

自定义泛型集合Dictionary类型。

放映计划Schedule:

自定义类Schedule类型。

已售出电影票的集合(SoldTicks):

自定义泛型集合list类型。

保存和读取销售情况的Save和Load方法。

publicclassCinema

{

publicCinema()

{

seats=newDictionary();

soldTickets=newList();

schedule=newSchedule();

}

privateDictionaryseats;

publicDictionarySeats

{

get{returnseats;}

set{seats=value;}

}

privateScheduleschedule;

publicScheduleSchedule

{

get{returnschedule;}

set{schedule=value;}

}

privateListsoldTickets;

publicListSoldTickets

{

get{returnsoldTickets;}

set{soldTickets=value;}

}

publicvoidSave()

{

FileStreamfs=newFileStream("soldTickets.bin",FileMode.Create);

BinaryFormatterbf=newBinaryFormatter();

bf.Serialize(fs,SoldTickets);

fs.Close();

}

publicvoidLoad()

{

try

{

FileStreamfs=newFileStream("soldTickets.bin",FileMode.Open);

BinaryFormatterbf=newBinaryFormatter();

this.SoldTickets=(List)bf.Deserialize(fs);

fs.Close();

}

catch(Exceptionex)

{

ex.ToString();

soldTickets=newList();

}

}

}

(4)TicketFactory:

简单工厂类,根据输入的值,判断创建不同的电影票对象。

创建电影票的方法,返回类型是自定义类Ticket。

publicclassTicketFactory

{

publicstaticTicketCreateTicket(ScheduleItemscheduleItem,Seatseat,

intdiscount,stringcustomerName,stringtype)

{

TicketnewTicket=null;

switch(type)

{

case"student":

newTicket=newStudentTicket(scheduleItem,seat,discount);

break;

case"free":

newTicket=newFreeTicket(scheduleItem,seat,customerName);

break;

case"":

newTicket=newTicket(scheduleItem,seat);

break;

}

returnnewTicket;

}

}

(5)IPrintable:

打印接口,用于实现打印功能。

publicinterfaceIPrintable

{

voidPrint();

}

 

四、详细设计

我负责获取销售计划功能和销售功能的实现。

1、用户需求流程(宋体、小四、行间距20磅)

 

 

1、描绘座位

描绘电影院的座位表,使用标签可以自定义座位数,动态加载控件。

未售出的座位表示为黄色,售出的表示为红色,座位上要显示座位号。

2、获取销售计划

获取:

单击菜单中的“获取新列表”,从XML文件中读入每天最新的放映列表。

将新放映的电影填充到TreeView中,将要放映的电影作为根节点,子节点是具体的放映时间。

publicvoidLoadItems()//从XML文件读取放映列表数据

{

if(items==null)

items=newDictionary();

items.Clear();

XmlDocumentmyXml=newXmlDocument();

myXml.Load("ShowList.xml");

XmlNodefeednode=myXml.DocumentElement;

//中间变量

stringmovieName=null;

stringplayBill=null;

stringdirector=null;

stringactor=null;

stringmovieType=null;

stringprice=null;

foreach(XmlNodenodeinfeednode.ChildNodes)

{

if(node.Name=="Movie")

{

foreach(XmlNodesubNodeinnode.ChildNodes)

{

switch(subNode.Name)

{

case"Name":

movieName=subNode.InnerText;

break;

case"Poster":

playBill=subNode.InnerText;

break;

case"Director":

director=subNode.InnerText;

break;

case"Actor":

actor=subNode.InnerText;

break;

case"Type":

movieType=subNode.InnerText;

break;

case"Price":

price=subNode.InnerText;

break;

case"Schedule":

foreach(XmlNodescheduleNodeinsubNode.ChildNodes)

{

ScheduleItemitem=newScheduleItem();

item.Time=scheduleNode.InnerText;

item.Movie.MovieName=movieName;

item.Movie.Poster=playBill;

item.Movie.Director=director;

item.Movie.Actor=actor;

item.Movie.MovieType=(MovieType)Enum.Parse(typeof(MovieType),movieType);

item.Movie.Price=int.Parse(price);

items.Add(item.Time,item);

}

break;

}

}

}

}

}

继续销售:

每次启动程序单击菜单中的“继续销售”,将序列化后的信息进行反序列化,并将已经销售的座位状况描绘到窗体。

退出程序时,要将当前销售状况保存(使用序列化)。

privatevoidtsmiMovies_Click(objectsender,EventArgse)

{

//判断放映列表是否为空

if(cinema.Schedule.Items.Count==0)

{

cinema.Schedule.LoadItems();

}

InitTreeView();

}

3、销售

选择所售的场次:

选择TreeView的一个场次,将详细信息显示到窗体,销售的座位信息描绘到窗体,未获得放映列表前单击座位,要提示未选择电影。

TreeNodenode=tvMovies.SelectedNode;

if(node==null)return;

if(node.Level!

=1)return;

key=node.Text;

//将详细信息显示

this.lblMovieName.Text=cinema.Schedule.Items[key].Movie.MovieName;

this.lblDirector.Text=cinema.Schedule.Items[key].Movie.Director;

this.lblActor.Text=cinema.Schedule.Items[key].Movie.Actor;

this.lblPrice.Text=cinema.Schedule.Items[key].Movie.Price.ToString();

this.lblTime.Text=cinema.Schedule.Items[key].Time;

this.lblType.Text=cinema.Schedule.Items[key].Movie.MovieType.ToString();

this.picMovie.Image=Image.FromFile(cinema.Schedule.Items[key].Movie.Poster);

this.lblCalcPrice.Text="";

销售:

单击一个座位,默认会销售普通票,提示是是否购买,如果购买,计算价格并打印电影票。

如果选择学生票,要录入本张票的折扣是多少(默认5折),然后计算并打印,如果是赠票,要录入获得赠票者姓名,计算价格并打印。

将所售票的优惠价格显示在优惠价格标签,单击已经卖出的座位提示已经售出。

DialogResultresult;

result=MessageBox.Show("是否购买?

","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information);

if(result==DialogResult.Yes)

{

cinema.Seats[seatNum].Color=Color.Red;

UpdateSeat();

cinema.SoldTickets.Add(newTicket);

newTicket.CalcPrice();

lblCalcPrice.Text=newTicket.Price.ToString();

newTicket.Print();

}

elseif(result==DialogResult.No)

{

return;

}

}

else

{

MessageBox.Show("已售出.");

}

刷新座位状况:

选择不同场次,座位要刷新为该场销售情况。

打印电影票:

打印电影票要输入不同的文件名(按座位号),不同类型的票打印的效果不同。

普通票:

******************************

青鸟影院

------------------------------

电影名:

功夫

时间:

10-0011-45

座位号:

1-1

价格:

60

******************************

stringfileName=this.ScheduleItem.Time+""+this.Seat.SeatNum+".txt";

FileStreamfs=newFileStream(fileName,FileMode.Create);

StreamWritersw=newStreamWriter(fs);

sw.WriteLine("***************************");

sw.WriteLine("青鸟影院");

sw.WriteLine("---------------------------");

sw.WriteLine("电影名:

\t{0}",this.ScheduleItem.Movie.MovieName);

sw.WriteLine("时间:

\t{0}",this.ScheduleItem.Time);

sw.WriteLine("座位号:

\t{0}",this.Seat.SeatNum);

sw.WriteLine("价格:

\t{0}",this.Price.ToString());

sw.WriteLine("***************************");

sw.Close();

fs.Close();

赠票:

******************************

青鸟影院(赠票)

------------------------------

电影名:

蜘蛛人3

时间:

16-0017-45

座位号:

5-6

姓名:

张三

stringfileName=this.ScheduleItem.Time+""+this.Seat.SeatNum+".txt";

FileStreamfs=newFileStream(fileName,FileMode.Create);

StreamWritersw=newStreamWriter(fs);

sw.WriteLine("***************************");

sw.WriteLine("青鸟影院(赠票)");

sw.WriteLine("---------------------------");

sw.WriteLine("电影名:

\t{0}",this.ScheduleItem.Movie.MovieName);

sw.WriteLine("时间:

\t{0}",this.ScheduleItem.Time);

sw.WriteLine("座位号:

\t{0}",this.Seat.SeatNum);

sw.WriteLine("姓名:

\t{0}",this.CustomerName);

sw.WriteLine("***************************");

sw.Close();

fs.Close();

******************************

学生票:

******************************

青鸟影院(学生)

------------------------------

电影名:

功夫

时间:

10-0011-45

座位号:

4-6

价格:

30

******************************

stringfileName=this.ScheduleItem.Time+""+this.Seat.SeatNum+".txt";

FileStreamfs=newFileStream(fileName,FileMode.Create);

StreamWritersw=newStreamWriter(fs);

sw.WriteLine("***************************");

sw.WriteLine("青鸟影院(学生)");

sw.WriteLine("---------------------------");

sw.WriteLine("电影名:

\t{0}",this.ScheduleItem.Movie.MovieName);

sw.WriteLine("时间:

\t{0}",this.ScheduleItem.Time);

sw.WriteLine("座位号:

\t{0}",this.Seat.SeatNum);

sw.WriteLine("价格:

\t{0}",this.Price.ToString());

sw.WriteLine("***************************");

sw.Close();

fs.Close();

五、系统的安装盘制作说明

安装步骤1.进入安装目录Setup文件夹

2.打开DeBug文件夹

3.双击setup.msi文件进行安装如果是Vista系统请右键一管理员身份安装

六、设计总结

1、谈设计的心得体会。

通过设计影院售票系统,让我们这学期所学的课程得到巩固和良好的吸收,我们对.NET的理解得到进一步提高,完善了一些把握不准确的知识点,加强了对团队合作的理解明白了团队合作的重要性,将这学期所学的知识应用到实践中去,也从中了解到了自己的不足(譬如。

数据库设计的完善问题,细节没得到足够重视等)。

相信吃一垫长一智,我们会更加努力,在以后的学习和工作中吸取教训,让自己做的更好!

2、谈系统设计的亮点。

通过本系统软件,能帮助售票人员利用计算机,快速方便地对影院售票情况,订票情况,剩余座位查询等进行高效的管理。

3、谈系统设计的有待解决的问题。

当然,这次我们设计的系统还是存在着许多的问题,比如说该系统的帐户管理员的问题,添加新电影,修改和删除电影信息的一些功能,都需要我们在以后的学习中进一步完善。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1