1、面向对象程序设计与 C+课程设计题目:文件管理系统院、 系: 计算机信息与技术学科专业: 计算机科学与技术学 号: 00000000 学生姓名: 徐飞 指导教师: 2012 年 12 月 21 日目录一 目的 .2二 总体介绍 .2三 详细介绍 .2四 功能测试及运行效果 .2五 设计体会及小结 .2六 参考文献 .2七 附录-源代码 .2中文摘要本课程设计将实现一个文件管理系统。这个文件管理系统能实现对文件增、删、查、改等基本的文件的操作。本程序一改普通的 control console 的菜单界面,继而改用类似DOS 系统下的命令行界面。这样做的目的是为了提高用户使用程序的效率。在课程设计
2、中,采用了 VC6.0。在程序设计中,采用了结构化与面向对象两种解决问题方法。结构化的思想主要应用在划分功能模块上,而面向对象的思想主要应用在把所有的属性和方法封装起来,以备各模块的调用,这样做的目的是为了让整个程序的结构清晰、体系完整,便于维护。西安工业大学北方信息工程学院- 1 -一目的此次课程设计的目的是用 C+程序设计语言编写一个文件管理系统,这个文件管理系统需要实现一下几项目标:角度 目标程序功能创建文件、删除文件、查看文件内容、将内容写入文件、复制并粘贴文件、进入某个目录下进行文件操作、重命名文件、创建目录、删除目录、显示当前文件夹下的文件及目录以及获得帮助。用户 操作简单,更需要
3、简洁。有助于提高工作效率。程序代码 层次、结构清晰,便于扩展功能和维护。程序的整个操作流程类似 DOS 命令行界面,要求所有的操作均在某一目录下进行(我们把此目录叫做“操作目录” ) ,提供进入到其它目录的命令以实现全磁盘的文件管理。西安工业大学北方信息工程学院- 2 -二 总体介绍C+提供的文件输入输出流的功能比较通用,所以在这个文件管理系统下,需要将C+中所提供的输入输出流的功能进行改造,隐藏掉一些不需要在这个文件管理系统中使用的功能,以适合这个文件管理系统的需要。我们先建一个 BaseClass(基类),提供最基本的输入输出流对象,以及提供打开与关闭流的功能方便派生类的“具有层次性的”调
4、用(可结合下图阅读)。同C+中的设计一样,我们用BaseClass派生出FileOperatorIn、FileOperatorOut 两个类,这两个类的基本作用分别是从外部读入文件(二进制形式,这样不会因为格式化的读入而将原始数据破坏)和将需要写入的内容向文件输出(格式同读入)。BaseClass-flag:int+ofile:ofstream+ifile:ifstream+BaseClass(string BaseClass(bool a,string BaseClass 有两个重载构造函数,这样做的目的是为了区分是哪个派生类使用的,方便管理。而且所有的打开方式均为二进制形式,目的是不破坏源
5、文件。置标志位目的是依据使用的构造函数来进行析构。BaseClass 的两个派生类(FileOperatorIn 和 FileOperatorOut):他们的构造函数唯一的的目的就是初始化基类。string FileOperatorIn:readfile()getline(ifile,line,0);return line;FileOperatorOut:WriteFile(string 两个派生类中的输入输出流都是用最基本的 getline 和 write 函数来实现的,因其比较简单,故不做过多解释(具体的细节请参考源代码)。下面具体介绍 FunClass。FunClass+Command(
6、string 西安工业大学北方信息工程学院- 4 -if(a.ofile)return true;return false;用传入的参数(string 类的一个对象,用于存放需要创建的文件名)来构造一个FileOperatorOut 的对象(上面已经介绍过 FileOperatorOut 类)。OpenFile 函数是用来在操作目录下获取一个文件,并显示其中的信息(一般用于查看txt、log 等文件)。关键语句:FileOperatorIn a(true,k);if(a.ifile)cout“;cincommand;switch(fun.Command(command)case 1:cinop
7、era,cin.sync();fun.CreatFile(i+opera)?coutopera,cin.sync();fun.OpenFile(i+opera)?coutopera,cin.sync();fun.WriteInFile(i+opera);coutopera;string temp;cintemp;cin.sync();fun.CopyFile(i+opera,temp)?coutopera,cin.sync();if(fun.Cd(opera)i=opera,i+=;else(coutopera;string NewName;cinNewName,cin.sync();fun.
8、ReName(i+opera,i+NewName);break;case 7:cin.sync();fun.Dir(i);break;case 8:cinopera,cin.sync();fun.CreatDir(i+opera)?coutopera,cin.sync();fun.deletefile(i+opera)?coutopera,cin.sync();fun.deldir(i+opera)?cout“删除失败!“endl:cout“删除成功!“endl;break;default:cout“不是有效的命令!可输入 help 寻求帮助。 “endl;break;return 0;在 m
9、ain 函数中,为了实现 “指令 参数 1 参数 2”这样的类似 dos 的指令格式,巧妙的利用了 cin 读取输入字符的特点遇到空格及读入完毕。这样我们就可以定义两个 string类对象 command 和 opera,其中 command 是用来存放指令的 ,opera 是用来存放参数 1 的(如果还有参数 2 则在 switch 语句中临时申请),他们之间的读入就是利用了 cin 的特点,在读完之后,为了不影响后面的读入,需要用 cin.sync()语句来清空缓冲区。opera 接受的大多数是路径,也可以不输入路径,直接输入需要进行操作的文件名(默认为当前程序运行状态下的目录),为了保证在任意操作目录下都能使用,引入了string 类的对象 i,用来存放操作目录的路径。只需要在给 FunClass 中的操作传参时将参数写成(i+opera)的形式,这样一来,就可以实现对任意目录下的文件进行操作的目的,极大的扩展了 FunClass 中操作的功能。为了指定程序一开始时的操作目录,我们使用了_getcwd(NULL,0)函数,用来获取西安工业大学北方信息工程学院- 7 -当前程序运行时所在的路径,我们用它来作为文件管理系统默认的操作目录。
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。