C#作业第一期,简单的源代码计算器

来源:互联网 发布:win7网络共享无法访问 编辑:程序博客网 时间:2024/04/30 11:39

首先看一下运行结果:


这是界面


选择Choose键可以打开文件如:



选择test2.txt,输出结果:



我们来看下test.txt文件里面有什么东西:



完美输出~

好吧为什么是个txt呢?其实要其他的话只需要修改一下代码就可以了。



好吧,代码出来了基本上都能看懂了,只需要修改上述代码中的 openFileDialog1.Filter = "*.txt|*.txt|所有文件(*.*)|*.*"; 即可,如:  openFileDialog1.Filter = "*.cs|*.cs|所有文件(*.*)|*.*"; ,这样就可以打开cs文件了。


这是所调用的OpenFileDialog类,用于提示用户打开文件。


很明显,上面代码是控制button1也就是那个叫做Choose的按钮。


这是的整型数组,很明显用来存放统计结果的。那么是怎么将结果统计后存进去的呢?



这就是那个计算的函数,code是代码行数,space是空格数,explain1是注释行数


这里是读取文件的代码



由于本人是个渣渣,所以写了个很糟糕的算法,望各位不要狂喷。





这样就可以计算出的空行数,代码行数,注释行数。然后存入一个数组并返回该数组:



接下来在button1_Click函数那里调用该函数就可以了。。。


好吧,本人一直做的是c++所以提供的测试代码也只是c++的,c#我根本就不会!好吧,这东西是乱写出来的,不要在意细节~

什么,你问我窗口怎么设计的?这个就算了吧,超难看。。。

就是用winform画画画,总之这不重要,大家无视吧。(个人还是喜欢QT多一点~)

下面是源代码:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.IO;namespace WindowsFormsApplication2{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            {   //打开文件对话框                OpenFileDialog openFileDialog1 = new OpenFileDialog();                openFileDialog1.Filter = "*.txt|*.txt|所有文件(*.*)|*.*";                if (openFileDialog1.ShowDialog() == DialogResult.OK)                {                    try                    {                        string Name = openFileDialog1.FileName;                        int[] n =  count(Name);                        textBox3.Text = n[1].ToString();       //存放空行数                        textBox4.Text = n[2].ToString();       //存放代码行                        textBox2.Text = n[0].ToString();       //存放注释行                                                //  richTextBox1.LoadFile(Name,RichTextBoxStreamType.PlainText);                        //  statusBarPanel1.Text=Name;                    }                    catch (Exception) { }                }            }        }        public static int[] count(string str)        {              int code = 0;             int space = 0;             int explain1 = 0;             try             {                 FileStream fileread = new FileStream(str, FileMode.Open, FileAccess.Read, FileShare.Read);             }             catch (Exception)             {                 Console.ReadLine();                 throw;             }            StreamReader sr = new StreamReader(str);                                string line1=null;                    //int count;                    //string a1,a2;                    while ((line1 = sr.ReadLine()) != null)                    {                        // line1 = sr.ReadLine();                        line1 = line1.Trim();                        // a1 =a1.Trim();                        //计算注释行                        if (line1.StartsWith("//") || line1.StartsWith("///"))                        {                            explain1++;                        }                        else if (line1.StartsWith("/*") || line1.EndsWith("*/"))                        {                            explain1++;                        }                        //计算空行数                        else if (line1 == "")                        {                            space++;                        }                        //计算代码行                        else                        {                            code++;                        }                    }                    int[] i = { code,space, explain1 };                                               return i;                }        private void textBox3_TextChanged(object sender, EventArgs e)        {        }        private void textBox2_TextChanged(object sender, EventArgs e)        {        }        private void textBox4_TextChanged(object sender, EventArgs e)        {        }        private void label1_Click_1(object sender, EventArgs e)        {        }    }}     



0 0