(新)简单文件管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

一、题目和要求 (2)

二、相关原理分析和总的设计思想 (2)

三、数据结构和流程图 (4)

四、源程序 (6)

五、运行结果 (18)

六、自我评析与总结 (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;

else

m_strPath = szDir;

UpdateData(FALSE);

}

(3)创建文件的函数

相关文档
最新文档