码迷,mamicode.com
首页 > 其他好文 > 详细

青鸟影院框架及功能点(一)

时间:2016-03-16 12:09:02      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:

电影院售票系统的功能:

1.影院每天更新放映列表,系统支持实时查看,包括放映场次时间,电影概况。

2.影院提供三类影院票:普通票,赠票,学生票(赠票免费,学生票有不同程度折扣)

3.允许用户查看某场次座位的售出情况

4.支持购票,并允许用户选择座

5.用户可以选择 场次,影票类型及空闲座位进行购票,并打印电影票。

6.系统可以保存销售情况,并允许对其进行恢复。

覆盖的技能点:

1.能够分析系统功能并提取对象和类

2.会使用类图理解类关系

3.会使用属性和方法构建类

4.会使用泛型集合

5.会使用枚举

6.面向对象思想、TreeView、XML读取、File文件流、泛型集合

7.会读取XML文件:循环读取XML文件,将放映列表存入集合,遍历集合将放映列表填充到TreeView控件

8.会使用文件保存和恢复信息:保存售票信息到文件中,从文件读取售票信息继续售票。

系统开发步骤:

1.明确需求

2.设计类

3.创建项目

4.确定编码顺序:

01:主窗体

02:查看新放映列表

03:查看电影介绍

04:查看影票票价

05:查看放映厅座位

06:购票和打印电影票

07:继续购票

5.测试

界面交互性设计原则

1.美观性

2.易用性

3.友好性

系统类:

类图:

技术分享

1.Seat:保存影院的座位信息,主要属性如下

座位号(SeatNum):string类型

座位卖出状态颜色(Color):System.Drawing.Color类型

         2.Movie:电影类

           电影名(MovieName):string类型

           海报图片路径(Poster):string类型

           导演名(Director):string类型

           主演(Actor):string类型

           电影类型(MovieType):MovieType自定义枚举类型

           定价(Price):int类型

         3.Ticket:电影票父类,保存电影票信息

           放映场次(ScheduleItem):ScheduleItem自定义类

           所属座位对象(Seat):Seat自定义类型

           票价(Price):int类型

           计算票价的虚方法CalcPrice()

           打印售票信息的虚方法Print()

           显示当前售出票信息的虚方法Show()

         4.StudentTicket:学生票子类,继承父类Ticket

           学生票的折扣(Discount):int类型

           重写父类计算票价CalcPrice

           重写父类打印售票信息的Print()

           重写父类显示当前出票信息的Show()方法

         5.FreeTicket:赠票子类,继承父类Ticket

           获得赠票者的名字属性(CustomerName):string类型

           重写父类计算票价CalcPrice()

           重写父类打印售票信息Print()

           重写父类显示当前出票信息Show()

         6.ScheduleItem:影院每天计划放映计划的场次,保存每场电影的信息

           放映时间属性(Time):string类型

           本场所放映电影属性(Movie):Movie自定义类型

         7.Schedule:放映计划类

           放映场次属性(Items):自定义泛型集合Dictionary<string,ScheduleItem>

           读取XML文件获取放映计划集合的LoadItems()方法

         8.Cinema:影院类,保存放映计划和座位类

           座位集合属性(Seat):自定义泛型集合Dictionary<string,Seat>

           放映计划Schedule:Schedule自定义类型

           已售出电影票的集合(SoldTicket):自定义泛型集合List<Ticket>

           保存和读取售票情况的Save()和Load()方法

           9.MovieType(枚举类型)

          10.TicketUtil:工具类

现在框架这样就搭好了。

现在着重代码:

1.想办法把数据放到TreeView上,就要必须解析XML文件

我们在放映时间类中解析XML文件:

如下:

  public void LoadItems()
        {
            if (Items == null)
            {
                Items = new Dictionary<string, ScheduleItem>();
            }
            //清除
            Items.Clear();
            XmlDocument doc = new XmlDocument();
            doc.Load("ShowList.xml");
            XmlNode root = doc.DocumentElement;
            //中间变量
            string movieName = null;
            string playBill = null;
            string director = null;
            string actor = null;
            string movieType = null;
            string price = null;
            foreach (XmlNode item in root.ChildNodes)
            {
                if (item.Name == "Movie")
                {
                    foreach (XmlNode child in item.ChildNodes)
                    {
                        switch (child.Name)
                        {
                            case "Name":
                                movieName = child.InnerText;
                                break;
                            case "Poster":
                                playBill = child.InnerText;
                                break;
                            case "Director":
                                director = child.InnerText;
                                break;
                            case "Actor":
                                actor = child.InnerText;
                                break;
                            case "Type":
                                movieType = child.InnerText;
                                break;
                            case "Price":
                                price = child.InnerText;
                                break;
                            case "Schedule":
                                foreach (XmlNode scheduleNode in child.ChildNodes)
                                {
                                    ScheduleItem scheduleItem = new ScheduleItem();
                                    scheduleItem.Time = scheduleNode.InnerText;
                                    scheduleItem.Movie.MovieName = movieName;
                                    scheduleItem.Movie.Poster = playBill;
                                    scheduleItem.Movie.Actor = actor;
                                    scheduleItem.Movie.Director = director;
                                    scheduleItem.Movie.MovieType = (MovieType)Enum.Parse(typeof(MovieType), movieType);
                                    scheduleItem.Movie.Price = int.Parse(price);
                                    Items.Add(scheduleItem.Time, scheduleItem);
                                }
                                break;
                        }

                    }
                }

 

2.绑定数据到TreeView控件上:

代码如下:

       public void InitTreeView()
        {
            // 摘要:
            //     禁用任何树视图重绘。
            tvlist.BeginUpdate();
            tvlist.Nodes.Clear();
            //加载xml文件
            //  string movieName = null;
            TreeNode movieNode = null;
            foreach (ScheduleItem item in cinema.Schedule.Items.Values)
            {
                if (movieNode == null || movieNode.Text != item.Movie.MovieName)
                {
                    movieNode = new TreeNode(item.Movie.MovieName);
                    tvlist.Nodes.Add(movieNode);
                }
                movieNode.Nodes.Add(item.Time);
            }
            //
            // 摘要:
            //     启用树视图的重绘。
            tvlist.EndUpdate();
        }

3.在AfterSelect事件中,把数据绑定到右边的控件上,显示信息

   //    //查看电影介绍
        private void tvlist_AfterSelect(object sender, TreeViewEventArgs e)
        {
            //点击时间(场次)时切换回普通票 并清空可能残留的信息
            txtGive.Text = "";
            cboStudentDivPrice.Text = "";
            // GetKey()方法是获取选中场次的时间
            GetKey();
            //将电影详细信息显示
            lblMovieName.Text = cinema.Schedule.Items[key].Movie.MovieName;
            lblDirector.Text = cinema.Schedule.Items[key].Movie.Director;
            lblActor.Text = cinema.Schedule.Items[key].Movie.Actor;
            lblBasePrice.Text = cinema.Schedule.Items[key].Movie.Price.ToString();
            lblPlayTime.Text = cinema.Schedule.Items[key].Time;
            lblMovieType.Text = cinema.Schedule.Items[key].Movie.MovieType.ToString();
            picMovie.Image = Image.FromFile(cinema.Schedule.Items[key].Movie.Poster);
            lblGoodPrice.Text = "";

这样就完成了第一步。

 

青鸟影院框架及功能点(一)

标签:

原文地址:http://www.cnblogs.com/whyhappy/p/5281872.html

(1)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!