操作系统课程设计--模拟文件管理系统内容摘要:
m FileStatus { closed, opened, reading, writing }。 //一个文件索引结构 (文件节点) struct FileIndexElement { unsigned Index。 //文件元素索引编号 char FileName[NAME_LEN]。 //文件元素名 char ParentName[NAME_LEN]。 //父节点名 unsigned FileBlockId。 //文件元素所在物理块编号 unsigned FileLevel。 //文件元素所在层次,层+文件元素名为一个文件元素的逻辑位置 char creatTime[18]。 //文件创建时间 char *filecontent。 //文件内容 BOOL effect。 //是否有效, 0无效, 1有效 FileType Type。 //识别文件还是目录 }。 //文件索引结构或目录表项 (文件目录结构) struct FileIndex { FileIndexElement *FIStart。 //文件系统中的文件索引起始 位置 unsigned FILen。 //文件索引的最大长度 unsigned FICount。 //文件索引数量 }。 //文件块的结构 (存储数据块结构) struct FileBlock。 typedef struct FileBlock *pFileBlock。 struct FileBlock { unsigned FileBlockId。 //文件块编号 unsigned BLOCK_SIZE。 //文件块的容量 char *FileBlockAddr。 //文件块地址 pFileBlock next。 //下一个文件块的地址 }。 //文件系统的位示图结构 (用于显示分配的存储器分配情况) struct BitMap { unsigned BITMAP_LEN。 //文件位示图长度 char *BMStart。 //位示图的起始指针 }。 //文件系统结构 (超级块的结构 ,全局变量) struct SuperBlock { char *FSStart。 //文件系统的起始地址 unsigned SuperBlockSize。 //文件系统的容量 BitMap bm。 //文件系统中的位示图 unsigned BLOCK_COUNT。 //文件系统中文件块的数量 pFileBlock head。 //文件系统中文件块首地址 FileIndex FI。 //文件系统中的文件索引 }。 //登陆用户的数据结构 (用户的数据结构) struct User。 typedef struct User *pUser。 struct User { char *UserName。 //用户名称 char *password。 //用户密码 int isAdmin。 //用户类型, 1表示管理员, 0表示用户 pUser NextUser。 }。 struct LoginStruct{ int User_Login_tims。 int UserNum。 pUser pUserList。 }。 //文件系统中的元素结构,包括文件和文件夹 (逻辑文件的定义,树形结构) struct FSElement。 typedef struct FSElement *pFSElement。 struct FSElement { pFSElement parent。 //指向自己的父亲节点 unsigned FileLevel。 //文件元素所在层次,层+文件元素名为一个文件元素的逻辑位置 char FileName[NAME_LEN]。 //文件元素名 unsigned FileBlockId。 //文件元素所在物理块编号 unsigned FileElemLen。 //文件元素的长度 FileType Type。 //文件元素类型 FileAccess Access。 //文件元素可供操作的权限 User Creator。 //文件创建者 char CreateTime[18]。 //创建时间,日期格式: MM/DD/YY HH:MI:SS char LastModTime[18]。 //最后一次修改时间 char *FileData。 //一个文件的数据开始地址, 文件夹时该值为 NULL FileStatus fileStu。 //如果是一个文件表示文件当前的状态 }。 //系统当前状态 struct CurrentStatus { User CurrentUser。 //当前用户 unsigned FileLevel。 //用户所在文件系统层 FSElement *CurrParent。 //当前层的父节点 char *CurrentPath。 //当前路径 }。 SuperBlock FS。 //一个全局文件系统的变量 CurrentStatus CS。 //当前系统状态 FSElement *base。 //文件元素的根 LoginStruct LoginS。 //用户列表,在登录的时候用到,以链表形式存储 bool InitFileSys()。 //(初始化文件函数) //======================================================================================== //函数说明:权利 声明 void Right(void) { cout文件管理系统 [版本 ]\n。 cout版权所有 (c) 2020 计算机 4班。 保留所有权利。 \n\n。 return。 } //========================================================================================== // 函数介绍:寻找第一个 空白 的文件块 ID // 返 回 值:返回第一个空白块的 ID unsigned FindBlankFileBlockId(void) { unsigned char c。 //通过位示图 查找 可以简化 for (unsigned i = 0。 i / 8。 i++) { c = [i] | 0x7F。 if (c == 0x7F) { return i * 8。 //一个字节左边第一位为 0,表示该区域未使用 } c = [i] | 0xBF。 if (c == 0xBF) { return i * 8 + 1。 } c = [i] | 0xDF。 if (c == 0xDF) { return i * 8 + 2。 } c = [i] | 0xEF。 if (c == 0xEF) { return i * 8 + 3。 } c = [i] | 0xF7。 if (c == 0xF7) { return i * 8 + 4。 } c = [i] | 0xFB。 if (c == 0xFB) { return i * 8 + 5。 } c = [i] | 0xFD。 if (c == 0xFD) { return i * 8 + 6。 } c = [i] | 0xFE。 if (c == 0xFE) { return i * 8 + 7。 } } return BLOCK_COUNT + 1。 } //================================================================================================ // 函数介绍:寻找第一个 文件块地址 (根据文件块 ID,找文件块) // 输入参数: fileblockid 文件块 ID // 返 回 值:返回文件块的地址 char * FindBlankFileBlock(unsigned fileblockid) { FileBlock *fblock =。 while (fblocknext != NULL) { if (fblockFileBlockId == fileblockid) { return fblockFileBlockAddr。 //如果找到文件块,返回文件块的地址, } else { fblock = fblocknext。 } } return NULL。 //没有找到,返回空。 } //================================================================================================== // 函数介绍:得到当前时间的字符串 // 输入参数:时间字符串的指针 void GetCurrent_Time(char *currtime) { char dbuffer [9]。 char tbuffer [9]。 _strdate(dbuffer)。 //获得日期 _strtime(tbuffer)。 //获得时间 strcpy(currtime, dbuffer)。 strcat(currtime, )。 strcat(currtime, tbuffer)。 //将两者拼接在一起,并用空格隔开 } //================================================================================================================= // 函数介绍:更新文件索引 // 输入参数: fileblockid 文件块 ID void AddFileIndex(unsigned fileblockid, unsigned filelevel, char *filename, char *parentname,FileType temp) { [].FileBlockId = fileblockid。 [].FileLevel = filelevel。 strcpy([].FileName, filename)。 [].Type = temp。 if (parentname == NULL) { memset([].ParentName, 39。 \039。 , NAME_LEN)。 //如果没有父亲节点的话,将其父亲节点格式化 } else { strcpy([].ParentName, parentname)。 } [].Index =。 [].effect = 1。 GetCurrent_Time([].creatTime)。 ++。 } //================================================================================================== // 函数介绍:更新位示图 // 输入参数: fileblockid 文件块 ID 更改对应的位示图 vo。操作系统课程设计--模拟文件管理系统
相关推荐
致、重复罗嗦、句序错位、用词不当等错误,请找出来并予以改正。 ( 7 分) ① 2020 年 5 月 6 日,《人民日报》首先披露了亚洲某国打算把端午节列入该国遗产名录向联合国申报的消息,②这一事件引起了有关部门的高度重视,③国内各家媒体继而纷纷跟进报道,④作为端午节由来地的岳 阳市也对此大为震惊。 ⑤我们试想,⑥端午节若为他国申请为文化遗产,那将是国人的渎职和耻辱。 ⑴语体风格不一致的是
划 三 绩效实施与管理 四 绩效评估 五 绩效反馈及评估结果的应用 六 平衡计分卡在酒店中的应用简介 第六 节 薪酬管理 一 薪酬管理的基本内容 二 薪酬设计 三 薪酬形式 四 工资制度的实施 第七 节 员工激励与管理 一 员工的激励心理 二 激励理论 三 关于酒店有效激励员工的几点建议 —— 以酒店实地调查研究结果为例 第八 节 人力资源保护 一 劳动关系 二 劳动保护 三 社会保 障 第九
个人的岗 位职责,形成员工的业绩指标。 另外还需跟进不同层级岗位的特征,考虑工作能力类指标和工作态度类指标,形成员工的绩效指标。 形成一个由企业、部门、个人组成的考核评价指标。 确定指标权重,选择合适的标准,不能只从单个指标出发,要合理的处理各个指标之间的关系,合理非配权重。 中小企业可根据自身实际,确定每个指标的具体评价标准。 ( 四 ) 规范绩效管理过程 首先,在绩效计划环节
工程的质量验收,正确判断该分部(子分部)是否合格。 建筑装饰装修工程和建筑地面工程质量验收的基本规定。 常见的抹 灰工程、饰面板工程、涂饰工程、建筑地面等子分部工程所包含的分项工程检验批主控项目和一般项目的检验标准;熟悉建筑装饰装修工程分部(子分部)工程质量验收的内容。 掌握建筑装饰装修工程和建筑地面工程质量验收的基本规定。 熟悉常见的抹灰工程、饰面板工程、涂饰工程
改善。 三、支撑企业持续发展 知识产权是企业重要的无形资产,企业通过加强知识产权管理,建立一套有效的知识产权保护体系,增强对知识产权保护。 首先有利于增强知识产权预警能力。 企业通过建立有效的知识产权管理机制,加强对生产产品、使用技术的知识产权现状的研究和分析,形成知识产权风险识别机制,可以有效防止自己生产的产品、使用的技术、在研项目等的知识产 权侵权行为发生,规避或降低知识产权侵权风险。 同时
e=reset name=Submit value=重置 /form 总管理员设置模块设计 总管理员在数据库中是惟一的,总管理员的信息在页面中不会显示出来,在此页面中只能修改自己的密码及对普通管理员进行设置。 用户单击“总管理员设置”超链接,进入总管理员设置页面。 系统首先对用户输入的账户和密码进行核对。 因为并不是所有的管理员都能够有这个权利,所以在 SQL 语句中应体现惟一性的条件