个人电脑资料管理_第1页
个人电脑资料管理_第2页
个人电脑资料管理_第3页
个人电脑资料管理_第4页
个人电脑资料管理_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象技术课程设计题目:个人电脑资料管理系统专业:计算机科学与技术学号:姓名:指导老师:完成日期:2016.5.28TOC o 1-5 h z1刖百1 HYPERLINK l bookmark4 2需求分析12.1要求12.2任务1 HYPERLINK l bookmark6 2.3运行环境1 HYPERLINK l bookmark8 2.4开发工具1 HYPERLINK l bookmark10 3系统流程图2如图3所示。2 HYPERLINK l bookmark12 4编码与实现24.1分析24.2具体代码实现5 HYPERLINK l bookmark16 5课程设计总结23 HY

2、PERLINK l bookmark18 参考文献241前言该程序用来管理个人电脑资料。首先输入用户的身份:游客可以浏览、查询资料;管理员可以对资料进行添加、修改、删除的操作,但是需要输入正确的密码才可以进入管理员模式。浏览资料时,文档已经按照类型整理好,并统计了大小及数量。2需求分析2.1要求(1)用C+语言实现程序设计;(2)画出程序流程图;(3)编写主函数大概流程;(4)编写系统功能模块;(5)完善界面,程序标注释。2任务(1)文档按照类型(txt、ppt、pdf、dochtmlxml、图像、其他)的分类整理功能,增加文档分类类别功能;(2)可以浏览和查询资料;(3)添加、删除、修改资料

3、的功能;(4)用户的添加、删除、权限设置;(5)用户登陆、使用的权限设置功能;(6)统计各类文档资料的功能,如数量、大小等3运行环境WINDOWS2000/XP系统vs2010编译环境2.4开发工具C+语言 3系统流程图如图3.1所示。开始修改文件名删除文件结束图3系统流程图4编码与实现分析在程序代码中,采用了结构化与面向对象两种解决问题方法。结构化的思想主要应用在划分功能模块上,而面向对象的思想主要应用在把所有的属性和方法封装起来,以备各模块的调用,这样做的目的是为了让整个程序的结构清晰、体系完整,便于维护。C+提供的文件输入输出流的功能比较通用,所以在这个文件管理系统下,需要将C+中所提供

4、的输入输出流的功能进行改造,隐藏掉一些不需要在这个文件管理系统中使用的功能,以适合这个文件管理系统的需要。BaseClass有两个重载构造函数,这样做的目的是为了区分是哪个派生类使用的,方便管理。而且所有的打开方式均为二进制形式,目的是不破坏源文件。置标志位目的是依据使用的构造函数来进行析构。为了使程序的结构层次清晰,将各种操作封装到一个FunClass(操作类)中,方便main函数进行调用。CreatFile函数是用来在操作目录下创建一个新文件,可以自定类型。关键语句:FileOperatorOuta(k);if(a.ofile)returntrue;returnfalse;用传入的参数(s

5、tring类的一个对象,用于存放需要创建的文件名)来构造一个FileOperatorOut的对象(上面已经介绍过FileOperatorOut类)。OpenFile函数是用来在操作目录下获取一个文件,并显示其中的信息(一般用于查看txt、log等文件)。关键语句:FileOperatorlna(true,k);if(a.ifile)couta.readfile()endl;returntrue;)elsereturnfalse;用传入的参数(string类的一个对象,用于存放需要打开的文件名)来构造一个FileOperatorln的对象如果构造成功,则读取其中的内容显示到屏幕,否则返回fals

6、eoWritelnFile函数用来向操作目录下的某个文件写入信息。关键语句:stringt;FileOperatorOuta(k);cout请输入需要写入的内容endl;getline(cin,t);a.WriteFile(t);先用k来构造一个FileOperatorOut的对象,用于先打开磁盘上相应的文件(如果磁盘上没有需要的文件则创建一个),然后用getline函数接受输入的内容,通过FileOperatorOut对象的WriteFile方法写入到相应的文件中去。ReName函数用于将操作目录下的文件进行重命名操作。关键语句:ifstreamin(k.data();if(in)判断打开是

7、否成功in.close();if(!rename(k.data(),NewName.data()调用rename函数(windows提供,用于函数的重命名)进行重命名操作。在调用rename函数之前一定要先关闭打开的文件(即加上in.close()。4.2具体代码实现#iiiclude#iiiclude#iiiclude#iiiclude#iiiclude#iiiclude#iiicludeusingnamespacestd;/*单个文件的操作*/classBaseClass/基类,制定了创建文件与删除文件的基本操作public:BaseClass(stimg&name);BaseClass(

8、boola,stnng&name);virtualBaseClass();关闭文件ofstieamofile;ifstreamifile;private:mtflag;BaseClass:BaseClass(stnng&name):flag(l)构造函数oflle.open(name.data(),ios_base二out|ios_base二binary);打开文件输出BaseClass:BaseClass(boola,suing&name):flag(2)构造函数重载(ifUe.open(namedata0,ios_base:in|ios_base:binaiy);打开文件输入)BaseCl

9、ass二BaseClass()析构函数(if(l=flag)ofile.closeQ;ifile.closeO;)classFileOpeiatorIn:publicBaseClass文件输入类的公有继承(public:FileOpeiatorIn(boola,string&name):BaseClass(a5name)/JT开一个文件inlinestungleadfile。;/读取TXT文件中的内容-FileOperatoihi()piivate:stungIme;mlinestnngFileOpeiatoiIn二readfile。/读取函数定义ietuinline;)classFileOp

10、eiatoiOut:publicBaseClass/文件输出类公有继承(public:FileOperatoiOut(string&name):BaseClass(name);创建一个文件uilinevoidWnteFile(stnng&content);将content写入文件中-FileOperatorOut();uilinevoidFileOperatorOut:WriteFile(string&content)文件写入函数定义(ofile.write(content.data(),content.lengthO);)classFunClass操作类(public:voidMenu();

11、inlineboolCreatFile(stiing&k)const;创建文件uilineboolOpeiiFile(stnng&k)const;打开文件inlinevoidWriteLiFile(stiing&k)const;写入文件uilinevoidReName(stiing&k,stung&NewName)const;重命名uilinebooldeletefile(stnng&k)const;/删除文件mtPasswoid()const;/密码权限mtfne_scan()const;分类mtfile_scanl()const;mtfile_scaii2()const;mtfile_sc

12、an3()const;mtfile_scan4()const;voidFunClass:Menu。/菜单函数(coutendl;coutendl;coutnendl;欢迎使用!请输入您的身份!coutendl;coutendl;coutn“w”*”endlcout“w”*”endlcoutn“vv”*”endlcoutn“w”*”endlcoutn“w”*”endlcoutn1yV”*2.管理员*“wendlcoutn”八*“vendlcoutn”八*“vendlcoutn”v“*0.退*“wendlcoutn”八*“vendlcoutn”八*“vendlmtFunClass二Passwoid

13、()const/密码函数定义coutupleasemputyouipassword:nendl;strmgsyspw=abc”;定义密码mtm=0;while(m3)strmgIme;cin.clearO;cin.syncQ;getline(cinjine);获取用户输入密码if(syspw?=line) coutvv”密码错误,请重新输入!”Wendi;m+;if(ni=3)coutw”连续3次输入错误,退出!vvendl;exit(O);)else(coutw”密码正确!nendl;break;)ietuni0;)mtFunClass:file_scanQconst/txt扫描函数cout

14、”txt文件:Hendl;constchai*to_seaich=E:c十十课程设计定义指向文件的指针longhandle;句柄mtcount=0;计数stmct_fiiiddata_tfilemfo;定义一个_flnddata_t的结构体handle=_findfirst(to_seafch,&fileinfo);/i回句柄if(-l=handle)retuni-1;(“v大小:vvfllemfo.sizevv字节vv)vvendl;count+;while(!_findnext(handle,&filemfb)(count+;coutvvfileinfo

15、.namev(v大小Jyvflleinfo.sizew字节“vv)“vvendl;coutvv”共有ycountw个“vvendl;_findclose(handle);ietuni0;)intFunClass:file_scanl()const/ppt扫描函数(cout”ppt文件:”Wendi;constchar*to_search=nE:c十十课程设计*.ppt;longhandle;mtcount=0;stmctfiiiddatatfileinfb;handle=_findfirst(to_seafch,&fileinfb);if(-l=handle)fetxini-1;coutfil

16、v(vv大小:vvfllemfo.sizevv字节v)vendl;count+;while(!_findnext(liandle,&fileinfb)(count+;v(v大小:“vvflleinfo.sizevv字节“vv)“vvendl;coutvv”共有ycountw个“endl;_findclose(handle);ietuni0;)mtFunClass:file_scaii2()const/pdf扫描函数(coutvpdf文件:Hendl;constchai*to_seaich=E:c十十课程设计W.pdP;longhandl

17、e;mtcount=0;stnictfiiiddatatfileinfb;handle=_findfirst(to_seafch,&fileinfb);if(-l=handle)fetxini-1;vv(“vv大小:vvfilemfo.sizevv字节)vvendl;count+;while(!_findnext(liandle,&fileinfb)(count+;v(v大小:yvflleinfo.sizevv字节“vv)“vendl;coutvv”共有ycountw个“vvendl;_findclose(handle)

18、;ietuni0;)mtFunClass:file_scan3()const/doc扫描函数(coutudoc文件:Mendl;constchar*to_seaich=*E:c十十课程设计*.doc”;longhandle;mtcount=0;stmctfiiiddatatfileinfb;handle=_findfirst(to_seafch,&fileinfb);if(-l=handle)retuni-1;(大小:vvfllemfo.sizevv字节vv)vvendl;count+;while(!_findnext(liandle,&fileinfb)c

19、ount+;endl;coutvv”共有ycountw个“endl;_findclose(handle);ietuni0;)mtFunClass二file_scan40const/html扫描函数coutnhtml文件:”wendl;constchai*to_seaich=E:c十十课程设计*.html”;longhandle;mtcount=0;stnictfiiiddatatfileinfb;handle=_findfirst(to_seafch,&fileinfb);if(-l=handle)ietuni-1;vv(“v

20、大小:vvfllemfo.sizevv字节v)vvendl;count+;while(!_findnext(handle,&filemfb)count十十;w(”vv大小:vvfileinfo.sizew字节w)wendl;)coutvv共有vvcountw”个“vvendl;_findclose(handle);ietuni0;)uilineboolFunClass:CreatFile(stiing&k)const/创建文件(FileOpeiatorOuta(k);定义一个FileOperatorOut对象if(a.ofile)ietunitine;els

21、eietunifalse;)mlineboolFunClass:OpeiiFile(stnng&k)const打开文件(FileOpeiatorlna(tme,k);定义一个FileOperatorln对象if(a.ifile)(couta.readfile()endl;ietunitine;elseretunifalse;)mlinevoidFunClass:WnteLiFile(stimg&k)const写入文件(stungt;FileOpeiatorOuta(k);coutvv”请输入需要写入的内容:endl;getline(cinj);a.WnteFile(t);)mlinevoidF

22、unClass二ReName(stimg&k,stnng&NewName)const重命名文件(ifstreamin(k.data();if(m)如果文件存在(m.closeQ;if(!tename(k.data(),NewNaiiie.daNO)/删除成功coutk,r成功重命名为:“vvNewNameendl;else无法重命名:文件打开或无权限执行重命名(cout文件无法重命名(可能原因如下):“Wendi;coutMtnn1.HNewName,r己存在”endl;coutMtnn2.HNewNamen正在使用,未关闭Jvvendl;coutvv%”“3.你没有权限重命名此文件Jendl

23、;)else文件不存在coutkn不存在,无法重命名.nendl;)uilineboolFunClass二deleteflle(stiing&k)const删除文件if(DeleteFileA(k.dataO)ietiirntine;elseretunifalse;)mtmaui()stungcommand,opera;FunClassfun;while(l)(fiui.MenuO;mtb;cinb;switch(b) casel:system(uclsn);while(l)coutendl;coutendl;cout*wendcout*wendcout*1.文件分类*vendl;visito

24、icout*2.打开文件*Hwend1cout*3.返回主菜单*Hwend1cout*请输入选项:*Hwend1cout*wendcout*wendliltc;cmc;switch(c) ,rendl;coutH*“vendlcoutH*“vendlftin.file_scaii20;coutH*“vendlftin.file_scan3();coutH*“vendlftin.file_scan4();coutH*“vendlbreak;case2:cout”请输入打开文件名:endl;cmopeia,cm.sync();fiui.OpenFile(opera)?coutvv打开成功!”end

25、l:cout”打开失败!break;case3:mam();break;default:coutv选择错误请重新选择!vvendl:break;case2:system(,clsn);fiin.Password();while(l)coutendl;coutendl;cout*wendcout*wendcout*Hwendl;admincout*Hwend1cout*Hwend1cout*Hwend1cout*Hwend1cout*.新建文件.写入文件.修改文件名.删除文件.返回主菜单请输入选项:*Hwend1cout*wendcout*vVendlinta;cina;switcli(a)(coutvv”请输入新建文件名:veudl;cuiopera,cm.sync();fbn.CieatFile(opeia)?coutv”仓ij建成功!,endl:coutn创建失败!“wendl;break;)(coutw”请输入文件名:“Wendi;cuiopera,cm.sync();fbn.WnteInFile(ope

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论