zoukankan      html  css  js  c++  java
  • 第八章课后作业

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace lesson8MyTv
    {
        //频道类
        public abstract class ChannelBase
        {
            public string ChannelName { get; set; }//频道名称
            public string Path { get; set; }//频道地址
            public List<TvProgram> Tvlist { get; set; }//频道列表
            public string Type { get; set; }//频道类型
            public ChannelBase(string type,string path,string channelName)
            {
                this.ChannelName = channelName;
                this.Path = path;
                this.Type = type;
                this.Tvlist = new List<TvProgram>();
            }
            public ChannelBase()
            {
    
            }
            public abstract void Fetch();
        }
    }
    频道类
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml;
    
    namespace lesson8MyTv
    {
        //北京电视台
        public class BeijingTv:ChannelBase
        {
            public BeijingTv()
            {
    
            }
            public BeijingTv(string type, string path, string channelName)
                : base(type, path, channelName)
            {
    
            }
            //解析北京电视台xml文件
            public override void Fetch()
            {
                XmlDocument doc = new XmlDocument();
                doc.Load("北京电视台.xml");
               XmlNode node  = doc.DocumentElement;
               foreach (XmlNode item in node)
               {
                   if (item.Name == "tvProgramTable")
                   {
                       foreach (XmlNode no in item)
                       {
                           TvProgram tv = new TvProgram(Convert.ToDateTime(no["playTime"].InnerText), no["programName"].InnerText, no["Path"].InnerText);
                           this.Tvlist.Add(tv);
                       }
                   }
               }
    
            }
        }
    }
    北京电视台类
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml;
    
    namespace lesson8MyTv
    {
        //凤凰卫视
        public class FenghuangTv:ChannelBase
        {
             public FenghuangTv()
            {
    
            }
             public FenghuangTv(string channelName, string path, string type)
                 : base(channelName, path, type)
            {
    
            }
            //解析北京电视台xml文件
            public override void Fetch()
            {
                XmlDocument doc = new XmlDocument();
                doc.Load("凤凰卫视.xml");
               XmlNode node  = doc.DocumentElement;
               foreach (XmlNode item in node)
               {
                   if (item.Name == "ProgramList")
                   {
                       foreach (XmlNode no in item)
                       {
                           TvProgram tv = new TvProgram(Convert.ToDateTime(no["playTime"].InnerText), no["programName"].InnerText, no["Path"].InnerText);
                           this.Tvlist.Add(tv);
                       }
                   }
               }
    
            }
        }
    }
    凤凰卫视类
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml;
    
    namespace lesson8MyTv
    {
        /// <summary>
        /// 加载所有频道信息
        /// </summary>
        public class Management
        {
            public static List<ChannelBase> load()
            {
                List<ChannelBase> list = new List<ChannelBase>();
                XmlDocument dic = new XmlDocument();
                dic.Load("FullChannel.xml");
                 XmlNode root=dic.DocumentElement;
                 foreach (XmlNode item in root)
                 {
                     ChannelBase cb = ChannelManager.CreateChannel(item["channeltype"].InnerText, item["tvChannel"].InnerText, item["path"].InnerText);
                     cb.Fetch();
                     list.Add(cb);
                     
                 }
                 return list;
            }
        }
    }
    管理类
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace lesson8MyTv
    {
        //类型查询工具类
        public class ChannelManager
        {
            public static ChannelBase CreateChannel(string Type,string Name,string path)
            {
                ChannelBase cb = null;
                switch (Type)
                {
                    case "TypeA":
                        cb = new BeijingTv(Type,path,Name);
                        break;
                    case "TypeB":
                        cb = new FenghuangTv(Type, path, Name);
                        break;
                }
                return cb;
            }
        }
    }
    工具类
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace lesson8MyTv
    {
        public partial class FrmTV : Form
        {
            TreeNode root = null;
            public FrmTV()
            {
                InitializeComponent();
            }
            /// <summary>
            /// 初始我的电视台
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void FrmTV_Load(object sender, EventArgs e)
            {
                dgvTV.AutoGenerateColumns = false;
                root = new TreeNode("我的电视台");
                tvTV.Nodes.Add(root);
                info();
            }
            //添加“所有电视台”
            private void info()
            {
               
                TreeNode node = new TreeNode("所有电视台");
                this.tvTV.Nodes.Add(node);
                //管理集合
                List<ChannelBase> list = Management.load();
                foreach (ChannelBase item in list)
                {
                    item.Fetch();
    
                    TreeNode no = new TreeNode(item.ChannelName);
                    no.Tag = item;
                    node.Nodes.Add(no);
                }
            }
            /// <summary>
            /// 加入频道
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void tvTV_AfterSelect(object sender, TreeViewEventArgs e)
            {
                if (tvTV.SelectedNode.Tag != null)
                {
                    dgvTV.DataSource = ((ChannelBase)tvTV.SelectedNode.Tag).Tvlist;
                }
                foreach (TreeNode item in tvTV.Nodes)
                {
                    foreach (TreeNode no in item.Nodes)
                    {
                        //选择右击快捷键显示
    
                        if (no.Parent.Text == tvTV.Nodes[0].Text && no == tvTV.SelectedNode)
                        {
                            cmsiTv.Items[0].Visible = false;
                            cmsiTv.Items[1].Visible = true;
                        }
                        else if (no.Parent.Text == tvTV.Nodes[1].Text && no == tvTV.SelectedNode)
                        {
                            cmsiTv.Items[1].Visible = false;
                            cmsiTv.Items[0].Visible = true;
                        }
                        else if (item == tvTV.SelectedNode)
                        {
                            cmsiTv.Items[1].Visible = false;
                            cmsiTv.Items[0].Visible = false;
                        }
                    }
                }
            }
            //添加节目到我的电视台
            private void tsmiAddTV_Click(object sender, EventArgs e)
            {
                bool fa = true;
                //循环判断
                foreach (TreeNode item in tvTV.Nodes[0].Nodes)
                {
                    if (item.Text == tvTV.SelectedNode.Text)
                    {
                        fa = false;
                    }
                }
                if (fa)
                {
                    TreeNode node = new TreeNode(tvTV.SelectedNode.Text);
                    node.Tag = tvTV.SelectedNode.Tag;
                    root.Nodes.Add(node);
                }
                else
                {
                    MessageBox.Show("已经添加到我的电视了", "提示");
                }
            }
            /// <summary>
            /// 删除我的电视台的节目
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void tsmiDeleteTV_Click(object sender, EventArgs e)
            {
                tvTV.SelectedNode.Remove();
            }
        }
    }
    主窗体
    <?xml version="1.0" encoding="utf-8" ?>
    <TypeA>
      <channelName>北京电视台</channelName>
      <tvProgramTable>
        <tvProgram>
          <playTime>2017-4-15 06:20</playTime>
          <meridien>早间档</meridien>
          <programName>重播:国际双行线</programName>
          <Path>**</Path>
        </tvProgram>
        
        <tvProgram>
          <playTime>2017-4-15 07:20</playTime>
          <meridien>早间档</meridien>
          <programName>北京你早</programName>
          <Path>**</Path>
        </tvProgram>
        
        <tvProgram>
          <playTime>2017-4-15 07:40</playTime>
          <meridien>早间档</meridien>
          <programName>重播:《红星剧场》32集剧:勇者无敌(31)</programName>
          <Path>**</Path>
        </tvProgram>
        
        <tvProgram>
          <playTime>2017-4-15 08:30</playTime>
          <meridien>早间档</meridien>
          <programName>重播:《红星剧场》32集剧:勇者无敌(32)</programName>
          <Path>**</Path>
        </tvProgram>
        
        <tvProgram>
          <playTime>2017-4-15 08:50</playTime>
          <meridien>早间档</meridien>
          <programName>重播:专题片:我爱你,中华</programName>
          <Path>**</Path>
        </tvProgram>
    
        <tvProgram>
          <playTime>2017-4-15 09:50</playTime>
          <meridien>早间档</meridien>
          <programName>身边</programName>
          <Path>**</Path>
        </tvProgram>
      </tvProgramTable>
    </TypeA>
    北京电视台
    <?xml version="1.0" encoding="utf-8" ?>
    <TypeB>
      <channelName>凤凰卫视</channelName>
      <ProgramList>
        <Program>
          <playTime>2014-4-14 01:20</playTime>
          <programName>金龙鱼凤凰剧场:李算(9)</programName>
          <Path>**</Path>
        </Program>
        
        <Program>
          <playTime>2014-4-14 02:00</playTime>
          <programName>非凡人物论成功(713)</programName>
          <Path>**</Path>
        </Program>
        
        <Program>
          <playTime>2014-4-14 02:30</playTime>
          <programName>有报天天读(28/09/09)</programName>
          <Path>**</Path>
        </Program>
        
        <Program>
          <playTime>2014-4-14 03:10</playTime>
          <programName>娱乐大风暴(682)</programName>
          <Path>**</Path>
        </Program>
        
        <Program>
          <playTime>2014-4-14 03:50</playTime>
          <programName>上海新长宁集团特约之2013中华小姐环球大赛-美丽前奏(41)</programName>
          <Path>**</Path>
        </Program>
        
        <Program>
          <playTime>2014-4-14 04:25</playTime>
          <programName>完全时尚手册:天桥云裳(632)</programName>
          <Path>**</Path>
    
          <Program>
            <playTime>2014-4-14 04:50</playTime>
            <programName>东风康明斯凤凰冲击播:天力士特约之今日看世界(39)</programName>
            <Path>**</Path>
          </Program>
        </Program>
      </ProgramList>
    </TypeB>
    凤凰卫视
    <?xml version="1.0" encoding="utf-8" ?>
    <TVChannels>
      <Channel>
        <channeltype>TypeA</channeltype>
        <tvChannel>北京电视台</tvChannel>
        <path>**</path>
      </Channel>
      <Channel>
        <channeltype>TypeB</channeltype>
        <tvChannel>凤凰卫视</tvChannel>
        <path>**</path>
      </Channel>
    </TVChannels>
    频道
  • 相关阅读:
    Osg-地图界面显示指北针(指南针)
    学习c# 7.0-7.3的ref、fixed特性并在Unity下测试
    Linux下使用FreeBSD的ee
    C++ 中 malloc/free与 new/delete区别
    CMake 手册详解
    go 从入门到了解
    LINQ:对结果进行分组(MSDN)
    LINQ: List Contains List
    C# 如何使用log4net
    控制台程序要最后加上一句 Environment.Exit(0);
  • 原文地址:https://www.cnblogs.com/zhangxiaoyu123/p/6715581.html
Copyright © 2011-2022 走看看