C課程設計檔案管理系統

2021-03-04 05:18:52 字數 3452 閱讀 9902

《物件導向程式設計與c++》

課程設計

題目:檔案管理系統

院、系:計算機資訊與技術

學科專業:電腦科學與技術

學號: 00000000

學生姓名:徐飛

指導教師:

2023年12月21日

目錄一. 目的 1

二. 總體介紹 2

三. 詳細介紹 3

四. 功能測試及執行效果 7

五. 設計體會及小結 10

六. 參考文獻 11

七. 附錄--源** 12

中文摘要

本課程設計將實現乙個檔案管理系統。這個檔案管理系統能實現對檔案增、刪、查、改等基本的檔案的操作。本程式一改普通的control console的選單介面,繼而改用類似dos系統下的命令列介面。

這樣做的目的是為了提高使用者使用程式的效率。

在課程設計中,採用了vc6.0。在程式設計中,採用了結構化與物件導向兩種解決問題方法。

結構化的思想主要應用在劃分功能模組上,而物件導向的思想主要應用在把所有的屬性和方法封裝起來,以備各模組的呼叫,這樣做的目的是為了讓整個程式的結構清晰、體系完整,便於維護。

此次課程設計的目的是用c++程式語言編寫乙個檔案管理系統,這個檔案管理系統需要實現一下幾項目標:

程式的整個操作流程類似dos命令列介面,要求所有的操作均在某一目錄下進行(我們把此目錄叫做「操作目錄」),提供進入到其它目錄的命令以實現全磁碟的檔案管理。

c++提供的檔案輸入輸出流的功能比較通用,所以在這個檔案管理系統下,需要將c++中所提供的輸入輸出流的功能進行改造,隱藏掉一些不需要在這個檔案管理系統中使用的功能,以適合這個檔案管理系統的需要。

我們先建乙個baseclass(基類),提供最基本的輸入輸出流物件,以及提供開啟與關閉流的功能方便派生類的「具有層次性的」呼叫(可結合下圖閱讀)。

同c++中的設計一樣,我們用baseclass派生出fileoperatorin、fileoperatorout兩個類,這兩個類的基本作用分別是從外部讀入檔案(二進位制形式,這樣不會因為格式化的讀入而將原始資料破壞)和將需要寫入的內容向檔案輸出(格式同讀入)。

有了fileoperatorin和fileoperatorout兩個檔案類後,我們可以結合各種c++或windows給我們提供的檔案操作函式來進行磁碟上的檔案管理了。為了使程式的結構層次清晰,我們將各種操作封裝到乙個funclass(操作類)中,方便main函式進行呼叫。

整個架構圖如下:

現在,我們依照總體介紹裡的框架進行詳細敘述。

baseclass的實現:

baseclass(string &name):flag(1)

baseclass(boola,string&name):flag(2)

baseclass有兩個過載建構函式,這樣做的目的是為了區分是哪個派生類使用的,方便管理。而且所有的開啟方式均為二進位制形式,目的是不破壞原始檔。置標誌位目的是依據使用的建構函式來進行析構。

baseclass的兩個派生類(fileoperatorin和fileoperatorout):他們的建構函式唯一的的目的就是初始化基類。

stringfileoperatorin::readfile()

兩個派生類中的輸入輸出流都是用最基本的getline和write函式來實現的,因其比較簡單,故不做過多解釋(具體的細節請參考源**)。

下面具體介紹funclass。

***mand函式是用來解釋輸入的指令供主函式中的switch判斷之用。因其**簡單,故不解釋。

creatfile函式是用來在操作目錄下建立乙個新檔案,可以自定型別。關鍵語句:

fileoperatorouta(k);

if(a.ofile)

return true;

return false;

用傳入的引數(string類的乙個物件,用於存放需要建立的檔名)來構造乙個fileoperatorout的物件(上面已經介紹過fileoperatorout類)。

openfile函式是用來在操作目錄下獲取乙個檔案,並顯示其中的資訊(一般用於檢視txt、log等檔案)。關鍵語句:

fileoperatorina(true,k);

if(a.ifile)

else return false;

用傳入的引數(string類的乙個物件,用於存放需要開啟的檔名)來構造乙個fileoperatorin的物件如果構造成功,則讀取其中的內容顯示到螢幕,否則返回false。

writeinfile函式用來向操作目錄下的某個檔案寫入資訊。關鍵語句:

string t;

fileoperatorouta(k);

cout<<"請輸入需要寫入的內容"< getline(cin,t);

a.writefile(t);

先用k來構造乙個fileoperatorout的物件,用於先開啟磁碟上相應的檔案(如果磁碟上沒有需要的檔案則建立乙個),然後用getline函式接受輸入的內容,通過fileoperatorout物件的writefile方法寫入到相應的檔案中去。

copyfile函式用於將操作目錄下的某個檔案複製並貼上到任意目錄下。第乙個引數為操作目錄下的檔名,第二個引數是需要複製到的目錄,必須填入完整路徑(不填預設為程式執行目錄)。關鍵語句:

out.ofile<其中out和in分別為fileoperatorout和fileoperatorin類的物件,用in開啟乙個需要被複製的檔案然後經過重定向載入到輸出流物件中向目標磁碟輸出,實現複製的功能。而且out和in物件對檔案的開啟方式均為二進位制形式,所以不會破壞檔案的源格式,繼而保障複製的可靠性。

rename函式用於將操作目錄下的檔案進行重新命名操作。關鍵語句:

ifstream in(k.data());

if(in判斷開啟是否成功

in.close();

if(!rename(k.data(),newname.data())

呼叫rename函式(windows提供,用於函式的重新命名)進行重新命名操作。在呼叫rename函式之前一定要先關閉開啟的檔案(即加上in.close())。

dir函式用於顯示操作目錄下的檔案與目錄。關鍵語句:

k.insert(k.length

_finddata_t file;

long lf;

if((lf = _findfirst(k.data(), &file))==-1l)

cout<<"檔案沒有找到!\n";

else

}_findclose(lf);

k.insert(k.length(),"*.

*")語句用於將k中存放的路徑後面加上*.*萬用字元,便於_findfirst中查詢,_findfirst返回第乙個唯一的long型的供_findnext查詢用的控制代碼,如果返回為-1l(l表示long型),表示乙個檔案也沒有。如果找到了,用_findnext去找下乙個檔案,找到返回0,否則返回-1。

他們的第二個引數均為struct_finddata_t *型別。

圖書管理系統課程設計C課程設計

目錄一 需求分析 2 二 概要設計 2 2.1 設計思想 2 2.2執行平台及開發環境 2 2.3 資料結構 3 2.4 系統結構圖 3 三 詳細設計 3 3.1 主函式 3 3.2 圖書基本資訊輸入 4 3.3查詢模組 5 3.4 刪除模組 6 3.5 辦理借書手續模組 7 3.6 辦理還書手續模...

C課程設計餐飲管理系統

鄭州科技學院 c 課程設計 設計 題目 餐飲管理系統 所在院 資訊工程學院 專業班級 10電腦科學與技術2班 學生姓名 簡奇 學號 201015048 指導教師 王玉萍 2013年1月8日 第一部分引言2 1.1課題意義3 1.2課題內容4 第二部分需求分析4 2.1需求分析5 2.2系統結構5 2...

C車輛管理系統課程設計報告

重慶科技學院 物件導向程式設計 課程設計報告 學院 電氣與資訊工程學院 專業班級 學生姓名學號 設計地點 單位 計算機自主學習中心 設計題目車輛管理系統設計 完成日期 2013 年1月18日 指導教師評語 成績 五級記分制 指導教師 簽字 摘要隨著現代社會的不斷發展,交通的便利,車輛的數量在不斷的增...