广工操作系统课程设计源代码.docx
- 文档编号:17431035
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:53
- 大小:402.99KB
广工操作系统课程设计源代码.docx
《广工操作系统课程设计源代码.docx》由会员分享,可在线阅读,更多相关《广工操作系统课程设计源代码.docx(53页珍藏版)》请在冰点文库上搜索。
广工操作系统课程设计源代码
课程设计
课程名称________操作系统_______
题目名称_多用户多级目录文件系统的实现_
学生学院________计算机学院____________
专业班级_______________
学号___________________
学生______________________
指导教师__________林穗______________
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->next=NULL;
l->type=1;
l->parent=NULL;
l->child=NULL;
p->list=l;
p->next=NULL;
if(user==NULL)
{
user=p;//若user为空,则把P复给user
}
else//若user不为空,则以有旧用户存在
{
while(q->next!
=NULL){//寻找最后一个用户
if(strcmp(p->username,q->username)==0){//比较,看系统是否已经存在该用户
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 源代码