叶丙坤的课程设计报告文档格式.docx
- 文档编号:18439681
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:46
- 大小:476.08KB
叶丙坤的课程设计报告文档格式.docx
《叶丙坤的课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《叶丙坤的课程设计报告文档格式.docx(46页珍藏版)》请在冰豆网上搜索。
read
(6)文件的写:
write
(7)文件关闭:
close
(8)删除文件:
delete
(9)创建目录(建立子目录):
mkdir
(10)改变当前目录:
cd
(11)列出文件目录:
dir
(12)退出:
logout
6.选用程序设计语言:
C++、C等。
三、课程设计应完成的工作
1.充分理解设计的任务,完成设计的基本要求。
然后根据自己的基础和能力选择不同难度的算法和实现方式,以取得更高的分数。
2.独立完成系统的分析、设计、编码、测试工作。
3.完成设计报告的撰写。
4.以光盘(以班为单位刻录)方式提交已调试通过的完整的相关源程序和能够运行的执行文件;
提交“课程设计报告”的书面和电子两种版本。
四、课程设计进程安排
序号
设计各阶段内容
地点
起止日期
1
查阅资料、分析题目、概要设计
分散
周一
2
详细设计、编码
周二
3
调试
实验室
周三
4
撰写设计报告
周四
5
运行、验收
周五
五、应收集的资料及主要参考文献
[1]计算机操作系统(修订版),汤子瀛等,西安电子科技大学出版社,2001
[2]操作系统实验指导书,傅秀芬,广东工业大学(自编)
[3]计算机操作系统教程(第二版),张尧学、史美林,清华大学出版社,2000
[4]现代操作系统,A.S.Tanenbaum著,陈向群等译机械工业出版社,2002年
发出任务书日期:
2007年5月25日指导教师签名:
计划完成日期:
2007年6月24日基层教学单位责任人签章:
主管院长签章:
多用户多目录文件系统
一设计题目:
二开发信息:
开发语言:
C++
编译器:
BolandC++Builder6.0
三功能简介:
图形化界面,支持文件创建,文件删除,文件重命名,文件复制,剪切和粘贴以,文件保护,文件查找,查看文件属性等操作,多用户系统。
四设计思想:
这次操作系统的课程设计我做的是文件管理系统,该系统是多用户,多级的系统,共包含了九个可视窗体,设计思想如下:
该图表示了该课程设计的思路,用户的数目是通过Access数据库去控制,其中用户由管理员和普通用户组成,每个用户都有自己的文件夹,用户可以在自己的文件夹里面进入任何操作,但是非管理员在其他用户的文件夹里面不能进行复制,剪切,删除等操作,如果文件设置了保护(保护包括是否可读和可写),则非管理员要得到正确的权限才可以访问其他用户的文件或文件夹。
五系统结构说明:
该系统主要由以下十二块组成:
1.用户控制块(CUCB类)
2.用户文件目录/文件索引点(CIndex类)
3.文件控制块(FCB类)
4.打开文件目录(AFD)
5.模拟磁盘空闲块(BLOCK)
6.文件浏览窗口(Form_Main)
7.登陆窗口(Form_Login)
8.文件内容窗口(Form_Content)
9.用户列表(Form_UsetList)
10.文件或文件夹查找(Form_Find)
11.文件或文件夹属性(Form_CurrPro和Form_Pro),其中Form_CurrPro是显示当前路径下的属性,Form_Pro是显示选中的文件或文件夹的属性
12.关于窗口(Form_About)
该系统主要由上述的十二块组成,每一模块的功能均不相同,用户控制块负责处理用户的信息,文件控制块是存储文件信息,文件索引点保存了FCB的地址以及其他一些信息。
文件浏览窗口主要是负责显示文件,登陆窗口负责用户的登陆,同时确定该用户是不是管理员。
文件内容窗口主要是提供界面给用户编译文件的内容,用户列表是管理员的特权,在用户列表里面可以进行删除和添加用户操作。
六数据结构的说明:
主要的数据结构:
1.用户控制块的数据结构:
classCUCB//用户控制块
{
private:
Stringm_strName;
//用户名
public:
CIndex*m_pIndex;
//指向用户文件夹
CUCB();
~CUCB();
voidSetName(Stringstr);
//设置用户名
StringGetName();
//获取用户名
};
用户控制块CUCB由用户名和指向一个索引结点的指针组成,索引结点的指针指向用户文件夹,每个用户都有一个用户文件夹,用户文件夹的名字就是用户名.
2.用户目录/索引结点:
#defineBOOLint
#defineFALSE0
#defineTRUE1
#definePOSITIONFCB*
classCIndex
Stringm_strFileName;
//文件或文件夹名
POSITIONm_i;
//指向文件的FCB指针
BOOLm_Atom;
//表示是否是文件,TRUE表示文件,FALSE表示文件夹
CIndex*m_pBack;
//以下是指针,类型是CIndex*
CIndex*m_pForward;
CIndex*m_pUp;
CIndex*m_pDown;
CIndex();
~CIndex();
voidSetFileName(Stringstr);
//设置文件或文件夹名字
voidSetPositionI(POSITIONi);
//设置该索引点指向的FCB的地址
StringGetFileName();
//获取文件名
POSITIONGetPositionI();
//获取指向FCB的指针
voidSetAtom(BOOLbAtom);
//设置该索引结点表示文件还是文件夹
BOOLGetAtom();
//获取m_Atom值,表明是文件还是文件夹
索引结点由m_strFileName;
m_i,m_Atom以及若干个指针组成,其中,m_strFileName表示文件名,m_i指向FCB的地址,m_Atom是文件是文件还是文件夹的标志,为TRUE时是文件,否则是文件夹。
3.文件控制块FCB:
classFCB
FCB();
//构造函数
FCB(StringstrFileName,StringstrDate,StringstrTime);
//重载的构造函数
virtual~FCB();
//析构函数
//文件名
Stringm_strDate;
//文件创建的日期
Stringm_strTime;
//文件创建的时间
Stringm_strContent;
//文件内容,(为了简单起见,所有文件作为文本文件处理)
//以下两项是文件保护措施
boolm_bCanRead;
//是否可读
boolm_bCanWrite;
//是否可写
StringGetFileDate();
//获取文件的日期
StringGetFileTime();
//获取文件的时间
StringGetContent();
//获取文件的内容
boolGetReadState();
//返回文件‘可读’状态
boolGetWriteState();
//返回文件'
可写'
状态
voidSetContent(Stringstr);
//设置文件内容
voidSetReadState(boolCanRead);
//设置文件是否可读
voidSetWriteState(boolCanWrite);
//设置文件是否可写
//设置文件名
voidSetFileDate(Stringstr);
//设置文件日期
voidSetFileTime(Stringstr);
//设置文件时间
//以上的‘可读’和‘可写’是对于其他用户访问该文件的情况说的
FCB记录了文件的主要内容,包括文件名,文件的创建时间,文件属性和内容等。
FCB被索引结点CIndex里面的一个FCB*类型的成员变量所指向。
4.打开文件目录结构(AFD)
classAFD
AFD();
~AFD();
FCB*m_pFCB;
//指向FCB地址(块号)
//一下是保护项
//可读
//可写
voidSetName(StringstrName);
//设置名字
voidSetPointer(FCB*pFCB);
//设置指向FCB的块号,这里模拟指向的是指针
voidSetCanRead(boolbCanRead);
//设置是否可读
voidSetCanWrite(boolbCanWrite);
//设置是否可写
//获取名字
FCB*GetPointer();
//获取地址
//获取可读属性
//获取可写属性
intGetAFDState();
AFD类主要的成员是文件名,文件的保护属性和指向一个FCB的指针,本来应该是指向FCB的块的地址,但是在模拟中,只能是指向FCB地址。
5.磁盘块结构(BLOCK)
#defineMAXBLOCK100//定义为100块
#definePOSint
#defineNOTFOUND-1
#defineASSIGNED-2
#defineNOTASSIGNED-3
classBLOCK
BLOCK();
~BLOCK();
intm_BlockArray[MAXBLOCK];
POSCheckBlock();
voidAssign(inti);
voidRelease(inti);
在本设计中,默认每个文件占用的块数为1块
6.用到BCB里面主要的类有:
TToolBar,TSpeedButton,TPanel,TSplitter,TStatusBar,TLabel,TEdit,TListView,
其中TListView类是主要的类,它负责文件的显示。
7.定义到的主要变量:
TForm_Tree*m_pFL;
//定义一个显示树型的窗体指针
BLOCKm_Block;
//定义一个BLOCK对象
AFDm_AfdArray[MAXFILE];
//定义一个AFD数组
boolm_bAdmin;
//是否管理员
boolm_bIsLogOut;
//是否注销
boolm_bSelect;
//表示单击时是否选中图标
Stringm_strUser;
//保存登陆的用户名
intm_iLevel;
//当前层数
TListItem*pCurrent;
CIndex*m_pCurrentIndex;
//当前层的第一个结点指针
TList*m_pList;
//用于指向CUCB
CIndex*m_pIndexHead;
//头指针
Stringm_strAddress;
//保存地址
Stringm_strAddr_Temp;
CIndex*m_pTemp;
//用于处理文件夹为空的情况,保存上一级目录地址
CIndex*m_pCurrTemp;
//同上,保存上一级的第一个结点
CIndex*m_GoForward;
//保存"
前进"
按钮要前进的入口的上一层地址
CIndex*m_CopyIndex;
//用于复制和粘贴时候的索引
boolm_bIsInCurDir;
//用于判断当前是否在用户自己的文件夹里面
/////以下用于复制,剪切和粘贴的临时变量
boolm_bCopy;
CIndex*m_pCopyHead;
intm_CopyLevel;
8.定义到的一些宏:
#definePOINTERint
#defineMAXBLOCK100//定义为100块,用于定义BLOCK类里面的数组
#definePOSint
#defineNOTFOUND-1//用于AFD或BLOCK,表示找不到
#defineASSIGNED-2//用于AFD或BLOCK,表示已经分配
#defineNOTASSIGNED-3//用于AFD或BLOCK,表示未分配
#defineDOWN1//复制树时候表示的方向
#defineFORWORD0//复制树时候表示的方向
#defineMAXFILE20//定义最多可以打开的文件数目,用于AFD
9.定义的主要函数:
TListItem*AddToView(CIndex*pindex);
//把一个CIndex的对象显示到ListView中
voidCreateDir(CIndex*p,POSi);
//新建文件和文件夹函数,被CreateDirFile,调用,i为盘块号
voidCreateDirFile(BOOLAtom);
//主要是调用CreateDir函数
StringGetTime();
//获取时间
StringGetDate();
//获取日期
voidUpdateView();
//刷新操作
voidFindSelect(CIndex*&
pindex);
//找到用户选中对象的对应的CIndex
BOOLCheckName(Stringstr,BOOLAtom,CIndex*pobject);
//检查文件名是否合法
voidCalNum(CIndex*pindex,int&
dir,int&
file);
//统计文件和文件夹的个数,pindex是起始统计点
voidFreeNode(CIndex*pstart);
//释放一棵子树的空间,pstart是开始点
CIndex*CopyNode(CIndex*pcopy,intside,CIndex*pf);
//复制一棵子树
voidInitCopyVar();
//复制前的初始化工作CIndex*CopyOperate(CIndex*pcopy);
//响应复制操作,调用InitCopyVar和CopyNode函数
voidSetButtonState(boolbState);
//设置按钮的是否可用
voidFindDir(StringCurrAddr,TStringList*&
pSL,Stringname);
//目录查找文件操作,调用Search函数
voidSearch(CIndex*pstart,StringCurrAddr,TStringList*&
//在选中文件夹里面查找,结果存在pSL中
voidSetRight(CIndex*pindex,boolCanRead,boolCanWrite);
//设置一棵子树的文件的属性,可读,可写等
voidSetRightOperator(CIndex*pindex,boolCanRead,boolCanWrite);
//响应设置属性操作,调用SetRight
TTreeNode*FindNode(CIndex*pFindIndex);
//找出pFindIndex对应在TTreeView上的结点
voidUpdateTreeView();
//刷新TTreeView操作
处理的事件有:
void__fastcallFileListSelectItem(TObject*Sender,
TListItem*Item,boolSelected);
//选择图标
void__fastcallFileListMouseDown(TObject*Sender,
TMouseButtonButton,TShiftStateShift,intX,intY);
//鼠标按下
void__fastcallFormClose(TObject*Sender,TCloseAction&
Action);
void__fastcallPanel2Resize(TObject*Sender);
void__fastcallFileListDblClick(TObject*Sender);
//双击鼠标
void__fastcallFormShow(TObject*Sender);
//窗体显示的时候触发
void__fastcallSpeedButton_BACKClick(TObject*Sender);
//点击后退按钮触发
void__fastcallSpeedButton_FORWARDClick(TObject*Sender);
//点击前进按钮触发
void__fastcallSpeedButton_DeleteClick(TObject*Sender);
//点击删除时触发
void__fastcallSpeedButton_CopyClick(TObject*Sender);
//点击复制时候触发
void__fastcallSpeedButton_PasteClick(TObject*Sender);
//点击粘贴时候触发
void__fastcallSpeedButton_CutClick(TObject*Sender);
//点击剪切时候触发
void__fastcallFileListEdited(TObject*Sender,TListItem*Item,
AnsiString&
S);
void__fastcallFileListEditing(TObject*Sender,TListItem*Item,
bool&
AllowEdit);
void__fastcallFileListKeyDown(TObject*Sender,WORD&
Key,
TShiftStateShift)//键盘按下时候触发
void__fastcallCreateDirClick(TObject*Sender);
void__fastcallCreateFileClick(TObject*Sender);
void__fastcallN_RefreshClick(TObject*Sender);
void__fastcallN_ProClick(TObject*Sender);
void__fastcallN_ReNameClick(TObject*Sender);
void__fastcallN_DeleteClick(TObject*Sender);
void__fastcallN_CopyClick(TObject*Sender);
void__fastcallN_CutClick(TObject*Sender);
void__fastcallN_PasteClick(TObject*Sender);
void__fastcallN_Main_ForwrodClick(TObject*Sender);
void__fastcallN_Main_BackClick(TObject*Sender);
void__fastcallN_Main_CloseClick(TObject*Sender);
void__fastcallN_Main_UserListClick(TObject*Sender);
void__fastcallN_CurrProClick(TObject*Sender);
void__fastcallN_FindClick(TObject*Sender);
void__fastcallN_FindDirClick(TObject*Sender);
void__fastcallN5Click(TObject*Sender);
void__fastcallN_logoutClick(TObject*Sender);
void__fastcallN4Click(TObject*Sender);
七主要函数的流程图:
1.voidCreateDir(CIndex*p,POSi)函数,创建文件或文件夹:
2.voidFreeNode(CIndex*pstart);
函数,释放一个子树的空间
3.voidCalNum(CIndex*pindex,int&
dir,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 叶丙坤 课程设计 报告