亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? (六)文件管理.txt

?? 主要集成了操作系統的主要算法
?? TXT
字號:
(六)文件管理 

文件管理的試題比較多,主要就是模擬操作系統中的 建立文件、打開文件、讀文件、寫文件、、關閉文件、 、刪除文件、、建立目錄、、 
顯示目錄內容、顯示文件內容、、改變文件屬性等操作。大家可以參考書本253頁的上機指導。 

北大2001年試題: 
建立一個樹型文件目錄 
假設程序啟動運行后在根目錄下且根目錄為空。 

實習檢查: 
1、運行程序,由檢查教師給出文件名,該文件中存有相應的若干命令。(程序應做提示,界面友好)。 
2、要求實現兩個命令: 
mkdir 目錄名(目錄已存在,應給出錯誤信息。) 
cd 目錄名(目錄不存在,應給出錯誤信息。) 
3、你所編制的程序應讀入文件,并執行其中的每一條命令。 
4、在屏幕上顯示文件目錄的結構。(界面自己設計,但要清晰明了。) 

2002年北京大學的試題: 
操作系統上機考試題 
題目:模擬文件系統 
要求:模擬一個文件系統,包括目錄文件,普通文件,并實現對它們的一些 
基本操作。 
假定每個目錄文件最多只能占用一個塊;一個目錄項包括文件名(下一級目錄 
名),文件類型,文件長度,指向文件內容(下一級目錄)的指針內容。普通文件可以 
只用目錄項(FCB)代表。(詳細的數據結構見后面的說明) 
程序功能方面的要求: 
需要實現一個命令行操作界面,包含如下命令: 
1 改變目錄 
格式:CD〈目錄名〉 
功能:工作目錄轉移到指定的目錄下,只要求完成改變到當前目錄的某一個子目錄 
下的功能,不要求實現相對目錄以及絕對目錄。 
2 創建文件 
格式:CREATE〈文件名〉〈文件長度〉 
功能:創立一個指定名字的新文件,即在目錄中增加一項,不考慮文件內容,但必 
須能輸入文件長度。 
3 刪除文件 
格式:DEL〈希望刪除的文件名〉 
功能:刪除指定的文件 
4 顯示目錄 
格式:LSALL 
功能:顯示全部目錄以及文件,輸出時要求先輸出接近根的目錄,再輸出子目錄。 
圖示如圖。 
5 創建目錄 
格式:MD〈目錄名〉 
功能:在當前路徑下創建指定的目錄 
6 刪除目錄 
格式:RD〈目錄名〉 
功能:刪除當前目錄下的指定目錄,如果該目錄為空,則可刪除,否則應提示是否 
作刪除,刪除操作將該目錄下的全部文件和子目錄都刪除。 
對于上述功能要求,完成1-4為及格,完成1-5為良,完成1-6為優。 

程序實現方面的要求: 
1 對于重名(創建時),文件不存在(刪除時),目錄不存在(改變目錄時)等錯誤* 
作情況,程序應該作出相應處理并給出錯誤信息,但是程序不得因此而退出。 
2 界面友好,程序強壯。 
3 界面的提示符為#,提示的命令以及調試的方法應和前面的要求一致。不要自己設計命 
令或者附加不要求的功能。 
4 在考卷的說明部分(背面)有一段程序的源代碼以及對源代碼的說明,考試的編碼應 
在這個程序的基礎上修改而成。這段源代碼中規定了文件系統使用的數據結構和需要實 
現的函數框架,請將你的實現代碼填寫到合適的位置中去,可以自己添加輔助數據結構、 
變量、常量以及函數,但是不得改變已有的代碼(如數據結構的定義以及函數的名稱以 
及參數說明)。 
5 考試提交的源程序請命名為filesys.c。 
6 程序設計環境使用TC2.0,在DOS操作系統下完成全部程序代碼。 

本程序包括實現: 

1 改變目錄 
格式:CD〈目錄名〉 
功能:工作目錄轉移到指定的目錄下,只要求完成改變到當前目錄的某一個子目錄 
下的功能,不要求實現相對目錄以及絕對目錄。 
2 創建文件 
格式:CREATE〈文件名〉〈文件長度〉 
功能:創立一個指定名字的新文件,即在目錄中增加一項,不考慮文件內容,但必 
須能輸入文件長度。 
3 刪除文件 
格式:DEL〈希望刪除的文件名〉 
功能:刪除指定的文件 
4 顯示目錄 
格式:LSALL 
功能:顯示全部目錄以及文件,輸出時要求先輸出接近根的目錄,再輸出子目錄。 
圖示如圖。 
5 創建目錄 
格式:MD〈目錄名〉 
功能:在當前路徑下創建指定的目錄 
6 刪除目錄 
格式:RD〈目錄名〉 

VC++調試通過 

(C)copyright by Neo 

歡迎大家測試 請問題請Email:sony006@163.com 
*/ 

#include<stdio.h> 
#include<string.h> 
#include<iostream.h> 
#include<math.h> 
#include<stdlib.h> 
#include<iomanip.h> 

// ******************目錄和文件的結構定義****** 
typedef struct node{ 
char name[50]; /*目錄或文件的名字*/ 
int type; /*0代表目錄,1代表普通文件*/ 
struct node *next; /*指向下一個兄弟結點的指針*/ 
struct node *sub; /*指向第一個子結點的指針*/ 
struct node *father; /*指向父結點的指針*/ 

int size; /*如果是文件則表示文件的大小*/ 

}dirNode; 

dirNode *workDir; //定義當前工作目錄 
dirNode root; //定義根目錄 

char path[100]; //定義路徑信息 

//初始化函數 
void initial() 
{ 
strcpy(root.name,"root"); 
root.type=0; 
root.next=NULL; 
root.sub=NULL; 
root.father=NULL; 
root.size=0; 

workDir=&root; 

strcpy(path,"root"); 
} 

//初始化新結點函數 
dirNode *init() 
{ 
dirNode *p; 

p=new dirNode; 

strcpy(root.name,""); 
root.type=0; 
root.next=NULL; 
root.sub=NULL; 
root.father=NULL; 
root.size=0; 

return p; 
} 

//1 改變目錄 
void CD(char dirName[]) 
{ 
dirNode *p; 
int flag=0; 

p=workDir->sub; 
if(p==NULL){ 
cout<<"錯誤,""<<dirName<<""子目錄不存在"<<endl; 
} 
else{ 
while(p){ 
if(p->type==0){ 
if(!strcmp(p->name,dirName)){ 
flag=1; 
break; 
} 
} 
p=p->next; 
} 
if(flag==1){ 
workDir=p; 
strcat(path,"\ "); 
strcat(path,p->name); 
cout<<"工作目錄已進入""<<dirName<<"""<<endl; 
} 
else{ 
cout<<"錯誤,""<<dirName<<""子目錄不存在"<<endl; 
} 
} 
} 

//2 創建文件 
void CREATE(char fileName[],int fileSize) 
{ 
int flag; 
dirNode *p,*q; 

q=new dirNode; 
strcpy(q->name,fileName); 
q->sub=NULL; 
q->type=1; 
q->next=NULL; 
q->father=workDir; 
q->size=fileSize; 

p=workDir->sub; 

if(p==NULL){ 
workDir->sub=q; 
cout<<"""<<fileName<<""文件創建成功"<<endl; 
} 
else{ 
flag=0; 
while(p){ 
if(p->type==1){ 
if(!strcmp(p->name,fileName)){ 
flag=1; 
cout<<"錯誤,""<<fileName<<""文件已存在"<<endl; 
} 
} 
p=p->next; 
} 
if(flag==0){ 
p=workDir->sub; 
while(p->next){ 
p=p->next; 
} 
p->next=q; 
cout<<"""<<fileName<<""文件創建成功"<<endl; 
} 
} 
} 

//3 刪除文件 
void DEL(char fileName[]) 
{ 
dirNode *p,*q; 
int flag=0; 

p=workDir->sub; 
if(p==NULL){ 
cout<<"錯誤,""<<fileName<<""文件不存在"<<endl; 
} 
else{ 
while(p){ 
if(p->type==1){ 
if(!strcmp(p->name,fileName)){ 
flag=1; 
break; 
} 
} 
p=p->next; 
} 
if(flag==1){ 
if(p==workDir->sub){ 
workDir->sub=p->next; 
} 
else{ 
q=workDir->sub; 
while(q->next!=p){ 
q=q->next; 
} 
q->next=p->next; 
delete p; 
} 
cout<<"""<<fileName<<""文件已刪除"<<endl; 
} 
else{ 
cout<<"錯誤,""<<fileName<<""文件不存在"<<endl; 
} 
} 

} 

//4 顯示所有目錄 

//顯示本目錄下所有兄弟目錄和文件 
void dir(dirNode *p) 
{ 
while(p){ 
if(p->type==0){ 
cout.setf(2); 
cout<<setw(14)<<p->name<<setw(12)<<"<DIR>"<<endl; 
} 
else{ 
cout.setf(2); 
cout<<setw(14)<<p->name<<setw(12)<<"<FILE>"<<setw(10)<<p->size<<endl; 
} 
p=p->next; 
} 
} 
// 
void dirs(dirNode *p,char str[]) 
{ 
char newstr[100]; 
dirNode *q; 
cout<<str<<"下子目錄及文件:"<<endl; 
dir(p); 

q=p; 
if(q->sub){ 
strcpy(newstr,""); 
strcat(newstr,str); 
strcat(newstr,"\"); 
strcat(newstr,q->name); 

dirs(q->sub,newstr); 
} 
q=p; 
while(q->next){ 
if(q->next->sub){ 
strcpy(newstr,""); 
strcat(newstr,str); 
strcat(newstr," \"); 
strcat(newstr,q->next->name); 

dirs(q->next->sub,newstr); 
} 
q=q->next; 
} 
} 

// 顯示所有目錄 
void LSALL() 
{ 
dirNode *p; 

cout<<"顯示所有目錄結構"<<endl<<"--------------------------------------------"<<endl; 

p=root.sub; 

dirs(p,"root"); 


} 
//5 創建目錄 
void MD(char dirName[]) 
{ 
int flag; 
dirNode *p,*q; 

q=new dirNode; 
strcpy(q->name,dirName); 
q->sub=NULL; 
q->type=0; 
q->next=NULL; 
q->father=workDir; 
q->size=0; 

p=workDir->sub; 

if(p==NULL){ 
workDir->sub=q; 
cout<<"""<<dirName<<""子目錄創建成功"<<endl; 
} 
else{ 
flag=0; 
while(p){ 
if(p->type==0){ 
if(!strcmp(p->name,dirName)){ 
flag=1; 
cout<<"錯誤,""<<dirName<<""子目錄已存在"<<endl; 
} 
} 
p=p->next; 
} 
if(flag==0){ 
p=workDir->sub; 
while(p->next){ 
p=p->next; 
} 
p->next=q; 
cout<<"""<<dirName<<""子目錄創建成功"<<endl; 
} 
} 
} 

//6 刪除目錄 
void RD(char dirName[]) 
{ 
/* 
刪除當前目錄下的指定目錄,如果該目錄為空,則可刪除,否則應提示是否 
作刪除,刪除操作將該目錄下的全部文件和子目錄都刪除 

這題目有點問題,因為CD只要求完成改變到當前目錄的某一個子目錄 
下的功能,不要求實現相對目錄以及絕對目錄。所以不進入子目錄是不可能在子目錄下再建子目錄或文件的。 
因此只要實現刪除工作目錄的子目錄就可以了,不要去管“如果該目錄為空,則可刪除,否則應提示是否 
作刪除,刪除操作將該目錄下的全部文件和子目錄都刪除”。 
*/ 
dirNode *p,*q; 
int flag=0; 

p=workDir->sub; 
if(p==NULL){ 
cout<<"錯誤,""<<dirName<<""子目錄不存在"<<endl; 
} 
else{ 
while(p){ 
if(p->type==0){ 
if(!strcmp(p->name,dirName)){ 
flag=1; 
break; 
} 
} 
p=p->next; 
} 
if(flag==1){ 
if(p==workDir->sub){ 
workDir->sub=p->next; 
} 
else{ 
q=workDir->sub; 
while(q->next!=p){ 
q=q->next; 
} 
q->next=p->next; 
delete p; 
} 
cout<<"""<<dirName<<""子目錄已刪除"<<endl; 
} 
else{ 
cout<<"錯誤,""<<dirName<<""子目錄不存在"<<endl; 
} 
} 


} 

//顯示版權信息函數 
void version() 
{ 
cout<<endl<<endl; 

cout<<" ┏━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl; 
cout<<" ┃     模擬文件管理模擬系統        ┃"<<endl; 
cout<<" ┠───────────────────────┨"<<endl; 
cout<<" ┃   (c)All Right Reserved Neo       ┃"<<endl; 
cout<<" ┃      sony006@163.com          ┃"<<endl; 
cout<<" ┃     version 2004 build 1122      ┃"<<endl; 
cout<<" ┗━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl; 

cout<<endl<<endl; 
} 

void main() 
{ 
int len,fileSize,flag,comm; 

char string[50]; 
char command[10]; 
char name[40]; 
char *s,*s1; 

version(); 

initial(); 


flag=1; 
while(flag){ 
cout<<endl<<" 模擬文件管理模擬系統"<<endl; 
cout<<endl<<"CD 改變目錄 CREATE 創建文件 DEL 刪除文件 "<<endl<<"LSALL 顯示目錄 MD 創建目錄 RD 刪除目錄"<<endl<<"exit 退出"<<endl; 
cout<<endl<<"-----------------------------------------------"<<endl; 
printf("%s:>#",path); 

gets(string); 
len=strlen(string); 

if(len==0){ 
strcpy(command,"errer"); 
} 
else{ 
//獲得命令 
s=NULL; 
s=strchr(string,' '); 
if(s!=NULL){ 
*s=''; 
} 
strcpy(command,string); 

//測試命令類型 
if((!strcmp(command,"CD"))||!strcmp(command,"cd")){ 
comm=1; 
} 
else{ 
if((!strcmp(command,"CREATE"))||!strcmp(command,"create")){ 
comm=2; 
} 
else{ 
if((!strcmp(command,"DEL"))||!strcmp(command,"del")){ 
comm=3; 
} 
else{ 
if((!strcmp(command,"LSALL"))||!strcmp(command,"lsall")){ 
comm=4; 
} 
else{ 
if((!strcmp(command,"MD"))||!strcmp(command,"md")){ 
comm=5; 
} 
else{ 
if((!strcmp(command,"RD"))||!strcmp(command,"rd")){ 
comm=6; 
} 
else{ 
if((!strcmp(command,"EXIT"))||!strcmp(command,"exit")){ 
comm=0; 
} 
else{ 
comm=100; 
} 
} 
} 
} 
} 
} 
} 
switch(comm){ 
case 1: 
//1 改變目錄 
strcpy(name,s+1); 
CD(name); 
break; 
case 2: 
//2 創建文件 
s1=strchr(s+1,' '); 
*s1=''; 
strcpy(name,s+1); 
fileSize=atoi(s1+1); 
CREATE(name,fileSize); 
break; 
case 3: 
//3 刪除文件 
strcpy(name,s+1); 
DEL(name); 
break; 
case 4: 
//4 顯示目錄 
LSALL(); 
break; 
case 5: 
//5 創建目錄 
strcpy(name,s+1); 
MD(name); 
break; 
case 6: 
//6 刪除目錄 
strcpy(name,s+1); 
RD(name); 
break; 
case 0: 
//0 退出系統 
flag=0; 
break; 
default: 
cout<<"命令錯誤"<<endl; 
} 
} 
} 
}
 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧美在线| 中文字幕 久热精品 视频在线 | 国产成人精品影视| 蜜臀av一区二区在线观看| 人人超碰91尤物精品国产| 亚洲国产成人91porn| 亚洲伊人色欲综合网| 亚洲夂夂婷婷色拍ww47| 亚洲综合在线免费观看| 一区二区三区中文字幕| 亚洲一二三四在线观看| 亚洲国产日韩综合久久精品| 亚洲伊人伊色伊影伊综合网| 午夜精品久久一牛影视| 日本成人中文字幕| 久久不见久久见免费视频7| 精品一区二区三区的国产在线播放| 美国毛片一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 激情综合网天天干| 成人一二三区视频| 97久久精品人人澡人人爽| 91久久精品一区二区三区| 欧洲av在线精品| 欧美一级理论性理论a| 欧美大度的电影原声| 久久综合av免费| 国产精品国产a| 亚洲国产综合色| 老司机精品视频一区二区三区| 国产高清精品网站| 国产大陆精品国产| 69堂亚洲精品首页| 欧美日韩国产大片| 日本韩国欧美三级| 国产午夜精品理论片a级大结局| 久久久青草青青国产亚洲免观| 国产日本亚洲高清| 一区二区欧美国产| 免费成人在线影院| 成人视屏免费看| 欧美日韩国产区一| 国产性做久久久久久| 一区二区在线免费| 国产一区二三区好的| 色综合天天综合给合国产| 337p亚洲精品色噜噜噜| 国产欧美一区视频| 亚洲成年人影院| 国产精品99久久不卡二区| 日本高清不卡一区| 色哟哟一区二区三区| 欧美日韩国产精品成人| eeuss鲁一区二区三区| 欧美色爱综合网| 久久精品日韩一区二区三区| 亚洲精品高清视频在线观看| 琪琪久久久久日韩精品| 99久久综合精品| 亚洲小少妇裸体bbw| 激情欧美日韩一区二区| 在线观看国产一区二区| 久久久久综合网| 午夜免费久久看| 成人免费观看视频| 日韩欧美国产综合| 一区二区三区中文字幕| 粉嫩蜜臀av国产精品网站| 91精选在线观看| 亚洲免费观看在线观看| 久久不见久久见免费视频7| 欧美视频一区二| 中文字幕一区二区三区不卡在线| 麻豆91精品91久久久的内涵| 一本一道久久a久久精品| 国产亚洲人成网站| 免费在线一区观看| 在线精品视频一区二区| 国产精品久久99| 国产麻豆成人精品| 91精品国产乱| 亚欧色一区w666天堂| 91视频免费播放| 亚洲国产高清不卡| 国产精品一色哟哟哟| 欧美成人精精品一区二区频| 五月婷婷综合激情| 欧美午夜精品免费| 亚洲免费av观看| 中文字幕不卡三区| 紧缚奴在线一区二区三区| 91精品午夜视频| 日韩电影一区二区三区| 9191国产精品| 高清av一区二区| 成人白浆超碰人人人人| 五月激情六月综合| 一区二区免费看| 国产日韩欧美精品一区| 国产传媒一区在线| 国产自产高清不卡| 日韩三区在线观看| 成人污视频在线观看| 国产精品另类一区| 色中色一区二区| 图片区日韩欧美亚洲| 欧美一区中文字幕| 高清日韩电视剧大全免费| 亚洲视频电影在线| 欧美一区日韩一区| 国产成人av电影| 亚洲国产aⅴ成人精品无吗| 日韩欧美自拍偷拍| 色综合天天综合给合国产| 日本午夜精品视频在线观看| 久久久久97国产精华液好用吗| a级精品国产片在线观看| 一区二区成人在线| 国产午夜精品久久| 欧美一区二区三区影视| 成人亚洲一区二区一| 麻豆精品在线看| 亚洲午夜av在线| 国产精品对白交换视频| 精品久久久网站| 美女精品一区二区| 亚洲福利视频三区| 国产在线精品一区二区夜色| 91丨porny丨中文| 欧美一二三在线| 狂野欧美性猛交blacked| 日韩精品一区二区三区四区视频| 国产高清视频一区| 综合婷婷亚洲小说| 欧美日韩国产片| 国产在线国偷精品免费看| 亚洲国产高清在线| 亚洲天堂福利av| 欧美日韩三级在线| 久久99精品视频| 国产精品免费av| 欧美三级中文字幕| 色婷婷综合久色| 色婷婷国产精品久久包臀| 成人在线综合网站| 成人黄色a**站在线观看| 99久久精品免费精品国产| proumb性欧美在线观看| 一本一道波多野结衣一区二区| 激情国产一区二区| 国产激情偷乱视频一区二区三区| 99久久婷婷国产精品综合| 成人黄色a**站在线观看| 日韩欧美亚洲国产另类| 成人美女在线视频| 视频一区二区国产| 国产欧美一区二区三区网站| 欧美做爰猛烈大尺度电影无法无天| 毛片av一区二区三区| 1024成人网| 精品国产亚洲一区二区三区在线观看| av中文字幕不卡| 精品一区在线看| 一区二区三区在线免费视频| 久久在线免费观看| 欧美三级电影在线看| 国产91高潮流白浆在线麻豆 | 91精品在线免费| va亚洲va日韩不卡在线观看| 欧美aaaaa成人免费观看视频| 1024国产精品| 亚洲国产精品成人综合| 91精品国产综合久久福利| 91视频xxxx| 国产69精品一区二区亚洲孕妇| 偷窥国产亚洲免费视频| 成人欧美一区二区三区1314| 亚洲精品在线观看网站| 欧美日韩国产欧美日美国产精品| 97se亚洲国产综合自在线观| 激情五月婷婷综合网| 天堂av在线一区| 亚洲精品日韩一| 国产精品看片你懂得| 欧美高清你懂得| 亚洲精品国产视频| 国产成人av福利| 久久疯狂做爰流白浆xx| 欧美日韩一区二区在线观看视频| 久久久久国产精品麻豆ai换脸| 天天综合色天天综合色h| av激情成人网| 中文字幕在线观看一区| 国产精品99久久久久久似苏梦涵 | 精品精品国产高清a毛片牛牛| 精品一区二区综合| 777xxx欧美| 国产91色综合久久免费分享| 久久精品二区亚洲w码| 日韩高清一级片|