欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

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

    • 资源ID:11067299       资源大小:1.10MB        全文页数:47页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    操作系统 课程设计报告 04网络一班 源程序代码,联系153893706操作系统课程设计报告题目: 模拟文件管理系统学 院 计算机 专 业 网络工程 年级班别 1班 学 号 学生姓名 指导教师_ _ 成 绩 2007 年 1 月 一、课程设计题目:编写并调试一个树型目录结构的文件系统,模拟文件管理工作流程。要求:(1)设计多用户文件系统,采用多级文件目录。(2)至少要有十个以上的实用命令,应设置文件保护措施。(3)设计一个较实用的用户界面,方便用户使用,界面要为用户提供足够的选择信息,不需用户打入打入冗长的命令。二、设计思想说明:1. 使用可视化环境编程,程序界面模仿windows系统的资源管理器程序(左边为目录树形结构,显示多级文件目录,右边为目录内容显示)。2. 使用鼠标,键盘,快捷键及拖动作各种文件的操作。3. 文件操作功能有:用户登录,新建文件夹,新建文件,文件重命名,剪切文件/文件夹,复制文件/文件夹,粘贴,查看文件内容,修改文件内容,查看文件属性,修改文件权限等。4. 为了便于操作,系统内的所有文件文件类型默认为文本文件,用户可以直接编辑其文字内容。三、系统结构的说明1.开发环境: C+ Builder 6.02.运行环境: Windows 98/NT4.0 以上3.使用控件:Tmenu 菜单栏控件TImageList 图表集控件 TTreeView 树形结构显示控件 TListView 对象显示控件 TPopUpMenu 反健菜单控件 TSplitter 工具栏按钮分割控件 TStatusBar 状态栏控件 TToolButton 工具栏按钮控件 TToolBar 工具栏菜单控件4.窗体结构: 如下图,窗体分为三个,分别是Form1,Form2,Form3。其中Form1位程序主界面窗体,为始终显示状态;Form2为文件内容显示及修改窗体,打开文件时显示,其他时候为隐藏状态;Form3为文件属性窗体,查看文件属性时为显示状态,其他时候为隐藏状态。Form1,Form2,Form3之间互相包含头文件,以便于传递数据。 图表一 Form1 图表二 Form2 图表三 Form35. 函数设置:Form1: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); /递归复制各节点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); /复制后的粘贴void 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(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; 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 *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; 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 *GroupBox2; 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 *Sender); 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(TObject *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 Selected); 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); 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(TObject *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, TShiftState 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 _fastcall 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(TObject *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; /父节点指针 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指针 TListItem *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.文件/文件夹 重命名流程图: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();/-void _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) if(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 *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) return; 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="当前用户:"+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_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->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_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) list_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->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

    注意事项

    本文(操作系统课程设计报告-模拟文件管理系统(附源程序).doc)为本站会员(啊飒飒)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开