收藏 分销(赏)

操作系统专业课程设计范文.doc

上传人:w****g 文档编号:2798454 上传时间:2024-06-06 格式:DOC 页数:60 大小:392.54KB
下载 相关 举报
操作系统专业课程设计范文.doc_第1页
第1页 / 共60页
操作系统专业课程设计范文.doc_第2页
第2页 / 共60页
操作系统专业课程设计范文.doc_第3页
第3页 / 共60页
操作系统专业课程设计范文.doc_第4页
第4页 / 共60页
操作系统专业课程设计范文.doc_第5页
第5页 / 共60页
点击查看更多>>
资源描述

1、计算机系综合性实验实 验 报 告 课程名称 操作系统实验报告 实验学期 至 年 第 一 学期学生所在系部 计算机与信息管理系 年级 专业班级 计算机102 学生姓名 王强 黄新潮 张蒙 学号 11030082 11030070 11030077 任课教师 陆丽娜 实验成绩 计算机系制一种简朴文献系统详细设计一、实验目(1)阅读并调试一种简朴文献系统,模仿文献管理工作过程。从而对各种文献操作命令实质内容和执行过程有比较进一步理解。(2)理解设计一种n个顾客文献系统,每个顾客可以保存M个文献。顾客在一次运营中只能打开一种文献,对文献必要设立保护办法,且至少有create、delete、open、c

2、lose、read、write等命令。二、实验规定1、依照流程图阅读所给文献系统源程序,并对源程序加以注释(注释量达70%以上)。2、修改、完善该系统,指出程序bug。三、文献系统功能设计1. 功能设计该文献系统是一种多顾客、多任务文献系统。对顾客和顾客文献数目并没有上限。也就是说该系统容许任何顾客申请空间,并且在其目录下文献数目并不做任何限制。该系统可以支持操作命令如下: bye顾客注销命令。当使用该命令时,顾客退出系统,注销该顾客功能设计并回到登陆界面。命令格式: bye close删除顾客注册信息命令。执行该命令后,顾客在系统中所有信息,涉及该顾客目录下所有文献都被删除。命令执行完毕后返

3、回登陆界面。命令格式:close create在当前目录下创立一种文献,且该文献不能跟当前已有文献重名。该文献管理信息登记在顾客文献信息管理模块中。执行完该命令后回到执行命令行。命令格式:createfile1其中:“”符为提示符,file1为要创立文献名。 delete删除当前顾客目录下一种文献,命令执行完毕返回至命令行。命令格式:deletefile1 其中:file1为要删除文献名。 list显示当前注册目录下所有文献信息,涉及文献名、文献长度、文献操作权限。命令格式:list chmod变化某个文献执行权限,但前提是该文献是该顾客目录下文献。命令格式:chmodfile1。其中:fil

4、e1为要授权文献名。 open在window界面下打开某个文献。执行该命令后,文献file1将用在windows界面下文献形式打开。顾客可以在这个方式中对文献进行修改,并将修改后内容保存。命令格式:openfile1其中:file1为要打开文献名。 read读文献信息。将文献信息读入并显示在终端上。命令格式:readfile1其中:file1为要读文献名。 write向某个文献写入新信息。顾客可以选取用覆盖本来内容方式或和在文献末尾追加新信息方式写入信息。 当要退出时输入“#”即可。(2)系统采用二级文献目录。设立主目录(MFD)和顾客文献目录(UFD),分别以文献方式保存在磁盘中。在主目录中

5、有注册顾客顾客名和另一标志该顾客目录下与否有文献指针标记。顾客文献目录采用顾客名作为文献名保存于磁盘,以便检索时以便相应。在顾客文献目录中保存着该目录下所有文献文献名称、保护码、文献长度。(3)该系统大量使用高档语言中文献操作函数,因此能实际看到文献创立、写入、读出、删除等效果。2. 功能设计实现总体流程3. 重要数据构造struct UFD/顾客文献模块char filename32; /文献名int safecode; /文献保护码long length; /文献长度*curfile = NULL;这个是顾客文献模块数据构造,构造体名字是:UFD,在构造体里面定义了三个成员,filenam

6、e,safecode,length,分别用于存储顾客文献名字,文献保护码,文献长度,*curfile = NULL;,这是一种构造体类型指针,开始初始化为NULL.struct MFD/主文献模块char username32;/存储顾客名bool filepoint;/顾客目录下文献指针,false表达目录为空,true为该顾客目录中有文献*curuser = NULL,*elseuser=NULL;这个是主文献模块数据构造,有两个成员,username,filepoint,分别用于存储顾客名,顾客目录下面文献指针. *curuser = NULL,*elseuser=NULL;这两个是主文

7、献构造体变量,用于访问构造体里面数据成员4. 重要功能模块1. int LoginDisplay() /登陆选项操作函数2. bool Login(int SELETE)/顾客登陆,注册函数3. void DisplayUFD() /打印顾客信息,涉及顾客各个文献4. void ByeFile(bool BOOL)/注销函数,调用次函数顾客可以退出系统5. bool ClearUserFile()/顾客要将自己注册目录从系统彻底删除6. void ClearUserMes()/删除顾客所有信息7. void DeleteUser()/删除顾客注册目录操作8. void CreatFile()/

8、在当前顾客目录下创立文献9. void DeleteFile()/删除当前目录下一种文献操作10. bool QueryModElse(bool BOOL,bool &flag)/查询其他顾客目录下文献文献11. bool QueryMod(bool BOOL)/查询权限12. bool WriteRight(int len,bool BOOL) /查看与否已经对的地写入到该文献信息中,是则返回真值13. void WriteLengthToFile(int Len,bool BOOL)/将文献长度写入文献管理模块中14. void WriteFile()/向文献写入信息操作15. void

9、ReadFile()/读文献函数16. void ChangeMod()/修改某文献执行权限17. void Execute(int i,int len,int cmdset)/执行命令函数18. void Command()/读取顾客输入命令,并将其转换成系统能辨认命令5小构成员及分工 负责人:姓名模 块黄新潮组长分派任务,总结实验心得,分析流程图,给成员解说王强对源程序加以注释、修改张蒙对源程序读取,运营,截图,完善四、文献系统功能模块详细设计流程图1. int LoginDisplay() /登陆选项操作函数YNScanf SELETE_1Return SELETE_10=SELETE_

10、1LOGIN.exeEndCout error图4 ByeFileNYYNYNBegin 此模块重复调用,因而单独列出,更新xFDUpdate为True只更新,反之会进行删除操作Temp=Malloc(xFD)EOFFread(Temp,xFD,1,file/login.exe)Temp=username BufferUpdateFwrite(Temp,xFD,1,outfilelocate.exe) End图4.1 Update xFD5. bool ClearUserFile()/顾客要将自己注册目录从系统彻底删除NYYNBeginFile=username.exeFile EOFTemp

11、=Malloc(UFD)Fread(Temp,UFD,1,file)Remove Temp-fileReturn TrueEnd图5 ClearUserFile6. void ClearUserMes()/删除顾客所有信息Name=username.exeRemove NameUpdate(False) MFD(图4.1)End图6 ClearUserMesBegin7. int DeleteUser()/删除顾客注册目录操作OtherYY|yEnd图7 DeleteUserBeginchScanf chRR=ClearUserFile(图5)ClearUserMes(图6)Return 18

12、. void CreatFile()/在当前顾客目录下创立文献NOtherNY|yYYBeginBufferScanf ChFread(NewFile,UFD,1,username.exe)Server&Set BufferCout errorEnd图8 CreatFileCan WriteChScanf BufferCout TureNewFile=Malloc(UFD)9. void DeleteFile()/删除当前目录下一种文献操作OtherNY|yNYYBeginTure?ChScanf ChRemove BufferEnd图9 DeleteFileSearch UFD(图2.1)N

13、ame.exeUpdate(False) UFD(图4.1)10. bool QueryModElse(bool BOOL,bool &flag)/查询其他顾客目录下文献文献NNNNYYY31|33 YYNNYBeginTemp.File=BufferCout errorFread(Temp,UFD,1,user.exe)Return TrueEnd图10 QueryModElseEOF?Temp?Return FalseTemp=Malloc(UFD)BOOL32|3311. bool QueryMod(bool BOOL)/查询权限NNYYNYNNNYYBeginUsername.exeE

14、OFFread(temp,UFD,1,username.exe)Return TrueElse=Malloc(MFD)End图11 QueryModbuffertemp=Malloc(UFD)EOFFread(Else,MFD,1,Login.exe)Username=ElseTureQueryModElse(图10)Return False12. bool WriteRight(int len,bool BOOL) /查看与否已经对的地写入到该文献信息中,是则返回真值NYNNYYNYNNYYBeginUsername.exeEOFFread(temp,UFD,1,username.exe)L

15、ength=lenReturn FalseEnd图12 WriteRighttemp=Malloc(UFD)BufferFwrite(temp,UFD,1,outfilelocate.exe)outfilelocate.exeLength+lenEOFBufferFread(temp,UFD,1,username.exe) BOOLRemove username.exeoutfilelocate.exe -username.exeReturn Ture13. void WriteLengthToFile(int Len,bool BOOL)/将文献长度写入文献管理模块中NYYYNNBegin

16、LOGIN.exeFread(Else,MFD,1,LOGIN.exe)EndCout error图13 WriteLengthToFileElse=Malloc(MFD)EOFWriteRight(图12)True?14. void WriteFile()/向文献写入信息操作NN2OtherYY21YYNNBegin BufferEndGet char图14 WriteFileScanf ChmodChmodQueryMod(true)(图11)True?Char!=#Fput(char,buffer)Get charChar!=#Fput(char,buffer)WriteLengthTo

17、File (图11)Cout error15. void ReadFile()/读文献函数NYYYNNBegin True?Putchar(ch)EndCout error图15 ReadFileFgetchar(buffer)BufferQueryMod(False)(图12) EOF?16. void ChangeMod()/修改某文献执行权限OtherYNY|yBegin True?Scanf ModEndCout error图16 ChangeModPrintf Mod TestChSearch UFD(图2.1)Scanf chUpdate UFD(图4.1)Remove usern

18、ame.exeoutfilelocate.exe-username.exe17. int Execute(int i,int len,int cmdset)/执行命令函数987654231NYNYBegin Cmdi!=0Bufferi=CmdiEndCout error图17 ExecuteListAllFileBuffer?ChangeMod(图16)ByeFile(图4)OpenFileReturn TempcmdsetDeleteUser(图7)CreatFile (图8)DeleteFile (图9)ReadFile (图15)WriteFile (图14)18. void Comm

19、and()/读取顾客输入命令,并将其转换成系统能辨认命令YNYNYNYBegin 1Scanf cmdEnd图18 CommandBufferi=cmdi| |len-1Cmdset=0|mid二分查找命令编号CmdsetEndIt?Execute(图17)五、实验运营成果/* * 文献名:Simple_file_system.c* 功 能:简朴文献管理系统模仿程序 */#include#include#include#include#include conio.h#include#define NULL 0#define keynum 10#define getspace(type) (ty

20、pe*)malloc(sizeof(type) /宏定义 申请内存char cmd64; /存储顾客输入命令char buffer36;/char user32;/存储当前登陆顾客名typedef char ALFA12;ALFA KWORDkeynum;/-struct UFD/顾客文献管理模块char filename32; /文献名int safecode; /文献保护码long length; /文献长度*curfile = NULL;/-struct MFD/顾客登陆信息管理模块char username32;/顾客名bool filepoint;/顾客目录下文献指针,false表达

21、目录为空,true为该顾客目录中有文献*curuser = NULL,*elseuser=NULL;typedef UFD UFD; /重命名typedef MFD MFD;void main();/-void KeyWord()/初始化命令核心字strcpy(KWORD 1,bye); /顾客注销命令strcpy(KWORD 2,chmod); /变化文献执行权限strcpy(KWORD 3,close); /删除顾客注册信息strcpy(KWORD 4,create); / 在当前目录下创立一种文献strcpy(KWORD 5,delete); /删除当前顾客目录下一种文献strcpy(K

22、WORD 6,list); /显示当前注册目录下所有文献信息strcpy(KWORD 7,open); /打开文献strcpy(KWORD 8,read); /读文献信息strcpy(KWORD 9,write); /向文献写入新信息/-int LoginDisplay() /登陆选项操作函数int SELETE_1 = 0; /定义整型数存储选项do /循环控制 cout *请选取操作*n1、顾客登陆 2、顾客注册 0、退出SELETE_1; /输入要选取命令while(SELETE_12); /选项判断system(cls); /清屏return SELETE_1; /返回选项数/-boo

23、l Login(int SELETE)/顾客登陆,注册函数FILE *fp,*fp1,*fp2; /定义文献char name12; /定义数组存储登录名switch(SELETE) /switch选取case 1:/顾客登陆if(fp = fopen(LOGIN.exe,rb) = NULL)/打开顾客注册目录管理文献coutn错误:不能打开登陆文献。endl; /显示错误getch(); /读取结束符system(cls); /清屏return false; /返回curuser = getspace(MFD); /顾客名申请空间coutname; /输入顾客登陆名while(!feof(

24、fp) /检查该顾客与否合法fread(curuser,sizeof(MFD),1,fp); /文献读取if(strcmp(curuser-username,name)=0) /比较输入顾客名与否与存在顾客名相似break;if(feof(fp) /如果没有找到跟当前登陆顾客名相似管理信息,执行下列代码coutn错误:该顾客不存在。endl; /显示“错误:该顾客不存在” fclose(fp); /关闭文献 return false; /返回elsefclose(fp); /关闭文献return true; /返回break; /跳出case 2: /新顾客注册if(fp=fopen(LOGI

25、N.exe,ab)=NULL)/如果登陆信息管理文献不存在fp=fopen(LOGIN.exe,wb+); /创立该信息管理文献char name12;curuser = getspace(MFD); /顾客申请空间while(1)coutn *新顾客注册*endl;coutname; /输入顾客注册名fp1 = fopen(LOGIN.exe,rb); /打开登陆文献,只容许读数据while(!feof(fp1)/查看该顾客名与否被别顾客占用fread(curuser,sizeof(MFD),1,fp1); /文献读取if(strcmp(curuser-username,name) = 0)

26、coutn该顾客已经存在,请重新输入!username,name); /拷贝输入顾客名到顾客名构造体 curuser-filepoint = NULL; /文献指针置空 fwrite(curuser,sizeof(MFD),1,fp); /顾客信息写入文献strcpy(user,curuser-username);/生成顾客文献管理模块strcat(user,.exe); /用于管理顾客目录下各个文献fp2=fopen(user,wb+); /打开文献,容许读和写fclose(fp2); /关闭fp2 coutn注册成功!endl; /提示注册成功 LoginDisplay();fclose(

27、fp1); /关闭fp1 fclose(fp); /关闭fpbreak;fp = fopen(LOGIN.exe,rb);/显示当前注册顾客名称while(1)fread(curuser,sizeof(MFD),1,fp); /文献读取if(feof(fp) /检查与否最后顾客break;coutusernamefilepoint = false)/当前顾客目录下没有任何文献存在coutn顾客 username 文献夹是空username); /拷贝顾客名到定义strcat(filename,.exe); /扩展名.exeif(fp=fopen(filename,rb)=NULL)/打开顾客文

28、献信息管理模块coutn无法打开顾客:username 文献!endl; /显示getch(); /读取结束符return;else /读入并将顾客所有文献信息打印在终端cout顾客:username目录下文献:endl;UFD *ufd; /申请文献模块int i=0;ufd = getspace(UFD); /申请存储顾客文献模块空间while(1)fread(ufd,sizeof(UFD),1,fp); /文献读取,把文献信息读到顾客中if(feof(fp) /所有输出break;else /打印信息coutfilenametlengthtsafecodeendl; /输出文献信息fclose(fp); /关闭文献 /-void ByeFile(bool BOOL)/注销函数,调用次函数顾客可以退出系统FILE *infile,*outfile; /定义文献char out50; /定义数组out50strcpy(out,outfilelocate.exe); /拷贝信息到数组if(infile=fopen(LOGIN.exe,rb)=NULL)/检查与否保存coutn保存错误。;/fclose(infile);return;elseif(outfil

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服