Beispiel #1
0
        public void CreateTestData()
        {
            MyFolders a = new MyFolders();
            string    s = "Gather1";         //单独新建题库Gather1

            a.SetName(s);
            a.SetType(0);
            a.SetPath(s);
            //Node b = new Node();//测试原因暂时把Node b移出去方便调用,后面控制权限时需要重新构思
            root.folders = a;
            root.SetMyType(false);
            root.parentFolders = root;            //令parentFolder等于自己方便后续查找时候的退出条件
            FoldersGather.Add(root);
            for (int i = 2; i <= 5; i++)          //测试数据中的其他所有题库都是题库1的子题库
            {
                MyFolders aa = new MyFolders();
                string    ss = "Gather";
                char      ii = (char)(i + '0');           //字符处理方便批量命名
                ss += ii;
                aa.SetName(ss);
                aa.SetType(0);
                aa.SetPath("Gather1/" + ss);                //路径为自己的加Gather1
                Node bb = new Node();
                bb.folders = aa;
                bb.SetMyType(false);
                bb.sonNode.Clear();                //把sonNode初始化全部清空
                root.sonNode.Add(bb);              //把所有其他题库都加进Gather1的sonNode表示子题库

                /*
                 * 这里引用的就是临时类bb地址,这里如果Gather1能够存取临时类指向的地址就说明指向正确
                 */
                bb.parentFolders = root;                //令parentFolder都指向Gather1
                FoldersGather.Add(bb);
            }

            for (int i = 1; i <= 8; i++)            //所有题目都是Gather1下的
            {
                MyFiles aa = new MyFiles();
                string  ss = "Problem";
                char    ii = (char)(i + '0');
                ss += ii;
                aa.SetName(ss);
                aa.SetType(1);
                aa.SetPath("Gather1/" + ss);
                Node bb = new Node();
                bb.files = aa;
                bb.SetMyType(true);
                root.sonNode.Add(bb);
                bb.parentFolders = root;                //parentFolder都指向Gather1
                FilesGather.Add(bb);
            }
        }                            //end of CreateTestData
Beispiel #2
0
        }//end of setNewFolders

        public void SetNewFiles(string name, string path)//不用public就无法访问这个函数,注意权限问题
        {
            foreach (Node s in FilesGather)
            {
                if (name == s.files.GetName())
                {
                    Console.WriteLine("error:题目已经存在请重新确认");
                }
            }
            MyFiles newFiles = new MyFiles();//新建类对象,记录name,path

            newFiles.SetName(name);
            newFiles.SetPath(path);
            newFiles.SetType(1);

            Node newNode = new Node();//新建节点记录类型和当前节点的信息

            newNode.files = newFiles;
            newNode.type  = true;
            FilesGather.Add(newNode);

            string parentName;//父亲节点的name

            for (int i = path.Length - 1; i >= 0; i--)
            {
                if (path[i] == '/')
                {
                    path = path.Substring(i + 1, path.Length - i - 1); //使用截取有风险,后续需要更改方法
                }
            }
            parentName = path;                //得到自己父亲节点的name

            foreach (Node s in FoldersGather) //查找题库中的父亲题库
            {
                if (parentName == s.folders.GetName())
                {
                    newNode.parentFolders = s; //指向自己的父亲节点
                    s.sonNode.Add(newNode);    //父亲节点的sonNode结构体加入newNode,表示自己的直接儿子
                    //因为是引用,这里是不是可以更改存疑???????????
                }
            }
            //怎么取得最后一个List??????迭代器???
            Console.Write("新建题目 ");//这里只是展示,并不能表示赋值成功
            Console.Write(newFiles.GetName());
            Console.Write(" 查找新建路径:");
            GetFilesPath(newFiles.GetName());
        } //end of setNewFiles