個人電腦資料管理_第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

提交評論