资源描述:
《操作系统课程设计文件操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、石家庄经济学院课程设计报告(学院)系:信息工程学院专业:软件工程姓名:班级:学号:指导教师:年月日操作系统课程设计报告姓名学号日期实验室260指导教师设备编号设计题目文件操作一、设计内容文件操作及其实现。二、设计目的文件系统是操作系统中管理和存取信息的机构,它具有“按名存取”的功能,不仅方便用户,而且能提高系统效率且安全可靠。在用户程序中可使用文件系统提供的一整套文件操作(文件类系统调用),这类操作一般包括“打开文件”、“关闭文件”、“读文件”、“写文件”和“撤消文件”等。本实习模拟文件操作的实现,通过实习了解各文件操作的作用。三、设计过程1.数据结构设计1)主文件目录的数据结构
2、:structMFD{charb[N];//用户名称intad;//文件地址};2)文件控制块FCB的数据结构:structFCB//文件控制块{charfilename[20];//文件名charshuxing;//文件属性'w'可读可写,'r'只读intlength;//文件长度intflag;//"0"目录为空"1"存在文件目录intwrite;intaddress;//文件地址};3)用户已打开文件表UOF的数据结构:structUOF//用户已打开文件表UOF,用以说明当前正在使用的文件的情况{charfilename[20];//文件名charshuxing;//'w
3、'可读可写,'r'只读intlength;//记录长度intflag;//"0"目录为空"1"存在文件目录intread;//读指针intwrite;//写指针intstate;//1建立;0打开};2.算法设计1)该源程序分为以下几个模块voidcreat()//创建用户文件voidclose(charname[20])//文件关闭voidopen()//打开文件voidwrite()//写文件voidread()//读文件voiddelete1()//撤销文件voidprint_UFD()//输出用户文件目录voidprint_UOF()//输出文件表2)各个模块的算法流程图
4、(1)程序的结构化框图即主程序流程图如图1.staticintFAT[128]={1,2,-1,4,5,-1,7,8,-1,10,11};//规定磁盘块的首地址,-1为文件结束标志structMFDMFD[N]={{"abc",0},{"123",3},{"xyz",9}};//初始化主文件目录structFCBUFD[N][L]={{{"a.txt",'w',3,1,0,0},{"b.txt",'r',3,1,3,3}},{{"c.txt",'w',3,1,6,6}},{{"x.txt",'w',1,1,9,9},{"y.txt",'r',1,1,10,10}}};//初始化用
5、户文件目录表图1程序结构化框图(2)创建用户文件函数voidcreat()函数功能:对UFD进行搜索,若UFD中没同名文件则在UFD和UOF中找空记录栏登记文件名,记录长度和文件属性,在FAT表中找空磁盘号记录地址,更改状态为建立,显示建立成功。流程图如图2所示。图2“建立文件“流程图(3)打开文件函数voidopen()函数功能:在UFD中搜索目标文件,找到后再在UOF中查看该文件状态,若为建立状态,提示:正在建立,不能打开;否则,提示文件已打开。如果UOF中没有该文件则登记其信息更改读、写指针,显示打开成功。流程图:如图3所示。图3“打开文件”流程图(4)写文件函数voidw
6、rite()函数功能:在UOF中搜索目标文件,找到后再在UOF中查看该文件状态,若为建立状态则把记录信息写到“写指针”之处的物理块中,在FAT中修改链接字,修改“写指针”;若为打开状态则检查文件属性,不能对“只读”的文件进行操作,文件为可读可写是则让用户选择是否顺序修改(n=1为是)。顺序修改直接修改“写指针”,非顺序修改则需查FAT表找到指定记录的存放块号,修改信息。显示写文件成功。流程图:如图4所示。图4“写文件”流程图(5)读文件函数voidread()函数功能:在UOF中搜索目标文件,找到后再在UOF中查看该文件状态,若为打开状态则从“读指针”得到当前起始地址,按读长度把
7、信息读出传送给用户,修改读指针,显示读文件成功;否则显示文件未打开,不能读。流程图:如图5所示。图5“读文件”流程图(6)撤销文件函数voiddelete1()函数功能:在UFD中搜索目标文件,找到后再在UOF中查看是否有该文件,有则清除文件登记栏,归还文件所占存储区域并在UFD中清除该文件登记栏。如果在UFD中不存在该文件则显示文件已撤销。流程图:如图6所示。图6“撤销文件”流程图(7)文件关闭voidclose(charname[20])函数功能:把文件从已打开文件表中除名。