本项目源代码可在水狸云Git代码仓库下载。

基本思路

名单统计是在俱乐部秘书部工作中非常繁杂的一项工作。该程序将通常统计的txt文本文件学号名单记录,自动转换成csv或xls格式的电子表格,方便省时。

输入文件样例 in.txt

1:39,04,31,28,22,24,37,21
2:2,12,22,17,38,33,16
3:26,32,14,41,22
4:6,19,16,28,13,25,15
5:6,7,35,37,38,40,41
06:15,23,28,32,33,24
7:19,20,26,30,39,41
8:6,15,16,22,23,25,27
9:06,15,21,22,24,32,35
10:01,02,35,36,19,34
11:3,5,27,28,29,34,41
12:1,8,13,23,26,33
13:3,15,16,23,28,30,33,42,49

以上样例文件表示,

1班学号为39,4,31,28号等同学参加了活动; 
2班学号为2,12,22,17号等同学参加了活动; 
…… 
13班(即3301探测班)学号为3,15,16,23,28号等同学参加了活动。

输出文件样例 out.csv

第1行的0表示1班1号同学未参加;
第2行的0表示1班2号同学未参加;
第3行的0表示1班3号同学未参加;
第4行的1表示1班4号同学参加;
……
第41行的0表示1班41号同学未参加;
第42行的0表示2班1号同学未参加;
第43行的1表示2班1号同学参加;
……

由此类推

示例代码

编译环境:Visual Studio 2017(Enterprise Edition)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileTest {
class Program {
static void Main(string[] args) {
    FileStream iFile = new FileStream("in.txt", FileMode.OpenOrCreate);        //输入数据 in.txt 
    FileStream oFile = new FileStream("out.csv", FileMode.OpenOrCreate);    //输出文件 out.csv
    StreamReader sr = new StreamReader(iFile);
    StreamWriter sw = new StreamWriter(oFile);
    int[] size = { 41, 41, 41, 42, 41, 41, 41, 41, 41, 40, 41, 41, 56 };    //各班人数数组 int n = size.Count();
    int[,] array = new int[n, 56];
    int[,] testArray = new int[n, 56];
    char[] Splitor = new char[] { ':', ',' };
    testArray[9, 27] = 1;
    string line = sr.ReadLine();
    while (line!=null) {
        string[] sa = line.Split(Splitor[0]);
        string[] data = sa[1].Split(Splitor[1]);
        int cl = Convert.ToInt32(sa[0]) - 1;
        int b = data.Count();
        for (int j = 0; j < b; j++)
        {
            int a = Convert.ToInt32(data[j])-1;
            if (array[cl, a] == 0)
            {
                array[cl, a]++;
            }
        }
        line = sr.ReadLine();
    }
    for (int i = 0; i < size.Count(); i++)
    {
        for (int j = 0; j < size[i]; j++)
        {
            if (testArray[i,j]!=1) 
            {
                sw.Write("{0}\n", array[i, j]);
            }
        }
    }
    sw.Close();
    Console.WriteLine("Compelete!");
    Console.ReadKey();
} } }
Last modification:July 25th, 2019 at 10:51 am