zoukankan      html  css  js  c++  java
  • 网络电视精灵

    项目结构:

    ChannelBase类:

     1  public abstract class ChannelBase
     2     {
     3         //频道名称
     4         public string ChannelName { get; set; }
     5         //频道路径
     6         public string Path { get; set; }
     7         //节目列表该频道上的所有节目列表
     8         public List<TvProgram> TvList { get; set; }
     9         //获取频道列表:通过Fetch方法获取该频道拥有的所有频道列表
    10         public abstract void Fetch();
    11     }

    ChannelManager类:

     1    /// <summary>
     2     /// 频道管理类
     3     /// </summary>
     4     public class ChannelManager
     5     {
     6         private List<ChannelBase> fullChannels = new List<ChannelBase>();
     7         public List<ChannelBase> FullChannels 
     8         {
     9             get 
    10             {
    11                 return fullChannels;
    12             }
    13             set 
    14             {
    15                 fullChannels = value;
    16             }
    17         }
    18         public void ReadXmlDataToList() 
    19         {
    20             string path = "FullChannels.xml";
    21             XmlDocument doc = new XmlDocument();
    22             doc.Load(path);
    23             XmlNode root = doc.DocumentElement;
    24             foreach (XmlNode item in root.ChildNodes)
    25             {
    26                 //一个item就代表一个Channel对象
    27                 string type = item["channelType"].InnerText;
    28                 ChannelBase channel = ChannelFactory.CreateChannel(type);
    29                 channel.ChannelName = item["tvChannel"].InnerText;
    30                 channel.Path = item["path"].InnerText;
    31                 fullChannels.Add(channel);
    32             }
    33         }
    34     }

    ChannelFactory类:

     1 public class ChannelFactory
     2     {
     3         //通过工厂创建频道子类
     4         public static ChannelBase CreateChannel(string type) 
     5         {
     6             ChannelBase channel = null;
     7             switch (type)
     8             {
     9                 case "TypeA":
    10                     channel = new TypeAChannel();
    11                     break;
    12                 case "TypeB":
    13                     channel = new TypeBChannel();
    14                     break;
    15             }
    16             return channel;
    17         }
    18     }

    TvProgram类:

     1  //节目类
     2     public class TvProgram
     3     {
     4         //播出时间
     5         public DateTime PlayTime { get; set; }
     6         //早间当,午间档,晚间档
     7         public string ShiDuan { get; set; }
     8         public string Name { get; set; }
     9         //视频路径
    10         public string Path { get; set; }
    11     }

    TypeAChannel类:

     1 public class TypeAChannel:ChannelBase
     2     {
     3        public TypeAChannel() 
     4        {
     5            TvList = new List<TvProgram>();
     6        }
     7        public override void Fetch()
     8        {
     9            if (TvList==null)
    10            {
    11                TvList = new List<TvProgram>();
    12            }
    13            XmlDocument doc = new XmlDocument();
    14            doc.Load(Path);
    15            XmlNode root= doc.DocumentElement;
    16            foreach (XmlNode item in root.ChildNodes)
    17            {
    18                if (item.Name.Equals("tvProgramTable"))
    19                {
    20                    foreach (XmlNode child in item.ChildNodes)
    21                    {
    22                        TvProgram tv = new TvProgram();
    23                        tv.PlayTime =Convert.ToDateTime(child["playTime"].InnerText);
    24                        tv.ShiDuan = child["meridien"].InnerText;
    25                        tv.Name = child["programName"].InnerText;
    26                        tv.Path = child["path"].InnerText;
    27                        TvList.Add(tv);
    28                    }
    29                }
    30            }
    31        }
    32     }

    TypeBChannel类:

     1 public class TypeBChannel:ChannelBase
     2     {
     3        public TypeBChannel() 
     4        {
     5            TvList = new List<TvProgram>();
     6        }
     7        public override void Fetch()
     8        {
     9            if (TvList == null)
    10            {
    11                TvList = new List<TvProgram>();
    12            }
    13            XmlDocument doc = new XmlDocument();
    14            doc.Load(Path);
    15            XmlNode root = doc.DocumentElement;
    16            foreach (XmlNode item in root.ChildNodes)
    17            {
    18                if (item.Name.Equals("ProgramList"))
    19                {
    20                    foreach (XmlNode child in item.ChildNodes)
    21                    {
    22                        TvProgram tv = new TvProgram();
    23                        tv.PlayTime = Convert.ToDateTime(child["playTime"].InnerText);
    24                        tv.Name = child["name"].InnerText;
    25                        tv.Path = child["path"].InnerText;
    26                        TvList.Add(tv);
    27                    }
    28                }
    29            }
    30        }
    31     }

    XML文件:

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <TVChannels>
     3     <Channel>
     4         <channelType>TypeA</channelType> <!--频道类型-->
     5         <tvChannel>北京电视台</tvChannel> <!--频道名称-->
     6         <path>北京电视台.xml</path>           <!--频道对应XML文件的本地路径-->
     7     </Channel>
     8     <Channel>
     9         <channelType>TypeB</channelType>
    10         <tvChannel>凤凰卫视</tvChannel>
    11         <path>凤凰卫视.xml</path>
    12     </Channel>
    13 </TVChannels>
    14     
      1 <?xml version="1.0" encoding="utf-8" ?>
      2 <typeA version =" 1.0">
      3     <channelName>北京电视台</channelName>
      4     <tvProgramTable>
      5         <tvProgram>
      6             <playTime>2009-9-29 06:02</playTime> <!--节目播出时间-->
      7             <meridien>早间档</meridien> <!--时段-->
      8                
      9             <programName>重播:国际双行线</programName> <!--节目名称-->
     10             <path>c:a.wma</path>         <!--视频路径-->
     11         </tvProgram>
     12 <tvProgram>
     13             <playTime>2009-9-29 07:00</playTime> <!--节目播出时间-->
     14             <meridien>早间档</meridien> <!--时段-->
     15                
     16             <programName>北京您早</programName> <!--节目名称-->
     17             <path>C:New Stories (Highway Blues).wma</path>         <!--视频路径-->
     18         </tvProgram>
     19         <tvProgram>
     20             <playTime>2009-9-29 09:02</playTime> <!--节目播出时间-->
     21             <meridien>早间档</meridien> <!--时段-->
     22                
     23             <programName>重播《红星剧场》32集剧:勇者无敌(31)</programName> <!--节目名称-->
     24             <path>**</path>         <!--视频路径-->
     25         </tvProgram>
     26         <tvProgram>
     27             <playTime>2009-9-29 09:58</playTime>
     28             
     29             <meridien>早间档</meridien>
     30             <programName>重播《红星剧场》32集剧:勇者无敌(32)</programName>
     31             <path>**</path>
     32         </tvProgram>
     33         <tvProgram>
     34             <playTime>2009-9-29 11:15</playTime>
     35             
     36             <meridien>午间档</meridien>
     37             <programName>重播:专题片:我爱你,中国(14)</programName>
     38             <path>**</path>
     39         </tvProgram>
     40         <tvProgram>
     41             <playTime>2009-9-29 11:58</playTime>
     42             
     43             <meridien>午间档</meridien>
     44             <programName>身边</programName>
     45             <path>**</path>
     46         </tvProgram>
     47         <tvProgram>
     48             <playTime>2009-9-29 12:30</playTime>
     49             
     50             <meridien>午间档</meridien>
     51             <programName>特别关注</programName>
     52             <path>**</path>
     53         </tvProgram>
     54         <tvProgram>
     55             <playTime>2009-9-29 13:05</playTime>
     56             
     57             <meridien>午间档</meridien>
     58             <programName>天下天天谈</programName>
     59             <path>**</path>
     60         </tvProgram>
     61         <tvProgram>
     62             <playTime>2009-9-29 13:40</playTime>
     63             
     64             <meridien>午间档</meridien>
     65             <programName>《玫瑰剧场》55集剧:闯关东中篇(21)</programName>
     66             <path>**</path>
     67         </tvProgram>
     68         <tvProgram>
     69             <playTime>2009-9-29 14:32</playTime>
     70             
     71             <meridien>午间档</meridien>
     72             <programName>《玫瑰剧场》55集剧:闯关东中篇(22)</programName>
     73             <path>**</path>
     74         </tvProgram>
     75         <tvProgram>
     76             <playTime>2009-9-29 15:27</playTime>
     77             
     78             <meridien>下午档</meridien>
     79             <programName>《玫瑰剧场》55集剧:闯关东中篇(23)</programName>
     80             <path>**</path>
     81         </tvProgram>
     82         <tvProgram>
     83             <playTime>2009-9-29 16:19</playTime>
     84             
     85             <meridien>下午档</meridien>
     86             <programName>《玫瑰剧场》55集剧:闯关东中篇(24)</programName>
     87             <path>**</path>
     88         </tvProgram>
     89         <tvProgram>
     90             <playTime>2009-9-29 17:31</playTime>
     91             
     92             <meridien>下午档</meridien>
     93             <programName>法治进行时</programName>
     94             <path>**</path>
     95         </tvProgram>
     96         <tvProgram>
     97             <playTime>2009-9-29 18:00</playTime>
     98             
     99             <meridien>晚间档</meridien>
    100             <programName>新闻晚高峰</programName>
    101             <path>**</path>
    102         </tvProgram>
    103         <tvProgram>
    104             <playTime>2009-9-29 18:30</playTime>
    105             
    106             <meridien>晚间档</meridien>
    107             <programName>北京新闻</programName>
    108             <path>**</path>
    109         </tvProgram>
    110         <tvProgram>
    111             <playTime>2009-9-29 18:56</playTime>
    112             
    113             <meridien>晚间档</meridien>
    114             <programName>天气预报</programName>
    115             <path>**</path>
    116         </tvProgram>
    117         <tvProgram>
    118             <playTime>2009-9-29 19:00</playTime>
    119             
    120             <meridien>晚间档</meridien>
    121             <programName>转播CCTV新闻联播</programName>
    122             <path>**</path>
    123         </tvProgram>
    124         <tvProgram>
    125             <playTime>2009-9-29 19:31</playTime>
    126             
    127             <meridien>晚间档</meridien>
    128             <programName>看气象</programName>
    129             <path>**</path>
    130         </tvProgram>
    131         <tvProgram>
    132             <playTime>2009-9-29 19:40</playTime>
    133             
    134             <meridien>晚间档</meridien>
    135             <programName>专题片:我爱你,中国(15)</programName>
    136             <path>**</path>
    137         </tvProgram>
    138         <tvProgram>
    139             <playTime>2009-9-29 20:22</playTime>
    140             
    141             <meridien>晚间档</meridien>
    142             <programName>《爸妈都是老党员》首播庆典</programName>
    143             <path>**</path>
    144         </tvProgram>
    145         <tvProgram>
    146             <playTime>2009-9-29 21:21</playTime>
    147             
    148             <meridien>晚间档</meridien>
    149             <programName>《红星剧场》38集剧:咱爸咱妈六十年(1)</programName>
    150             <path>**</path>
    151         </tvProgram>
    152         <tvProgram>
    153             <playTime>2009-9-29 23:25</playTime>
    154             
    155             <meridien>晚间档</meridien>
    156             <programName>重播文艺:花样年华歌舞大赛(5)</programName>
    157             <path>**</path>
    158         </tvProgram>
    159     </tvProgramTable>
    160 </typeA>

    FrmMain主界面:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Threading.Tasks;
     9 using System.Windows.Forms;
    10 
    11 namespace Day08_0600网络电视精灵
    12 {
    13     public partial class FrmMain : Form
    14     {
    15         public FrmMain()
    16         {
    17             InitializeComponent();
    18         }
    19 
    20         private void Form1_Load(object sender, EventArgs e)
    21         {
    22             LoadparentNodes();
    23             LoadNodes();
    24         }
    25         private TreeNode allNode = null;
    26         private void LoadparentNodes() 
    27         {
    28             TreeNode mynode = new TreeNode("我的电视台");
    29             allNode = new TreeNode("所有电视台");
    30             treeView1.Nodes.Add(mynode);
    31             treeView1.Nodes.Add(allNode);
    32         }
    33         private void LoadNodes() 
    34         {
    35             ChannelManager cm = new ChannelManager();
    36             cm.ReadXmlDataToList();
    37             foreach (ChannelBase item in cm.FullChannels)
    38             {
    39                 TreeNode tr = new TreeNode();
    40                 tr.Text = item.ChannelName;
    41                 tr.Tag = item;
    42                 allNode.Nodes.Add(tr);
    43             }
    44  
    45         }
    46 
    47         private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    48         {
    49             if (treeView1.SelectedNode.Level==0)
    50             {
    51                 contextMenuStrip1.Items[1].Visible = false;
    52                 contextMenuStrip1.Items[0].Visible = false;
    53                 return;
    54             }
    55             else if(treeView1.SelectedNode.Parent.Text=="所有电视台")
    56             {
    57                 contextMenuStrip1.Items[1].Visible = true;
    58                 contextMenuStrip1.Items[0].Visible = false;
    59             }
    60             else if(treeView1.SelectedNode.Parent.Text=="我的电视台")
    61             {
    62                 contextMenuStrip1.Items[1].Visible = false;
    63                 contextMenuStrip1.Items[0].Visible = true;
    64             }
    65             if(treeView1.SelectedNode.Tag!=null){
    66             TreeNode treenode = treeView1.SelectedNode;
    67             ChannelBase channel = (ChannelBase)treenode.Tag;
    68             if (channel.TvList.Count>0)
    69             {
    70                 channel.TvList.Clear();
    71             }
    72             channel.Fetch();
    73             List<TvProgram> tvprogram = channel.TvList;
    74 
    75             dataGridView1.DataSource = new BindingList<TvProgram>(tvprogram);
    76             }
    77         }
    78 
    79         private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
    80         {
    81             TreeNode tr = treeView1.SelectedNode;
    82             ChannelBase cbase=(ChannelBase)tr.Tag;
    83             dataGridView1.DataSource = null;
    84             tr.Remove();
    85         }
    86 
    87         private void 添加ToolStripMenuItem_Click(object sender, EventArgs e)
    88         {
    89             TreeNode tre = treeView1.SelectedNode;
    90             ChannelBase channe = (ChannelBase)tre.Tag;
    91             TreeNode toe = new TreeNode();
    92             toe.Text = channe.ChannelName;
    93             toe.Tag = channe;
    94             treeView1.Nodes[0].Nodes.Add(toe);
    95         }
    96         
    97     }
    98 }
  • 相关阅读:
    [转]顶点数据压缩
    [转]将某个Qt4项目升级到Qt5遇到的问题
    「05」回归的诱惑:一文读懂线性回归
    AI漫谈:我们距离实现《庆余年》里的五竹叔机器人还有多远?
    “木兰”去哪儿了?被全国700所中小学引入的国产编程语言“木兰”,为何在官网删除了下载链接
    有哪些让人相见恨晚的Python库(一)
    2019年最值得关注的AI领域技术突破及未来展望
    为什么样本方差的分母是n-1?为什么它又叫做无偏估计?
    「04」机器学习、深度学习需要哪些数学知识?
    「03」机器学习、深度学习该怎样入门?
  • 原文地址:https://www.cnblogs.com/liutao1122/p/7138236.html
Copyright © 2011-2022 走看看