效果: 需求和分析: 1.點擊TreeView中的節點,Listview中顯示相應的電視節目,其中節目的信息都儲存在xml文件中(IO的應用) 2.在“所有電臺”中選中節點右擊可進行添加到“我的電臺”,同時在”我的電臺“也可進行刪除,在你退出後,系統會把你選擇的”我的電臺“中的記錄記錄,在你再次打開 ...
效果:
需求和分析:
1.點擊TreeView中的節點,Listview中顯示相應的電視節目,其中節目的信息都儲存在xml文件中(IO的應用)
2.在“所有電臺”中選中節點右擊可進行添加到“我的電臺”,同時在”我的電臺“也可進行刪除,在你退出後,系統會把你選擇的”我的電臺“中的記錄記錄,在你再次打開會顯示(IO的 應用或序列化和反系列化的應用)
3.選中Listview中選中右擊可以進行播放
1.我們分析好後,我們就得準備我們需要的類和xml文件
類圖:
01.xml文件
001.存貯頻道類型
<Channel> <channelType>TypeA</channelType> <!--頻道類型--> <tvChannel>北京電視臺</tvChannel> <!--頻道名稱--> <path>files/北京電視臺.xml</path> <!--頻道對應XML文件的本地路徑--> </Channel> <Channel> <channelType>TypeB</channelType> <tvChannel>鳳凰衛視</tvChannel> <path>files/鳳凰衛視.xml</path> </Channel> </TVChannels>
002.存儲北京電視臺(TypeA)
<?xml version="1.0" encoding="utf-8" ?> <typeA version =" 1.0"> <channelName>北京電視臺</channelName> <tvProgramTable> <tvProgram> <playTime>2009-9-29 06:02</playTime> <!--節目播出時間--> <meridien>早間檔</meridien> <!--時段--> <programName>重播:國際雙行線</programName> <!--節目名稱--> <path>F:\\Day01_01C#基本概念.avi</path> <!--視頻路徑--> </tvProgram> <tvProgram> <playTime>2009-9-29 07:00</playTime> <!--節目播出時間--> <meridien>早間檔</meridien> <!--時段--> <programName>北京您早</programName> <!--節目名稱--> <path>C:\New Stories (Highway Blues).wma</path> <!--視頻路徑--> </tvProgram> <tvProgram> <playTime>2009-9-29 09:02</playTime> <!--節目播出時間--> <meridien>早間檔</meridien> <!--時段--> <programName>重播《紅星劇場》32集劇:勇者無敵(31)</programName> <!--節目名稱--> <path>**</path> <!--視頻路徑--> </tvProgram> <tvProgram> <playTime>2009-9-29 09:58</playTime> <meridien>早間檔</meridien> <programName>重播《紅星劇場》32集劇:勇者無敵(32)</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 11:15</playTime> <meridien>午間檔</meridien> <programName>重播:專題片:我愛你,中國(14)</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 11:58</playTime> <meridien>午間檔</meridien> <programName>身邊</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 12:30</playTime> <meridien>午間檔</meridien> <programName>特別關註</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 13:05</playTime> <meridien>午間檔</meridien> <programName>天下天天談</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 13:40</playTime> <meridien>午間檔</meridien> <programName>《玫瑰劇場》55集劇:闖關東中篇(21)</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 14:32</playTime> <meridien>午間檔</meridien> <programName>《玫瑰劇場》55集劇:闖關東中篇(22)</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 15:27</playTime> <meridien>下午檔</meridien> <programName>《玫瑰劇場》55集劇:闖關東中篇(23)</programName> <path>D:\\video\\心靈之約.mp4</path> </tvProgram> <tvProgram> <playTime>2009-9-29 16:19</playTime> <meridien>下午檔</meridien> <programName>《玫瑰劇場》55集劇:闖關東中篇(24)</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 17:31</playTime> <meridien>下午檔</meridien> <programName>法治進行時</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 18:00</playTime> <meridien>晚間檔</meridien> <programName>新聞晚高峰</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 18:30</playTime> <meridien>晚間檔</meridien> <programName>北京新聞</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 18:56</playTime> <meridien>晚間檔</meridien> <programName>天氣預報</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 19:00</playTime> <meridien>晚間檔</meridien> <programName>轉播CCTV新聞聯播</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 19:31</playTime> <meridien>晚間檔</meridien> <programName>看氣象</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 19:40</playTime> <meridien>晚間檔</meridien> <programName>專題片:我愛你,中國(15)</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 20:22</playTime> <meridien>晚間檔</meridien> <programName>《爸媽都是老黨員》首播慶典</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 21:21</playTime> <meridien>晚間檔</meridien> <programName>《紅星劇場》38集劇:咱爸咱媽六十年(1)</programName> <path>**</path> </tvProgram> <tvProgram> <playTime>2009-9-29 23:25</playTime> <meridien>晚間檔</meridien> <programName>重播文藝:花樣年華歌舞大賽(5)</programName> <path>**</path> </tvProgram> </tvProgramTable> </typeA>
003.存儲鳳凰電視臺(TypeB)
<?xml version="1.0" encoding="utf-8" ?> <typeB version =" 1.0"> <ProgramList> <Program> <playTime>2009-9-29 01:30</playTime> <!--播出時間--> <name>簡單工廠模式</name> <!--節目名稱--> <path>D:\簡單工廠模式.wmv</path> <!--節目視頻的本地路徑--> </Program> <Program> <playTime>2009-9-29 02:10</playTime> <!--播出時間--> <name>非凡人物論成功(713)</name> <!--節目名稱--> <path>**</path> <!--節目視頻的本地路徑--> </Program> <Program> <playTime>2009-9-29 02:15</playTime> <!--播出時間--> <name>有報天天讀(28/09/09) </name> <!--節目名稱--> <path>**</path> <!--節目視頻的本地路徑--> </Program> <Program> <playTime>2009-9-29 02:40</playTime> <!--播出時間--> <name>娛樂大風暴(682) </name> <!--節目名稱--> <path>**</path> <!--節目視頻的本地路徑--> </Program> <Program> <playTime>2009-9-29 03:15</playTime> <!--播出時間--> <name>上海新長寧集團特約之2009中華小姐環球大賽-美麗前奏(41) </name> <!--節目名稱--> <path>**</path> <!--節目視頻的本地路徑--> </Program> <Program> <playTime>2009-9-29 03:20</playTime> <!--播出時間--> <name>完全時尚手冊:天橋雲裳(632) </name> <!--節目名稱--> <path>**</path> <!--節目視頻的本地路徑--> </Program> <Program> <playTime>2009-9-29 03:40</playTime> <!--播出時間--> <name>東風康明斯鳳凰衝擊播:天力士特約之今日看世界(39) </name> <!--節目名稱--> <path>**</path> <!--節目視頻的本地路徑--> </Program> <Program> <playTime>2009-9-29 04:25</playTime> <!--播出時間--> <name>音樂中國風(442) </name> <!--節目名稱--> <path>**</path> <!--節目視頻的本地路徑--> </Program> <Program> <playTime>2009-9-29 04:35</playTime> <!--播出時間--> <name>維維健康新概念(193) </name> <!--節目名稱--> <path>**</path> <!--節目視頻的本地路徑--> </Program> <Program> <playTime>2009-9-29 04:40</playTime> <!--播出時間--> <name>紅牛鳳凰全球連線(28/09/09) </name> <!--節目名稱--> <path>**</path> <!--節目視頻的本地路徑--> </Program> <Program> <playTime>2009-9-29 05:05</playTime> <!--播出時間--> <name>紅雲紅河時事開講(28/09/09) </name> <!--節目名稱--> <path>**</path> <!--節目視頻的本地路徑--> </Program> <Program> <playTime>2009-9-29 05:30</playTime> <!--播出時間--> <name>別巡檢調查隊(34)(R) </name> <!--節目名稱--> <path>**</path> <!--節目視頻的本地路徑--> </Program> </ProgramList> </typeB>
02.頻道父類ChannelBase
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 網路電視精靈 { //能被序列化的標誌 [Serializable] //頻道類(父類) public class ChannelBase { //頻道名稱 public string ChannelName { get; set; } //頻道路徑 public string ChannelPath { get; set; } //節目列表 public List<TvProgram> List = new List<TvProgram>(); //解析頻道節目信息的虛方法 public virtual void Fetch(){} } }
03.電視節目類
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 網路電視精靈 { //電視節目類 public class TvProgram { //播出時間 public DateTime PlayTime { get; set; } //時段 public string Median { get; set; } //節目名稱 public string ProgramName { get; set; } //節目文件路徑 public string FilePath { get; set; } } }
04.TypeA頻道類(子類)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace 網路電視精靈 { //TypeA頻道類(子類) public class TypeAChannel:ChannelBase { //獲取頻道列表 public override void Fetch() { XmlDocument doc = new XmlDocument(); //讀取指定xml文檔 doc.Load("北京電視臺.xml"); //讀取根節點 XmlNode root = doc.DocumentElement; TvProgram tv = null; foreach (XmlNode item in root["tvProgramTable"].ChildNodes) { //把讀取的值賦給變數 string platytime = item["playTime"].InnerText; string path = item["path"].InnerText; string progranname = item["programName"].InnerText; string meridien = item["meridien"].InnerText; //同時把值賦給TvProgram類中的變數 tv=new TvProgram(); tv.FilePath = path; tv.PlayTime = Convert.ToDateTime(platytime); tv.ProgramName = progranname; tv.Median = meridien; //最後添加到集合 this.List.Add(tv); } } } }
03.TypeB頻道類(子類)