1.课程设计报告-文件管理系统_计算机操作系统_第1页
1.课程设计报告-文件管理系统_计算机操作系统_第2页
1.课程设计报告-文件管理系统_计算机操作系统_第3页
1.课程设计报告-文件管理系统_计算机操作系统_第4页
1.课程设计报告-文件管理系统_计算机操作系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、第一部分概述1.1 系统开发背景1.1.1 文件系统的意义在现代计算机系统中,要用到大量的程序和数据,由于内存容量有限,且不能长期保存,故而平时总是把他们以文件的形式存放在外存中,需要时可随时将它们调入内存。如果由用户直接管理外存上的文件,不仅要求用户熟悉外存特性,还必须能保持数据的安全性和一直性。显然,这是用户所不能胜任的工作。取而代之的,便是在操作系统中增加了文件管理功能,即构成一个文件系统,负责管理在外存上的文件,并把对文件的存取,共享和保护等手段提供给用户。这不仅方便了用户,保证了文件的安全性,还有效的提高了系统资源利用率。1.1.2 开发背景( 1 )所设计软件名称:文件管理系统(

2、2)本软件的提出者:( 3)本软件的设计者:1.1.3 软件开发工具( 1 ) MICROSOFT WINDOWS 2000( 2) BORLAND C+ BUILDER 6.01.1.4 软件开发技术( 1 ) C+程序设计( 2)软件工程开发过程各阶段分析( 3)1.2 系统功能介绍及目标1.2.1 系统实现功能( 1 )多用户、多级目录(注:本设计最多10 个用户,实现3 级目录 ) 。 设置目录MFD 和用户文件目录UFD ,另外还为打开文件设置了运行文件目录AFD 。( 2)至少有10 个实用的文件操作命令(注:本设计可实现创建和删除目录,创建和删除文件,以及打开和关闭文件等功能)

3、。( 3)设计一个既简单又实用的用户界面。第二部分需求分析2.1 项目概述及数据流图2.1.1 系统的一般概述模拟文件管理的工作过程。实现多用户文件管理,允许2.1.2 系统的功能数据流图第 24 页系统二层数据流图2.2 功能需求分析2.2.1 功能划分用户管理功能身份验证功能目录管理功能文件管理功能文件属性管理功能帮助功能2.2.2 功能描述( 1 )用户管理功能允许用户进行注册,管理不同用户。允许注销用户,即删除该用户。( 2)身份验证功能用户登陆,系统验证其合法性。( 3)目录管理功能目录管理,进行创建,删除 .等操作。( 4)文件管理功能管理文件,可进行创建文件,删除,打开,关闭,读

4、,写等操作。( 5)文件属性管理功能设置文件属性,如读写文件,只读文件,可写文件。( 6)帮助功能为用户提供使用帮助。1.1.1 外部接口需求分析2.3.1 用户界面采用 WINDOWS 的通用图形界面,对用户友好,且对鼠标和键盘提供帮助,界面的设计遵循以下规则:a. 界面要具有一致性,界面规范遵循WINDOWS 软件的界面规范;b. 提供简单的错误处理c. 提供信息反馈,用信息提示用户当前用户软件运行状态,软件界面元件的功能;d. 操作可逆,其动作可以是单个的操作,或是一个相对独立的操作序列;e. 显示启动画面,画面简洁明快,富有时代气息,不太过花哨;f. 遵循国家关于计算机词汇的标准,用词

5、准确,无二义,图形意义明朗;2.3.2 接口需求2.3.3 1 )硬件接口支持一般的P或更高档微机,笔记本电脑。2.3.4 2)软件接口运行于WINDOWS 95/98/ME/2000/NT/XP,且具有WIN32 API 的操作系统上。2.3.5 3)故障处理正常使用时不应出错,就算出现出错,也应该保证数据库无损。1.1.2 性能需求及软件属性需求2.4.1 性能需求( 1 )数据精确性( 2)时间特性:对一般操作的响应时间不超过1-2 秒。( 3)适应性:满足用户使用需求,对运行环境应不存在困难。2.4.2 软件属性要求( 1 )正确性:所开发软件达到预期目标,运行不出错。( 2)可靠性:

6、不应出现故障。( 3)完整性:在出现错误情况下,保证数据不丢失。( 4)易用性:几面使用当前流行规范,方便用户。( 5)安全性:提供身份验证,保证安全。( 6)其他特性:可维护性,可理解性,可测试性等。第三部分概要设计3.1 总体设计3.1.1 处理流程系统运行的处理流程如下:( 1 )系统启动时,激活身份验证模块。A. 若用户不存在,则进行注册。B. 若用户已存在,则登录系统。( 2)通过身份验证后,系统初始化。根据系统配置将数据导入。( 3)进入消息循环状态,通过事件驱动机制激活功能模块,并执行指定模块。( 4)各功能执行完毕后,重新进入消息循环状态。( 5)由关闭事件激活关闭功能,退出系

7、统。3.1.2 总体结构和模块外部设计A. 总体结构图(见2 页)B. 模块设计表模块编号模块名称备注M1.1系统初始化模块系统初始化M1.2关闭系统模块关闭并退出系统M1.3身份验证模块验证用户身份M1.4用户管理模块管理系统用户M2目录管理模块创建,删除目录M3文件管理模块创建,删除文件M4文件属性管理模块修改文件属性M5帮助模块增加,删除,修改记录3.2 结构设计3.2.1 控件的关联void _fastcall TfrmMain:mmuExitClick(TObject *Sender) 关联退出事件; void _fastcall TfrmMain:FormCreate(TObjec

8、t *Sender) 主窗体的创建生成;void _fastcall TfrmMain:mmuRegClick(TObject *Sender) 用户注册的关联;void _fastcall TfrmMain:mmuLogClick(TObject *Sender) 用户登陆关联;void _fastcall TfrmMain:PageControl1Change(TObject *Sender) 用户登陆页;void _fastcall TfrmMain:btnRegClick(TObject *Sender) 对注册单击事件的实现;void _fastcall TfrmMain:btnLo

9、gClick(TObject *Sender) 对用户登陆单击事件的实现;void _fastcall TfrmMain:mmuCreateDirClick(TObject *Sender)目录创建的关联;void _fastcall TfrmMain:mmuDelDirClick(TObject *Sender)删除目录的关联;void _fastcall TfrmMain:update()返回上层目录;void _fastcall TfrmMain:DisplayFile()显示文件;void _fastcall TfrmMain:DisplayDir()显示目录;void _fastca

10、ll TfrmMain:ListView1DblClick(TObject *Sender) 列表显示双击的实现;void _fastcall TfrmMain:pmuDelClick(TObject *Sender)目录搜索删除然后修改列表;3.2.2 存储结构在 secret.txt 文件中,unum为当前用户数,占2 个字符;每个用户的用户名和用户密码各用 10 个字符来表示。在user1.txt 文件, dnum为该用户下的目录数;fnum 为该用户下的文件数;dir1 dir10 为该用户下的目录,每个用户名占10个字符,剩下的5 个字符用以存放这个目录下一级的文件数;sfile1

11、sfile10 为 dir1 下的文件,每个文件名用 10 个字符,文件类型用10 个字符;sfile11 sfile20 为 dir2 下的文件,sfile21 sfile30 为 dir3 下的文件,依此类推。3.2.3 程序的主要结构1)用户登陆FILE *fp=fopen(); / 分配空间查找用户名,如不存在,需先注册;用户名正确,如果密码错误 显示提示消息for()/if() /if() /else 进入该用户目录;/fclose();/关闭文件流( 2)目录的创建和删除if() /c_d是标识是创建还是删除目录;for()/不允许同名目录的存在; if () /如果目录已经存在,

12、显示提示消息else /创建文件目录else if()/如果是删除for()/查找已有目录;/如果目录不存在,删除操作失败;for()if()/如果目录不存在改变标识if() /目录不存在显示提示消息else /查找到文件夹删除它( 3)文件的创建和删除if ()/sub是标示是创建一级还是二级文件FILE *fp4=fopen();/查找已有文件;for()/不允许同名文件的存在; if() /如果存在提示else /由此创建新文件;fwrite();/写如文件流fclose();/关闭文件流删除文件与此类似。第四部分详细设计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("用户人数己满!");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("用户名已经存在!");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);/ 进入该用户目录 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. 文件夹的创建和删除if(c_d=0) /判断是创建还是删除目录

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(" 目录已经存在!");else ListItem=ListView1->Items->Add(); /由此创建新目录;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. 文件的创建和删除if (sub=0) /sub 是标示是创建一级还是二级文件;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; /由此创建新文件;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("文件已经存在!");else TListItem *ListItem;/由此创建新文件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 设计过程测试5.1.1 用 BCB 可视化编程环境,对于界面的实现尤其简单。调试过程比较顺利,其间几个问题是在一个对文件和目录搜索过程中标志的定义时候出现了问题,使得搜索一直下去无法终止。5.1.2 由于对文件夹的创建和删除,对文件的创建和删除都要调试,尤其是文件的类型的分别测试,使得调式过程异常烦琐。5.1.3 在创建删除目录和创建删除文件的时候也出现了,目录和文件存在的冲突,删除目录和文件的时候也出现,目录和文件不存在的情况下删除动作照样执行的情况。5.1.4 难点在于对各种用户信息的存档和读取,

温馨提示

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

评论

0/150

提交评论