网络电视精灵(新手练习,如果有不好的地方,请各位多多指导指导小弟。)

电视精灵效果展示:

1.电视台和节目信息从xml文件中解析并绑定;

2.实现点击频道节点时显示有关该频道的节目信息;

好了,废话不多说。大家请看效果演示,如有不好之处,请多多指教一下,毕竟我还是个新手。

01.第一张效果图。

02.第二张效果图。

03.第三张效果图。

04.第四张效果图北京电视台,然而截屏软件不行效果不太好。

05.第五张效果图,然而截屏软件不行效果不太好。

好了,效果图放完了,下面我们来看看代码吧。你们是不是很期待? 

1.频道类:

namespace Day08网络电视精灵
{
    /// <summary>
    /// 频道父类
    /// </summary>
   public abstract class ChannelBase
   {
       //频道类型
       public string ChannelType { get; set; }

       //channelName
        public string ChannelName { get; set; }
       //path
        public string Path { get; set; }
       //节目列表
        private List<TvProgram> ProgramList = new List<TvProgram>();

        public List<TvProgram> ProgramList1
        {
            get { return ProgramList; }
            set { ProgramList = value; }
        }
        public abstract void Jx();

    }
}

2.节目类:

namespace Day08网络电视精灵
{
    /// <summary>
    /// 电视节目类
    /// </summary>
    public class TvProgram
    {
        //节目名称
        public string ProgramName { get; set; }
        //时段
        public string Meridien { get; set; }
        //节目路径
        public string Path { get; set; }
        //时间
        public DateTime PlayTime { get; set; }
    }
}

3.工厂类:

namespace Day08网络电视精灵
{
   public  class Factory
    {
       //创建一个工厂类
       public static ChannelBase CB(string type)
       {
           ChannelBase types = null;
           switch(type)
           {
               case"TypeA":
                   types = new TypeA();
                   break;
               case"TypeB":
                   types = new TypeB();
                   break;
           }

           return types;
       }
    }
}

4.管理类:

namespace Day08网络电视精灵
{
    /// <summary>
    /// 频道管理类
    /// </summary>
   public class ChannelManager
    {
        private List<ChannelBase> list = new List<ChannelBase>();

        public List<ChannelBase> List
        {
            get { return list; }
            set { list = value; }
        }

       public void ResolveChannels() 
       {
             //1.1 我将解析好的Data中转存放到泛型集合
           //List<自定义类>

           XmlDocument doc = new XmlDocument();
           doc.Load("files/FullChannels.xml");
           //找根节点  ()
           XmlNode root=doc.DocumentElement;
           foreach (XmlNode item in root.ChildNodes)
           {
               //一个item代表什么  Channel
                ChannelBase channel = Factory.CB(item["channelType"].InnerText); 
               channel.ChannelType = item["channelType"].InnerText;
               channel.ChannelName = item["tvChannel"].InnerText;
               channel.Path = item["path"].InnerText;

               //归属到一个集合中
               list.Add(channel);
           }
       }
       
    }
}

5.北京电视台类:

namespace Day08网络电视精灵
{
   public class TypeA:ChannelBase
    {
       public override void Jx()
       {
           XmlDocument doc = new XmlDocument();
           doc.Load("files/北京电视台.xml");
           XmlNode root = doc.DocumentElement;
           foreach (XmlNode item in root.ChildNodes)
           {
               if (item.Name.Equals("tvProgramTable"))
               {
                   foreach (XmlNode item2 in item.ChildNodes)
                   {
                       TvProgram Tp = new TvProgram();
                       Tp.PlayTime = Convert.ToDateTime(item2["playTime"].InnerText);
                       Tp.Meridien = item2["meridien"].InnerText;
                       Tp.Path = item2["path"].InnerText;
                       Tp.ProgramName = item2["programName"].InnerText;
                       ProgramList1.Add(Tp);
                   }
               }
           }

       }
    }
}

6.凤凰卫视:

namespace Day08网络电视精灵
{
    public class TypeB : ChannelBase
    {
        public override void Jx()
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("files/凤凰卫视.xml");
            XmlNode root = doc.DocumentElement;
            foreach (XmlNode item in root.ChildNodes)
            {
                if (item.Name.Equals("ProgramList"))
                {
                    foreach (XmlNode item2 in item.ChildNodes)
                    {
                        TvProgram Tp = new TvProgram();
                        Tp.PlayTime = Convert.ToDateTime(item2["playTime"].InnerText);
                        Tp.Path = item2["path"].InnerText;
                        Tp.ProgramName = item2["name"].InnerText;
                        ProgramList1.Add(Tp);
                    }
                }
            }

        }
    }

7.程序入口:

namespace Day08网络电视精灵
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new FrmMain());
        }
    }
}

好了!没有了。如果各位在看的当中发现小弟有不知之处,请提出来,这样小弟可以及时更改学习。
还有注释写的也不是太完美,反正多多包涵吧!

勿喷!!!!!!!

原文地址:https://www.cnblogs.com/cuntouyixiaohuo/p/5847427.html