付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、山东理工大学计算机学院程设计(操作系统)级名指导教师年六月二十四日课程设计任务书及成绩评定I、题目的目的和要求:巩固和加深对操作系统(OS)原理的理解,初步掌握操作系统组成模块和应用接口的使用方法,提高进行工程设计和系统分析的能力;通过选做上面的课题,实现OS最基本模块的管理功能,重点放在数据结构设计、文档规范化和程序设计风格。II、设计进度及完成情况课题名称基于多级文件目录的文件管理系统设计12346.13-6.15选取参考书,查阅有关文献资料,完成课程设计说明书内容1部分。完成课程设计说明书内容2-4部分6.166.20创建相关数据结构,录入源程序6.216.22调试程序并记录调试中的问题
2、,完成课程设计说明书第5部分。6.23系统测试,演示设计成果,考核成绩。6.24整理课程设计说明书,上午11时,由学习委员交课程设计说明书(计算机科学系9#213或直接交给指导教师)m、主要参考文献及资料汤子赢等.计算机操作系统(第二版).西安电子科技大学出版社,2006.8冯耀霖等.操作系统,西安电子科技大学出版社.1992张尧学等.计算机操作系统教程(第2版).清华大学出版社,2001.4谭耀铭.操作系统.中国人民大学出版社,2003.4刘坤起.操作系统学习辅导与习题详解M.北京:电子工业出版社,2003:58-67孙钟秀等编着,操作系统教程M,高等教育出版社,2003:46-78W、成绩
3、评定:设计成绩:(教师填写)指导老师:(签字)年六月二十四日第一章概述.第二章系统分析.第三章系统设计.第四章 程序设计流程图或N-S图.第五章第六章调试过程中的问题及系统测试情况.结束语.附录.10第一章概述课程设计是实践性教学中的一个重要环节, 它以某一课程为基础, 可以涉及和课程 相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学对所学的课程 更全面的学习和应用,理解和掌握课程的相关知识。计算机操作系统一门重要的专 业课,是开发操作系统和软件系统的理论和应用基础。本课程设计要求设计一个基于多级文件目录的文件管理系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文
4、件操作的实现,加深对文件系统内部功能 和实现过程的理解。第二章系统分析1 .在内存中开辟一个虚拟磁盘空间作为文件存储器,管理系统。2.文件物理结构可采用显式链接或其他方法。4.文件目录结构采用多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。5.设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:第三章系统设计1 .文件的操作在其上实现一个多级文件目录的文件char p rotect;/保护码文件的打开:2.数据结构体1)文件夹数据结构体:typedef s
5、truct MFD/主文件目录char user name100;char p assword100;MFD;2)用户文件数据结构体:typedef struct UFD /用户文件目录char file name256;(1)文件的创建:(3)文件的读:read(4)文件的写:write(5)文件关闭:closeFILE *fp;/文件目录指针UFD;3)功能实现命令数据结构体:typedef struct COMM /命令串char string256;/用户命令串struct COMM *next; /后继指针:指向命令各参数所在的结点COMM;DISK;3.主要模块组成int len
6、gth;/文件长度MFD mai nfdN;/主文件目录数组UFD userfdM;/用户文件目录数组OFD open fdL;/打开文件目录数组COMM *comma nd;/命令串指针int next;char p rotect;/保护码#in elude #in elude #in elude #in elude 2)功能模块实现函数:1)头文件:#in elude #in elude vconi o.h/里面有clrscr()青屏函数#in elude /内存分配函数#defi ne N 30/用户数#defi ne M 20/一个用户可保存M个文件#defi ne L 5/用户只能一
7、次打开L个文件/初始化主文件目录数组void init_ufd(char *username);/初始化用户文件目录void mesg(ehar *str); /输出函数void ini t();char *getuser();/设置用户函数声明char *get pass();/设置口令函数声明COMM *readcommand();/读命令串函数声明void logi n();/用户登录void set pass();/设置口令void create();/创建用户文件void mydeleteO;/删除void myread();/读void myopenO;/打开void myclos
8、e();/关闭void mywrite();/写void hel p();/帮助第四章程序设计流程图或N-S图图1程序流程图第五章 调试过程中的问题及系统测试情况1 .运行后主界面显示图2主界面2输入login命令 用户登陆,当用户账号不存在时,即可创建:图3创建用户3创建用户下文件功能实现:图4创建用户4打开文件open命令功能的实现图5打开文件5读文件read命令功能实现图6.读文件6.写文件write命令功能实现,及对内容中添加实现图7写文件8.退出文件logout操作图8退出文件第六章结束语这次操作系统课程设计,在编写过程中,遇到很多难题,特别是在操作系统实验中#in elude vc
9、oni o.h/里面有cIrscrO清屏函数不曾注意到的问题,也有许多新的问题,在实际反复调试运行中,不断加深了对操作系统的理解,也很大地程度上提高了编程的能力,由于对重要概念的把握程度还不够深入,在实际理解编写时遇到很多不该发生的问题。不过,都很好的解决并牢牢地掌握住了。通过做多级目录文件系统, 我知道了多级目录文件系统的工作原理, 在打开文件时系统 是如何进行操作的,并加深了理解。希望在以后的学习中,继续保持这份昂扬的斗志, 继续努力学习计算机方面的知识,永不懈怠。通过这次课程设计, 不仅让我了解了多级目录文件系统, 更重要的还让我学会了、或者说是验证了“做事一定要有次序和对事物的总体把握
10、”这句话。开始我一味的进行 调试,急切的想侥幸调试出来,但由于没有进行深入的考虑,我调试了很久都没没有成 功,我仔细的分析题目,分析材料,在原由的基础上我进行了改正,我最后还是调试成 功了,虽然还是经过了一翻努力,当然汗水还是留的很值,这次操作系统实习,不仅让 我对操作系统这门课程有了更深入的研究、对很多重要的概念有了巩固和掌握,还给了 我今后做事的启示。做事要塌实,不能想着一步登天,要有计划,有目的的进行做事。盲目真的不应该再在我们新一代的大学生身上出现了,我们应该认真找到自己的缺点并且及时改正。 在这里, 我如果不说感谢的话, 不知道要说些什么好; 首先感谢学校和父 母,然后更重要的是感谢
11、老师的教导。“活到老,学到老”,这也是我整个学习过程中 的一次经验、一次总结,我相信它肯定会给我今后的学习有所启示和指导作用。附录:源程序代码:#in elude #i nclude #in elude #i nclude #in elude typedef struct MFD/主文件目录char user name100;char p assword100;MFD;typedef struct UFD /用户文件目录#in elude /内存分配函数FILE *fp;/文件目录指针#defi ne N 30/用户数#defi ne M 20/一个用户可保存M个文件#defi ne L 5/
12、用户只能一次打开L个文件char file name256;UFD;char file name256;char p rotect;/保护码int len gth;/文件长度typ edef struct OFD/打开文件目录char open code;/打开保护码int *fp;/读写指针OFD;typ edef struct COMM/命令串char stri ng256;/用户命令串struct COMM *next; /后继指针:指向命令各参数所在的结点void logi n();/用户登录COMM;char user name100;int user nu m,save num,o
13、pennum;int workfile;/初始化主文件目录数组void init_ufd(char *username);/初始化用户文件目录void mesg(char *str); /输出函数MFD mai nfdN;/主文件目录数组UFD userfdM;/用户文件目录数组OFD open fdL;/打开文件目录数组COMM *comma nd;/命令串指针void ini t();char *getuser();/设置用户函数声明char *get pass();/设置口令函数声明void logi n();/用户登录COMM *readcommand();/读命令串函数声明void
14、set pass();/设置口令void createO;/创建用户文件void mydeleteO;/删除void myread();/读void myopenO;/打开void myclose();/关闭void mywrite();/写void hel p();/帮助void mai n()ini t();prin tf(nttprin tf(ntt计科0804班0812103773张超);prin tf(ntt多级文件目录的文件管理系统prin tf(ntt);););while(1)readcomma nd();if(strc mp (comma nd-stn ng,create)=
15、O)create();else if(strc mp (comma nd-stn ng,delete)=O)mydelete();prin tf(ntt选择命令:)prin tf(nttlogi nset passcreate );prin tf(nttopenreadwritedelete);prin tf(ntthel pexitcopyren ame);prin tf(ntt首次使用请输入help命令请求帮助prin tf(ntt使用中欢迎以help vcomma nd请求帮助)) ;else if(strc mp (comma nd-stn ng,o pen )=0)myopenO;e
16、lse if(strcm p( comma nd-stn ng,close)=0)mycloseO;else if(strc mp( comma nd-stn ng,read)=0)myread();else if(strcm p( comma nd-stn ng,wnte)=0)mywrite();else if(strcm p( comma nd-stn ng,logi n)=0)logi n();else if(strcm p( comma nd-stn ng,set pass)=0)set pass();else if(strcm p( comma nd-stn ng,hel p)=0
17、)helpO;else if(strc mp( comma nd-stn ng,exit)=0)break;save num=0;elsemesg(Bad comma nd!);void mesg(char *str)prin tf(n %sn,str);void init()/初始化主文件目录数组FILE *fp;/文件指针char tempn ame20,te mpp ass20;user num=0;/全局变量初始化opennum=0;strc py(usemame,);/用户使用时,建立一个mainfile.txt文件,包括每个用户的用户名和口令/然后,才能运行此程序if(fp=fop
18、en(mainfile.txt,r)!=NULL)/以读方式打开文件mainfile.txtwhile(!feof(fp)/若不是文件尾strcpy(tempname,);/清空数组操作fgets(tempname,20,fp); /读用户名if(strc mp (te mpn ame,)!=0)fgets(te mpp ass,20,fp);tempnamestrlen(tempname)-1=0;/设置串结束符tempp assstrle n(te mpp ass)-1-0;strcpy(mainfdusernum.password,temppass);/生成userfd数组user nu
19、 m+;/生成user num的值if(user num=N)break;fclose(fp);void init_u fd(char *user name)/初始化用户文件目录FILE *fp;char temp file100,te mpp rot;int templen gth;save num=0;userfdsave nu m. protect=te mpp rot;/保护码opennum=0;workfile=-1;if(fp=fo pen (usemame,r+)!=NULL)while(!feof(fp)strc py(te mp file,);fgets(te mp file
20、,50,fp);if(strc mp (te mp file,)!=0)fsca nf(fp,%c, &tempp rot);fsca nf(fp,%d, &te mp le ngth);temp filestrle n(te mp file)-1=0;strcpy(userfdsavenum.filename,tempfile);/文件名usefdsave nu m.le ngth=te mplen gth;/文件长度save nu m+;fgets(te mp file,50,fp);char user name20;char temp;int i;user name0=0
21、;for(i=0;i20;)char *getuser()/设置用户函数声明temp=getch();if(isal nu m(tem p)|te mp=-_|te mp=(char)13)user namei=te mp;if(user namei=(char)13)usernamei=0;break;pu tchar(te mp);i+;user namei=O;while(!kbhit();/按用户名规则输入用户名return user name;char p assword20;char temp;int i;p assword0-0;for(i=0;i);for(i=0;istn n
22、g,te mp);newp-n ext=NULL;if(comma nd=NULL)comma nd=newp; /把各子串链成一个链表elseif(e nd0)/对命令行中的子串进行处理p=comma nd;while( p- next!=NULL)p=p-n ext;p-n ext=newp;p=comma nd;return comma nd;void logi n()/用户注册FILE *fp;int i;char p assword20,c on firm20,te mpn ame20;if(comma nd-n ext=NULL)prin tf(n User Name:);else
23、 if(comma nd-n ext- n ext!=NULL)mesg(Too many p arameters!);return;else strc py(te mpn ame,comma nd-n ext-stri ng);for(i=0;i=N)mesgC创建新账号错误!用户账号字符超过限制.n登陆失败!);elsestrcpy(mainfdusernum.username,tempname);/把新用户和口令填入mainfd中if(i=usemum)/新用户printf(n新用户账号,输入你的密码两次!);prin tf(n密码:);strc py(p assword,get pas
24、s();/输入口令并且返回之prin tf(n密码:);strc py(c on firm,get pass();/第二次输入口令if(strc mp(p assword,c on firm)=0)/两次输入的口令是否相同的处理情/用户数不能超过Nstrc py(mai nfdusemum. password, password);user nu m+;strc py(usemame,te mpn ame);mesg(创建新用户!n登陆成功恭喜!);ini t_ufd(username);fp=fo pen (ma in file.txt,w+);for(i=0;iuser nu m;i+)f
25、puts(mai nfdi.username,fp);fputs(n,fp);fpu ts(ma in fdi. passwordp);fputs(n,fp);fclose(fp);目录mai nfile.txt文件中/初始化用户文件/把新用户填入elsemesg(创建新用户失败!两次输入密码不一致!);mesg(登陆失败!);prin tf(n密码:);strc py(p assword,get pass();if(strcm p( mai nfdi. password, password)!=0)mesg(登陆失败!输入密码错误!);mesg(登陆成功恭喜你!);strc py(usema
26、me,te mpn ame);else/两次输入的口令是否相同的处理情况else/注册过的用户登陆elseini t_ufd(username);void set pass()/重新设置口令int i;FILE *fp;char old pass20, newp ass20,co nfirm20;if(strc mp (usemame,)=0)mesg(No user log in!);printf(n旧密码:);strc py( old pass,get pass();for(i=0;iuser nu m;i+)if(strcm p(main fdi.user name,user name)
27、=0)break;if(strcm p( mai nfdi. password,old pass)!=0)mesg(日密码错误!);elseprintf(n新密码:);strc py(newp ass,get pass();printf(n确认密码:);strc py(c on firm,get pass();if(strc mp(newp ass,co nfirm)!=0)mesgC密码修改错误!确认密码错误.请重新输入”);elsestrc py(mai nfdi. password, newp ass);mesg( Password cha nged!);fp=fo pen (ma in
28、 file.txt,w+);fputs(mai nfdi.username,fp);fputs(n,fp);fpu ts(ma in fdi. passwordp);fputs(n,fp);fclose(fp);for(i=0;in ext=NULL)mesg(Too few p arameters!);/存在2个或3个参数的处理strc py(te mp file,);temp code=r;if(strcm p( comma nd-n ext-stri ng,/r)=O)temp code=r;typ e=1;else if(strc mp (comma nd-n ext-stri ng,
29、/w)=0)temp code=w;elseelsetyp e=1;else if(strc mp (comma nd-n ext-stn ng,/d)=O)temp code=d;typ e=1;else if(comma nd-n ext-stri ng0=7)mesg(Error! /r /w /d request!);else if(comma nd-n ext- n ext!=NULL)mesg(Too many p arameters!);elsestrc py(te mp file,comma nd- next-stn ng);if(comma nd-n ext- n ext!=
30、NULL)if(typ e=1)/三个参数的情况补充if(comma nd-n ext- n ext- n ext!=NULL)mesg(Too many p arameters!);else strc py(te mp file,comma nd-n ext- n ext-stri ng);else mesg(Too few p arameters!);if(strc mp (te mp file,)!=O)for(i=0;i=save num)mesg(File not existed!);/文件存在的情况for(i=0;i=L)/打开的文件已经占满了5个名额mesg(Error! can
31、not open file! ni mber of opened files limited!);/打开处理strc py(open fdo pennu m.file name,te mp file);if(iv opennum)/文件已经打开elseopenfdopennu m.o pen code=te mp code;workfile=opennum;opennu m+;mesg(File open success!);void myclose()int i,j;char tem pfile1OO;if(strc mp (username,)=0)mesg(No user log in!
32、);/关闭文件elseif(comma nd-n ext=NULL)mesg(Too few p arameters!);else if(comma nd-n ext- n ext!=NULL)mesg(Too many p arameters!);elsestrc py(te mp file,comma nd-n ext-stri ng);for(i=0;i=save num)/文件不存在for(j=0;jv opennu m;j+)if(strc mp(open fdj.file name,te mp file)=0)break;mesg(文件存在了但是没有打开!);strc py(o p
33、en fdj.file name,);open fdj.o pen code=;opennu m-;if(j=opennum)/文件存在了但是没有打开else/文件存在并且打开mesg(文件关闭成功!);/用于确定被删除文件在数组usefdM中的位置char tem pfile1OO;FILE *fp;if(strc mp (usemame,)=0)mesgC没有用户登陆!);elseif(comma nd-n ext=NULL)mesg(Too few p arameters!);else if(comma nd-n ext- n ext!=NULL)void mydeleteO/删除文件i
34、nt i,j;int temp save;mesg(太多参数导致错误 门;elsestrc py(te mp file,comma nd-n ext-stn ng);for(i=0;ivsave nu m;i+)if(strc mp (userfdi.file name,te mp file)=0)break;temp save=i;mesg(the file donot existed!);elsefor(j=0;j=save num)/文件不存在mesg(文件不能删除!);mesg(首先需要关闭它!);strc py(userfdte mp save.file name,);userfdt
35、e mp save. protect-;userfdte mp save.le ngth=O;save nu m-;strc py(userfdi.file name,userfdi+1.file name);userfdi. protect=userfdi+1. protect;usefdi.le ngth=usefdi+1. protect;mesg(File delete!);if(j opennum)/文件存在了但是打开else/文件存在并且没有打开for(i=te mp save;i=save nu m;i+)/从新将数组userfdM排fp二fopen( user name,w+)
36、;/写回到文件usernamefor(i=0;in ext=NULL)mesg(参数太少导致错误!);else if(comma nd-n ext- n ext!=NULL)mesg(参数太多导致错误门;elsestrc py(te mp file,comma nd-n ext-stri ng);for(i=0;ivsave nu m;i+)if(strcm p(te mp file,userfdi.file name)=0)break;if(i=save num)mesg(文件不存在!);elsetemp save=i;for(i=0;i=opennum)mesgC文件没有打开!);elseif(userfdtem psave.le ngthvlOOO)prin tf(n The file size is %d B,userfdte m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 历史古代名人俞大猷人物介绍课件
- 2026年文物保护工程从业资格考试(责任设计师保护规划)经典试题及答案(松原)
- 2026年度文物保护工程从业资格考试(保护规划)练习题及答案
- 2025年青州市立医院医护人员招聘笔试题库及答案详解
- 2026年加查县人民医院医护人员招聘考试参考题库附答案详解
- 2026年成都铁路局中心医院医护人员招聘考试模拟试题及答案详解
- 2025年武安市冶金矿山职工医院医护人员招聘笔试题库及答案详解
- 2025年瑞安市第五人民医院温州市精神病院医护人员招聘笔试题库及答案详解
- 2026年积石山县人民医院医护人员招聘考试模拟试题及答案详解
- 2025年安阳矿务局总医院医护人员招聘笔试题库及答案详解
- 2025年成都市金牛区社区工作者招聘考试试题及答案解析
- 2026版《特种作业目录》深度解读
- 浙江湖州市自然资源发展有限公司招聘考试笔试试题
- 2026年北京市平谷区初三下学期二模物理试卷和答案
- 三年级下册《道德与法治》全册知识点(人教版)
- 《煤矿重大事故隐患判定标准》标准执行解读
- 2026年云南校长职级模拟题库附答案详解【综合卷】
- 酒店餐饮服务质量提升技巧培训资料
- DB21∕T 4374-2025 林业经营数表
- 《油气输送管道工程地质灾害防治设计规范》SYT 7040-2021
- 汽车修理厂安全生产管理制度汇编
评论
0/150
提交评论