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
        public void SetNewFolders(string name, string path) //不用public就无法访问这个函数,注意权限问题
        {
            foreach (Node s in FoldersGather)
            {
                if (name == s.folders.GetName())
                {
                    Console.WriteLine("error:题库已经存在请重新确认");
                }
            }
            MyFolders newFolders = new MyFolders();//新建类对象,记录name,path

            newFolders.SetName(name);
            newFolders.SetPath(path);
            newFolders.SetType(0);

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

            newNode.folders = newFolders;
            newNode.type    = false;
            FoldersGather.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(newFolders.GetName());
            Console.Write(" 查找新建路径:");
            GetFoldersPath(newFolders.GetName());
        }//end of setNewFolders