简单文件管理系统
- 格式:doc
- 大小:391.00 KB
- 文档页数:24
文件管理系统1.设计内容:模拟一个简单的文件管理系统。
实现下列功能:1)建立文件2)打开文件3)关闭文件4)删除文件5)建立目录6)显示目录内容2.设计思路:以一个真实的文件来模拟一块磁盘。
1)需自行定义的数据结构有:a.目录结构typedef struct{char name[3]; /*文件或目录名*/char type[2]; /*文件类型名*/char attribute; /*属性*/char address; /*文件或目录的起始盘块号*/char length; /*文件长度,以盘块为单位*/}content; /*目录结构*/b.已打开文件表的读写指针结构typedef struct{int dnum; /*磁盘盘块号*/int bnum; /*盘块内第几项*/}pointer; /*已打开文件表中读写指针的结构*/c.已打开文件表表项结构定义typedef struct{char name[20]; /*文件绝对路径名*/char attribute;/*文件的属性,用1个字节表示,所以用了char类型*/int number; /*文件起始盘块号*/int length; /*文件长度,文件占用的字节数*/int flag; /*操作类型,用"0"表示以读操作方式开文件,用"1"表示写操作方式打开文件*/ pointer read; /*读文件的位置,文件刚打开时dnum为文件起始盘块号,bnum为"0"*/ pointer write;/*写文件的位置,文件建立时dnum为文件起始盘块号,bnum为"0",打开时为文件末尾*/ }OFILE; /*已打开文件表项类型定义*/d.已打开文件表定义struct{OFILE file[n]; /*已打开文件表*/int length; /*已打开文件表中登记的文件数量*/}openfile; /*已打开文件表定义*/char buffer1[64];/*模拟缓冲1*/ //模拟磁盘上的物理块中存放的具体数据content buffer2[8];/*模拟缓冲2*/ //模拟磁盘上的物理块中存放的目录FILE *fc; /*模拟磁盘的文件指针*/2)需要设计的函数:a. sopen(char *name) 在已打开文件表中查找文件nameb. dopen(char *name) 在已打开文件表中删除文件namec. iopen(content *x) 在已打开文件表openfile数组中插入文件named. allocate( ) 分配一个磁盘块,返回块号。
数据结构课程设计题目:简单文件管理系统学生姓名:丁东伟,黄益辉,冯建豪学号:丁东伟201441402143,冯建豪201441402140,黄益辉201441402131 院(系):计算机学院专业班级:计算机科学与技术1班一、需求分析1General description 总体概述1.1About the Project 项目介绍这是一个简单商品分类管理系统,对商品进行分类管理.,主要功能:1、浏览当前商品分类目录的所有内容(子分类和当前目录下的商品)2、切换当前分类目录到上一级分类目录或下一级子分类目录(扩展,切换到任何一个目录)或直接切换到根目录3、在当前分类目录下添加新商品目录,或者添加新商品信息。
4、在当前目录下删除某个子商品分类或某个商品信息5、在当前目录下修改某个商品或分类目录的信息6、根据某个商品编号(或名称)在整个系统中查找某个商品并显示全部信息1.2Environment of Product 产品环境介绍本系统为Windows控制台应用程序,编程语言为C语言,在VC++6.0下编译。
1.3Software function 软件功能1.4User characteristics 用户特征本软件适合小型商场的商品分类,无年龄限制,用户需会使用键盘及鼠标。
2Specific Requirements 具体需求2.1到根目录1.介绍:转到文件目录的根目录;2.输入:CatalogNode* pCurrCatNode3.处理:将当前目录指针pCurrCatNode指向根目录root4.输出:true或者false2.2到子目录1.介绍:转到当前文件目录的子目录;2.输入:CatalogNode* pCurrCatNode3.处理:判断当前目录指针pCurrCatNode的子目录指针choiceCatalog是否为空,若为空返回false,否则返回true5.输出:true或者false2.3到父目录1.介绍:转到当前文件目录的父目录;2.输入:CatalogNode* pCurrCatNode3.处理:判断当前目录指针pCurrCatNode的父目录指针fatherCatalogNode是否为空,若为空返回false,否则返回true4.输出:true或者false2.4添加目录1.介绍:在当前文件目录下添加一个新的子目录;2.输入:CatalogNode* currCatalogNode,CatalogNode* catNode3.处理:输入新目录名、创建年月日,调用目录添加函数addCatalog_fun(),若添加成功则返回true,否则返回false4.输出:true或者false2.5修改目录1.介绍:修改当前目录下的一个子目录;2.输入:CatalogNode* currCatalogNode,CatalogNode* catNode3.处理:选择目录序号,修改所选目录的名称。
文件管理系统基本情况介绍和功能说明本文档旨在介绍文件管理系统的基本情况和功能说明。
文件管理系统是一种用于存储、检索和管理文件的软件工具,它能够提高组织和个人的工作效率和效果。
基本情况介绍文件管理系统是基于计算机技术和互联网的发展而出现的。
它旨在解决传统文件管理方法的一些痛点,比如纸质文件存储不便、检索困难、易丢失等问题。
通过电子化和自动化的方式,文件管理系统能够更好地管理和利用文件资源。
文件管理系统可分为基于文件夹的管理和基于标签的管理两种形式。
基于文件夹的管理方式将文件组织在各级文件夹中,类似于传统的文件柜。
而基于标签的管理方式则是通过给文件打上标签,便于检索和分类。
功能说明1. 文件存储和访问文件管理系统提供了安全的文件存储和访问功能。
用户可以将文件上传到系统中,并指定相应的权限,控制文件的访问范围。
同时,文件管理系统支持不同文件格式的上传和预览,方便用户直观地查看文件内容。
2. 文件检索和分类文件管理系统支持根据文件名称、标签、上传时间等条件进行文件检索,帮助用户快速定位目标文件。
此外,系统还提供了文件分类功能,将文件按照类型、部门、项目等属性进行分类,便于管理和组织文件资源。
3. 协作和共享文件管理系统支持多人协作和文件共享。
用户可以邀请他人加入指定的文件夹或项目,实现文件的共同编辑和讨论。
同时,系统提供了版本控制功能,记录文件的修改历史,避免误操作或丢失重要内容。
4. 审批和流程管理文件管理系统支持审批和流程管理功能。
用户可以创建审批流程,指定审批人和流程节点,提高工作效率和规范性。
系统将审批记录和流程状态实时展示,方便用户跟踪和管理。
5. 安全和备份文件管理系统注重数据安全和备份。
系统采用了安全加密技术,保护文件数据不被非法访问。
同时,系统定期进行数据备份,避免数据丢失或损坏。
结论文件管理系统是一种能够提高工作效率和效果的重要工具。
通过本文档的介绍,我们了解了文件管理系统的基本情况和功能说明。
文件管理系统1. 引言文件管理系统是指对文件进行组织、存储、检索和管理的工具或软件。
它可以帮助用户高效地管理各种类型的文件,提供便捷的操作方式和灵活的文件管理功能。
本文将介绍文件管理系统的基本概念、特点、功能以及使用方法。
2. 概述文件管理系统是计算机领域中的一个重要概念,它是指对文件进行组织、存储、检索和管理的工具或软件。
文件管理系统的主要目标是提供一个可靠且高效的方式来管理文件,使用户可以方便地创建、编辑、存储、复制、删除和查找文件。
3. 特点文件管理系统具有以下几个特点:•可靠性:文件管理系统应具有数据完整性和可靠性,能够确保文件在存储和操作过程中不丢失或损坏。
•灵活性:文件管理系统应提供灵活的文件组织方式,用户可以自由地创建文件夹、子文件夹,进行文件的分类和整理。
•安全性:文件管理系统应提供安全的文件访问控制机制,用户可以设置文件的权限和访问级别,保护文件的机密性和私密性。
•高效性:文件管理系统应具有高效的文件存储和检索功能,用户可以快速地找到需要的文件,并进行操作和编辑。
•扩展性:文件管理系统应具有良好的扩展性,能够适应不同规模和需求的文件管理。
4. 功能文件管理系统通常具有以下基本功能:•文件创建与编辑:用户可以创建新的文件,并进行编辑和保存。
•文件存储与组织:文件管理系统提供文件存储功能,用户可以将文件放置在不同的文件夹中进行组织和管理。
•文件复制与移动:用户可以复制或移动文件到不同的文件夹中,方便文件的整理和归档。
•文件删除与恢复:用户可以删除文件,并在需要时进行恢复操作,防止误删文件。
•文件检索与查找:用户可以通过文件名、关键字或其他属性进行文件检索和查找,快速找到需要的文件。
•文件分享与协作:用户可以将文件分享给其他用户,实现文件的共享和协作,提高团队工作效率。
•文件备份与恢复:文件管理系统可以对文件进行定期备份,并在需要时进行恢复,确保文件的安全性和可靠性。
5. 使用方法文件管理系统的使用方法根据具体的软件或工具而有所区别,通常包括以下几个步骤:1.安装文件管理系统:根据软件提供的安装步骤,将文件管理系统安装到计算机或服务器上。
文件管理系统介绍文件管理系统是一种用于有效组织和管理文件的工具。
它提供了一个集中的平台,可以存储、查找和共享文件。
本文将介绍文件管理系统的主要功能和优势。
主要功能文件管理系统通常具有以下主要功能:1. 文件存储:系统提供安全的文件存储空间,可以存储各种类型的文件,如文档、图片和音频文件。
2. 文件索引:系统会自动为每个文件创建索引,使用户可以根据文件的标题、标签或关键词快速查找到所需文件。
4. 版本控制:系统会跟踪文件的历史版本,并允许用户比较、恢复或还原之前的版本。
这有助于防止文件丢失或意外更改。
5. 文件备份和恢复:系统会定期备份文件,并提供恢复功能,以防止文件丢失或损坏。
6. 安全性和权限:系统提供安全的访问控制,确保只有授权用户可以访问文件。
管理员可以设置不同用户的权限级别,以控制他们对文件的操作权限。
优势文件管理系统具有许多优势,包括:1. 提高工作效率:通过快速查找和共享文件,文件管理系统可以显著提高工作效率。
不再花费宝贵的时间在繁琐的文件管理任务上。
2. 促进协作和团队工作:通过文件共享和协作功能,团队成员可以轻松地共享和合作编辑文件,促进了协作和团队工作。
3. 提供安全性和保密性:文件管理系统提供了安全的存储和访问控制,确保文件的安全性和保密性。
只有授权用户才能访问敏感文件。
4. 减少纸质文件:文件管理系统可以帮助组织减少对纸质文件的依赖,实现更环保和可持续的办公环境。
5. 提供历史记录和审计功能:通过版本控制和文件操作日志,文件管理系统可以提供审计功能,记录文件的变更历史和操作记录。
综上所述,文件管理系统是一个有助于组织和管理文件的强大工具。
它的功能和优势可以提高工作效率,促进协作,同时确保文件的安全性和保密性。
如果您正在寻找一个可靠的文件管理解决方案,那么文件管理系统将是一个不错的选择。
请注意,以上内容仅供参考,具体的文件管理系统可能会有不同的功能和特点。
实现一个简单的文件系统一个简单的文件系统是指一个用于管理文件和文件夹的系统,可以进行基本的文件和文件夹的创建、删除、重命名、查找、打开、关闭等操作。
以下是一个简单文件系统的实现,主要包括文件和文件夹的数据结构和相关操作。
1.数据结构:- 文件(File):包含文件名、文件内容、创建时间、修改时间等属性。
- 文件夹(Folder):包含文件夹名、文件夹路径、创建时间、修改时间等属性,以及包括的文件和文件夹列表。
2.操作:-创建文件夹:可以根据输入的文件夹名和路径,在对应的位置创建一个新的文件夹对象,并将其添加到上级文件夹的文件夹列表中。
-创建文件:可以根据输入的文件名和路径,在对应的位置创建一个新的文件对象,并将其添加到对应的文件夹的文件列表中。
-删除文件夹:可以根据输入的文件夹名和路径,将对应的文件夹对象从上级文件夹的文件夹列表中删除,并删除其包含的所有文件和文件夹。
-删除文件:可以根据输入的文件名和路径,将对应的文件对象从所在文件夹的文件列表中删除。
-重命名文件夹:可以根据输入的原文件夹名和路径以及新文件夹名,将对应的文件夹对象重命名。
-重命名文件:可以根据输入的原文件名和路径以及新文件名,将对应的文件对象重命名。
-查找文件夹/文件:可以根据输入的文件夹名和路径,查找对应的文件夹对象。
-打开文件:可以根据输入的文件名和路径,打开对应的文件对象,并显示其内容。
-关闭文件:可以关闭当前打开的文件。
3.实现:- 定义一个文件夹类(Folder),包含文件夹名、文件夹路径、创建时间、修改时间等属性,以及一个存储文件夹对象的列表。
- 定义一个文件类(File),包含文件名、文件内容、创建时间、修改时间等属性。
- 实现创建文件夹的方法(createFolder),在对应的位置创建一个新的文件夹对象,并将其添加到上级文件夹的文件夹列表中。
- 实现创建文件的方法(createFile),在对应的位置创建一个新的文件对象,并将其添加到对应的文件夹的文件列表中。
文件管理系统的操作方法文件管理系统是指在计算机上对各种类型文件的存储、管理和使用进行的一系列操作,包括文件的创建、打开、保存、复制、粘贴、删除等等。
这些操作通常由操作系统提供的文件管理器或文件浏览器来实现。
从个人用户的角度来看,文件管理系统可以帮助我们更加快速和高效地管理和利用我们的文件资源。
本文将从以下几个方面来探讨文件管理系统的操作方法:1. 创建文件在电脑上创建文件的基本步骤是:打开Windows资源管理器,选择要保存文件的文件夹,右键单击鼠标,选择"新建",再选择"文本文档"。
然后,文件名出现在右侧窗格中,您可以更改它的名称。
在新文件中编辑所需的信息,右键单击文档,选择“保存”。
另外,一些软件还可以让您在其程序中创建新文件,例如Microsoft Word或记事本++。
2. 打开文件也可以通过Windows资源管理器打开文件。
打开文件的方法是在文件管理器中选择所需的文件,双击打开它即可。
当然,您也可以选择“打开方式”,然后选择使用的应用程序来打开它。
此外,还可以将文件从网络文件服务器或FTP服务器复制到本地计算机,然后再打开文件。
3. 保存文件在编辑文档或其他文件时,必须及时保存更改以确保它们不会丢失。
可以通过按CTRL + S保存文件,也可以右键单击文档,然后选择保存。
一些编辑器,如Microsoft Word或记事本++,会自动保存更改,以免遗漏。
4. 复制和粘贴文件要从一个位置复制文件并将其粘贴到另一个位置,可以选择所需的文件,并使用以下方法复制和/或粘贴:- 选择要复制的文件,按CTRL + C- 在要粘贴文件的位置,右键单击,然后选择"粘贴"- 如果要将文件夹中的文件粘贴到新的位置,请选择要复制的文件夹及其所有内容,右键单击,然后选择“复制”。
然后,转到新位置,右键单击,并选择"粘贴"。
5. 文件夹管理文件夹的创建、打开和删除与文件管理非常类似。
课程考核设计文档(论文)目录1需求分析 (1)1.1Delphi简介 (1)1.2Delphi文件管理器 (2)2概要设计 (2)2.1设计要求 (2)2.2设计根据 (2)2.3 设计优缺点 (2)3相关函数 (3)3.1 RenameFile函数 (3)3.2 DeleteFile函数 (3)3.3 FileExists函数 (3)3.4 FileGetAttr函数 (4)3.5 DirectoryExists函数 (4)3.6 CreateDir函数 (4)3.7 RemoveDir函数 (4)3.8 文件查找相关函数 (4)4设计步骤 (5)4.1 设计流程图 (5)4.2 设计步骤 (6)5运行结果 (15)附录Ⅰ (18)参考文献 (27)1 需求分析1.1Delphi简介Delphi是Borland公司推出的可视化编程环境,它提供了一种方便、快捷的Windows 应用程序开发工具。
它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了可重复利用的完整的面向对象程序语言(Object-Oriented Language)、当今世界上最快的编辑器、最为领先的数据库技术。
Delphi是优秀的可视化开发工具,不仅简单、易于掌握而且功能强大,使用Delphi开发应用软件,会大大地提高编程效率。
Delphi是Pascal语言有天壤之别。
一个Delphi程序首先是应用程序框架,而这一框架正是应用程序的“骨架”。
在“骨架”上即使没有附着任何东西,仍可以严格的按照设计运行。
用户的工作只是在“骨架”中添入自己的程序。
默认的应用程序是一个空白的窗体“Form”,可以直接运行,结果得到一个空白的窗口,这个窗口具有Windows窗口的全部性质:可以被放大、缩小、移动最大化、最小化等,但没有编写程序代码。
因此,可以说应用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下良好的基础。
文件管理系统文件管理系统是现代信息化社会中必不可少的一种工具,它是指管理和组织文件、数据和信息的系统。
随着信息技术的不断发展,文件管理系统已经成为各个领域中必需的重要工具,比如企业、政府机构、学校等。
文件管理系统的主要功能包括文件的建立、存储、检索和传输等。
在过去,人们管理文件主要依靠纸质文件,无论是在企业还是政府机构,文件存储都是一个头痛的问题,同时也存在着安全性、空间占用等问题。
随着计算机技术的发展,人们逐渐将纸质文件转化为电子文件。
电子文件以其便捷性、高效性和安全性的特点,成为人们管理文件的首选。
通过文件管理系统,人们可以方便地建立和存储文件,实现文件的互联互通,提高工作效率。
文件管理系统的建立需要考虑到组织结构、权限控制、安全防护等因素。
在一个大型企业中,往往有多个部门,每个部门可能有不同的文件管理需求,因此需要建立合理的组织结构,确保各个部门能够方便地管理和使用自己的文件。
同时,文件管理系统需要设置权限控制机制,保证只有具有相应权限的人员才能够访问和修改文件。
这样可以确保文件的安全性,避免文件泄露和篡改。
文件管理系统还需要考虑安全防护措施,以防止病毒攻击、黑客入侵等安全风险。
例如,可以通过设定防火墙、加密传输等技术手段,来提高文件管理系统的安全性。
另外,文件管理系统还需具备高效的检索功能。
随着时间的推移,文件数量会不断增加,如何快速找到需要的文件成为一个重要问题。
一个好的文件管理系统应该具备明确的分类和索引机制,方便用户快速找到目标文件。
除此之外,文件管理系统还可以提供文件传输功能。
在现代社会中,人们常常需要将文件通过网络传输给他人,文件管理系统可以提供方便快捷的文件传输方式,避免了繁琐的邮件发送或传统的快递方式。
文件管理系统对于企业和组织来说,具有非常重要的意义。
它可以提高工作效率,精简工作流程,减少纸质文件的使用,节省物资成本,同时也有利于信息的保密和存储。
总之,文件管理系统在现代社会中扮演着重要的角色。
目录一、题目和要求 (1)二、相关原理分析和总的设计思想 (2)三、数据结构和流程图 (4)四、源程序 (6)五、运行结果 (17)六、自我评析与总结 (24)一、题目和要求(1) 题目:简单文件管理系统的设计及实现(2) 要求:根据文件系统的相关原理,设计并用C或C++编程实现一个类似Windows系统中“我的电脑”功能的文件管理系统,该文件系统可以对系统中所有文件进行管理,同时具有创建新文件、删除文件、复制文件、创建文件夹等功能。
二、相关原理分析和总的设计思想基于MFC AppWizard框架的程序定制一个菜单,有添加四个子菜单,创建,复制,删除,退出,在前三个子菜单中添加四个菜单项,文件夹,TXT,WORD,EXCEL。
每个菜单项对应着一种功能。
且复制选择路径都是基于对话框,操作方便,简洁明了。
○1创建文件夹;要创建文件夹,首先要选择文件夹创建的位置,可以用到浏览文件夹的函数SHBrowseForFolder和两个结构BROWSEINFO和ITEMIDLIST,要想得到文件夹路径可以用SHGetPathFromIDList,当然程序要想拥有建立文件夹的功能,应该设置BROWSEINFO对象的ulFlags的参数有 BIF_NEWDIALOGSTYLE ;○2创建文件;不管是创建txt文件,word文件,excel文件原理都一样。
可以写一个build函数,提供几个参数:标题title, 路径filter,扩展名defExt。
这样创建文件时,可以根据标题,路径,扩展名的不同调用build函数,达到不同功能的目的在build函数体中使用CFileDialog定义一个对象来创建文件。
○3复制文件夹;第一步:复制文件夹可以在一个对话框中完成,这样必然需要添加一个类CCopyDlg。
第二步:在该对话框上设置两个按钮,一个按钮来选择源文件夹,保存源文件路径;一个按钮来选择目标文件夹,保存目标文件路径。
选择路径的方法可以与步骤○1的方法相同。
第三步:重写确定消息应用程序来实现从一个目录复制到另一个目录的功能(copyFiles)。
下面是copyFiles函数的实现原理:首先打开指定的文件夹进行搜索,再利用一个while循环,从当前目录搜索文件,判断搜索到的是不是"."和".."目录,如果是文件夹的话,进行递归;如果是文件,进行复制。
○4复制文件;复制文件跟复制文件夹一样也需要创建一个对话框,添加一个类。
同理也在对话框上添加两个按钮,分别接收源路径,和目标路径。
不过接收的方法需要通过CFileDialog选择对话框,而不能再和○1一样啦。
复制文件,vc中有已有的函数CopyFile。
参数是两个复制的路径。
○5删除文件夹在删除文件夹之前,首先要删除文件夹下的所有文件,再删除文件夹。
该功能的实现也是利用递归,先判断文件夹下是否有文件,若有,则删除,没有则删除文件夹,返回。
○6删除文件定义一个类CMyFileDialog继承CFileDialog而来,重写OnInitDialog函数来设置对话框中按钮的文本。
创建一个CMyFileDialog对象,在删除文件对话框中,选择想要删除的文件,调用DeleteFile函数进行文件的删除。
○7退出程序设置一个退出子菜单,发送一个WM_CLOSE消息,关闭程序退出。
三、数据结构和流程图该程序没有使用到复杂的数据结构,是基于MFC AppWizard 应用程序。
主流程图:为使流程图简单些,将创建,复制,删除放一起,用“|”字符连接起来,代表“或”的意选择文件夹路径的流程图:四、源程序(1)定制一个菜单,添加5个子菜单,并分别设置它们的Popup,包括:创建(true)、复制(true)、删除(true)、帮助、退出(false)。
在子菜单中添加它们的菜单项。
如下所示:创建:文件夹,TXT,WORD,EXCEL复制:文件夹,TXT,WORD,EXCEL删除:文件夹,TXT,WORD,EXCEL帮助:关于 DMS(&A)...退出(2)创建文件夹void CMainFrame::OnBuildFolder(){//选择新建文件夹的路径UpdateData(TRUE);char szDir[MAX_PATH];BROWSEINFO bi;ITEMIDLIST *pidl;bi.hwndOwner = this->m_hWnd;bi.pidlRoot = NULL;bi.pszDisplayName = LPWSTR(szDir);bi.lpszTitle = TEXT("新建文件夹");bi.ulFlags = BIF_EDITBOX | BIF_VALIDATE | BIF_NEWDIALOGSTYLE ;bi.lpfn = NULL;bi.lParam = 0;bi.iImage = 0;pidl = SHBrowseForFolder(&bi);if(pidl == NULL)return;if(!SHGetPathFromIDList(LPCITEMIDLIST(pidl), LPWSTR(szDir))) return;elsem_strPath = szDir;UpdateData(FALSE);}(3)创建文件的函数void CMainFrame::build(CString title, CString filter, CString defExt) {CFileDialog fileDlg(FALSE);fileDlg.m_ofn.lpstrTitle=title;fileDlg.m_ofn.lpstrFilter=filter;fileDlg.m_ofn.lpstrDefExt=defExt;if(IDOK==fileDlg.DoModal()){ //创建一个文档CFile file(fileDlg.GetFileName(),CFile::modeCreate);file.Close();}}创建txt文件:void CMainFrame::OnBuildTxt(){//创建一个Txt文档build(TEXT("新建Txt文档"),TEXT("TextFiles(*.txt)\0*.txt\0"), TEXT("txt"));}创建word文档:void CMainFrame::OnBuildWord(){//创建一个Word文档build(TEXT("新建Word文档"),TEXT("Text Files(*.doc)\0*.doc\0"),TEXT("doc"));}创建excel工作表:void CMainFrame::OnBuildExcel(){//创建一个Excel工作表build(TEXT("新建Excel工作表"),TEXT("Text Files(*.xls)\0*.xls\0"),TEXT("xls"));}创建txt、word、excel都是调用build函数。
(4)复制文件夹添加一个类:CCopyDlg;在对话框上添加两个按钮,“选择源文件夹”,“选择目标文件夹”;选择路径的函数:CString CCopyDlg::selectPath(CString path){//选择路径UpdateData(TRUE);char szDir[MAX_PATH];CString str;BROWSEINFO bi;ITEMIDLIST *pidl;bi.hwndOwner = this->m_hWnd;bi.pidlRoot = NULL;bi.pszDisplayName = LPTSTR (szDir);bi.lpszTitle = path;bi.ulFlags = BIF_EDITBOX | BIF_VALIDATE;bi.lpfn = NULL;bi.lParam = 0;bi.iImage = 0;pidl = SHBrowseForFolder(&bi);if(pidl == NULL)return CString();if(!SHGetPathFromIDList(pidl, LPTSTR (szDir)))return CString();elsestr = szDir;UpdateData(FALSE);return str;}分别对这两个按钮进行响应:void CCopyDlg::OnBnClickedButton1(){//获得源文件夹的路径m_strBgnPath=selectPath(TEXT("选择源文件夹"));}void CCopyDlg::OnBnClickedButton2(){//获得目标文件夹的路径m_strEndPath=selectPath(TEXT("选择目标文件夹"));}再添加一个复制函数:BOOL copyFiles(CString strSrcPath, CString strDstPath){ // 创建目标文件夹CreateDirectory(strDstPath,NULL);CFileFind finder;// 打开指定的文件夹进行搜索BOOL bWorking = finder.FindFile(strSrcPath + TEXT("\\*.*")); while(bWorking){// 从当前目录搜索文件bWorking = finder.FindNextFile();CString strFileName = finder.GetFileName();CString strSrc = strSrcPath + TEXT("\\") + strFileName; CString strDst = strDstPath + TEXT("\\") + strFileName; // 判断搜索到的是不是"."和".."目录if(!finder.IsDots()){// 判断搜索到的目录是否是文件夹if(finder.IsDirectory()){// 如果是文件夹的话,进行递归if(!copyFiles(strSrc, strDst))return false;}else{// 如果是文件,进行复制if(!CopyFile(strSrc, strDst, FALSE))return false;}}}return true;}对确定按钮的消息响应函数重写:void CCopyDlg::OnBnClickedOk(){copyFiles(m_strBgnPath,m_strEndPath);OnOK();}最后对菜单项:复制文件夹的响应:void CMainFrame::OnCopyFolder(){//弹出一个复制文件夹的对话框CCopyDlg dlg;dlg.DoModal();}(5)复制txt文件添加一个类:CTxtDlg;先对两个按钮,"选择源Txt文件""选择目的Txt文件"进行响应:void CTxtDlg::OnBnClickedButton1(){CFileDialog dlg(1,NULL,NULL,NULL,TEXT("Text files(*.txt)|*.txt"));dlg.m_ofn.lpstrTitle=TEXT("选择源Txt文件");if(dlg.DoModal()==IDOK){m_strBgnPath = dlg.GetPathName();}}void CTxtDlg::OnBnClickedButton2(){CFileDialog fileDlg(FALSE);fileDlg.m_ofn.lpstrTitle=TEXT("选择目的Txt文件");fileDlg.m_ofn.lpstrFilter=TEXT("Text Files(*.txt)\0*.txt\0");fileDlg.m_ofn.lpstrDefExt=TEXT("txt");if(IDOK==fileDlg.DoModal()){m_strEndPath=fileDlg.GetFileName();}}再对“确定”按钮进行响应:void CTxtDlg::OnBnClickedOk(){BOOL tempFile = CopyFile(m_strBgnPath,m_strEndPath,FALSE);int itemp = GetLastError();if(!tempFile){MessageBox( TEXT("文件复制失败") );}else{MessageBox( TEXT("文件复制成功") );}OnOK();}最后对菜单项:复制txt文件的响应:void CMainFrame::OnCopyTxt(){ //弹出一个复制Txt文件的对话框CTxtDlg dlg;dlg.DoModal();}(6)复制word文档添加一个类:CWordDlg;对两个按钮,"选择源Word文档""选择目的Word文档"进行响应:void CWordDlg::OnBnClickedButton1(){CFileDialog dlg(1,NULL,NULL,NULL,TEXT("Text files(*.doc)|*.doc"));dlg.m_ofn.lpstrTitle=TEXT("选择源Word文档");if(dlg.DoModal()==IDOK){m_strBgnPath = dlg.GetPathName();}}void CWordDlg::OnBnClickedButton2(){CFileDialog fileDlg(FALSE);fileDlg.m_ofn.lpstrTitle=TEXT("选择目的Word文档");fileDlg.m_ofn.lpstrFilter=TEXT("Text Files(*.doc)\0*.doc\0");fileDlg.m_ofn.lpstrDefExt=TEXT("doc");if(IDOK==fileDlg.DoModal()){m_strEndPath=fileDlg.GetFileName();}}再对“确定”按钮进行响应:void CWordDlg::OnBnClickedOk(){BOOL tempFile = CopyFile(m_strBgnPath,m_strEndPath,FALSE);int itemp = GetLastError();if(!tempFile){MessageBox( TEXT("文件复制失败") );}else{MessageBox( TEXT("文件复制成功") );}OnOK();}最后对菜单项:复制word文档的响应:void CMainFrame::OnCopyWord(){//弹出一个复制Word文件的对话框CWordDlg dlg;dlg.DoModal();}(7)复制excel工作表添加一个类:CExcelDlg;对两个按钮进行响应:void CExcelDlg::OnBnClickedButton3(){CFileDialog dlg(1,NULL,NULL,NULL,TEXT("Text files(*.xls)|*.xls"));dlg.m_ofn.lpstrTitle=TEXT("选择源Excel工作表");if(dlg.DoModal()==IDOK){m_strBgnPath = dlg.GetPathName();}}void CExcelDlg::OnBnClickedButton2(){CFileDialog fileDlg(FALSE);fileDlg.m_ofn.lpstrTitle=TEXT("选择目的Excel工作表)");fileDlg.m_ofn.lpstrFilter=TEXT("Text Files(*.xls)\0*.xls\0");fileDlg.m_ofn.lpstrDefExt=TEXT("xls");if(IDOK==fileDlg.DoModal()){m_strEndPath=fileDlg.GetFileName();}}再对确定按钮进行响应:void CExcelDlg::OnBnClickedOk(){BOOL tempFile = CopyFile(m_strBgnPath,m_strEndPath,FALSE);int itemp = GetLastError();if(!tempFile){MessageBox( TEXT("文件复制失败") );}else{MessageBox( TEXT("文件复制成功") );}OnOK();}最后对菜单项:复制excel工作表的响应:void CMainFrame::OnCopyExcel(){//弹出一个复制Excel文件的对话框CExcelDlg dlg;dlg.DoModal();}(8)删除文件夹的消息处理程序//删除非空目录function如下:BOOL DeleteDirectory(char *DirName){CFileFind tempFind;char tempFileFind[200];sprintf_s(tempFileFind,"%s\\*.*",DirName);BOOL IsFinded=(BOOL)tempFind.FindFile(LPCTSTR(tempFileFind));while(IsFinded){IsFinded=(BOOL)tempFind.FindNextFile();if(!tempFind.IsDots()){char foundFileName[200];strcpy_s(foundFileName,(char*)tempFind.GetFileName().GetBuffer(200)); if(tempFind.IsDirectory()){char tempDir[200];sprintf_s(tempDir,"%s\\%s",DirName,foundFileName);DeleteDirectory(tempDir);}else{char tempFileName[200];sprintf_s(tempFileName,"%s\\%s",DirName,foundFileName);DeleteFileA(tempFileName);}}}tempFind.Close();if(!RemoveDirectoryA(DirName)){MessageBoxA(0,"删除目录失败!","警告信息",MB_OK); return FALSE;}return TRUE;}//删除文件夹void CMainFrame::OnDeleteFolder(){//选择要删除文件夹的路径UpdateData(TRUE);char szDir[MAX_PATH];BROWSEINFO bi;ITEMIDLIST *pidl;bi.hwndOwner = this->m_hWnd;bi.pidlRoot = NULL;bi.pszDisplayName = LPWSTR(szDir);bi.lpszTitle = TEXT("删除文件夹");bi.ulFlags = BIF_EDITBOX | BIF_VALIDATE;bi.lpfn = NULL;bi.lParam = 0;bi.iImage = 0;pidl = SHBrowseForFolder(&bi);if(pidl == NULL)return;if(!SHGetPathFromIDList(pidl, LPWSTR(szDir))) return;elsestrcpy_s(path , szDir);UpdateData(FALSE);DeleteDirectory(path);MessageBox(TEXT("删除文件夹成功"));}(9)增加一个CMyFileDialog类它是继承CFileDialog类而来,重写它的OnInitDialog函数:BOOL CMyFileDialog::OnInitDialog(void){//设置对话框上按钮的文本SetControlText(IDOK,"删除");return 0;}(10)删除txt文件的消息处理程序void CMainFrame::OnDeleteTxt(){CMyFileDialog dlg(1,NULL,NULL,NULL,TEXT("Text files(*.txt)|*.txt"));dlg.m_ofn.lpstrTitle=TEXT("选择要删除的Txt文件");if(dlg.DoModal()==IDOK){m_strTxtPath = dlg.GetPathName();}DeleteFile(m_strTxtPath);}(11)删除word文档的消息处理程序void CMainFrame::OnDeleteWord(){CMyFileDialog dlg(1,NULL,NULL,NULL,TEXT("Text files(*.doc)|*.doc"));dlg.m_ofn.lpstrTitle=TEXT("选择要删除的Word文档");if(dlg.DoModal()==IDOK){m_strTxtPath = dlg.GetPathName();}DeleteFile(m_strTxtPath);}(12)删除excel工作表的消息处理程序void CMainFrame::OnDeleteExcel(){CMyFileDialog dlg(1,NULL,NULL,NULL,TEXT("Text files(*.xls)|*.xls"));dlg.m_ofn.lpstrTitle=TEXT("选择要删除的Excel工作表");if(dlg.DoModal()==IDOK){m_strTxtPath = dlg.GetPathName();}DeleteFile(m_strTxtPath);}(13)退出的消息处理程序void CMainFrame::OnExit(){//发送一个退出程序的消息SendMessage(WM_CLOSE);}(14)修改窗口的标题在PreCreateWindow函数体中添加如下代码:// CREATESTRUCT cs 来修改窗口类或样式cs.style &=~FWS_ADDTOTITLE;cs.lpszName=TEXT("简单文件管理系统");(15)隐藏工具栏将以前的工具栏隐藏,在OnCreate函数体中添加如下代码:m_wndToolBar.ShowWindow(SW_HIDE);五、运行结果程序的主界面:窗口的标题“简单文件管理系统”它有三个弹出式子菜单:“创建”“复制”“删除”,它们都有四个菜单项:文件夹,TXT,WORD,EXCEL。