期末数据结构大作业
程序主要分为以下六大功能:
一、创建及输出目录树;
通过创建树结构体,用顺序表或是链表来实现树的创建,获取需要进行分类的文件夹,先创建一棵空树,然后通过findfirstfile函数来递归遍历文件夹来创建树的结点;
二、查找结点;
通过输入需要查找文件的名称来定位查找到其对应的的路径;
三、添加结点;
在实际目录增加一个新的空文件夹,在树中创建一个新的结点;
四、删除结点
删除实际目录中的文件或文件夹,在树中删除结点;
五、复制/移动结点
实际目录中,复制/移动文件,树结构中复制/移动结点;
六、重命名结点
对实际目录和树结构中的名字属性进行重新命名。
设计初稿
初稿依照出现的六大功能制作了六个按钮,分别模拟点击动作,在下部分设计了树的展示区域,当中部选择了相应文件夹后,下部分展示区域会自动刷新展示出当前文件夹的文件树供用户查看,用户可以根据自己的需要选择上部分按钮对树进行操作,每次操作后即时更新下部分树。
最终稿
在进行实际开发后,对界面的布局进行进一步调整,并添加了更多的功能区来适配。以2.7.1.2为例,分为四个区进行讲解。
a、树创建及展示区
在②区点击“选择文件夹”,在弹出的弹窗选择相应文件夹后即可显示以下界面。
当选中树结点时,②区“所在地址”显示的是选中地址的绝对路径,会随着选中结点的不同而改变①区下部“选中结点”会展示出当前所选择结点的名字(含后缀名),这个区域的存在是为了重命名、删除、以及查找的输入更加方便。
④区的“展开目录”及“收起目录”点击可对展示的树进行一键展开所有树和收起树。
b、功能集中区
在①区,输入需要查找的子节点名称至“查找文件”文本框,点击确定,即可在树展示区对其定位(标色部分),此时可以点击标色部分,所在地址便会更新,可得到该文件夹的绝对路径。
①区中部对于不同的选择,输入框前的提示框会不同
对上述输入框输入相应的结点名称即可实现对应的操作,需要注意的是输入的名称都需要带上后缀名。
c、皮肤选择区
即可点击可一键换肤。
2.7.3 界面美化
使用使用IrisSkin2.dll来美化WinForm程序界面,进行部分功能适配然后添加相应的饮用以及文件即可实现。
主要使用了treeview、textbox、label、button控件。
部分代码
public Form1()
{
InitializeComponent();
treeView1.AllowDrop = true;
treeView1.ItemDrag += new ItemDragEventHandler(treeView1_ItemDrag);
treeView1.DragEnter += new DragEventHandler(treeView1_DragEnter);
treeView1.DragDrop += new DragEventHandler(treeView1_DragDrop);
}
void treeView1_DragDrop(object sender, DragEventArgs e)
{
TreeNode moveNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
//根据鼠标坐标确定要移动到的目标节点
Point pt;
TreeNode targeNode;
pt = ((TreeView)(sender)).PointToClient(new Point(e.X, e.Y));
targeNode = this.treeView1.GetNodeAt(pt);
//如果目标节点无子节点则添加为同级节点,反之添加到下级节点的未端
TreeNode NewMoveNode = (TreeNode)moveNode.Clone();
if (targeNode.Nodes.Count == 0)
{
targeNode.Parent.Nodes.Insert(targeNode.Index, NewMoveNode);
}
else
{
targeNode.Nodes.Insert(targeNode.Node