版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1. 需求分析2.2. 概要设计 用户结构:账号与密码结构 数据结构说明各模块流程图3.3. 详细设计4.4. 调试与操作说明 5.5. 课程设计总结与体会 8.6. 致谢8.7. 附录9.201. 需求分析文件系统是linux操作系统的重要组成部分,Linux文件具有强大的功能。文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。从这我们可以看出文件系统的重要性,要好好掌握,通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内
2、部实现。2. 概要设计2.1系统的主要功能为Linux系统设计一个简单的二级文件系统,以实现下列功能:可以实现下列几条命令(1) login 用户登录(2) dir 文件目录列表(3) creat 创建文件(4) delete 删除文件(5) open打开文件(6) close关闭文件(7) read读文件(8) write写文件2.2系统模块功能结构本系统是模拟实现多用户多目录的文件系统(8个用户),在系统出现登录后,输入用户与口令,在用户登录系统后,可建立文件卷,将用户输入的文件保存在指定的文件中。系统 的命令与其命令的具体实现,此模拟系统共提供了login用户登录dir列文件目录mkdi
3、r建立目录create创建文件del删除文件open打开文件read读文件write写文件上述命令,并根据命 令的含义与要求,用C+编程来完成所有具体操作。该系统可以模拟完成用户的登陆和验证,列出文件和目录,新建目录,改变目录,创立和编写文件,删除文件和退出系统等功能。运行环境要求开发环境:windows 平台 +visual C+6.0运行环境:windows全系列平台 Visual C+6.0 linux环境下用g+编译C+开发语言:C+2.3数据结构设计2.3.1用户结构:账号与密码结构typedef struct users(char name8;char pwd10;users;本系
4、统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入 系统,否则提示失败要求重新输入。users usrarray8=("usr1”,"usr1”,"usr2”,"usr2”,"usr3","usr3","usr4","usr4","usr5","usr5","usr6","usr6","usr7","usr7","usr
5、8","usr8",;2.3.2数据结构说明a) 文件结构链表struct fnode(char filenameFILENAME_LENGTH;int isdir;int isopen;char content255;fnode *parent;fnode *child;fnode *prev;fnode *next;b) 函数介绍fnode *initfile(char filename,int isdir);/初始化文件或目录void createroot();/建立系统根目录int run();系统运行int findpara(char *topara);
6、对参数进行处理bool chklogin(char *users, char *pwd);检查账号与 口 令void help();命令列表int mkdir();建立目录int create();建立文件int read();读取文件int write();写入文件int del();删除文件int cd();切换目录int dir();文件与目录列表2.3.3各模块流程图用户登录1用户退出3. 详细设计确定程序设计的各个模块的算法及内部的数据组织,包括主要代码并描述各种算法3.1用户结构:账号与密码结构typedef struct users(char name8;char pwd10;u
7、sers;本系统有8个默认的用户名,前面是用户名,后面为密码,用户登陆时只要输入正确便可进入 系统,否则提示失败要求重新输入。users usrarray8=("usr1","usr1","usr2","usr2","usr3”,"usr3”,"usr4","usr4","usr5","usr5","usr6","usr6","usr7","usr
8、7","usr8","usr8",;3.2数据结构说明a)文件结构链表struct fnode(char filenameFILENAME_LENGTH;int isdir;int isopen;char content255;fnode *parent;fnode *child;fnode *prev;fnode *next;b)函数介绍fnode *initfile(char filename,int isdir);/初始化文件或目录void createroot();/建立系统根目录int run(); 系统运行int findpara(
9、char *topara);对参数进行处理bool chklogin(char *users, char *pwd);检查账号与 口 令void help();命令列表int mkdir();建立目录int create();建立文件int read();读取文件int write(); 写入文件int del();删除文件int cd();切换目录int dir();文件与目录列表4. 调试与操作说明1 2 1 2 葺序录录 文文程冒1 2 AJ&L 一 Jrr.thLiJfr-二-kL .1/ SS.B93.9H文件建立成巧, linux: / >mkdir 新建目录1lin
10、iinx: />mkd* 新建自泉2linux:z>nkdir 程序1lin<jix:/>irikdii*程序2llnux:Z>dirFILE <FILE> <FILE> <DIR> <D1R> <DIR> <DJR>Total: direc tDif£ linux:/> *C;U te rsAdmi niitrj t&rDesictopDe b ugli. enerflinux:Z>mkdiir 程序2 linux;z>dir FILE, FILE<
11、FILE> <D1R> <DIR><DIR><DIR>tai: directorsde除dix>序删/>X:程已X:nu黑nu11我文111FILE<FILE>DIR<BIR><DIR><DIR>Tntal: directorslinux:/>半:12 12 12 12 禅章录 祥录录 文文普目1 2 文文目目1 2 &一 -#-B-二 -§FrFn.E&-一-fr.B-E一 R Sni4 USLd12 12 鼻录形 文文目目1 匹二一&-二
12、&-二B-_fenJr 建建a片% CiU?ersAdm i n i stratGrXDesktopXDebu glitej(ea区件已删除, linux-/>d ir<FJLE><FILE> <DTR> <D1R> <DJR>Total - d irectoi'slifiux:/>wi*ite tesife目是 仑律写入成功? linux:/>dii*<FJLE>文件系统设计<F LE><DIR><DR><DIR>otal: dLrecta
13、ts12 12 n录录 文文nnnn 1 B-二 一B-一 - -&- - -Eb二 一 J? «建«建序 卦疾弥新程3linux:/>read腐矗罪矗是=文件系统设计l±nux:/>5. 课程设计总结与体会经过几周的共同努力,在老师提供的帮助的基础上, 我们将程序按要求设计并修改完善, 使其能实现课程设计要求的基本功能。操作系统是计算机科学与技术专业中的一门重要基础 课,目的是让我们了解操作系统的基本概念,理解计算机系统的资源如何组织,操作系统如何有效地管理这些系统资源,用户如何通过操作系统与计算机系统打交道。通过课程设计, 可以进一步理解在
14、计算机系统上运行的其它各类操作系统,并懂得在操作系统的支持下建立自己的应用系统。操作系统课程设计,对于训练我们掌握程序设计、熟悉上机操作和程序调 试技术都有重要作用。重点培养我们的思维能力、创新能力和排错能力。通过课程设计,进一步融会贯通教材内容,掌握程序各功能模块的工作原理,相互联系和来龙去脉,完整地建立系统的概念。激发我的学习热情和主动性,培养我的独立工作能力, 在实践活动中,将所学知识综合运用,增长才干,并积累经验。对编程语言c又有了更深一层次的认识,并对其的编程能力有所加强,但还是很多的不足有待改进,对于编程来说还需要大量的实践,才能在发现问题和解决问题中前进与提高。6. 致谢在这次课
15、程设计的过程中,我得到了许多人的帮助。首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助, 这是我能顺利完成这次报告的主要原因, 更重要的是老师帮我解决了许多技术上的难题, 让我能把系统做提高了自己的设得更加完善。在此期间, 我不仅学到了许多新的知识,而且也开阔了视野, 计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。同时也感谢学院为我提供良好的做毕业设计的环境。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学7. 附录系统的主要源代码#include "stdio.h"#include "iostream
16、.h"#include "string.h"#include "iomanip.h"#define FILENAME_LENGTH 10 / 文件名称长度#define COMMAND_LENGTH 10 / 命令行长度#define PARA_LENGTH 30 /参数长度/账号结构typedef struct userschar name8;char pwd10;users;/文件结构struct fnodechar filenameFILENAME_LENGTH;int isdir;int isopen;char content255;f
17、node *parent;fnode *child;fnode *prev;fnode *next;/账号users usrarray8="usr1”,"usr1”,"usr2”,"usr2”,"usr3”,"usr3”,"usr4”,"usr4”,"usr5","usr5","usr6”,"usr6”,"usr7”,"usr7”,"usr8”,"usr8”,;fnode *initfile(char filenam
18、e,int isdir);void createroot();int run();int findpara(char *topara);bool chklogin(char *users, char *pwd);void help();int mkdir();int create();int read();int write();int del();int cd();int dir();fnode *root,*recent,*temp,*ttemp;charparaPARA_LENGTH,commandCOMMAND_LENGTH,tempparaPARA_LENGTH,recentpara
19、PARA _LENGTH;/创建文件与目录结点fnode* initfile(char filename,int isdir)fnode *node=new fnode;strcpy(node->filename,filename);node->isdir=isdir;node->isopen=0;node->parent=NULL;node->child=NULL;node->prev=NULL;node->next=NULL;return node;/创建文件存储结点void createroot ()recent=root=initfile(&q
20、uot;/",1);root->parent=NULL;root->child=NULL;root->prev=root->next=NULL;strcpy(para,"/");int mkdir()(temp=initfile(" ",1);cin>>temp->filename;if(recent->child=NULL)(temp->parent=recent;temp->child=NULL;recent->child=temp;temp->prev=temp-&g
21、t;next=NULL;else(ttemp=recent->child;while(ttemp->next)(ttemp=ttemp->next;if(strcmp(ttemp->filename,temp->filename)=0&&ttemp->isdir=1)(printf(" 对不起,目录已存在!");return 1;ttemp->next=temp;temp->parent=NULL;temp->child=NULL;temp->prev=ttemp;temp->next=NUL
22、L;return 1;int create()(temp=initfile(" ",0);cin>>temp->filename;cin>>temp->content;if(recent->child=NULL)(temp->parent=recent;temp->child=NULL;recent->child=temp;temp->prev=temp->next=NULL;cout<<"文件建立成功!"<<endl;else(ttemp=recent-&g
23、t;child;while(ttemp->next)(ttemp=ttemp->next;if(strcmp(ttemp->filename,temp->filename)=0&&ttemp->isdir=0)(printf(" 对不起,文件已存在!");return 1;ttemp->next=temp;temp->parent=NULL;temp->child=NULL;temp->prev=ttemp;temp->next=NULL;cout<<" 文件建立成功!&quo
24、t;<<endl;return 1;int dir()(int i=0,j=0;temp=new fnode;temp=recent;if(temp!=root)(cout<<" <DIR>"<<".”<<endl;i+;if(temp->child=NULL)(cout<<"Total: "<<" directors" <<i<<" files"<< j <<endl
25、;return 1;temp=temp->child;while(temp)(if(temp->isdir)(cout<<" <DIR>"<<temp->filename<<endl;i+;else(cout<<" <FILE>"<<temp->filename<<endl;j+;temp=temp->next;cout<<"Total:"<<" directors"
26、 <<i<<"files"<< j <<endl;int read()(char filenameFILENAME_LENGTH;cin>>filename;if(recent->child=NULL)(cout<<"文件不存在!"<<endl;return 1;if(strcmp(recent->child->filename,filename)=0)(cout<<recent->child->content<<en
27、dl;return 1;else(temp=recent->child;while(temp->next)(if(strcmp(temp->next->filename,filename)=0)(cout<<temp->next->content<<endl;return 1;cout<<"文件不存在!"<<endl;int write()(char filenameFILENAME_LENGTH;cin>>filename;if(recent->child=NULL)(c
28、out<<"文件不存在!"<<endl;return 1;if(strcmp(recent->child->filename,filename)=0)(recent->child->isopen=1;/设置文件标记为打开cin>>recent->child->content;recent->child->isopen=0;/设置文件标记为关闭cout<<”文件写入成功!"<<endl;return 1;else(temp=recent->child;w
29、hile(temp->next)(if(strcmp(temp->next->filename,filename)=0)(recent->child->isopen=1;/设置文件标记为打开cin>>temp->next->content;recent->child->isopen=0;/设置文件标记为关闭cout<<"文件写入成功!"<<endl;return 1;cout<<"文件不存在!"<<endl;int cd()( char to
30、paraPARA_LENGTH;cin>>topara;if(strcmp(topara,".")=0)(int i;while(recent->prev)recent=recent->prev;if(recent->parent)(recent=recent->parent;i=strlen(para);while(parai!='/' && i>0) i-;if(i!=0)parai='0'elseparai+1='0'else(findpara(topara);r
31、eturn 1;int findpara(char *topara)(int i=0;int sign=1;if(strcmp(topara,"/")=0)(recent=root;strcpy(para,”/");return 1;temp=recent;strcpy(temppara,para);if(topara0='/')(recent=root->child;i+;strcpy(para,"/");else(if(recent!=NULL && recent!=root) strcat(para,
32、"/");if(recent && recent->child)(if(recent->isdir)recent=recent->child;else(printf(" 路径错误! n”);return 1;while(i<=strlen(topara) && recent)(int j=0;if(toparai='/' && recent->child)(i+;if(recent->isdir)recent=recent->child;else(printf
33、(" 路径错误 n");return 0;strcat(para,"/");while(toparai!='/' && i<=strlen(topara)(recentparaj=toparai;i+;j+;recentparaj='0'while(strcmp(recent->filename,recentpara)!=0| (recent->isdir!=1)&&recent->next!=NULL)(recent=recent->next;if(strcm
34、p(recent->filename,recentpara)=0)(if(recent->isdir=0)(strcpy(para,temppara);recent=temp;printf("是文件不是目录。n");return 0;strcat(para,recent->filename);if(strcmp(recent->filename,recentpara)!=0 | recent=NULL)(strcpy(para,temppara);recent=temp;printf("输入路径错误n");return 0;ret
35、urn 1; int del() (char filenameFILENAME_LENGTH;cin>>filename;temp=new fnode;if(recent->child)(temp=recent->child;while(temp->next && (strcmp(temp->filename,filename)!=0 | temp->isdir!=0) temp=temp->next;if(strcmp(temp->filename,filename)!=0)(cout<<”不存在该文件!&qu
36、ot;<<endl;return 0;else(cout<<"不存在该文件!"<<endl;return 0;if(temp->parent=NULL)(temp->prev->next=temp->next;if(temp->next)temp->next->prev=temp->prev;temp->prev=temp->next=NULL;else(if(temp->next)temp->next->parent=temp->parent;temp-
37、>parent->child=temp->next;delete temp;cout<<"文件已删除!"<<endl;bool chklogin(char *users, char *pwd)(int i;for(i=0; i<8; i+)(if( (strcmp(users,)=0) && (strcmp(pwd,usrarrayi.pwd)=0) return true;return false;void help(void)cout<<”命令一览”<<endl;cout<<endl;cout<<"create:建立文件。"<<endl;cout<<"read:读取文件。"<<endl;cout<<"write:写入文件,支持多线程"<<endl;cout<<"del :删除文件。"<<endl;cout<<"mkdir:建立目录
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026医疗耗材带量采购政策对生产企业战略调整影响报告
- 2026环保政策下实木建材行业转型升级路径研究报告
- 2026能源环保行业市场供需平衡现状及工艺投资策略规划分析研究报告
- 2026中国液体化工物流行业人才需求与培训体系研究报告
- 2026宠物医疗行业连锁化发展趋势与投资价值报告
- 2026物联网技术在农产品溯源物流体系中的实践与推广评估报告
- 2026年临时作业安全监管题库及答案
- 2026年职业病防治知识培训考核试卷及答案
- 供应链金融在文化旅游产业中的应用与可行性研究报告
- 乡村小微学校发展研究报告总结
- 2026半导体材料行业发展分析及前景趋势与投融资策略研究报告
- 中国烟草招聘行测+专业知识考试题库(附答案)
- 2026新版检验检测机构管理评审报告
- GA/T 1043-2025智能交通管理系统前端设备运行维护规范
- JJG 596-2026 安装式交流电能表检定规程
- 妊娠剧吐试题及答案
- 《机械制图》电子教材
- OTDR使用课件教学课件
- 术后恶心呕吐防治专家共识课件
- 兵团连队管理办法
- 门卫夜间值班管理办法
评论
0/150
提交评论