有三个类“Student”,“Class”和“school”,其中class的班级名要求在新增时自动生成,班级名称的格式为“当前年+序号”,序号从1开始,例如2008001,同理学生学号也要求自定生成,例如:001,002
我写的关于班级名称的代码是:
class Class
    {
        private int ClassName;
        private int StuCount;
        private Student[] Students;
        private int count;         public Class( int StuCount)
        {
            
            this.ClassName = DateTime.Now.Year * 1000 + School.classno;
            this.StuCount = StuCount;
            Students = new Student[StuCount];
            this.count = 0;
        }
        public void Display()
        {
            
            Console.WriteLine("{0}\t{1}", this.ClassName, this.StuCount);
            
        }
    }
program写的是:
        class Program
    {
        static void Main(string[] args)
        {
            Class sc = new Class(45);
            sc.Display();
            
        }
    }
但在program中输出的结果确实2008005 45,应该怎么改?

解决方案 »

  1.   

    你school在哪定义的啊,我怎么看不到啊。
      

  2.   

    我这个程序的要求是一个简单的学校系统,它可以新建班级,添加学生,其中班级最多只能有5个,班级类中需包括班级最大人数和班级名,学生类包括学号,姓名,成绩;班级名要求格式是“当前年份+序号”例如:2008001以此类推,学生学号要求是个序号例如:001我school类不知道应该怎么写,上面是我写的Class类
      

  3.   

    不好意思喔。。我Class类发错了
    class Class
        {
            private int ClassName;
            private int StuCount;
            private Student[] Students;
            private int count;         public Class( int StuCount)
            {
                for (int i = 1; i <= 5; i++)
                {
                    this.ClassName = DateTime.Now.Year * 1000 + i;
                }
                this.StuCount = StuCount;
                Students = new Student[StuCount];
                this.count = 0;
            }
            public void Display()
            {
                
                Console.WriteLine("{0}\t{1}", this.ClassName, this.StuCount);
                
            }
        }
      

  4.   

    for (int i = 1; i <= 5; i++)
                {
                    this.ClassName = DateTime.Now.Year * 1000 + i;
                }
    你这段代码得到的结果是什么,知道么。最后 this.ClassName == DataTime.Now.Year*1000+5;对不对?那就是className==2008005没错吧StuCount=45,也就是你得到的输出结果并没有错。
      

  5.   

    如果你要增加N个class,你应该建一个ArrayList储存class对象,一个class对象对应一个className。对不对?
      

  6.   


    但我要的并不是这个结果我要的是当我在主函数里输入
    Class sc = new Class(45); 
    sc.Display(); 
    Class sc1 = new Class(80); 
    sc1.Display(); 它输出的结果是:
    2008001 45
    2008002 80
    但最多不能超过5个班级
      

  7.   

    你可以设置一个变量来计算class的数量更改main函数
    //先声明5个值作为每个班的人数用数组就可以,具体你自己写吧for(int i=1;i<=5;i++)
    {
        Class sc = new Class(i,45); 
       sc.Display();
    }//更改class Class
    class Class
        {
            private int ClassName;
            private int StuCount;
            private Student[] Students;
                    public Class(int i, int StuCount)
            {                
                this.ClassName = DateTime.Now.Year * 1000 + i;
                this.StuCount = StuCount;
                Students = new Student[StuCount];            
            }
            public void Display()
            {
                
                Console.WriteLine("{0}\t{1}", this.ClassName, this.StuCount);
                
            }
        }
      

  8.   


    能不能在school类里写一个静态类来实现这个操作?在主函数中写循环语句似乎有些不妥
      

  9.   

    建议你重新设计一下各个类的关系,看着真累啊 。class 可以定义一个属性 MaxStudents =5;
    每个 class 声明一个 static 变量,保存当前学生数量,
    开一个 public 的 Add(Student stu);简单的说就是,你的 class 就是一个 student 的 集合 collections 操作而已。
      

  10.   

    学生是没限制,是班级有限制的,那意思说要在school类理写?
      

  11.   

    可以啊,这个具体实现得你自己设计了,我就是说告诉你class里面不要循环赋值给className。在哪个类里实现就看你自己的爱好了,呵呵。
      

  12.   

            private static int ClassNumber=1 ; public Class ( int StuCount )
    {
    if (this.ClassNumber <5)
    {
    this.CalssName =DateTime .Now .Year *1000 +ClassNumber;
    this.StuCount = StuCount ;
    Students = new  Student[StuCount];
    this.ClassNumber ++;
    }
    else 
    {
    MessageBox.Show ("班级数目不能超过5个","班级创建 ",MessageboxButton.YesNo ,MessageBoxInformation.Warning );
    }
    }
    试试这个,,(不排除出现书写错误的可能,没调试)