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

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

本套软件所用的技术:

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 }

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

时间: 2024-10-12 00:31:31

请用心“品尝”网络电视精灵的相关文章

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

电视精灵效果展示: 1.电视台和节目信息从xml文件中解析并绑定: 2.实现点击频道节点时显示有关该频道的节目信息: 好了,废话不多说.大家请看效果演示,如有不好之处,请多多指教一下,毕竟我还是个新手. 01.第一张效果图. 02.第二张效果图. 03.第三张效果图. 04.第四张效果图北京电视台,然而截屏软件不行效果不太好. 05.第五张效果图,然而截屏软件不行效果不太好. 好了,效果图放完了,下面我们来看看代码吧.你们是不是很期待? 1.频道类: namespace Day08网络电视精灵

继承,多态,集合,面向对象,XML文件解析,TreeView动态加载综合练习-----&gt;网络电视精灵项目练习、分析

网络电视精灵 项目运行状态如图: 项目完成后的类: 首先,将程序分为二部分进行: 一:TreeView节点内容的设计及编写: 1.1遍写XML文件:管理(FullChannels.xml),A类电视台北京电视台(北京电视台.xml),B类电视台凤凰卫视(凤凰卫视.xml) 1.2创建一个抽象的电视频道父类,ChannelBase,其中有成员:频道名称,频道路径,节目列表(以电视节目类作为类型的集合),解析频道节目单的抽象方法.代码如下: using System; using System.Co

网络电视精灵~分析~~~~~~简单工厂模式,继承和多态,解析XML文档

小总结: 所用技术: 01.C/S架构,数据存储在XML文件中 02.简单工厂模式 03.继承和多态 04.解析XML文档技术 05.深入剖析内存中数据的走向 06.TreeView控件的使用 核心:通过该项目,我们对业务流程有一个整体把控.对继承和多态有深入的了解 下面是类图: 主界面图: 核心思路: 1   1.首先在频道管理类ChannelManager中写一个加载所有频道方法LoadAllChannel; 2   3        该方法作用读取FullChannels.xml文件,并且

单例模式的应用___网络电视精灵

网络电视精灵 首先创建几个基本类 编写节目类 属性:播出时间.时段.名称.视频路径 编写频道基类 属性:频道名称.频道节目单位置.节目列表 抽象方法:Fetch() 编写频道子类 继承“频道基类”,实现Fetch()[只写方法声明] 编写频道工厂类 方法:实现创建频道子类 private void tsmAddToFavor_Click(object sender, EventArgs e) { //如何将电台从所有电台加载到我的电台 TreeNode tn = tvChannel.Select

初识XML及简单工厂运用--网络电视精灵

网络电视精灵 任务描述 1. 解析XML文件中的数据 三个简单的xml文件; <?xml version="1.0" encoding="utf-8" ?> <TVChannele> <Channel> <channelType>TypeA</channelType> <tvChannel>北京电视台</tvChannel> <path>files/北京电视台.xml&l

小项目之网络电视精灵

网络电视精灵 第一步:先搭建架构 创建几个类: 电视节目类TvPorgram 频道类ChannelBase 频道类型类有A类和B类(内容类似) 还有一个工具类 第三步:给TreeView添加两个根节点 代码如下: 在所有电视台节点下添加电视频道,读取XML文件 代码如下: 然后将数据绑定到dgv上进行显示如图: 代码如下:

网络电视精灵

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Pratice03_05 8 { 9 /// <summary> 10 /// TV节目类 11 /// </summary> 12 public class TvProgram 13 { 14 //节目名

网络电视精灵的框架及关键代码

效果: 编写节目类 属性:播出时间.时段.名称.视频路径 编写频道基类 属性:频道名称.频道节目单位置.节目列表 抽象方法:Fetch() 编写频道子类 继承“频道基类”,实现Fetch()[只写方法声明] 编写频道工厂类 方法:实现创建频道子类 第一步.创建几个类: 01:创建一个电视类(TvProgram) 该类主要负责定义节目的属性,为后续从xml文件(FullChannnels.xml)中读取的内容提供存放位置. 属性为: public DateTime PlayTime { get;

(深入.Net平台和C#编程)第八章.上机练习(网络电视精灵).20170415

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace lesson8_5 8 { 9 /// <summary> 10 /// TV节目类 11 /// </summary> 12 public class TvProgram 13 { 14 //节目名称 1