1、题目的内容和要求。
给出目录和文件信息,要求编程实现将其排列成一棵有一定缩进的树。
1)设计文件和目录信息树的存储结构。
2)从文件或键盘输入目录和文件信息,输入格式采用绝对路径法,即:
aa\aa1
a\aa1\
创建时要检查同一路径下不能有同名的目录或文件名。
3)设计文件和目录信息树的输出格式(以凹入表的形式显示)。
4)查找指定目录和文件。
5)添加新目录或新文件。
6)删除指定目录或文件,子目录能够被删除的前提是其为空,既不包含任何子目录和文件;根目录不能删除。
7)扩充目录或文件信息,如创建时间、读写权限、文件长度或子目录包含的子目录和文件数等。
8)对同一层次下的子目录或文件按创建时间有序输出。
选做内容:1)如何实现相对路径表示法。
2)通配符的使用。如用“?”代表任意一个字符,用“*”表示任意多个多个任意字符。
2、设计。2.1设计思想。
1)数据结构设计:本体由于要对文件目录的处理,在一个文件中可以存放多个文件,所以用树,并且用孩子兄弟表示法,表示该树。
2)算法设计:当在该目录下添加,查找,删除子目录时,相当于在该目录下对其孩子结点的处理,根据树建立和结点的孩子兄弟结点的处理来实现。
2.2设计表示。
调用函数 treeinitiate(sibtree *t
调用函数insertroot( )
调用函数insertchild( )
2.3 详细设计。
编写树的建立和孩子结点的添加、删除、搜索等函数是比较简单的,关键在函数中怎么去判断是给其插入孩子结点还是兄弟结点,在删除时还要判断该目录是否有子目录或者子文件……这些都要在写程序时考虑进去,我认为这个题的难点还是在输出上,因为要按照题目要求,以凹入法输出,在输出函数中就要想到用递归法来处理该问题。
3、调试 在写的过程中,没写一个函数都进行一次调试操作,以验证函数的正确性,在写完后,曾遇到过这样的情况:给一个结点的兄弟插入孩子结点时,出现了错误插入,变成了给该结点插入孩子结点,经过一步步的调试发现少一个判断过程,来判断这个结点是不是要插入的目的结点,通过修改问题被解决。
4、用户手册
此程序在vc下运行,在运行时要按照每一步的提示的规格去进行操作
5、测试数据和结果截图。
1)初始时运行如图。
2)进行添加操作,以输入0结束。
3)进行查找操作。
4)进行删除操作。
如果有子目录则不能删除或子文件。
没有子目录或子文件时。
5)进行输出操作。
6)退出时输入5即可退出。
6、源程序清单。
(1)测试源文件。
#include <>
#include <>
#include
#include
#include
using namespace std;
#include ""
void add(sibtree *t1)
printf("输入目录文件信息以输入0结束:");
sibtreenode *r, *r1,*r2;
char ifm[1000]=,name1[50],name2[50];
char *str;
int i,j,n;
while(1)
cin>>ifm;
str=ifm;
if(*str=='0')break;
r=t1->root;
if (r==null)
for (i=0,str+=1;*str!='str!='0';str++,i++)
name1[i]='0';
if(*str=='0')insertroot(t1,name1);
elseprintf("%s的路径不存在,不能添加",name1);
elsefor (i=0,str+=1;*str!='str!='0';str++,i++)
name1[i]='0';
if(search(t1,name1)==0&&*str=='0')
if(search(t1,name1)==0&&*str!='0')printf("%s的路径不存在,不能添加",name1);
r1=levelordertr**erse(t1->root,name1);
while(r1!=null)
if(*str=='0')break;
for (i=0,str+=1;*str!='str!='0';str++,i++)
name2[i]='0';
if(*str=='0')
elsen=children(r1);
for(j=1;j<=n;j++)
if(j<=n)r1=child(r1,j);
else r1=null;
void check(sibtree *t)
sibtreenode *r;
printf("输入要查找的文件名:")
char name[50];
cin>>name;
r=levelordertr**erse(t->root,name);
if(r==null)printf("没有此文件");
elsevoid delete(sibtree *t)
sibtreenode *r,*p,*kid;
printf("输入要删除的文件名:")
char name[50];
cin>>name;
r=levelordertr**erse(t->root,name);
if(r==null)printf("没有此文件!");
elsevoid out(sibtree *t)
printf("输出文件目录的信息:");
printf("root:");
printf("%s",tostring(t).c_str())
void main( )
sibtree t1;
int k;
treeinitiate(&t1);
文件目录管理
文件和目录的管理 一 命令行的格式 命令名 选项 参数1 参数2 1 命令名由小写的英文字母构成。2 选项是对命令的特别定义,以 开始,多个选项可用一个 连起来。3 参数提供命令运行的信息。例如 root teacher vnc ls l home 查看 home目录里的内容,显示详细信息。ls 是...
目录和文件管理
一 练习目录及文件管理的基本命令。1,查看及切换目录 pwd,cd,ls,du。注 使用pwd查看当前位置,使用cd进入到 home目录下面。使用ls查看当前目录的文件及文件夹。使用du查看目录文件大小。2,创建目录及文件 mkdir,touch,ln。注 使用mkdir创建目录,使用touch创建...
文件管理目录命令
1改变目录。格式 cd 目录名 功能 工作目录转移到指定的目录下,只要求完成改变到当前目录的某一个子目录下的功能,不要求实现相对目录以及绝对目录。2创建文件。格式 create 文件名 文件长度 功能 创立一个指定名字的新文件,即在目录中增加一项,不考虑文件内容,但必须能输入文件长度。3删除文件。格...
酒店管理文件目录
ppt 自我规划第一单元 rar 程序文件管理喜来登酒店质量 rar 手册管理东莞喜来登大酒店采购部 rar 程序文件范例管理酒店质量 质量手册 doc 合同管理委托经营 酒店 员工手册 doc 中 doc 下 酒店 ppt 自我规划第一单元 rar 程序文件管理喜来登酒店质量 rar 手册管理东莞...
OHS管理文件目录
江苏省宏源电力建设监理 项目监理部ohs管理文件目录。编号 说明 1 了解公司qms ohs目标及目标分解,工程服务部qms ohs目标 项目监理部qms ohs目标 2 了解ohsms法律和标准清单 3 了解公司危险源和重要危险源,熟悉项目监理部危险源和重要危险源 4 了解公司ohs危险源管理措施...
文件与管理流程
浙江东亚工具 作业流程。文件与资料管理流程。编号版本 修改号发布日期页码。第1页共8页。分发范围。总生销生总外内生供技品人总金经产售产经贸贸产应术保事务工部理副副副理部部部部部部行部车。总总总助政间门。理部代。号数量。修改栏。序号。修改页码。修改日期。修改人。修改内容。表面处理车间装配车间。工木刀车...
投标文件目录
投标人 陕西兄弟和创商业 全权代表 签字 陕西兄弟和创商业 2011年8月19日。投标书。致 陕西省泾惠渠管理局 根据贵局 2010年机关供暖燃煤招标文件,陕西兄弟和创商业 授权高健职务经理参加贵局组织的如标活动,并交下述文件正本一份,副本一份。一 公司投标文件由以下部分组成 1 燃煤费用开标一览表...
监理文件目录
1 监理规划。监理规划。监理实施细则。监理部总控制计划。2 监理月报中的有关质量问题。3 监理会议纪要中的有关质量问题。4 进度控制。工程开工 复工审批表。工程开工 复工暂停令。5 质量控制。不合格项目通知。质量事故报告及处理意见。6 造价控制。预付款报审与支付。月付款报审与支付。设计变更 洽商费用...