广工操作系统课程设计源代码.docx

上传人:b****6 文档编号:12715035 上传时间:2023-06-07 格式:DOCX 页数:52 大小:328.33KB
下载 相关 举报
广工操作系统课程设计源代码.docx_第1页
第1页 / 共52页
广工操作系统课程设计源代码.docx_第2页
第2页 / 共52页
广工操作系统课程设计源代码.docx_第3页
第3页 / 共52页
广工操作系统课程设计源代码.docx_第4页
第4页 / 共52页
广工操作系统课程设计源代码.docx_第5页
第5页 / 共52页
广工操作系统课程设计源代码.docx_第6页
第6页 / 共52页
广工操作系统课程设计源代码.docx_第7页
第7页 / 共52页
广工操作系统课程设计源代码.docx_第8页
第8页 / 共52页
广工操作系统课程设计源代码.docx_第9页
第9页 / 共52页
广工操作系统课程设计源代码.docx_第10页
第10页 / 共52页
广工操作系统课程设计源代码.docx_第11页
第11页 / 共52页
广工操作系统课程设计源代码.docx_第12页
第12页 / 共52页
广工操作系统课程设计源代码.docx_第13页
第13页 / 共52页
广工操作系统课程设计源代码.docx_第14页
第14页 / 共52页
广工操作系统课程设计源代码.docx_第15页
第15页 / 共52页
广工操作系统课程设计源代码.docx_第16页
第16页 / 共52页
广工操作系统课程设计源代码.docx_第17页
第17页 / 共52页
广工操作系统课程设计源代码.docx_第18页
第18页 / 共52页
广工操作系统课程设计源代码.docx_第19页
第19页 / 共52页
广工操作系统课程设计源代码.docx_第20页
第20页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

广工操作系统课程设计源代码.docx

《广工操作系统课程设计源代码.docx》由会员分享,可在线阅读,更多相关《广工操作系统课程设计源代码.docx(52页珍藏版)》请在冰点文库上搜索。

广工操作系统课程设计源代码.docx

广工操作系统课程设计源代码

课程设计

课程名称________操作系统_______

题目名称_多用户多级目录文件系统的实现_

学生学院________计算机学院____________

专业班级_______________

学号___________________

学生姓名______________________

指导教师__________林穗______________

 

2011年1月18日

 

广东工业大学课程设计任务书

题目名称

多用户多级目录文件系统的实现

学生学院

计算机学院

专业班级

08软件工程一班

姓名

学号

一、课程设计的内容

本课程设计要求设计一个模拟的多用户多级目录的文件系统。

通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。

二、课程设计的要求与数据

1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。

2.文件物理结构可采用显式链接或其他方法。

3.磁盘空闲空间的管理可选择位示图或其他方法。

如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到FAT中。

4.文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。

目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。

5.设计一个较实用的用户界面,方便用户使用。

要求提供以下相关文件操作:

(1)具有login(用户登录)

(2)系统初始化(建文件卷、提供登录模块)

(3)文件的创建:

create

(4)文件的打开:

open

(5)文件的读:

read

(6)文件的写:

write

(7)文件关闭:

close

(8)删除文件:

delete

(9)创建目录(建立子目录):

mkdir

(10)改变当前目录:

cd

(11)列出文件目录:

dir

(12)退出:

logout

6.系统必须可实际演示,选用程序设计语言:

C++、C等。

三、课程设计应完成的工作

1.充分理解设计的任务,完成设计的基本要求。

然后根据自己的基础和能力选择不同难度的算法和实现方式,以取得更高的分数。

2.独立独立完成系统的分析、设计、编码、测试工作。

3.完成设计报告的撰写。

4.以光盘(以班为单位刻录)方式提交已调试通过的完整的相关源程序和能够运行的执行文件;提交“课程设计报告”的书面和电子两种版本。

四、课程设计进程安排

序号

设计各阶段内容

地点

起止日期

1

查阅资料、分析题目、概要设计

分散

周一

2

详细设计、编码

分散

周二

3

调试

实验室

周三

4

撰写设计报告

分散

周四

5

运行、验收

实验室

周五

五、应收集的资料及主要参考文献

[1]计算机操作系统,汤小丹等,西安电子科技大学出版社

[2]操作系统实验指导书,傅秀芬,广东工业大学(自编)

[3]计算机操作系统教程(第二版),张尧学、史美林,清华大学出版社

[4]现代操作系统,A.S.Tanenbaum著,陈向群等译机械工业出版社

 

发出任务书日期:

2010年12月22日指导教师签名:

林穗

计划完成日期:

2011年1月21日基层教学单位责任人签章:

滕少华

 

i.设计目的…………………………………………………………………

ii.开发工具与环境…………………………………………………………

iii.设计思想…………………………………………………………………

iv.系统结构说明……………………………………………………………

v.数据结构说明……………………………………………………………

vi.各模块的算法流程图……………………………………………………

1、程序总体源流程图……………………………………………………

2、主要模块的算法流程图………………………………………………

3、函数声明………………………………………………………………

vii.程序运行及清单…………………………………………………………

1、用户管理操作界面……………………………………………………

2、文件管理操作界面……………………………………………………

3、主要核心源代码………………………………………………………

viii.操作说明书………………………………………………………………

1、用户管理使用手册…………………………………………………

2、文件操作管理使用手册……………………………………………

ix.体会和建议………………………………………………………………………

 

i.设计目的

本课程设计要求设计一个模拟的多用户多级目录的文件系统。

通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。

ii.开发工具与环境

a)程序设计语言:

C语言

b)计算机及操作系统:

PC机,WindowsXP

c)开发平台:

MicrosoftVisualC++6.0简化版

d)运行平台:

PC机,WindowsXP

iii.设计思想

课程设计采用MicrosoftVisualC++6.0简化版作为开发工具,参照了windows资源管理器的结构,模拟文件管理的工作过程,通过创建一棵多叉树,及对这棵多叉树的操作,建立了一个树型文件系统,实现了文件和文件夹的创建,打开,读写,删除,关闭,复制,粘贴,查看,属性设置等十来个功能。

操作界面简单明了,操作方便。

iv.系统结构说明

模拟文件管理系统可以自行设置多个用户进行管理操作,当选择已有用户时便可进入其文件管理菜单进行相应的操作(有界面提示功能),当进入系统已建立的某个用户时,可以创建用户自己的文件夹或文件,当flag=0时为创建文件,flag=1时创建文件夹(这里设置了标志位)。

文件除了名称和打开标志外,还可对他们的访问权限、文件类型和文件长度进行设置(长度设置主要在写入文件时会用到);而文件夹则可以设置访问权限等,打开文件列表的结构体包括文件名和文件的父节点地址,打开文件夹的链表中包括文件夹名称及其地址等;对文件的管理包含复制、打开、关闭、写入、读出、粘贴、新建文件(夹)、删除文件(夹)和显示文件(夹)等等,为方便操作还设置了各功能操作(如进入下一级、返回上一级、返回初始菜单、直接退出等等)。

下面的系统结构说明图示:

其中P表示parent指针,C表示child指针,N表示next指针

v.数据结构说明

该模拟文件管理系统的文件目录检索采用简单的线性搜索,系统所采用的数据结构:

typedefstructlistLIST;

structlist

{

charlistname[10];

inttype;

intlength;

intprotect;

intflag;

char*content;

structlist*parent;

structlist*child;

structlist*next;

};

typedefstructusdUSD;

structusd

{

charusername[10];

LIST*list;

structusd*next;

};

vi.各模块的算法流程图

1.程序总体流程图

 

显示用户管理菜单

输入操作命令

新建用户

删除用户

选择用户

列出用户

帮助文档

退出系统

系统时间

显示文件管理菜单

输入操作命令

结束程序

 

返回用户管理菜单

复制文件

写入文件

粘贴文件

关闭文件

打开文件

新建文件夹

新建文件

读出文件

删除文件夹

删除文件

帮助与支持

显示当前路径文件

/

进入下一级文件夹

返回上一级文件夹

直接退出系统

结束程序

 

 

2.主要模块的算法流程图

1)创建用户模块:

 

2)删除用户

3)创建文件(夹)

4)删除文件夹

5)复制文件

3.函数声明

voiddisplayusermenu();///用户管理界面菜单

voidtime();///系统时间

voiddisplayfilemenu();///文件管理界面菜单

voidcreatuser();///新建用户

voiddeleteuser();///删除用户

voiddisplayuser();///显示用户

voiduserhelp();///用户管理帮助

voidfilehelp();///文件管理帮助

voidselectuser();///选择用户

voiddisplaylist();///显示文件或者文件夹

voidcreatfile(LIST*qq,intflag);///创建文件(夹)

voiddeletefile(LIST*qq,intflag);///删除文件(夹)

voidopenfile();///打开文件

voidreadfile();///读取文件

voidwritefile();///写入文件

voidclosefile();///关闭文件

voidnext();///下一层文件夹

voidback();//上一层文件夹

voidcopyfile();//复制文件

voidpastedfile();///粘贴文件

voidquit();///直接退出系统

vii.程序运行及清单

系统界面简洁美观实用,用户无须输入过长指令就可以完成操作。

本系统还附带操作指南,用户如有疑问可查看指南说明。

虽不如可视化易操作,但也不难。

1、用户管理操作

1)程序登陆界面

2)程序开始界面(即用户管理界面)

3)新建用户

4)列出用户

5)删除用户

6)系统日期时间

7)帮助文档

8)退出系统

9)选择用户

输入用户名(若系统无此用户会有提示)按回车后即进入文件操作界面。

2、对文件管理操作

1)进入用户后对文件操作初始界面

2)新建文件

3)新建文件夹

4)显示当前路径文件(夹)

5)删除文件

文件存在时

6)删除文件夹

文件夹存在时

7)打开文件

文件存在时

8)读出文件

文件需要先置于打开状态,方可读取

由于没有输入内容所以文件内容为空。

9)写入文件

10)读出刚才写入的内容

11)关闭文件

12)复制文件(先将刚才关闭的文件aa1打开再复制)

如果输入的文件名不存在该用户中时会有提示信息

 

3、主要核心源代码(见电子版)

#include

#include

#include

#include

#include

#include

#include"stdlib.h"

#defineNULL0

#defineget(type)(type*)malloc(sizeof(type))//分配空间

typedefstructlistLIST;

structlist

{

charlistname[10];//文件名长度

inttype;

intlength;//文件长度

intprotect;//保护模式,0为只读,1为可读写

intflag;//标志,为0时创建文件夹,为1时创建文件

char*content;

structlist*parent;

structlist*child;

structlist*next;

};

typedefstructusdUSD;

structusd

{

charusername[10];//用户名长度

LIST*list;

structusd*next;

};

//函数声明

voiddisplayusermenu();//用户管理界面菜单

voidlogin();//系统登陆界面

voidtime();//系统时间

voiddisplayfilemenu();//文件管理界面菜单

voidcreatuser();//新建用户

voiddeleteuser();//删除用户

voiddisplayuser();//显示用户

voiduserhelp();//用户管理帮助

voidfilehelp();//文件管理帮助

voidselectuser();//选择用户

voiddisplaylist();//显示文件或者文件夹

voidcreatfile(LIST*qq,intflag);//创建文件(夹)

voiddeletefile(LIST*qq,intflag);//删除文件(夹)

voidopenfile();//打开文件

voidreadfile();//读取文件

voidwritefile();//写入文件

voidclosefile();//关闭文件

voidnext();//下一层文件夹

voidback();//上一层文件夹

voidcopyfile();//复制文件

voidpastedfile();//粘贴文件

voidquit();//直接退出系统

 

USD*user=NULL,*currentuser=NULL;

LIST*list=NULL,*currentlist=NULL,*copylist=NULL;

voiddisplayusermenu()//显示用户菜单

{

system("cls");//清屏

intbutton;

printf("\n\n\t\t\t欢迎使用多用户多级目录文件系统\n\n");

printf("\t\t计算机学院\t\t软件工程1班\n\n");

printf("\t\t\t\t\n\n\n");

printf("\t\t1、新建用户\n");

printf("\t\t2、删除用户\n");

printf("\t\t3、选择用户\n");

printf("\t\t4、列出用户\n");

printf("\t\t5、系统时间\n");

printf("\t\t6、帮助文档\n");

printf("\t\t7、退出系统\n\n");

printf("\t\t请按功能选择操作:

");

scanf("%d",&button);

switch(button)

{

case1:

creatuser();

break;//创建新用户

case2:

deleteuser();

break;//删除用户

case3:

selectuser();

displayfilemenu();

break;//选择一个用户

case4:

displayuser();//显示用户

getchar();

getchar();

displayusermenu();

break;

case5:

system("cls");//系统时间显示

time();

displayusermenu();

break;

case6:

userhelp();//帮助

getch();

displayusermenu();

break;

case7:

system("cls");//退出

printf("\n\n\n\t\t\t\t欢迎再次使用!

!

\n\n");

getch();

exit(0);

break;

default:

printf("\n\n\t\t\t你的输入有误!

请重新输入!

!

!

\n");

getch();

displayusermenu();

break;//输入非上述数字重新输入

}

}

voiddisplayfilemenu()//显示文件管理操作菜单

{

system("cls");//清屏

intchoice;

LIST*p=currentlist;

printf("\n\t\t[%s]你好,欢迎进入文件管理系统\n",currentuser->username);//提示信息

printf("\n当前的文件路径:

");//接入目录地址

do{

printf("<%s",p->listname);

p=p->parent;

}while(p!

=NULL);

printf("\t\t[格式:

子目录<--根目录]\n\n");

printf("功能选择\n\n");//菜单

printf("\t\t1、新建文件\t\t\t9、复制文件\n");

printf("\t\t2、删除文件\t\t\t10、粘贴文件\n");

printf("\t\t3、新建文件夹\t\t\t11、显示当前路径文件(夹)\n");

printf("\t\t4、删除文件夹\t\t\t12、进入下一级文件夹\n");

printf("\t\t5、打开文件\t\t\t13、返回上一级文件夹\n");

printf("\t\t6、读出文件\t\t\t14、返回用户管理菜单\n");

printf("\t\t7、写入文件\t\t\t15、帮助与支持\n");

printf("\t\t8、关闭文件\t\t\t16、直接退出系统\n\n");

printf("\n\n");

printf("\t\t\t按功能选择选择相应的操作(输入相关数字):

");

scanf("%d",&choice);

printf("\n");

system("cls");

switch(choice)//switch语句

{

case1:

creatfile(currentlist,0);

break;//创建文件

case2:

deletefile(currentlist,0);

break;//删除文件

case3:

creatfile(currentlist,1);

break;//创建文件夹

case4:

deletefile(currentlist,1);

break;//删除文件夹

case5:

openfile();

break;//打开文件

case6:

readfile();

displayfilemenu();

break;//读出文件

case7:

writefile();

displayfilemenu();

break;//写入文件

case8:

closefile();

break;//关闭文件

case9:

copyfile();

break;//复制文件

case10:

pastedfile();

break;//粘贴文件

case11:

displaylist();//显示文件(夹)

getch();

displayfilemenu();

break;

case12:

next();

break;//进入下一级文件夹

case13:

back();

break;//返回上一级文件夹

case14:

displayusermenu();

break;//退出,返回上用户管理菜单

case15:

filehelp();

displayfilemenu();

break;

case16:

quit();

break;

default:

printf("\n\n\t\t\t你的输入有误!

请重新输入!

!

!

\n");

getch();

displayfilemenu();

break;//非法输入,返回文件管理菜单重新输入

}

}

voidlogin()

{

charusername[20];

charpassword[20];

printf("\n\n\n\n");

printf("\t\t\t系统登陆:

(用户密码均为admin)\n\n");

printf("\t\t\t请输入用户名:

");

scanf("%s",username);

printf("\t\t\t请输入密码:

");

scanf("%s",password);

if(strcmp(username,"admin")||strcmp(password,"admin"))

{

printf("\n\t\t用户名或密码错误,请重新输入!

\n");

getch();

system("cls");

login();

}

}

voidtime()//显示系统时间日期

{

time_tnow;//调用系统日期时间

time(&now);

printf("\n\n\t\t\t系统当前日期时间\n\n");

printf("\t\t\t%s",asctime(localtime(&now)));//显示系统详细时间

printf("\n\n\n");

getch();

}

 

voidcreatuser()//创建用户

{

inti;

chars;

USD*p,*q=user;

system("cls");

p=get(USD);

for(i=1;q!

=NULL;i++)q=q->next;//i指示当前用户个数

q=user;

printf("\n\t\t\t\t[创建一个新用户]\n");

printf("\n\t\t\t\t请输入NO.%d个用户名:

",i);

scanf("%s",p->username);//输入新用户的名字

LIST*l=list;

l=get(LIST);

strcpy(l->listname,p->username);

l

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2