数得明白-用C#制作源代码统计软件 (2)

2008-02-23 05:32:59来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  while (!sr.EndOfStream)

   {

   n ;

   sr.ReadLine();

   }

   codeInfo a = new codeInfo(n, extCur, fCur.Name, fCur.FullName); //存储这个文档的信息

   list.Add(a); //将该文档信息加入到集合列表中

   }

   }

   count(ext,dCur.FullName,ref list); //递归遍历子目录的子目录

   }

   }

  2、button2的部分代码

  注:codeList为Arraylist集合

  private void button2_Click(object sender, EventArgs e)

   {

   string[] ext = getExt(textBox1.Text);

   listBox1.Items.Clear();

   codeList.Clear();
  //省略判断拓展名是否合法及目录是否为空,详见源码

   count(ext, label3.Text, ref codeList); //调用统计函数

   if (codeList.Count == 0)

   listBox1.Items.Add(" 没有找到指定扩展名的源文档!");

   else

   {

   listBox1.Items.Add(" 共找到" ext.Length "种源文档");

   listBox1.Items.Add(" ");

   codeInfo typecur = (codeInfo)codeList[0];

   long numcur = 0, linecur = 0, lineall = 0;

  //下面按照文档名分类统计不同扩展名源程式的总行数

  foreach (string extcur in ext)

  {

   numcur = 0;

   linecur = 0;

   for (int i = 0; i < codeList.Count; i )

   {

   codeInfo cur = (codeInfo)codeList[i];

   if (extcur == cur.ext)

   {
   numcur ; linecur = cur.line;

   }

   }

   lineall = linecur;

   listBox1.Items.Add(string.Format(" {0,-8}" numcur " 个文档 " linecur "行", extcur)); //统计完一种拓展名后向Listbox添加一行信息

   }

   listBox1.Items.Add(" 总计" codeList.Count "个文档 " lineall "行");

   }

   }

  在实现过程中,还牵扯到:对输入的拓展名进行分割、填充dataGridView的行/列以显示任何统计文档的周详信息等问题。篇幅限制,不做介绍,详见代码。

  五、提高篇

  我们能够新建一个Form专门停放dataGridView(更好的显示效果)。这样就牵扯到了窗体间如何传递codeList集合的问题。提示大家能够用this仿“指针”进行传递。

  本程式只有一个待统计目录,有兴趣的朋友能够考虑:如何配置多个待统计目录(多一层foreach)。

  另外,采用StreamReader获取文档行数的方法再极端大的源码样本运行时会略显慢,大家能够考虑采取其他优化的办法,比如:利用统计学原理找到一个常数(平均每行字符数),然后用文档长度处以这个数以得到行数,当然,这样会降低统计精度。

  至此,我们已体验了Visual C# 2005的强大功能并成功实现了这一软件。本程式在Visual C# 2005 WindowsXP SP2下调试通过。



标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: VC 编程隐藏电脑中的鼠标

下一篇: 数得明白-用C#制作源代码统计软件 (1)

热门词条
热门标签