操作系统课程设计报告模拟文件管理系统(附源程序).doc

上传人:laozhun 文档编号:2385980 上传时间:2023-02-17 格式:DOC 页数:47 大小:1.15MB
返回 下载 相关 举报
操作系统课程设计报告模拟文件管理系统(附源程序).doc_第1页
第1页 / 共47页
操作系统课程设计报告模拟文件管理系统(附源程序).doc_第2页
第2页 / 共47页
操作系统课程设计报告模拟文件管理系统(附源程序).doc_第3页
第3页 / 共47页
操作系统课程设计报告模拟文件管理系统(附源程序).doc_第4页
第4页 / 共47页
操作系统课程设计报告模拟文件管理系统(附源程序).doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《操作系统课程设计报告模拟文件管理系统(附源程序).doc》由会员分享,可在线阅读,更多相关《操作系统课程设计报告模拟文件管理系统(附源程序).doc(47页珍藏版)》请在三一办公上搜索。

1、源程序代码,联系153893706操作系统课程设计报告题目: 模拟文件管理系统学 院 计算机 专 业 网络工程 年级班别 1班 学 号 学生姓名 指导教师_ _ 成 绩 2007 年 1 月 一、课程设计题目:编写并调试一个树型目录结构的文件系统,模拟文件管理工作流程。要求:(1)设计多用户文件系统,采用多级文件目录。(2)至少要有十个以上的实用命令,应设置文件保护措施。(3)设计一个较实用的用户界面,方便用户使用,界面要为用户提供足够的选择信息,不需用户打入打入冗长的命令。二、设计思想说明:1. 使用可视化环境编程,程序界面模仿windows系统的资源管理器程序(左边为目录树形结构,显示多级

2、文件目录,右边为目录内容显示)。2. 使用鼠标,键盘,快捷键及拖动作各种文件的操作。3. 文件操作功能有:用户登录,新建文件夹,新建文件,文件重命名,剪切文件/文件夹,复制文件/文件夹,粘贴,查看文件内容,修改文件内容,查看文件属性,修改文件权限等。4. 为了便于操作,系统内的所有文件文件类型默认为文本文件,用户可以直接编辑其文字内容。三、系统结构的说明1.开发环境: C+ Builder 6.02.运行环境: Windows 98/NT4.0 以上3.使用控件:Tmenu 菜单栏控件TImageList 图表集控件 TTreeView 树形结构显示控件 TListView 对象显示控件 TP

3、opUpMenu 反健菜单控件 TSplitter 工具栏按钮分割控件 TStatusBar 状态栏控件 TToolButton 工具栏按钮控件 TToolBar 工具栏菜单控件4.窗体结构: 如下图,窗体分为三个,分别是Form1,Form2,Form3。其中Form1位程序主界面窗体,为始终显示状态;Form2为文件内容显示及修改窗体,打开文件时显示,其他时候为隐藏状态;Form3为文件属性窗体,查看文件属性时为显示状态,其他时候为隐藏状态。Form1,Form2,Form3之间互相包含头文件,以便于传递数据。 图表一 Form1 图表二 Form2 图表三 Form35. 函数设置:Fo

4、rm1:int all_size(); /统计ListView中所有文件的大小int check_file_name(ufd *start,AnsiString filename,int type); /寻找重名节点ufd *create_file(); /递归复制各节点void create_up_link(ufd *up,ufd *p); /复制后填写每个节点中的up指针void createfile(AnsiString filename); /新建文件void createfolder(AnsiString filename); /新建目录ufd *copy_file(ufd *del

5、); /递归复制各节点void delete_f(ufd *del); /递归删除节点void delete_file(ufd *del); /删除文件/文件夹void destory_ft(); /销毁 文件-tree 链表void destory_fv(); /销毁 文件-list 链表void disable_all(); /禁止控件ft_connect *draw_tree(TTreeNode *tree_p,ufd *p); /递归生成树状结构void enable_all(); /激活控件void file_copy_paste(ufd *directory); /复制后的粘贴vo

6、id file_cut(ufd *pcut); /剪切文件/文件夹void file_paste(ufd *directory); /剪切后粘贴AnsiString file_path(ufd *p); /计算文件路径void folder_view_ini(); /初始化目录显示void item_view_ini(); /初始化文件显示void login(); /登录void mfd_in(); /初始化用户文件链表,并赋予用户文件数据void per_copy(ufd *p); /复制void refrash(); /刷新void reset(); /重置int subrelative

7、(ufd *a,ufd *b); /判断a是否从属于b a在b里?void ufd_in(); /初始化用户文件链表,并赋予用户文件数据6. 组件列表Form1: TTreeView *TreeView1; TListView *ListView1; TImageList *ImageList1; TImageList *ImageList2; TMainMenu *MainMenu1; TMenuItem *N5; TMenuItem *N6; TMenuItem *N7; TMenuItem *N8; TStatusBar *StatusBar1; TToolBar *ToolBar1;

8、TToolButton *ToolButton1; TToolButton *ToolButton2; TToolButton *ToolButton3; TPopupMenu *PopupMenu1; TMenuItem *N9; TMenuItem *N10; TMenuItem *a1; TMenuItem *N11; TMenuItem *N12; TMenuItem *N13; TMenuItem *N14; TMenuItem *N15; TMenuItem *N17; TMenuItem *N18; TMenuItem *N1; TMenuItem *N2; TMenuItem

9、*N3; TMenuItem *N4; TMenuItem *N20; TMenuItem *N21; TMenuItem *N22; TMenuItem *N23; TMenuItem *N19; TMenuItem *N24; TMenuItem *N25; TMenuItem *N27; TMenuItem *N28; TMenuItem *N29; TMenuItem *N30; TMenuItem *N16; TPopupMenu *PopupMenu2; TMenuItem *N26; TMenuItem *N33; TMenuItem *N31; TMenuItem *N34;

10、TMenuItem *N35; TSplitter *Splitter1; TSplitter *Splitter2; TToolButton *ToolButton4; TToolButton *ToolButton5;Form2: TMemo *Memo1; TButton *Button1; TButton *Button2;Form3: TButton *Button1; TGroupBox *GroupBox1; TCheckBox *read_mark; TCheckBox *write_mark; TCheckBox *execute_mark; TGroupBox *Group

11、Box2; TLabel *Label1; TLabel *Label2; TLabel *Label3; TEdit *path; TEdit *filename; TEdit *size;7. 响应事件列表Form1: void _fastcall FormCreate(TObject *Sender); void _fastcall TreeView1Change(TObject *Sender, TTreeNode *Node); void _fastcall N9Click(TObject *Sender); void _fastcall a1Click(TObject *Sende

12、r); void _fastcall N2Click(TObject *Sender); void _fastcall ListView1DblClick(TObject *Sender); void _fastcall ToolButton1Click(TObject *Sender); void _fastcall N30Click(TObject *Sender); void _fastcall N14Click(TObject *Sender); void _fastcall N15Click(TObject *Sender); void _fastcall N21Click(TObj

13、ect *Sender); void _fastcall N22Click(TObject *Sender); void _fastcall N23Click(TObject *Sender); void _fastcall N17Click(TObject *Sender); void _fastcall N25Click(TObject *Sender); void _fastcall N29Click(TObject *Sender); void _fastcall ListView1SelectItem(TObject *Sender, TListItem *Item, bool Se

14、lected); void _fastcall N26Click(TObject *Sender); void _fastcall N24Click(TObject *Sender); void _fastcall N19Click(TObject *Sender); void _fastcall N16Click(TObject *Sender); void _fastcall N28Click(TObject *Sender); void _fastcall N33Click(TObject *Sender); void _fastcall N35Click(TObject *Sender

15、); void _fastcall N34Click(TObject *Sender); void _fastcall PopupMenu2Popup(TObject *Sender); void _fastcall N11Click(TObject *Sender); void _fastcall N13Click(TObject *Sender); void _fastcall N27Click(TObject *Sender); void _fastcall N31Click(TObject *Sender); void _fastcall ListView1DragDrop(TObje

16、ct *Sender, TObject *Source,int X, int Y); void _fastcall ListView1DragOver(TObject *Sender, TObject *Source,int X, int Y, TDragState State, bool &Accept); void _fastcall ListView1KeyDown(TObject *Sender, WORD &Key,TShiftState Shift); void _fastcall ListView1KeyUp(TObject *Sender, WORD &Key, TShiftS

17、tate Shift); void _fastcall TreeView1DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept); void _fastcall TreeView1DragDrop(TObject *Sender, TObject *Source, int X, int Y); void _fastcall N8Click(TObject *Sender); void _fastcall N12Click(TObject *Sender); void _fa

18、stcall N3Click(TObject *Sender); void _fastcall N4Click(TObject *Sender); void _fastcall ToolButton2Click(TObject *Sender); void _fastcall ToolButton4Click(TObject *Sender); void _fastcall N10Click(TObject *Sender); void _fastcall ToolBar1Click(TObject *Sender);Form2: void _fastcall Button2Click(TOb

19、ject *Sender); void _fastcall Button1Click(TObject *Sender);Form3: void _fastcall Button1Click(TObject *Sender);四、数据结构的说明程序的所有数据存储由以下四个链表组成:struct ufd /文件目录了链表 int sign; /标志 0-file /1-folder AnsiString filename; /文件/目录名 char protect3; /文件保护码 int length; /文件大小 AnsiString content; /文件内容 ufd *up; /父节点指

20、针 struct ufd *next; /下一节点指针 struct ufd *folder; /目录下一层指针*ufd_head,*ufd_p,*current_ufd;struct ft_connect /TreeView 与ufd关系链表 struct ufd *folder; /ufd指针 TTreeNode *tree; /TreeView节点指针 ft_connect *next; /下一节点指针*ft_head=NULL,*ft_p,*ft_q;struct fv_connect /ListView 与ufd关系链表 struct ufd *file; /ufd指针 TListI

21、tem *item; /ListView节点指针 fv_connect *next; /下一节点指针*fv_head=NULL,*fv_p=NULL,*fv_q=NULL;struct mfd /用户链表 AnsiString username; /用户名 struct ufd *ufd; /用户目录指针 struct mfd *link; /下一节点指针*mfd_head,*mfd_p,*current_user;五、各模块的算法流程图1.用户登录模块流程图:2.刷新/初始化流程图:3.TreeView change事件 处理流程图:4.打开操作流程图5.新建文件/文件夹 流程图6.文件/文

22、件夹 重命名流程图:7.删除文件/文件夹流程图:8. 复制文件/文件夹流程图:六、程序源代码清单:Project1.bpr 工程文件Project1.cpp 工程源文件Unit1.cpp FORM1 源文件Unit1.dfm FORM1 窗体文件Unit2.cpp FORM2 源文件Unit2.dfm FORM2 窗体文件Unit3.cpp FORM3 源文件Unit3.dfm FORM3 窗体文件七、关键源代码核心函数源代码:void _fastcall TForm1:FormCreate(TObject *Sender)/Form1初始化函数 mfd_in(); login();/-voi

23、d _fastcall TForm1:TreeView1Change(TObject *Sender, TTreeNode *Node) /记录当前数-文件夹链接 ft_p=ft_head; while(ft_p) if(ft_p-tree=TreeView1-Selected) break; ft_p=ft_p-next; if(ft_p) now_ft=ft_p; item_view_ini(); /-void _fastcall TForm1:N9Click(TObject *Sender) /删除按钮响应 TListItem *p; if(p=ListView1-Selected) i

24、f(Application-MessageBoxA(确定删除+p-Caption+吗?).c_str(),删除,MB_OKCANCEL) delete_file(now_fv-file); refrash();/-void refrash() /刷新显示 Form1-TreeView1-Items-Clear(); Form1-ListView1-Items-Clear(); destory_ft(); drag_copy=0; folder_view_ini();ufd *create_file(ufd *perv,AnsiString filename) /新建单个文件的数据结构 ufd

25、*q; q=new(ufd); q-filename=filename; q-sign=0; strcpy(q-protect,111); q-length=12; q-folder=NULL; q-up=NULL; q-content=事例文件内容; q-next=NULL; return q;void login() /登录 AnsiString username=user1; int sign=0; mfd *p,*q; reset(); disable_all(); if(!InputQuery(用户登录,请输入用户名(系统默认为user1-user3),username) retur

26、n; p=mfd_head; while(p) if(p-username=username) break; q=p; p=p-link; if(!p) sign=Application-MessageBoxA(用户不存在,是否创建?,登录提示,MB_YESNO); if(sign=IDYES) p=new(mfd); p-username=username; p-link=NULL; p-ufd=create_file(NULL,原始文件); q-link=p; else return; current_user=p; Form1-StatusBar1-Panels-Items0-Text=

27、当前用户:+username; enable_all(); folder_view_ini();/-void folder_view_ini() /初始化目录显示 ft_connect *p; TTreeNode *tree_p; Form1-TreeView1-Items-Clear(); tree_p=Form1-TreeView1-Items-AddChild(NULL,current_user-username+ 的根目录); ft_head=new(ft_connect); ft_head-next=NULL; ft_head-folder=0; ft_head-tree=tree_

28、p; ft_p=ft_head; draw_tree(tree_p,current_user-ufd); p=ft_head; while(p&now_ft) if(p-folder=now_ft-folder) break; p=p-next; if(p) p-tree-Selected=1; else ft_head-tree-Selected=1;ft_connect *draw_tree(TTreeNode *tree_p,ufd *p) /递归生成树状结构 TTreeNode *tree_q; while(p) if(p-sign=1) tree_q=Form1-TreeView1-

29、Items-AddChild(tree_p,p-filename); ft_q=new(ft_connect); ft_q-next=NULL; ft_q-tree=tree_q; ft_q-folder=p; ft_p-next=ft_q; ft_p=ft_p-next; if(p-folder) draw_tree(tree_q,p-folder); p=p-next; void item_view_ini() /初始化文件显示 AnsiString str; ufd *p; TListItem *list_p; Form1-ListView1-Items-Clear(); if(!now

30、_ft-tree) /无当前选择文件夹 p=current_user-ufd; else ft_p=ft_head; if(now_ft-folder=0) p=current_user-ufd; else p=now_ft-folder-folder; destory_fv(); /先销毁原链表 fv_p=new(fv_connect); fv_p-next=NULL; fv_head=fv_p; while(p) /显示并建立关系链表 list_p=Form1-ListView1-Items-Add(); list_p-Caption=p-filename; if(p-sign=0) li

31、st_p-ImageIndex=1; fv_q=new(fv_connect); fv_q-item=list_p; fv_q-file=p; fv_q-next=NULL; fv_p-next=fv_q; fv_p=fv_p-next; p=p-next; fv_p=fv_head; fv_head=fv_head-next; free(fv_p); str=(String)Form1-ListView1-Items-Count+ 个对象; Form1-StatusBar1-Panels-Items1-Text=str; if(now_ft-folder) str=now_ft-folder

32、-filename; else str=根目录; Form1-StatusBar1-Panels-Items3-Text=当前位置:+str; Form1-StatusBar1-Panels-Items2-Text=总大小:+(String)all_size()+字节;void destory_fv() /销毁 文件-list 链表 fv_p=fv_head; while(fv_p) fv_head=fv_p; fv_p=fv_p-next; free(fv_head); fv_head=NULL;void destory_ft() /销毁 文件-tree 链表 ft_p=ft_head; while(ft_p) ft_head=ft_p; ft_p=ft_p-next;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号