📄 3104007253.c
字号:
if(strcmp(p->wj[i]->name,qq->name)==0){printf("该文件已存在!\n\n");return;}; /*判断该文件是否存在*/
}}
strcpy(qq->usr,p->usr);
qq->parent=p;
/*保存最后修改时间*/
gettime(&t);
qq->time[0]=t.ti_hour;
qq->time[1]=t.ti_min;
qq->time[2]=t.ti_sec;
printf("文件于%d:%d:%d创建成功!\n\n",qq->time[0],qq->time[1],qq->time[2]);
for(i=0;i<10;i++){
if(p->wj[i]==0){p->wj[i]=qq;p->wj_nu+=1;return;}
}
}
/*******************************************************************************/
RM(){ /*删除文件函数*/
char a[15];
MULU *qq;
int i,j=100;
scanf("%s",a);
for(i=0;i<10;i++){
if(p->wj[i]!=0){
if(strcmp(p->wj[i]->name,a)==0){qq=p->wj[i];j=i;}
}}
if(j==100){
printf("操作失败,文件不存在!\n\n");return;
}
if(j!=100)p->wj[j]=0;
p->wj_nu-=1;
free(qq);
printf("操作成功!\n\n");
}
/******************************************************************************/
COPY(){ /*复制文件函数*/
struct time t;
char a[15];
char b[15];
int i;
int j=100;
WJ *qq;
scanf("%s %s",a,b);
for(i=0;i<10;i++){
if(strcmp(a,p->wj[i])==0)j=i;
}
if(j==100){printf("%s不存在!\n\n",a);return;} /*判断当前目录下源文件是否存在*/
if(strcmp(a,b)==0){printf("格式出错!\n\n");return;} /*如果源文件名和目标文件名相同将出错*/
if(p->wj_nu>=10){printf("该目录下文件已达到最大数目\n\n"); return ;}
for(i=0;i<10;i++){
if(p->wj[i]!=0){
if(strcmp(p->wj[i]->name,b)==0){printf("文件%s已存在!\n\n",b);return;}; /*如果目标文件已存在也将出错*/
}}
qq=getpch(WJ);
strcpy(qq->name,b);
qq->parent=p;
strcpy(qq->usr,p->wj[j]->usr);
/*保存最后修改时间*/
gettime(&t);
qq->time[0]=t.ti_hour;
qq->time[1]=t.ti_min;
qq->time[2]=t.ti_sec;
printf("文件于%d:%d:%d创建成功!\n\n",qq->time[0],qq->time[1],qq->time[2]);
for(i=0;i<10;i++){
if(p->wj[i]==0){p->wj[i]=qq;p->wj_nu+=1;return;}
}
}
/******************************************************************************/
void HELP(){ /*获取系统帮助*/
printf("\n 本系统所使用命令:\n");
printf(" pwd命令 显示目录路径.由于本系统设计时已实现了在命令提示符前显示路径,\n");
printf(" 因而该功能作用不大! 命令格式:pwd\n");
printf(" cd命令 改变工作目录 命令格式:cd . 切换到上一级目录\n");
printf(" 命令格式:cd 目录名 切换到下一级目录\n");
printf(" ls 命令 目录列表 命令格式:ls\n");
printf(" mkdir 命令 创建目录 命令格式:mkdir 目录名\n");
printf(" rmdir 命令 删除目录 命令格式:rmdir 目录名\n");
printf(" vi 命令 创建文件 命令格式:vi 文件名\n");
printf(" rm 命令 删除文件 命令格式:rm 文件名\n");
printf(" copy 命令 复制文件 命令格式:copy 源文件名 目标文件名(当前目录下)\n");
printf(" mv 命令 文件重命名命令格式:mv 源文件名 目标文件名\n");
printf(" mvdir 命令 目录重命名命令格式:mv 源目录名 目标目录名\n");
printf(" cls 命令 清屏命令 命令格式:cls\n");
printf(" msd 命令 系统信息 命令格式:msd\n");
printf(" help 命令 获取帮助 命令格式:help\n");
printf(" logout命令 注销用户 命令格式:logout\n");
printf(" 2007年1月13日\n");
printf(" 04网络3班 李水生 3104007253 \n");
}
/******************************************************************************/
void MV(){ /*文件重命名功能*/
char a[15];
char b[15];
struct time t;
WJ *qq;
int i;
int j=100;
scanf("%s %s",a,b);
for(i=0;i<10;i++){
if(strcmp(a,p->wj[i])==0)j=i;
}
if(j==100){printf("%s不存在!\n\n",a);return;} /*判断当前目录下源文件是否存在*/
for(i=0;i<10;i++){
if(p->wj[i]!=0){
if(strcmp(p->wj[i]->name,b)==0){printf("文件%s已存在!\n\n",b);return;}; /*如果目标文件已存在也将出错*/
}}
strcpy(p->wj[j]->name,b);
qq=p->wj[j];
/*保存最后修改时间*/
gettime(&t);
qq->time[0]=t.ti_hour;
qq->time[1]=t.ti_min;
qq->time[2]=t.ti_sec;
printf("文件于%d:%d:%d创建成功!\n\n",qq->time[0],qq->time[1],qq->time[2]);
}
/******************************************************************************/
void MVDIR(){ /*目录重命名功能*/
char a[15];
char b[15];
struct time t;
MULU *pp;
int i;
int j=100;
scanf("%s %s",a,b);
for(i=0;i<10;i++){
if(strcmp(a,p->son[i])==0)j=i;
}
if(j==100){printf("%s不存在!\n\n",a);return;} /*判断当前目录下源目录是否存在*/
for(i=0;i<10;i++){
if(p->son[i]!=0){
if(strcmp(p->son[i]->name,b)==0){printf("文件%s已存在!\n\n",b);return;}; /*如果目标目录已存在也将出错*/
}}
strcpy(p->son[j]->name,b);
pp=p->son[j];
/*保存最后修改时间*/
gettime(&t);
pp->time[0]=t.ti_hour;
pp->time[1]=t.ti_min;
pp->time[2]=t.ti_sec;
printf("文件于%d:%d:%d创建成功!\n\n",pp->time[0],pp->time[1],pp->time[2]);
}
/******************************************************************************/
void CLS(){ clrscr();printf("\n");} /*清屏功能*/
/******************************************************************************/
void MSD(){ /*列系统属性*/
struct date d;
struct time t;
getdate(&d);
gettime(&t);
printf("当前日期%4d-%2d-%2d 时间%2d:%02d:%02d\n",d.da_year,d.da_mon,d.da_day,t.ti_hour,t.ti_min, t.ti_sec);
printf("当前用户是:%s\n\n",user);
}
/******************************************************************************/
main(){
char a[15];
char b[30];
char d;
int i; /*i用作计数*/
int j=1; /*j为下面循环标记用*/
long int k;
ROOT(); /*打印界面信息*/
printf("\n\n\n\n\n\n 广东工业大学<<操作系统>>课程设计\n\n");
printf(" 设计题目:模拟文件管理系统\n\n\n");
printf(" 学 院: 计 算 机\n");
printf(" 专 业: 网络工程\n");
printf(" 年 级: 04级 3班\n");
printf(" 学 号: 3104007253\n");
printf(" 姓 名: 李 水 生\n");
printf(" 指导老师: 林 穗\n\n");
printf(" (2007-01-13)");
d=getch();
clrscr();
printf("\n\n ********************************************************************\n");
printf(" 欢迎使用文件管理系统 \n");
printf(" ********************************************************************\n");
printf(" 本系统模拟UNIX终端工作方式,系统命令功能参照了UNIX终端的功能,用\n");
printf(" 户键入命令后即可得到相应的操作.但有些命令并没有实现UNXI终端下的功能,\n");
printf(" 如本系统的vi命令只是作为新建文件使用,新用户在使用时应先了解本系统的\n");
printf(" 命令集和各命令的格式,以免在操作过程中出错.在使用过程中用户也可以键\n");
printf(" 入help命令获取帮助!\n");
d=getch();
clrscr();
HELP();
d=getch();
while(j){
while(j){
clrscr();
printf("\n\n ********************************************************************\n");
printf(" 欢迎使用文件管理系统 \n");
printf(" ********************************************************************\n");
printf(" 本系统模拟UNIX终端工作方式,系统命令功能参照了UNIX终端的功能,用\n");
printf(" 户键入命令后即可得到相应的操作.但有些命令并没有实现UNXI终端下的功能,\n");
printf(" 如本系统的vi命令只是作为新建文件使用,新用户在使用时应先了解本系统的\n");
printf(" 命令集和各命令的格式,以免在操作过程中出错.在使用过程中用户也可以键\n");
printf(" 入help命令获取帮助!\n\n");
printf("\n 登陆---1\n 注册---2\n 退出---3\n\n请选择:");
scanf("%s",b);
if(b[0]=='1'){
if(LOGIN()==0)continue;
else break;}
if(b[0]=='2'){
if( NEWUSER()==0)continue;
else break;}
if(b[0]=='3')j=0; /*赋j为0值将退出所有循环结束程序*/
}
while(j){ /*循环命令输入*/
for(i=0;i<lj;i++){printf("%s/",lujing[i]);}
scanf("%s",a);
if(strcmp(a,cmd[0])==0||strcmp(a,cmd[1])==0){CLS();continue;}
if(strcmp(a,cmd[2])==0||strcmp(a,cmd[3])==0){ PWD();continue; }
if(strcmp(a,cmd[4])==0||strcmp(a,cmd[5])==0){ LS(); continue;}
if(strcmp(a,cmd[6])==0||strcmp(a,cmd[7])==0){ MKDIR();continue; }
if(strcmp(a,cmd[8])==0||strcmp(a,cmd[9])==0){ RMDIR(); continue;}
if(strcmp(a,cmd[10])==0||strcmp(a,cmd[11])==0){ CD(); continue;}
if(strcmp(a,cmd[12])==0||strcmp(a,cmd[13])==0){ VI();continue; }
if(strcmp(a,cmd[14])==0||strcmp(a,cmd[15])==0){ RM();continue; }
if(strcmp(a,cmd[16])==0||strcmp(a,cmd[17])==0){ COPY(); continue;}
if(strcmp(a,cmd[18])==0||strcmp(a,cmd[19])==0){ MV(); continue;}
if(strcmp(a,cmd[20])==0||strcmp(a,cmd[21])==0){ HELP(); continue;}
if(strcmp(a,cmd[24])==0||strcmp(a,cmd[25])==0){MSD();continue;}
if(strcmp(a,cmd[26])==0||strcmp(a,cmd[27])==0){MVDIR();continue;}
if(strcmp(a,cmd[22])==0||strcmp(a,cmd[23])==0){
printf("请确认注销(y/n):");
scanf("%s",b);
if(b[0]=='y'||b[0]=='Y'){
lj=1;
strcpy(user,0);
/*注销个性化设置*/
for(i=0;i<4;i++){
gotoxy(1,25);
printf("| \r");
gotoxy(1,25);
for(k=0;k<20000000;k++){}
printf("/ \r");
gotoxy(1,25);
for(k=0;k<20000000;k++){}
printf("- \r");
gotoxy(1,25);
for(k=0;k<20000000;k++){}
gotoxy(1,25);
printf("\ \r");
for(k=0;k<20000000;k++){}
}
break;
}
printf("\n");continue;
};
printf("'%s'不是合法命令.你可以键入help获取帮助!\n\n",a);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -