版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第一部分概述1.1 系統(tǒng)開發(fā)背景1.1.1 文件系統(tǒng)的意義在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,要用到大量的程序和數(shù)據(jù),由于內(nèi)存容量有限,且不能長期保存,故而平時(shí)總是把他們以文件的形式存放在外存中,需要時(shí)可隨時(shí)將它們調(diào)入內(nèi)存。如果由用戶直接管理外存上的文件,不僅要求用戶熟悉外存特性,還必須能保持?jǐn)?shù)據(jù)的安全性和一直性。顯然,這是用戶所不能勝任的工作。取而代之的,便是在操作系統(tǒng)中增加了文件管理功能,即構(gòu)成一個(gè)文件系統(tǒng),負(fù)責(zé)管理在外存上的文件,并把對文件的存取,共享和保護(hù)等手段提供給用戶。這不僅方便了用戶,保證了文件的安全性,還有效的提高了系統(tǒng)資源利用率。1.1.2 開發(fā)背景( 1 )所設(shè)計(jì)軟件名稱:文件管理系統(tǒng)(
2、2)本軟件的提出者:( 3)本軟件的設(shè)計(jì)者:1.1.3 軟件開發(fā)工具( 1 ) MICROSOFT WINDOWS 2000( 2) BORLAND C+ BUILDER 6.01.1.4 軟件開發(fā)技術(shù)( 1 ) C+程序設(shè)計(jì)( 2)軟件工程開發(fā)過程各階段分析( 3)1.2 系統(tǒng)功能介紹及目標(biāo)1.2.1 系統(tǒng)實(shí)現(xiàn)功能( 1 )多用戶、多級目錄(注:本設(shè)計(jì)最多10 個(gè)用戶,實(shí)現(xiàn)3 級目錄 ) 。 設(shè)置目錄MFD 和用戶文件目錄UFD ,另外還為打開文件設(shè)置了運(yùn)行文件目錄AFD 。( 2)至少有10 個(gè)實(shí)用的文件操作命令(注:本設(shè)計(jì)可實(shí)現(xiàn)創(chuàng)建和刪除目錄,創(chuàng)建和刪除文件,以及打開和關(guān)閉文件等功能)
3、。( 3)設(shè)計(jì)一個(gè)既簡單又實(shí)用的用戶界面。第二部分需求分析2.1 項(xiàng)目概述及數(shù)據(jù)流圖2.1.1 系統(tǒng)的一般概述模擬文件管理的工作過程。實(shí)現(xiàn)多用戶文件管理,允許2.1.2 系統(tǒng)的功能數(shù)據(jù)流圖第 24 頁系統(tǒng)二層數(shù)據(jù)流圖2.2 功能需求分析2.2.1 功能劃分用戶管理功能身份驗(yàn)證功能目錄管理功能文件管理功能文件屬性管理功能幫助功能2.2.2 功能描述( 1 )用戶管理功能允許用戶進(jìn)行注冊,管理不同用戶。允許注銷用戶,即刪除該用戶。( 2)身份驗(yàn)證功能用戶登陸,系統(tǒng)驗(yàn)證其合法性。( 3)目錄管理功能目錄管理,進(jìn)行創(chuàng)建,刪除 .等操作。( 4)文件管理功能管理文件,可進(jìn)行創(chuàng)建文件,刪除,打開,關(guān)閉,讀
4、,寫等操作。( 5)文件屬性管理功能設(shè)置文件屬性,如讀寫文件,只讀文件,可寫文件。( 6)幫助功能為用戶提供使用幫助。1.1.1 外部接口需求分析2.3.1 用戶界面采用 WINDOWS 的通用圖形界面,對用戶友好,且對鼠標(biāo)和鍵盤提供幫助,界面的設(shè)計(jì)遵循以下規(guī)則:a. 界面要具有一致性,界面規(guī)范遵循WINDOWS 軟件的界面規(guī)范;b. 提供簡單的錯(cuò)誤處理c. 提供信息反饋,用信息提示用戶當(dāng)前用戶軟件運(yùn)行狀態(tài),軟件界面元件的功能;d. 操作可逆,其動(dòng)作可以是單個(gè)的操作,或是一個(gè)相對獨(dú)立的操作序列;e. 顯示啟動(dòng)畫面,畫面簡潔明快,富有時(shí)代氣息,不太過花哨;f. 遵循國家關(guān)于計(jì)算機(jī)詞匯的標(biāo)準(zhǔn),用詞
5、準(zhǔn)確,無二義,圖形意義明朗;2.3.2 接口需求2.3.3 1 )硬件接口支持一般的P或更高檔微機(jī),筆記本電腦。2.3.4 2)軟件接口運(yùn)行于WINDOWS 95/98/ME/2000/NT/XP,且具有WIN32 API 的操作系統(tǒng)上。2.3.5 3)故障處理正常使用時(shí)不應(yīng)出錯(cuò),就算出現(xiàn)出錯(cuò),也應(yīng)該保證數(shù)據(jù)庫無損。1.1.2 性能需求及軟件屬性需求2.4.1 性能需求( 1 )數(shù)據(jù)精確性( 2)時(shí)間特性:對一般操作的響應(yīng)時(shí)間不超過1-2 秒。( 3)適應(yīng)性:滿足用戶使用需求,對運(yùn)行環(huán)境應(yīng)不存在困難。2.4.2 軟件屬性要求( 1 )正確性:所開發(fā)軟件達(dá)到預(yù)期目標(biāo),運(yùn)行不出錯(cuò)。( 2)可靠性:
6、不應(yīng)出現(xiàn)故障。( 3)完整性:在出現(xiàn)錯(cuò)誤情況下,保證數(shù)據(jù)不丟失。( 4)易用性:幾面使用當(dāng)前流行規(guī)范,方便用戶。( 5)安全性:提供身份驗(yàn)證,保證安全。( 6)其他特性:可維護(hù)性,可理解性,可測試性等。第三部分概要設(shè)計(jì)3.1 總體設(shè)計(jì)3.1.1 處理流程系統(tǒng)運(yùn)行的處理流程如下:( 1 )系統(tǒng)啟動(dòng)時(shí),激活身份驗(yàn)證模塊。A. 若用戶不存在,則進(jìn)行注冊。B. 若用戶已存在,則登錄系統(tǒng)。( 2)通過身份驗(yàn)證后,系統(tǒng)初始化。根據(jù)系統(tǒng)配置將數(shù)據(jù)導(dǎo)入。( 3)進(jìn)入消息循環(huán)狀態(tài),通過事件驅(qū)動(dòng)機(jī)制激活功能模塊,并執(zhí)行指定模塊。( 4)各功能執(zhí)行完畢后,重新進(jìn)入消息循環(huán)狀態(tài)。( 5)由關(guān)閉事件激活關(guān)閉功能,退出系
7、統(tǒng)。3.1.2 總體結(jié)構(gòu)和模塊外部設(shè)計(jì)A. 總體結(jié)構(gòu)圖(見2 頁)B. 模塊設(shè)計(jì)表模塊編號模塊名稱備注M1.1系統(tǒng)初始化模塊系統(tǒng)初始化M1.2關(guān)閉系統(tǒng)模塊關(guān)閉并退出系統(tǒng)M1.3身份驗(yàn)證模塊驗(yàn)證用戶身份M1.4用戶管理模塊管理系統(tǒng)用戶M2目錄管理模塊創(chuàng)建,刪除目錄M3文件管理模塊創(chuàng)建,刪除文件M4文件屬性管理模塊修改文件屬性M5幫助模塊增加,刪除,修改記錄3.2 結(jié)構(gòu)設(shè)計(jì)3.2.1 控件的關(guān)聯(lián)void _fastcall TfrmMain:mmuExitClick(TObject *Sender) 關(guān)聯(lián)退出事件; void _fastcall TfrmMain:FormCreate(TObjec
8、t *Sender) 主窗體的創(chuàng)建生成;void _fastcall TfrmMain:mmuRegClick(TObject *Sender) 用戶注冊的關(guān)聯(lián);void _fastcall TfrmMain:mmuLogClick(TObject *Sender) 用戶登陸關(guān)聯(lián);void _fastcall TfrmMain:PageControl1Change(TObject *Sender) 用戶登陸頁;void _fastcall TfrmMain:btnRegClick(TObject *Sender) 對注冊單擊事件的實(shí)現(xiàn);void _fastcall TfrmMain:btnLo
9、gClick(TObject *Sender) 對用戶登陸單擊事件的實(shí)現(xiàn);void _fastcall TfrmMain:mmuCreateDirClick(TObject *Sender)目錄創(chuàng)建的關(guān)聯(lián);void _fastcall TfrmMain:mmuDelDirClick(TObject *Sender)刪除目錄的關(guān)聯(lián);void _fastcall TfrmMain:update()返回上層目錄;void _fastcall TfrmMain:DisplayFile()顯示文件;void _fastcall TfrmMain:DisplayDir()顯示目錄;void _fastca
10、ll TfrmMain:ListView1DblClick(TObject *Sender) 列表顯示雙擊的實(shí)現(xiàn);void _fastcall TfrmMain:pmuDelClick(TObject *Sender)目錄搜索刪除然后修改列表;3.2.2 存儲結(jié)構(gòu)在 secret.txt 文件中,unum為當(dāng)前用戶數(shù),占2 個(gè)字符;每個(gè)用戶的用戶名和用戶密碼各用 10 個(gè)字符來表示。在user1.txt 文件, dnum為該用戶下的目錄數(shù);fnum 為該用戶下的文件數(shù);dir1 dir10 為該用戶下的目錄,每個(gè)用戶名占10個(gè)字符,剩下的5 個(gè)字符用以存放這個(gè)目錄下一級的文件數(shù);sfile1
11、sfile10 為 dir1 下的文件,每個(gè)文件名用 10 個(gè)字符,文件類型用10 個(gè)字符;sfile11 sfile20 為 dir2 下的文件,sfile21 sfile30 為 dir3 下的文件,依此類推。3.2.3 程序的主要結(jié)構(gòu)1)用戶登陸FILE *fp=fopen(); / 分配空間查找用戶名,如不存在,需先注冊;用戶名正確,如果密碼錯(cuò)誤 顯示提示消息for()/if() /if() /else 進(jìn)入該用戶目錄;/fclose();/關(guān)閉文件流( 2)目錄的創(chuàng)建和刪除if() /c_d是標(biāo)識是創(chuàng)建還是刪除目錄;for()/不允許同名目錄的存在; if () /如果目錄已經(jīng)存在,
12、顯示提示消息else /創(chuàng)建文件目錄else if()/如果是刪除for()/查找已有目錄;/如果目錄不存在,刪除操作失??;for()if()/如果目錄不存在改變標(biāo)識if() /目錄不存在顯示提示消息else /查找到文件夾刪除它( 3)文件的創(chuàng)建和刪除if ()/sub是標(biāo)示是創(chuàng)建一級還是二級文件FILE *fp4=fopen();/查找已有文件;for()/不允許同名文件的存在; if() /如果存在提示else /由此創(chuàng)建新文件;fwrite();/寫如文件流fclose();/關(guān)閉文件流刪除文件與此類似。第四部分詳細(xì)設(shè)計(jì)1. 頭文件和全局變量的定義/ 頭文件/#include <
13、vcl.h>#include "main.h"#include <stdio.h>/#pragma hdrstop#pragma package(smart_init)#pragma resource "*.dfm"TfrmMain *frmMain;/ 全局變量定義/int unum;/用戶號int NO=1;/用戶idint dnum;/目錄號int fnum;/文件號int sfnum;int c_d=0;int sub=0;int top;2. 用戶的注冊和登陸void _fastcall TfrmMain:btnRegClic
14、k(TObject *Sender)N2->Enabled=true;N5->Enabled=true;if(unum=10)ShowMessage("用戶人數(shù)己滿!");elseFILE *fp=fopen("secret.txt","r+");int j=unum;int log=0;char buf10;AnsiString tmp1,tmp2;tmp2=Trim(edtName->Text);for(;j>0;j-) /名字搜索fseek(fp,100L*j,0);for(int i=0;i<10
15、;i+)bufi='0'fread(buf,sizeof(char),tmp2.Length(),fp);tmp1=AnsiString(buf);if(tmp1=tmp2)log=1;if(log=1)ShowMessage("用戶名已經(jīng)存在!");elsetmp1=Trim(edtName->Text); / 注冊j=unum+1;fseek(fp,100L*j,0);fwrite(tmp1.c_str(),sizeof(char),tmp1.Length(),fp);tmp1=Trim(edtSec->Text);fseek(fp,100L
16、*j+10,0);fwrite(tmp1.c_str(),sizeof(char),tmp1.Length(),fp); unum+; / 用戶增加 tmp2=compute(unum);fseek(fp,0L,0);fwrite(tmp2.c_str(),sizeof(char),2,fp);/ 進(jìn)入該用戶目錄 NO=unum;dnum=0;fnum=0;TabSheet2->Caption=" 用戶: "+edtName->Text;TabSheet2->TabVisible=true;StatusBar2->Panels->Items1-
17、>Text=edtName->Text;StatusBar2->Panels->Items3->Text=""StatusBar2->Panels->Items5->Text=""StatusBar2->Panels->Items7->Text="" edtSec->Text=""PageControl1->ActivePage=TabSheet2;fclose(fp);3. 文件夾的創(chuàng)建和刪除if(c_d=0) /判斷是創(chuàng)建還是刪除目錄
18、;TListItem *ListItem;char buf10;AnsiString tmp1,tmp2;int log=0;tmp1=compute2(NO);FILE *fp2=fopen(tmp1.c_str(),"r+");tmp1=edtUserName->Text; / 查找已存在的目錄;for(int j=dnum;j>0;j-) /不允許同名目錄的存在;for(int i=0;i<10;i+) bufi='0'fseek(fp2,100L+15*(j-1),0);fread(buf,sizeof(char),tmp1.Len
19、gth(),fp2);tmp2=AnsiString(buf);if(tmp1=tmp2) log=1;if (log=1) ShowMessage(" 目錄已經(jīng)存在!");else ListItem=ListView1->Items->Add(); /由此創(chuàng)建新目錄;ListItem->Caption=edtUserName->Text;ListItem->ImageIndex=0;ListView1->Selected=ListItem;fseek(fp2,100L+15*dnum,0);fwrite(ListItem->Cap
20、tion.c_str(),sizeof(char),ListItem->Caption.Le ngth(),fp2);tmp1=compute(0);fseek(fp2,100L+15*dnum+10,0);fwrite(tmp1.c_str(),sizeof(char),2,fp2);dnum+;tmp1=compute(dnum);fseek(fp2,0L,0);fwrite(tmp1.c_str(),sizeof(char),2,fp2);fclose(fp2);else if(c_d=1)char dir15;AnsiString tmp1,tmp2;int log=0;tmp1
21、=compute2(NO);tmp2=edtUserName->Text;查找已有目錄; 如果目錄不存在,刪除操作失敗;FILE *fp3=fopen(tmp1.c_str(),"r+");for(int j=dnum-1;j>=0;j-) /如果目錄不存在,刪除操作失敗;for(int i=0;i<15;i+) diri='0'fseek(fp3,100L+15*j,0);fread(dir,sizeof(char),tmp2.Length(),fp3);tmp1=AnsiString(dir);if(tmp2=tmp1) log=j+1
22、;!");if(log=0) ShowMessage( else for(int j=1;j<=dnum-log;j+) / fseek(fp3,100L+15*(log+j-1),0);for(int i=0;i<15;i+) diri='0'fread(dir,sizeof(char),15,fp3);fseek(fp3,100L+15*(log+j-2),0);fwrite(dir,sizeof(char),15,fp3);dnum-;tmp1=compute(dnum);fseek(fp3,0L,0);fwrite(tmp1.c_str(),siz
23、eof(char),2,fp3); update();fclose(fp3);4. 文件的創(chuàng)建和刪除if (sub=0) /sub 是標(biāo)示是創(chuàng)建一級還是二級文件;AnsiString tmp1,tmp2;char buf10; int log=0;tmp1=compute2(NO);FILE *fp4=fopen(tmp1.c_str(),"r+");查找已有文件;不允許同名文件的存在;tmp2=edtFileName->Text; /for(int j=fnum-1;j>=0;j-) /for(int i=0;i<10;i+)bufi='0
24、9;fseek(fp4,3000L+20*j,0);fread(buf,sizeof(char),tmp2.Length(),fp4);tmp1=AnsiString(buf);if(tmp2=tmp1) log=j+1;if(log!=0) ShowMessage("文件已存在!");else TListItem *ListItem; /由此創(chuàng)建新文件;ListItem=ListView1->Items->Add();ListItem->Caption=edtFileName->Text;ListItem->ImageIndex=2;List
25、View1->Selected=ListItem;fseek(fp4,3000L+20*fnum,0);fwrite(ListItem->Caption.c_str(),sizeof(char),ListItem->Caption.Leng th(),fp4);fseek(fp4,3000L+20*fnum+10,0);tmp1=compute(cbxStyle->ItemIndex);fwrite(tmp1.c_str(),sizeof(char),2,fp4);fnum+;tmp1=compute(fnum);fseek(fp4,2L,0);fwrite(tmp1.
26、c_str(),sizeof(char),2,fp4);fclose(fp4);else AnsiString tmp1,tmp2;char buf10; int log=0,log2=0;tmp1=compute2(NO);FILE *fp4=fopen(tmp1.c_str(),"r+");tmp2=StatusBar2->Panels->Items1->Text;for(int j=dnum-1;j>=0;j-) /查找已有文件;for(int i=0;i<10;i+) bufi='0'fseek(fp4,100L+15*
27、j,0);fread(buf,sizeof(char),tmp2.Length(),fp4);tmp1=AnsiString(buf);if(tmp2=tmp1) log=j;tmp2=edtFileName->Text;for(int j=sfnum-1;j>=0;j-)for(int i=0;i<10;i+) bufi='0'fseek(fp4,1000L+200*log+20*j,0);fread(buf,sizeof(char),tmp2.Length(),fp4);tmp1=AnsiString(buf);if(tmp2=tmp1) log2=j+1
28、;if(log2!=0) ShowMessage("文件已經(jīng)存在!");else TListItem *ListItem;/由此創(chuàng)建新文件ListItem=ListView1->Items->Add();ListItem->Caption=edtFileName->Text;ListItem->ImageIndex=2;ListView1->Selected=ListItem;fseek(fp4,1000L+200*log+20*sfnum,0);fwrite(ListItem->Caption.c_str(),sizeof(cha
29、r),ListItem->Caption.Length(),fp4);fseek(fp4,1000L+200*log+20*sfnum+10,0);tmp1=compute(cbxStyle->ItemIndex);fwrite(tmp1.c_str(),sizeof(char),2,fp4);sfnum+;tmp1=compute(sfnum);fseek(fp4,100L+15*log+10,0);fwrite(tmp1.c_str(),sizeof(char),2,fp4);fclose(fp4);5.程序流程圖(見下頁)開始第五部分測試與分析5.1 設(shè)計(jì)過程測試5.1.1 用 BCB 可視化編程環(huán)境,對于界面的實(shí)現(xiàn)尤其簡單。調(diào)試過程比較順利,其間幾個(gè)問題是在一個(gè)對文件和目錄搜索過程中標(biāo)志的定義時(shí)候出現(xiàn)了問題,使得搜索一直下去無法終止。5.1.2 由于對文件夾的創(chuàng)建和刪除,對文件的創(chuàng)建和刪除都要調(diào)試,尤其是文件的類型的分別測試,使得調(diào)式過程異常煩瑣。5.1.3 在創(chuàng)建刪除目錄和創(chuàng)建刪除文件的時(shí)候也出現(xiàn)了,目錄和文件存在的沖突,刪除目錄和文件的時(shí)候也出現(xiàn),目錄和文件不存在的情況下刪除動(dòng)作照樣執(zhí)行的情況。5.1.4 難點(diǎn)在于對各種用戶信息的存檔和讀取,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年四川省成都市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年甘肅省酒泉市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年湖北省孝感市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2022年青海省西寧市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2024年廣東省韶關(guān)市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 頒獎(jiǎng)晚會發(fā)言稿
- 個(gè)人借條范本整合
- 霸氣押韻的班級口號
- 湖北省省直轄行政單位(2024年-2025年小學(xué)六年級語文)部編版質(zhì)量測試(下學(xué)期)試卷及答案
- 廣東省陽江市(2024年-2025年小學(xué)六年級語文)部編版階段練習(xí)(上學(xué)期)試卷及答案
- 采礦學(xué)課程設(shè)計(jì)_圖文
- 裝飾辦公室工作總結(jié)
- 《管理學(xué)原理與方法》周三多第六版
- 物業(yè)接管驗(yàn)收必須具備的條件
- 六年級上冊英語教案unit 5 What does he do人教
- 井蓋及踏步97S147(97S501-1、2)
- 口內(nèi)病例分析
- 壓力管道內(nèi)審記錄(共5頁)
- 堵蓋與膠貼在車身堵孔方面的應(yīng)用
- 清單計(jì)價(jià)規(guī)范附錄附表詳解PPT課件
- 光刻膠知識簡介
評論
0/150
提交評論