1.已知一个顺序文件A,格式如下: 
① REC-KEY 数字型8位 (前零补足) 
② REC-SUBKEY数字型2位 (前零补足) 
③ REC-NAME 文字型8位 (后空格补足) 
其中①②为主键,已按升序排列,每条数据以回车换行符结束.请做以下操作并对所有分支进行测试. 
从头至尾一行一行读文件,将①相同的每一组数据的第一条输出到文件B,并且将③为数字的数据输出到顺序文件C.在读之前,需要一个询问,读完之后,将A的输入数据行数,B、C的输出数据行数输出到顺序文件D. 
例:顺序文件 A 
0000000101AAAAAAAA 
0000000102AAAAAAAB 
0000000103AAAAAAAC 
000000010412345678 
顺序文件 B 
0000000101AAAAAAAA 
顺序文件 C 
000000010412345678 
顺序文件 D 
A的输入行数=4,不但输出行数=1,C的输出行数=1 
2.一个年级有N个班,一个班有M个学生,统计学生5科成绩的平均成绩, 
A.打印每班平均成绩85分以上者的各科成绩和平均成绩, 
B.打印每班的班总平均成绩和各科平均成绩. 
10>N>2,60>M>5 
输入文件格式 (用.txt不能用数据库文件)
排成升序的顺序文件(班单位中无顺序)中有每个学生的成绩5科. 
学校CODE(10位数字)、学校名、年级(1,2,3)、班号(1,2,3,4...)、学号(6位数字)、姓名,语文、数学、物理、化学、生物 
例: 
5101030027 第二十七中 11103456 张云山 100100100100099 
5101030027 第二十七中 11103457 王武卿 100100100072100 
....... 
5101040081 第八十一中 23103456 李斯林 088089077066099 
....... 
.......由于小弟是新手.完全摸不着头绪..
希望会做的高手简单的指点下该从哪里入手?.该怎样思考?.

解决方案 »

  1.   

    要求说的很清楚,照着做就可以了
    用String的IndexOf 和 Substring等方法
      

  2.   

    就像楼上说的,这两个题都是考你字符串的掌握,其实题并不难,主要是看懂
    思路:
    先用流读取一行字符串,再将字符串拆分,用IndexOf 和 Substring方法或用正则也可以,(建议最好先建一个类根据字符串的特征),将拆分的字符串依次存放集合,并进行实现要求的功能,在用流写入到文件(按要求的格式即可)
      

  3.   

    0000000101AAAAAAAA  
    0000000102AAAAAAAB  
    0000000103AAAAAAAC  
    000000010412345678 不是很清楚你的题目的意思,但是,按照你的题目,应该是:B 取 A后面8位都相同的行  ,C取A后面全是数字的行将A的输入数据行数,B、C的输出数据行数输出到顺序文件D ,D为A,B,C的总数据D数据
    0000000101AAAAAAAA 
    0000000101AAAAAAAA 
    0000000102AAAAAAAB  
    0000000103AAAAAAAC  
    000000010412345678
    000000010412345678 不知道是不是这样
      

  4.   

    ① REC-KEY 数字型8位 (前零补足)  
    ② REC-SUBKEY数字型2位 (前零补足)  
    ③ REC-NAME 文字型8位 (后空格补足)  
    0000000101AAAAAAAA   该8位为REC-KEY
    0000000101AAAAAAAA   该2位为REC-SUBKEY
    0000000101AAAAAAAA   该8位为REC-NAME嘿嘿,乱搞!
      

  5.   

    首先是怎么读txt文件。
    读出来后,把字符串转化成需要的整数。(用string中的一些函数。如果不行就用正则表达式)
    然后按照要求对这些整数进行处理。排序时可以用泛型的sort()函数。
      

  6.   

    2.一个年级有N个班,一个班有M个学生,统计学生5科成绩的平均成绩,  
    A.打印每班平均成绩85分以上者的各科成绩和平均成绩,  
    B.打印每班的班总平均成绩和各科平均成绩.  
    10>N>2,60>M>5  
    输入文件格式 (用.txt不能用数据库文件) 
    排成升序的顺序文件(班单位中无顺序)中有每个学生的成绩5科.  
    学校CODE(10位数字)、学校名、年级(1,2,3)、班号(1,2,3,4...)、学号(6位数字)、姓名,语文、数学、物理、化学、生物  
    5101030027 第二十七中 11103456 张云山 100100100100099  99分 班号 3456 学号1001005101030027 第二十七中 11103457 王武卿 100100100072100 100分 班号 3457 学号 100072
      

  7.   

    第二个题目摆明的要你用filestream流去操作
      

  8.   

    D文件只需要列出 A,B,C文件的输入或者输出列数就行勒,而不是ABC的总数据。
      

  9.   

    第一题如果理解没有错的话,参考如下代码:
    private struct REC
    {
        public int KEY;
        public int SUBKEY;
        public string NAME;
        public override string ToString()
        {
            return string.Format("{0:00000000}{1:00}{2,-8}", KEY, SUBKEY, NAME);
        }
    }private void recordToFile(List<REC> records, string filename)
    {
        StreamWriter vStreamWriter = new StreamWriter(filename,
            false, Encoding.Default);
        foreach(REC record in records) 
            vStreamWriter.WriteLine(record);
        vStreamWriter.Close();
    }private void button1_Click(object sender, EventArgs e)
    {
        #region 读取记录
        List<REC> recordsA = new List<REC>();
        List<REC> recordsB = new List<REC>();
        List<REC> recordsC = new List<REC>();
        StreamReader vStreamReader = new StreamReader(@"c:\a.txt", Encoding.Default);
        int existsKey = -1;
        string vLine = string.Empty;
        while ((vLine = vStreamReader.ReadLine()) != null)
        {
            REC record = new REC();
            if (vLine.Length >= 8)
                int.TryParse(vLine.Substring(0, 8), out record.KEY);
            if (vLine.Length >= 10)
                int.TryParse(vLine.Substring(8, 2), out record.SUBKEY);
            record.NAME = vLine.Substring(10, vLine.Length - 10).TrimEnd(); // 去掉后补空格
            if (recordsA.Count > 0 && existsKey != record.KEY && // KEY没有记录过
                record.KEY == recordsA[recordsA.Count - 1].KEY) // 添加的记录Key已经存在
            {
                recordsB.Add(recordsA[recordsA.Count - 1]);
                existsKey = record.KEY;
            }
            int i;
            if (int.TryParse(record.NAME, out i))
                recordsC.Add(record);        recordsA.Add(record);
            //Console.WriteLine(record);// 调试用
        }
        vStreamReader.Close();
        #endregion 读取记录
        recordToFile(recordsB, @"c:\b.txt");
        recordToFile(recordsC, @"c:\c.txt");
        StreamWriter vStreamWriter = new StreamWriter(@"c:\d.txt",
            false, Encoding.Default);
        vStreamWriter.WriteLine(
            string.Format("A的输入行数={0},B的输出行数={1},C的输出行数={2}",
            recordsA.Count, recordsB.Count, recordsC.Count));
        vStreamWriter.Close();
    }第二天描述不清楚就不写了,基本可以和第一题的方法一样。