简单文件管理系统.doc

上传人:11****ws 文档编号:2285246 上传时间:2019-05-05 格式:DOC 页数:24 大小:420.50KB
下载 相关 举报
简单文件管理系统.doc_第1页
第1页 / 共24页
简单文件管理系统.doc_第2页
第2页 / 共24页
简单文件管理系统.doc_第3页
第3页 / 共24页
简单文件管理系统.doc_第4页
第4页 / 共24页
简单文件管理系统.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、1目录一、题目和要求 .2二、相关原理分析和总的设计思想 .2三、数据结构和流程图 .4四、源程序 .6五、运行结果 .18六、自我评析与总结 .242一、题目和要求(1) 题目:简单文件管理系统的设计及实现(2) 要求:根据文件系统的相关原理,设计并用 C 或 C+编程实现一个类似 Windows 系统中“我的电脑”功能的文件管理系统,该文件系统可以对系统中所有文件进行管理,同时具有创建新文件、删除文件、复制文件、创建文件夹等功能。二、相关原理分析和总的设计思想基于 MFC AppWizard 框架的程序定制一个菜单,有添加四个子菜单,创建,复制,删除,退出,在前三个子菜单中添加四个菜单项,

2、文件夹,TXT,WORD,EXCEL。每个菜单项对应着一种功能。且复制选择路径都是基于对话框,操作方便,简洁明了。创建文件夹; 1要创建文件夹,首先要选择文件夹创建的位置,可以用到浏览文件夹的函数 SHBrowseForFolder 和两个结构 BROWSEINFO 和ITEMIDLIST,要想得到文件夹路径可以用SHGetPathFromIDList,当然程序要想拥有建立文件夹的功能,应该设置 BROWSEINFO 对象的 ulFlags 的参数有 BIF_NEWDIALOGSTYLE ;创建文件; 2不管是创建 txt 文件,word 文件,excel 文件原理都一样。可以写一个 buil

3、d 函数,提供几个参数:标题 title, 路径filter,扩展名 defExt。这样创建文件时,可以根据标题,路径,扩展名的不同调用 build 函数,达到不同功能的目的在 build 函数体中使用 CFileDialog 定义一个对象来创建文件。复制文件夹; 3第一步:复制文件夹可以在一个对话框中完成,这样必然需要添加一个类 CCopyDlg。第二步:在该对话框上设置两个按钮,一个按钮来选择源文3件夹,保存源文件路径;一个按钮来选择目标文件夹,保存目标文件路径。选择路径的方法可以与步骤 的方法相同。 1第三步:重写确定消息应用程序来实现从一个目录复制到另一个目录的功能(copyFiles

4、)。下面是 copyFiles 函数的实现原理:首先打开指定的文件夹进行搜索,再利用一个 while 循环,从当前目录搜索文件,判断搜索到的是不是“.“和“.“目录,如果是文件夹的话,进行递归;如果是文件,进行复制。复制文件; 4复制文件跟复制文件夹一样也需要创建一个对话框,添加一个类。同理也在对话框上添加两个按钮,分别接收源路径,和目标路径。不过接收的方法需要通过 CFileDialog 选择对话框,而不能再和 一样啦。复制文件,vc 中有已有的函数 CopyFile。 1参数是两个复制的路径。删除文件夹 5在删除文件夹之前,首先要删除文件夹下的所有文件,再删除文件夹。该功能的实现也是利用递

5、归,先判断文件夹下是否有文件,若有,则删除,没有则删除文件夹,返回。删除文件 6定义一个类 CMyFileDialog 继承 CFileDialog 而来,重写OnInitDialog 函数来设置对话框中按钮的文本。创建一个 CMyFileDialog 对象,在删除文件对话框中,选择想要删除的文件,调用 DeleteFile 函数进行文件的删除。退出程序 7设置一个退出子菜单,发送一个 WM_CLOSE 消息,关闭程序退出。4三、数据结构和流程图该程序没有使用到复杂的数据结构,是基于 MFC AppWizard应用程序。主流程图:开始选择子菜单创建 复制 删除 退出选择菜单项文件夹T X T

6、W O R D E X C E L消息处理程序消息处理程序消息处理程序消息处理程序结束为使流程图简单些,将创建,复制,删除放一起,用“”字符连接起来,代表“或”的意5选择文件夹路径的流程图:开始U p d a t e D a t a ( T R U E )初始化结构 b ip i d l = = N U L L结束Y! S H G e t P a t h F r o m I D L i s tNYU p d a t e D a t a ( F A L S E )m _ s t r P a t h = s z D i rN6四、源程序(1)定制一个菜单,添加 5 个子菜单,并分别设置它们的Pop

7、up,包括:创建(true)、复制(true)、删除(true)、帮助、退出(false)。在子菜单中添加它们的菜单项。如下所示:创建:文件夹,TXT,WORD,EXCEL复制:文件夹,TXT,WORD,EXCEL删除:文件夹,TXT,WORD,EXCEL帮助:关于 DMS(char szDirMAX_PATH;BROWSEINFO bi;ITEMIDLIST *pidl;bi.hwndOwner = this-m_hWnd;bi.pidlRoot = NULL;bi.pszDisplayName = LPWSTR(szDir);bi.lpszTitle = TEXT(“新建文件夹“);bi.

8、ulFlags = BIF_EDITBOX | BIF_VALIDATE | BIF_NEWDIALOGSTYLE ;bi.lpfn = NULL;bi.lParam = 0;bi.iImage = 0;pidl = SHBrowseForFolder(if(pidl = NULL) return;if(!SHGetPathFromIDList(LPCITEMIDLIST(pidl), LPWSTR(szDir) return;elsem_strPath = szDir;UpdateData(FALSE);7(3)创建文件的函数void CMainFrame:build(CString tit

9、le, 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()/创建一个T

10、xt文档build(TEXT(“新建Txt文档“),TEXT(“TextFiles(*.txt)0*.txt0“),TEXT(“txt“);创建 word 文档:void CMainFrame:OnBuildWord()/创建一个Word文档build(TEXT(“新建Word文档“),TEXT(“Text Files(*.doc)0*.doc0“),TEXT(“doc“);创建 excel 工作表:void CMainFrame:OnBuildExcel()/创建一个Excel工作表build(TEXT(“新建Excel工作表“),TEXT(“Text Files(*.xls)0*.xls0

11、“),TEXT(“xls“);创建 txt、word、excel 都是调用 build 函数。(4)复制文件夹8添加一个类:CCopyDlg;在对话框上添加两个按钮, “选择源文件夹” , “选择目标文件夹” ;选择路径的函数:CString CCopyDlg:selectPath(CString path)/选择路径UpdateData(TRUE);char szDirMAX_PATH;CString str;BROWSEINFO bi;ITEMIDLIST *pidl;bi.hwndOwner = this-m_hWnd;bi.pidlRoot = NULL;bi.pszDisplayNa

12、me = LPTSTR (szDir);bi.lpszTitle = path;bi.ulFlags = BIF_EDITBOX | BIF_VALIDATE;bi.lpfn = NULL;bi.lParam = 0;bi.iImage = 0;pidl = SHBrowseForFolder(if(pidl = NULL) return CString();if(!SHGetPathFromIDList(pidl, LPTSTR (szDir) return CString();else str = szDir;UpdateData(FALSE);return str;分别对这两个按钮进行响

13、应:void CCopyDlg:OnBnClickedButton1()/获得源文件夹的路径m_strBgnPath=selectPath(TEXT(“选择源文件夹“);9void CCopyDlg:OnBnClickedButton2()/获得目标文件夹的路径m_strEndPath=selectPath(TEXT(“选择目标文件夹“);再添加一个复制函数:BOOL copyFiles(CString strSrcPath, CString strDstPath) / 创建目标文件夹CreateDirectory(strDstPath,NULL);CFileFind finder;/ 打开指

14、定的文件夹进行搜索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(!find

15、er.IsDots()/ 判断搜索到的目录是否是文件夹if(finder.IsDirectory()/ 如果是文件夹的话,进行递归if(!copyFiles(strSrc, strDst) return false;else/ 如果是文件,进行复制if(!CopyFile(strSrc, strDst, FALSE)return false;10 return true;对确定按钮的消息响应函数重写:void CCopyDlg:OnBnClickedOk()copyFiles(m_strBgnPath,m_strEndPath);OnOK();最后对菜单项:复制文件夹的响应:void CMai

16、nFrame: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文件“);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。