• 请用心“品尝”网络电视精灵


    市场上有许多电视软件,因此我们开发属于自己的电视软件!对于我们初学者来说也是拿来对付行外人吹牛的资本“^_^”

    本套软件所用的技术:

    01.C/S架构,数据存储在XML文件中 

        02.简单工厂模式

        03.继承和多态

        04.解析XML文档技术

       05.深入剖析内存中数据的走向

      06.TreeView控件的使用

    首先你得创建以下这么多类!

    namespace IntertnetTVS
    {
        //频道基类
       pub
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Xml;
     7 
     8 namespace IntertnetTVS
     9 {
    10     public class TypeAChannel : ChannelBase
    11     {
    12         public override void Fetch()
    13         {
    14             XmlDataDocument doc=new XmlDataDocument();
    15             doc.Load("北京电视台.xml");
    16             if (TVlist==null)
    17             {
    18                 TVlist = new List<TVprogram>();
    19             }
    20             XmlNode root = doc.DocumentElement;
    21             
    22             foreach (XmlNode item in root.ChildNodes)
    23             {
    24                 if (item.Name == "tvProgramTable")
    25                 {
    26                     foreach (XmlNode mynode in item.ChildNodes)
    27                     {
    28                         TVprogram tp = new TVprogram();
    29                         tp.PlayTime = DateTime.Parse(mynode["playTime"].InnerText);
    30                         tp.MyProperty = mynode["meridien"].InnerText;
    31                         tp.Name = mynode["programName"].InnerText;
    32                         tp.Path = mynode["path"].InnerText;
    33                         TVlist.Add(tp);
    34                     }
    35                 }
    36             }
    37 
    38         }
    39     }
    40 }
    
    
    
    lic abstract class ChannelBase
        {
           //频道节目名称
            public string ChannelName { get; set; }
          //储存频道节目路径
            public string Path { get; set; }
           //储存频道下的各个节目
            public string Type { get; set; }
           //类型
            public List<TVprogram> TVlist { get; set; }
            public abstract void Fetch();
        }
    }

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace IntertnetTVS
     8 {
     9     //节目类
    10    public class TVprogram
    11     {
    12        //节目播出时间
    13         public DateTime PlayTime { get; set; }
    14        //节目播出时段
    15         public string MyProperty { get; set; }
    16         //节目名称
    17         public string Name{ get; set; }
    18        //节目保存路径
    19         public string Path { get; set; }
    20 
    21     }
    22 }
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 
     8 //工厂类
     9 namespace IntertnetTVS
    10 {
    11    public class ChannelFactory
    12     {
    13        //工厂来创建相应对象的简单工厂
    14        public static ChannelBase CreateBase(string type)
    15        {
    16            ChannelBase bases = null;
    17            switch(type)
    18            {
    19                case "TypeA":
    20                    bases=new TypeAChannel();
    21                    break;
    22                case "TypeB":
    23                    bases=new TypeBChannel();
    24                    break;
    25            }
    26            return bases;
    27        }
    28     }
    29 }
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Xml;
     7 
     8 namespace IntertnetTVS
     9 {
    10    public class ChannelManager
    11     {
    12        public ChannelManager()
    13        {
    14            fullChannels = new Dictionary<string, ChannelBase>();
    15         }
    16        //创建dictionary来储存所有的频道
    17         private Dictionary<string, ChannelBase> fullChannels;
    18         public Dictionary<string, ChannelBase> FullChannels
    19         {
    20             get { return fullChannels; }
    21             set { fullChannels = value; }
    22         }
    23        //解析xml文档将数据储存到dictionary
    24        public void ParseXmlToDictionary()
    25        {
    26            XmlDataDocument doc = new XmlDataDocument();
    27            doc.Load("FullChannels.xml");
    28            XmlNode root = doc.DocumentElement;
    29            foreach (XmlNode item in root.ChildNodes)
    30            {
    31                //获取type的类型
    32                string type = item["channelType"].InnerText;
    33               //将类型传到工场中返回对应子类
    34                ChannelBase mybase = ChannelFactory.CreateBase(type);
    35                mybase.ChannelName = item["tvChannel"].InnerText;
    36                mybase.Path = item["path"].InnerText;
    37                mybase.Type = type;
    38                FullChannels.Add(mybase.ChannelName, mybase);
    39            }
    40        }
    41     }
    42 }

    窗体装载代码

     1 sing 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 IntertnetTVS
    12 {
    13     public partial class Form1 : Form
    14     {
    15         public Form1()
    16         {
    17             InitializeComponent();
    18         }
    19 
    20         private void Form1_Load(object sender, EventArgs e)
    21         {
    22             chishi();
    23             ChannelManager manager = new ChannelManager();
    24             manager.ParseXmlToDictionary();
    25             Dictionary<string, ChannelBase> ydy = manager.FullChannels;
    26             foreach (var item in ydy.Values)
    27             {
    28                 TreeNode nodes = new TreeNode();
    29                 nodes.Text = item.ChannelName;
    30                 nodes.Tag = item;
    31                 allnode.Nodes.Add(nodes);
    32             }
    33         }
    34         TreeNode allnode = new TreeNode();
    35         //将treeview控件添加初始默认列表
    36         public void chishi()
    37         {
    38             allnode.Text = "所有电台";
    39             TreeNode mynode = new TreeNode();
    40             mynode.Text = "我的电台";
    41             this.tvChannel.Nodes.Add(mynode);
    42             this.tvChannel.Nodes.Add(allnode);
    43 
    44         }
    45         private void tvChannel_AfterSelect(object sender, TreeViewEventArgs e)
    46         {
    47             TreeNode selectnodes =this.tvChannel.SelectedNode;
    48             if (selectnodes.Level==1&&selectnodes.Parent.Text=="所有电台")
    49             {
    50                 ChannelBase cb = (ChannelBase)selectnodes.Tag;
    51                 if (cb.TVlist!=null)
    52                 {
    53                     cb.TVlist.Clear();
    54                 }
    55                 cb.Fetch();
    56                 List<TVprogram> porje = cb.TVlist;
    57                 this.dgvProgList.DataSource = porje;
    58             }
    59         }
    60     }
    61 }

    多么伟大的创作!多么神奇的软件!走过路过,千万不要错过!

  • 相关阅读:
    oracle 的exists 的用法
    linux
    C++纯虚函数
    C++ 的虚析构函数
    C++ new
    C++点和箭头操作符用法区别
    static
    关于C的int
    互斥量mutex的简单使用
    nginx服务器屏蔽上游错误码
  • 原文地址:https://www.cnblogs.com/meixinyuan/p/4649347.html
Copyright © 2020-2023  润新知