源代码0001(随机数据的产生-C#与xml)

上一篇 / 下一篇  2008-03-28 22:25:49 / 个人分类:源代码

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Windows.Forms;

public enum stringtype  //产生随机字符串的数据类型
{
    allstring = 1,//大小写字母
    allnumic = 2,//数字
    str_num = 3,//大小写字母+数字
    str_upper = 4,//大写字母
    str_lower = 5, //小写字母
    str_tf = 6,//0和1
}

namespace e2
{       
    class Program
    {
        public static int GenForInt(Random ran)  //自动生成int型的测试数据
        {
            int RandKey = ran.Next();
            return RandKey;
        }

        public static float GenForFloat(Random ran)  //自动生成float型的测试数据
        {
            float RandKey = (float)ran.NextDouble();
            return RandKey;
        }

        public static double GenForDouble(Random ran)  //自动生成double型的测试数据
        {
            double RandKey = ran.NextDouble();
            return RandKey;
        }

        public static string GenerateRandom(Random ran,int Length, stringtype s)  //自动生成长度为length的字符串型的测试数据
        {
            string strtemp = "";
            string[] constant = null;
            switch (s)
            {
                case stringtype.allnumic:
                    strtemp = "0,1,2,3,4,5,6,7,8,9";
                    constant = strtemp.Split(',');  //返回strtemp的子字符串
                    break;
                case stringtype.allstring:
                    strtemp = "a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,D,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,X,Y,Z";
                    constant = strtemp.Split(',');
                    break;
                case stringtype.str_lower:
                    strtemp = "a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
                    constant = strtemp.Split(',');
                    break;
                case stringtype.str_num:
                    strtemp = "a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,D,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,X,Y,Z,0,1,2,3,4,5,6,7,8,9";
                    constant = strtemp.Split(',');
                    break;
                case stringtype.str_upper:
                    strtemp = "A,B,C,E,F,D,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z";
                    constant = strtemp.Split(',');
                    break;
                case stringtype.str_tf:
                    strtemp="0,1";
                    constant = strtemp.Split(',');
                    break;
            }

            System.Text.StringBuilder newRandom = new System.Text.StringBuilder(Length);
            for (int i = 0; i < Length; i++)
            {
                newRandom.Append(constant[ran.Next(constant.Length - 1)]);  //追加字符
            }
            return newRandom.ToString();
        }

        static void Main(string[] args)  //主函数
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(@"E:\experiment\e2\simplegoogle.xml");//导入物理路径下的xml文档
            XmlNodeList nodeList = xmlDoc.SelectSingleNode("types").ChildNodes;//获取“types”节点的所有子节点

            string elementname;

            XmlDocument tcxmldoc;
            XmlNode tcxmlnode;
            XmlElement tcxmlelem;

            tcxmldoc = new XmlDocument();
            //加入XML的声明段落
            tcxmlnode = tcxmldoc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
            tcxmldoc.AppendChild(tcxmlnode);

            //加入一个根元素
            tcxmlelem = tcxmldoc.CreateElement("", "testcases", "");
            tcxmldoc.AppendChild(tcxmlelem);

            foreach (XmlNode xn in nodeList)//遍历types的所有子节点
            {
                XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
                elementname = xe.GetAttribute("name");//获得element的name
     
                //加入另外的元素
                XmlNode root = tcxmldoc.SelectSingleNode("testcases");      //查找<test cases> 
               
                XmlElement xe1 = tcxmldoc.CreateElement(elementname);       //创建一个元素节点 

                int n = 5;
                string aa=xe.GetAttribute("type");
                string value;
                string tcname;
                XmlElement xesub;

                Random ran = new Random(unchecked((int)DateTime.Now.Ticks));        //生成不重复的随机值,一定要声明在调用函数之外

                if (aa.ToString() == "int")    //如为int型,则调用GenForInt
                {
                    for (int i = 1; i <= n; i++)
                    {
                        tcname = "TC" + i.ToString();
                        xesub = tcxmldoc.CreateElement(tcname);
                        value = GenForInt(ran).ToString();
                        xesub.InnerText = value;     //设置文本节点 
                        xe1.AppendChild(xesub);     //添加到TCi节点中 
                        root.AppendChild(xe1);      //添加到<test cases>节点中 
                    }
                }

                else if (aa.ToString() == "string")    //如为string型,则调用GenerateRandom
                {
                    for (int i = 1; i <= n; i++)
                    {
                        tcname = "TC" + i.ToString();
                        xesub = tcxmldoc.CreateElement(tcname);
                        value = GenerateRandom(ran,5, stringtype.str_num);
                        xesub.InnerText = value;     //设置文本节点 
                        xe1.AppendChild(xesub);     //添加到TCi节点中 
                        root.AppendChild(xe1);      //添加到<test cases>节点中 
                    }
                }

                else if (aa.ToString() == "boolean")    //如为boolen型,产生0和1
                {
                    for (int i = 0; i <= 1; i++)
                    {
                        tcname = "TC" + i.ToString();
                        xesub = tcxmldoc.CreateElement(tcname);
                        xesub.InnerText = i.ToString();     //设置文本节点 
                        xe1.AppendChild(xesub);     //添加到TCi节点中 
                        root.AppendChild(xe1);      //添加到<test cases>节点中 
                    }
                }

                else if (aa.ToString() == "float")    //如为float,调用GenForFloat
                {
                    for (int i = 0; i <= n; i++)
                    {
                        tcname = "TC" + i.ToString();
                        xesub = tcxmldoc.CreateElement(tcname);
                        xesub.InnerText = GenForFloat(ran).ToString();     //设置文本节点 
                        xe1.AppendChild(xesub);     //添加到TCi节点中 
                        root.AppendChild(xe1);      //添加到<test cases>节点中 
                    }
                }

                else if (aa.ToString() == "double")    //如为double,调用GenForDouble

                {
                    for (int i = 0; i <= n; i++)
                    {
                        tcname = "TC" + i.ToString();
                        xesub = tcxmldoc.CreateElement(tcname);
                        xesub.InnerText = GenForDouble(ran).ToString();  //设置文本节点 
                        xe1.AppendChild(xesub);     //添加到TCi节点中 
                        root.AppendChild(xe1);      //添加到<test cases>节点中 
                    }
                }
 
                tcxmldoc.Save(@"E:\experiment\e2\test cases.xml");
            }         
        }
     }
}


TAG: 源代码

 

评分:0

我来说两句

日历

« 2024-05-04  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 7543
  • 日志数: 15
  • 建立时间: 2008-03-09
  • 更新时间: 2008-10-29

RSS订阅

Open Toolbar