Wade_ 发表于 2012-12-18 19:07:18

一个简单的小测试程序实现(已做优化)

<div id="cnblogs_post_body">
原文链接:http://www.cnblogs.com/Wade-/archive/2012/06/23/2559426.html
这是一个用Sliverlight实现的一个测试程序“测试你古代的名字”,内容来源于互联网。
这是程序实现效果:
http://pic002.cnblogs.com/images/2012/404689/2012062411362353.jpg
在输入姓名首字母和生日的月份以及选择性别后,再按查询键,实现测试程序过程。
本程序中的数据是利用XML文件储存数据的,应此需要用到System.Xml和System.Xml.Linq两个命名空间。在这里我把关于XML文件的操作放在XMLReader类中:

<div class="cnblogs_code">using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Xml; using System.Xml.Linq; namespace SilverlightApplication2 {   /// <summary>   /// XML的读取函数   /// </summary>   public class XMLReader   {         public enumSex:int         {             boy=1,             girl=2         }         private Uri uri;         private XNode nameNode;         private XNode girlDayNode;         private XNode girlMonthNode;         private XNode boyDayNode;         private XNode boyMonthNode;         /// <summary>         /// 实例化一个XMLReader类         /// </summary>         /// <param name="url">xml文件路径</param>         public XMLReader(Uri url)         {            uri = url;            XDocument xdoc=newXDocument();            xdoc= XDocument.Load(uri.ToString());            nameNode = xdoc.Root.FirstNode;            girlDayNode = ((XElement)(xdoc.Root.FirstNode.NextNode)).FirstNode;            girlMonthNode = ((XElement)(xdoc.Root.FirstNode.NextNode)).FirstNode.NextNode;            boyDayNode = ((XElement)(xdoc.Root.LastNode)).FirstNode;            boyMonthNode = ((XElement)(xdoc.Root.LastNode)).FirstNode.NextNode;                  }         /// <summary>         /// 获取指定日期所代表的名字         /// </summary>         /// <param name="sex">性别(男孩,女孩)</param>         /// <param name="day">日期</param>         /// <returns>指定日期所代表的名</returns>         public string GetDayText(Sex sex,string day)         {             string value="";             if(sex==Sex.boy)             {               XElement xe=(XElement) boyDayNode;               foreach (XElement name in xe.Elements()) //循环查找XElement                 {                     if (name.FirstAttribute.Value == day)//判断其FirstAttribute是否为指定值                   {                         value = name.Value;//赋值                         break; //跳出循环                   }               }             }             else if (sex == Sex.girl)             {               XElement xe = (XElement)girlDayNode;               foreach (XElement name in xe.Elements())               {                     if (name.FirstAttribute.Value == day)                     {                         value = name.Value;                         break;                     }               }             }             return value;         }         /// <summary>         /// 获取指定月份所代表的名字         /// </summary>         /// <param name="sex">性别(男孩,女孩)</param>         /// <param name="day">月份</param>         /// <returns>姓首字母</returns>         public string GetMonthText(Sex sex, string month)         {             string value = "";             if (sex == Sex.boy)             {               XElement xe = (XElement)boyMonthNode;               foreach (XElement name in xe.Elements())               {                     if (name.FirstAttribute.Value == month)                     {                         value = name.Value;                     }               }             }             else if (sex == Sex.girl)             {               XElement xe = (XElement)girlMonthNode;               foreach (XElement name in xe.Elements())               {                     if (name.FirstAttribute.Value == month)                     {                         value = name.Value;                     }               }             }             return value;         }         /// <summary>         /// 获取指定姓首字母所代表的姓         /// </summary>         /// <param name="name">姓首字母</param>         /// <returns>指定姓首字母所代表的姓</returns>         public string GetNameText(string name)         {             string value = "";            XElement xe = (XElement)nameNode;             foreach (XElement ename in xe.Elements())             {                   if (ename.FirstAttribute.Value == name)                   {                        value = ename.Value;                   }             }            return value;          }             }   }
页: [1]
查看完整版本: 一个简单的小测试程序实现(已做优化)