版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課 程 設(shè) 計(jì) 課程名稱(chēng)_操作系統(tǒng) _ _ 題目名稱(chēng)_多用戶多級(jí)目錄文件系統(tǒng)的實(shí)現(xiàn)_ 學(xué)生學(xué)院_計(jì)算機(jī)學(xué)院_專(zhuān)業(yè)班級(jí)_ _學(xué) 號(hào)_ _ 學(xué)生姓名_ _ 指導(dǎo)教師_林穗_ 2011年 1月 18日廣東工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書(shū)題目名稱(chēng)多用戶多級(jí)目錄文件系統(tǒng)的實(shí)現(xiàn)學(xué)生學(xué)院計(jì)算機(jī)學(xué)院專(zhuān)業(yè)班級(jí)08軟件工程一班姓 名 學(xué) 號(hào) 一、課程設(shè)計(jì)的內(nèi)容本課程設(shè)計(jì)要求設(shè)計(jì)一個(gè)模擬的多用戶多級(jí)目錄的文件系統(tǒng)。通過(guò)具體的文件存儲(chǔ)空間的管理、文件的物理結(jié)構(gòu)、目錄結(jié)構(gòu)和文件操作的實(shí)現(xiàn),加深對(duì)文件系統(tǒng)內(nèi)部功能和實(shí)現(xiàn)過(guò)程的理解。 二、課程設(shè)計(jì)的要求與數(shù)據(jù)1 在內(nèi)存中開(kāi)辟一個(gè)虛擬磁盤(pán)空間作為文件存儲(chǔ)器,在其上實(shí)現(xiàn)一個(gè)多用戶多目錄的
2、文件系統(tǒng)。2 文件物理結(jié)構(gòu)可采用顯式鏈接或其他方法。3 磁盤(pán)空閑空間的管理可選擇位示圖或其他方法。如果采用位示圖來(lái)管理文件存儲(chǔ)空間,并采用顯式鏈接分配方式,則可以將位示圖合并到FAT中。4 文件目錄結(jié)構(gòu)采用多用戶多級(jí)目錄結(jié)構(gòu),每個(gè)目錄項(xiàng)包含文件名、物理地址、長(zhǎng)度等信息,還可以通過(guò)目錄項(xiàng)實(shí)現(xiàn)對(duì)文件的讀和寫(xiě)的保護(hù)。目錄組織方式可以不使用索引結(jié)點(diǎn)的方式,但使用索引結(jié)點(diǎn),則難度系數(shù)為1.2。5 設(shè)計(jì)一個(gè)較實(shí)用的用戶界面,方便用戶使用。要求提供以下相關(guān)文件操作:(1)具有l(wèi)ogin (用戶登錄)(2)系統(tǒng)初始化(建文件卷、提供登錄模塊)(3)文件的創(chuàng)建: create(4)文件的打開(kāi):open(5)文件
3、的讀:read(6)文件的寫(xiě):write(7)文件關(guān)閉:close(8)刪除文件:delete (9)創(chuàng)建目錄(建立子目錄):mkdir(10)改變當(dāng)前目錄:cd(11)列出文件目錄:dir(12)退出:logout6 系統(tǒng)必須可實(shí)際演示,選用程序設(shè)計(jì)語(yǔ)言:C、C等。三、課程設(shè)計(jì)應(yīng)完成的工作1充分理解設(shè)計(jì)的任務(wù),完成設(shè)計(jì)的基本要求。然后根據(jù)自己的基礎(chǔ)和能力選擇不同難度的算法和實(shí)現(xiàn)方式,以取得更高的分?jǐn)?shù)。 2. 獨(dú)立獨(dú)立完成系統(tǒng)的分析、設(shè)計(jì)、編碼、測(cè)試工作。3完成設(shè)計(jì)報(bào)告的撰寫(xiě)。4以光盤(pán)(以班為單位刻錄)方式提交已調(diào)試通過(guò)的完整的相關(guān)源程序和能夠運(yùn)行的執(zhí)行文件;提交“課程設(shè)計(jì)報(bào)告”的書(shū)面和電子兩
4、種版本。四、課程設(shè)計(jì)進(jìn)程安排序號(hào)設(shè)計(jì)各階段內(nèi)容地點(diǎn)起止日期1查閱資料、分析題目、概要設(shè)計(jì)分散周一2詳細(xì)設(shè)計(jì)、編碼分散周二3調(diào)試實(shí)驗(yàn)室周三4撰寫(xiě)設(shè)計(jì)報(bào)告分散周四5運(yùn)行、驗(yàn)收實(shí)驗(yàn)室周五五、應(yīng)收集的資料及主要參考文獻(xiàn)1 計(jì)算機(jī)操作系統(tǒng), 湯小丹等 ,西安電子科技大學(xué)出版社2 操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)書(shū),傅秀芬,廣東工業(yè)大學(xué)(自編)3 計(jì)算機(jī)操作系統(tǒng)教程 ( 第二版 ), 張堯?qū)W、 史美林,清華大學(xué)出版社4 現(xiàn)代操作系統(tǒng),A.S.Tanenbaum 著,陳向群等譯機(jī)械工業(yè)出版社發(fā)出任務(wù)書(shū)日期:2010年12月22日 指導(dǎo)教師簽名:林穗計(jì)劃完成日期: 2011年1月21日 基層教學(xué)單位責(zé)任人簽章:滕少華目錄i.
5、 設(shè)計(jì)目的ii. 開(kāi)發(fā)工具與環(huán)境iii. 設(shè)計(jì)思想iv. 系統(tǒng)結(jié)構(gòu)說(shuō)明v. 數(shù)據(jù)結(jié)構(gòu)說(shuō)明vi. 各模塊的算法流程圖1、程序總體源流程圖2、主要模塊的算法流程圖3、函數(shù)聲明vii. 程序運(yùn)行及清單1、用戶管理操作界面2、文件管理操作界面3、主要核心源代碼viii. 操作說(shuō)明書(shū) 1、用戶管理使用手冊(cè) 2、文件操作管理使用手冊(cè)ix. 體會(huì)和建議i. 設(shè)計(jì)目的本課程設(shè)計(jì)要求設(shè)計(jì)一個(gè)模擬的多用戶多級(jí)目錄的文件系統(tǒng)。通過(guò)具體的文件存儲(chǔ)空間的管理、文件的物理結(jié)構(gòu)、目錄結(jié)構(gòu)和文件操作的實(shí)現(xiàn),加深對(duì)文件系統(tǒng)內(nèi)部功能和實(shí)現(xiàn)過(guò)程的理解。 ii. 開(kāi)發(fā)工具與環(huán)境a)程序設(shè)計(jì)語(yǔ)言:C語(yǔ)言b)計(jì)算機(jī)及操作系統(tǒng):PC機(jī),W
6、indowsXPc)開(kāi)發(fā)平臺(tái):Microsoft Visual C+ 6.0簡(jiǎn)化版d)運(yùn)行平臺(tái):PC機(jī),WindowsXPiii. 設(shè)計(jì)思想課程設(shè)計(jì)采用Microsoft Visual C+ 6.0簡(jiǎn)化版作為開(kāi)發(fā)工具,參照了windows資源管理器的結(jié)構(gòu),模擬文件管理的工作過(guò)程,通過(guò)創(chuàng)建一棵多叉樹(shù),及對(duì)這棵多叉樹(shù)的操作,建立了一個(gè)樹(shù)型文件系統(tǒng),實(shí)現(xiàn)了文件和文件夾的創(chuàng)建,打開(kāi),讀寫(xiě),刪除,關(guān)閉,復(fù)制,粘貼,查看,屬性設(shè)置等十來(lái)個(gè)功能。操作界面簡(jiǎn)單明了,操作方便。iv. 系統(tǒng)結(jié)構(gòu)說(shuō)明模擬文件管理系統(tǒng)可以自行設(shè)置多個(gè)用戶進(jìn)行管理操作,當(dāng)選擇已有用戶時(shí)便可進(jìn)入其文件管理菜單進(jìn)行相應(yīng)的操作(有界面提示功
7、能),當(dāng)進(jìn)入系統(tǒng)已建立的某個(gè)用戶時(shí),可以創(chuàng)建用戶自己的文件夾或文件,當(dāng)flag0時(shí)為創(chuàng)建文件,flag1時(shí)創(chuàng)建文件夾(這里設(shè)置了標(biāo)志位)。文件除了名稱(chēng)和打開(kāi)標(biāo)志外,還可對(duì)他們的訪問(wèn)權(quán)限、文件類(lèi)型和文件長(zhǎng)度進(jìn)行設(shè)置(長(zhǎng)度設(shè)置主要在寫(xiě)入文件時(shí)會(huì)用到);而文件夾則可以設(shè)置訪問(wèn)權(quán)限等,打開(kāi)文件列表的結(jié)構(gòu)體包括文件名和文件的父節(jié)點(diǎn)地址,打開(kāi)文件夾的鏈表中包括文件夾名稱(chēng)及其地址等;對(duì)文件的管理包含復(fù)制、打開(kāi)、關(guān)閉、寫(xiě)入、讀出、粘貼、新建文件(夾)、刪除文件(夾)和顯示文件(夾)等等,為方便操作還設(shè)置了各功能操作(如進(jìn)入下一級(jí)、返回上一級(jí)、返回初始菜單、直接退出等等)。下面的系統(tǒng)結(jié)構(gòu)說(shuō)明圖示:其中P表示pa
8、rent指針,C表示child指針,N表示next指針v. 數(shù)據(jù)結(jié)構(gòu)說(shuō)明該模擬文件管理系統(tǒng)的文件目錄檢索采用簡(jiǎn)單的線性搜索,系統(tǒng)所采用的數(shù)據(jù)結(jié)構(gòu):typedef struct list LIST;struct listchar listname10;int type;int length;int protect;int flag;char *content;struct list *parent;struct list *child;struct list *next;typedef struct usd USD;struct usdchar username10; LIST *list; s
9、truct usd *next;vi. 各模塊的算法流程圖1. 程序總體流程圖開(kāi) 始顯示用戶管理菜單輸入操作命令退出系統(tǒng)幫助文檔系統(tǒng)時(shí)間列出用戶選擇用戶刪除用戶新建用戶結(jié)束程序顯示文件管理菜單輸入操作命令直接退出系統(tǒng)幫助與支持返回上一級(jí)文件夾進(jìn)入下一級(jí)文件夾顯示當(dāng)前路徑文件/夾粘貼文件復(fù)制文件關(guān)閉文件寫(xiě)入文件讀出文件打開(kāi)文件刪除文件夾新建文件夾新建文件返回用戶管理菜單刪除文件結(jié)束程序 2. 主要模塊的算法流程圖1) 創(chuàng)建用戶模塊:2) 刪除用戶3) 創(chuàng)建文件(夾)4) 刪除文件夾5) 復(fù)制文件3. 函數(shù)聲明void displayusermenu();/用戶管理界面菜單void time();
10、/系統(tǒng)時(shí)間void displayfilemenu();/文件管理界面菜單void creatuser();/新建用戶void deleteuser();/刪除用戶void displayuser();/顯示用戶void userhelp();/用戶管理幫助void filehelp();/文件管理幫助void selectuser();/選擇用戶void displaylist();/顯示文件或者文件夾void creatfile(LIST *qq,int flag);/創(chuàng)建文件(夾)void deletefile(LIST *qq,int flag);/刪除文件(夾)void openfi
11、le();/打開(kāi)文件void readfile(); /讀取文件void writefile(); /寫(xiě)入文件void closefile();/關(guān)閉文件void next();/下一層文件夾void back();/上一層文件夾void copyfile();/復(fù)制文件void pastedfile();/粘貼文件void quit();/直接退出系統(tǒng)vii. 程序運(yùn)行及清單系統(tǒng)界面簡(jiǎn)潔美觀實(shí)用,用戶無(wú)須輸入過(guò)長(zhǎng)指令就可以完成操作。本系統(tǒng)還附帶操作指南,用戶如有疑問(wèn)可查看指南說(shuō)明。雖不如可視化易操作,但也不難。1、 用戶管理操作1) 程序登陸界面2) 程序開(kāi)始界面(即用戶管理界面)3) 新建
12、用戶4) 列出用戶5) 刪除用戶6) 系統(tǒng)日期時(shí)間7) 幫助文檔8) 退出系統(tǒng)9) 選擇用戶輸入用戶名(若系統(tǒng)無(wú)此用戶會(huì)有提示)按回車(chē)后即進(jìn)入文件操作界面。 2、對(duì)文件管理操作1) 進(jìn)入用戶后對(duì)文件操作初始界面2) 新建文件3) 新建文件夾4) 顯示當(dāng)前路徑文件(夾)5) 刪除文件文件存在時(shí) 6) 刪除文件夾文件夾存在時(shí) 7) 打開(kāi)文件文件存在時(shí) 8) 讀出文件文件需要先置于打開(kāi)狀態(tài),方可讀取由于沒(méi)有輸入內(nèi)容所以文件內(nèi)容為空。9) 寫(xiě)入文件10) 讀出剛才寫(xiě)入的內(nèi)容11) 關(guān)閉文件12) 復(fù)制文件(先將剛才關(guān)閉的文件aa1打開(kāi)再?gòu)?fù)制)如果輸入的文件名不存在該用戶中時(shí)會(huì)有提示信息3、主要核心源代
13、碼(見(jiàn)電子版) #include <stdio.h>#include <math.h>#include <malloc.h>#include <string.h>#include <conio.h>#include <time.h>#include "stdlib.h"#define NULL 0#define get(type) (type *)malloc(sizeof(type)/分配空間typedef struct list LIST;struct listchar listname10;/ 文
14、件名長(zhǎng)度int type;int length;/ 文件長(zhǎng)度int protect;/ 保護(hù)模式,0為只讀,1為可讀寫(xiě)int flag;/ 標(biāo)志,為0時(shí)創(chuàng)建文件夾,為1時(shí)創(chuàng)建文件char *content;struct list *parent;struct list *child;struct list *next;typedef struct usd USD;struct usd char username10;/ 用戶名長(zhǎng)度 LIST *list; struct usd *next;/ 函數(shù)聲明void displayusermenu();/ 用戶管理界面菜單void login();/
15、 系統(tǒng)登陸界面void time();/ 系統(tǒng)時(shí)間void displayfilemenu();/ 文件管理界面菜單void creatuser();/ 新建用戶void deleteuser();/ 刪除用戶void displayuser();/ 顯示用戶void userhelp();/ 用戶管理幫助void filehelp();/ 文件管理幫助void selectuser();/ 選擇用戶void displaylist();/ 顯示文件或者文件夾void creatfile(LIST *qq,int flag);/ 創(chuàng)建文件(夾)void deletefile(LIST *qq,
16、int flag);/ 刪除文件(夾)void openfile();/ 打開(kāi)文件void readfile();/ 讀取文件void writefile();/ 寫(xiě)入文件void closefile();/ 關(guān)閉文件void next();/ 下一層文件夾void back();/ 上一層文件夾void copyfile();/ 復(fù)制文件void pastedfile();/ 粘貼文件void quit();/ 直接退出系統(tǒng)USD *user=NULL,*currentuser=NULL;LIST *list=NULL,*currentlist=NULL,*copylist=NULL;voi
17、d displayusermenu()/ 顯示用戶菜單system("cls");/ 清屏int button;printf("nnttt歡迎使用多用戶多級(jí)目錄文件系統(tǒng)nn");printf("tt計(jì)算機(jī)學(xué)院tt軟件工程1班nn");printf("tt tt nnn");printf("tt1、新建用戶n");printf("tt2、刪除用戶n");printf("tt3、選擇用戶n");printf("tt4、列出用戶n");pri
18、ntf("tt5、系統(tǒng)時(shí)間n");printf("tt6、幫助文檔n");printf("tt7、退出系統(tǒng)nn");printf("tt請(qǐng)按功能選擇操作:");scanf("%d",&button); switch(button) case 1: creatuser(); break;/ 創(chuàng)建新用戶 case 2: deleteuser(); break;/ 刪除用戶 case 3: selectuser(); displayfilemenu(); break;/ 選擇一個(gè)用戶 case
19、 4: displayuser();/ 顯示用戶 getchar(); getchar(); displayusermenu(); break; case 5: system("cls");/系統(tǒng)時(shí)間顯示 time(); displayusermenu(); break; case 6: userhelp();/ 幫助 getch(); displayusermenu(); break; case 7: system("cls");/ 退出 printf("nnntttt歡迎再次使用!nn"); getch(); exit(0); b
20、reak; default : printf("nnttt你的輸入有誤!請(qǐng)重新輸入!n"); getch(); displayusermenu(); break;/ 輸入非上述數(shù)字重新輸入void displayfilemenu() / 顯示文件管理操作菜單system("cls"); / 清屏int choice;LIST *p=currentlist;printf("ntt %s你好,歡迎進(jìn)入文件管理系統(tǒng) n",currentuser->username);/提示信息printf("n 當(dāng)前的文件路徑:"
21、);/ 接入目錄地址doprintf("<%s",p->listname);p=p->parent;while(p!=NULL);printf("tt格式:子目錄<-根目錄nn");printf(" 功能選擇 nn");/菜單printf("tt1、新建文件ttt 9、復(fù)制文件n");printf("tt2、刪除文件ttt10、粘貼文件n");printf("tt3、新建文件夾ttt11、顯示當(dāng)前路徑文件(夾)n");printf("tt4、
22、刪除文件夾ttt12、進(jìn)入下一級(jí)文件夾n");printf("tt5、打開(kāi)文件ttt13、返回上一級(jí)文件夾n");printf("tt6、讀出文件ttt14、返回用戶管理菜單n");printf("tt7、寫(xiě)入文件ttt15、幫助與支持n");printf("tt8、關(guān)閉文件ttt16、直接退出系統(tǒng)nn");printf(" nn");printf("ttt按功能選擇選擇相應(yīng)的操作(輸入相關(guān)數(shù)字): ");scanf("%d",&choi
23、ce);printf("n");system("cls");switch(choice)/switch語(yǔ)句case 1:creatfile(currentlist,0);break;/ 創(chuàng)建文件case 2:deletefile(currentlist,0);break; / 刪除文件case 3:creatfile(currentlist,1);break;/ 創(chuàng)建文件夾case 4:deletefile(currentlist,1);break;/ 刪除文件夾case 5:openfile();break;/ 打開(kāi)文件case 6:readfile(
24、);displayfilemenu();break;/ 讀出文件 case 7:writefile();displayfilemenu();break;/ 寫(xiě)入文件case 8:closefile();break;/ 關(guān)閉文件case 9:copyfile();break;/ 復(fù)制文件case 10:pastedfile();break;/ 粘貼文件case 11:displaylist();/ 顯示文件(夾)getch();displayfilemenu();break;case 12:next();break;/ 進(jìn)入下一級(jí)文件夾case 13:back();break;/ 返回上一級(jí)文件
25、夾case 14:displayusermenu();break;/ 退出,返回上用戶管理菜單 case 15:filehelp();displayfilemenu();break; case 16:quit();break;default :printf("nnttt你的輸入有誤!請(qǐng)重新輸入!n");getch();displayfilemenu();break;/ 非法輸入,返回文件管理菜單重新輸入void login()char username20;char password20;printf("nnnn");printf("ttt系統(tǒng)
26、登陸:(用戶密碼均為admin)nn");printf("ttt請(qǐng)輸入用戶名:");scanf("%s",username);printf("ttt請(qǐng)輸入密碼:");scanf("%s",password);if(strcmp(username,"admin")|strcmp(password,"admin")printf("ntt用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入!n");getch();system("cls");login()
27、;void time()/ 顯示系統(tǒng)時(shí)間日期 time_t now;/ 調(diào)用系統(tǒng)日期時(shí)間 time(&now);printf("nn ttt系統(tǒng)當(dāng)前日期時(shí)間nn"); printf("ttt %s",asctime(localtime(&now);/顯示系統(tǒng)詳細(xì)時(shí)間printf("nnn");getch();void creatuser()/ 創(chuàng)建用戶int i;char s;USD *p,*q=user;system("cls");p=get(USD);for(i=1;q!=NULL;i+)q=q
28、->next; / i指示當(dāng)前用戶個(gè)數(shù)q=user;printf("ntttt創(chuàng)建一個(gè)新用戶n");printf("ntttt請(qǐng)輸入NO.%d個(gè)用戶名: ",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->ne
29、xt=NULL;if(user=NULL)user=p; / 若user為空,則把P復(fù)給userelse / 若user不為空,則以有舊用戶存在 while(q->next!=NULL)/ 尋找最后一個(gè)用戶if(strcmp(p->username,q->username)=0) / 比較,看系統(tǒng)是否已經(jīng)存在該用戶printf("ntthe user has exit ! try again !nn"); / 提示出錯(cuò)信息getchar();getchar();system("cls"); displayusermenu();q=q-&
30、gt;next;if(strcmp(p->username,q->username)=0)/檢查提示重名并提示信息printf("nttt該用戶已經(jīng)存在!無(wú)法創(chuàng)建該用戶!nn");getchar();getchar();system("cls"); displayusermenu();q->next=p; /繼續(xù)尋找下一個(gè)字符printf("ntttt是否要再創(chuàng)建一個(gè)用戶?(Y/N):"); /輸入下一個(gè)用戶scanf("%s",&s);switch(s)case 'y':
31、creatuser();break;case 'Y':creatuser();break;case 'n':displayusermenu();break; case 'N':displayusermenu();break;default :displayusermenu();break;void deleteuser() /刪除用戶 char n10;USD *p=user,*pre=NULL;displayuser();if(!p)printf("ntttt系統(tǒng)無(wú)用戶可刪除!n"); /P為空,報(bào)錯(cuò),必須先創(chuàng)建一個(gè)用戶ge
32、tchar();getchar();system("cls"); displayusermenu();printf("nntttt請(qǐng)輸入要?jiǎng)h除的用戶名:");scanf("%s",n);while(p!=NULL)if(strcmp(p->username,n)=0) /尋找所要?jiǎng)h除的用戶if(p=user)user=user->next; /若是第一個(gè)用戶,則釋放Pelsepre->next=p->next; free(p);printf("nnntttt 已經(jīng)成功刪除用戶%s! ",n)
33、;break;elsepre=p;p=p->next;if(p=NULL) /找不到用戶printf("nnttt找不到該用戶!請(qǐng)確認(rèn)該用戶是否存在!n");getchar();getchar();system("cls"); displayusermenu();void selectuser() /選擇用戶 char n10;USD *p=user;displayuser();if(!p)printf("nttt該用戶不存在!請(qǐng)確認(rèn)用戶名是否正確!"); /沒(méi)有用戶getchar();getchar();system(&quo
34、t;cls"); displayusermenu();printf("ntttt選擇一個(gè)用戶");printf("nntttt請(qǐng)輸入用戶名:");scanf("%s",n); /輸入用戶名while(p!=NULL)if(strcmp(p->username,n)=0) /逐個(gè)比較尋找用戶currentuser=p; /找到對(duì)應(yīng)用戶,則把currentuser指向該用戶currentlist=p->list;printf("%sn",currentlist->listname);retu
35、rn;elsep=p->next; if(p=NULL) /找不到用戶printf("nntttt該用戶不存在!");getchar();system("cls"); displayusermenu();void creatfile(LIST *qq,int flag) /創(chuàng)建文件(夾) LIST *temp;LIST *p=qq->child; LIST *q; temp=get(LIST);loop:q=qq->child;if(flag=0) printf("ntttt創(chuàng)建一個(gè)新文件n"); printf(&q
36、uot;ntttt請(qǐng)輸入新建文件名: "); /輸入文件名else printf("ntttt創(chuàng)建一個(gè)新文件夾n"); printf("ntttt請(qǐng)輸入新建文件夾名: "); /輸入文件名scanf("%s",temp->listname);while(q!=NULL)if(strcmp(temp->listname,q->listname)=0)printf("nttt相同路徑下有重名文件!請(qǐng)重新輸入!");goto loop;q=q->next;temp->content
37、=NULL;printf("ntt文件屬性: 0、只讀Readtt1、讀和寫(xiě)Read&Write"); /設(shè)置保護(hù)模式printf("nnttt請(qǐng)根據(jù)提示選擇保護(hù)模式(0/1)?: ");scanf("%d",&temp->protect);if(temp->protect!=0&&temp->protect!=1) printf("nnttt你的選擇有誤!請(qǐng)重新輸入(0/1)?: ");scanf("%d",&temp->prot
38、ect);if(flag=0) printf("ntttt請(qǐng)輸入該文件的長(zhǎng)度: "); /設(shè)置文件長(zhǎng)度,供寫(xiě)入文件時(shí)會(huì)用到 scanf("%d",&temp->length); if(flag=0) temp->type=0; /0為文件else temp->type=1;temp->flag=0; /文件默認(rèn)為關(guān)閉狀態(tài),以后需要時(shí)再打開(kāi)temp->child=NULL;temp->next=NULL;temp->parent=currentlist;if(p=NULL) qq->child=tem
39、p;else while(p->next!=NULL)p=p->next;p->next=temp; getchar();displayfilemenu();void deletefile(LIST *qq,int flag) /刪除文件(夾)char n10;LIST *p=qq->child;LIST *pre=NULL;if(flag=0)printf("ntttt刪除一個(gè)文件n"); printf("ntttt請(qǐng)輸入要?jiǎng)h除的文件名: ");elseprintf("ntttt刪除文件夾n"); print
40、f("ntttt請(qǐng)輸入要?jiǎng)h除的文件夾名: ");scanf("%s",n);while(p!=NULL) if(strcmp(p->listname,n)=0)&&(p->type=0) if(pre=NULL) /第一個(gè)節(jié)點(diǎn) qq->child=p->next;free(p); printf("nntttt文件%s已刪除成功!n",n); else pre->next=p->next; /把前一個(gè)指針的NEXT指向N當(dāng)前指針的NEXT,則刪除該文件 printf("nnt
41、ttt文件%s已刪除成功!n",n); free(p); break; else if(strcmp(p->listname,n)=0)&&(p->type=1) if(pre=NULL) /第一個(gè)節(jié)點(diǎn) qq->child=p->next;free(p); printf("nntttt文件夾%s已經(jīng)成功刪除!n",n); else pre->next=p->next; /把前一個(gè)指針的NEXT指向N當(dāng)前指針的NEXT,則刪除該文件 printf("nntttt文件夾%s已經(jīng)成功刪除!n",n)
42、; free(p); break; else pre=p; p=p->next; if(p=NULL&&flag=0) /該文件不存在 printf("nntttt找不到該文件!");else if(p=NULL&&flag=1) printf("nntttt找不到該文件夾!n");getchar(); /用戶輸入的字符被存放在鍵盤(pán)緩沖區(qū)中.直到用戶按回車(chē)為止(回車(chē)字符也放在緩沖區(qū)中)getchar(); displayfilemenu();void openfile() /打開(kāi)文件char n10;LIST *p=
43、currentlist->child;printf("ntttt打開(kāi)一個(gè)文件n");printf("ntttt請(qǐng)輸入要打開(kāi)的文件名: ");/輸入文件名scanf("%s",n); while(p!=NULL)if(strcmp(p->listname,n)=0)&&(p->type=0)&&(p->flag=0)/比較文件以尋找要打開(kāi)的文件p->flag=1;printf("ntttt文件%s成功打開(kāi)!n",n);break;else if(strcm
44、p(p->listname,n)=0)&&(p->type=0)&&(p->flag=1)printf("ntttt文件%s打開(kāi)已經(jīng)!n",n);break; p=p->next;if(p=NULL)printf("nntttt找不到該文件!n");getchar();getchar();displayfilemenu();void readfile() /讀出文件char n10;LIST *p=currentlist->child;printf("ntttt讀取一個(gè)文件n&quo
45、t;);printf("nntttt請(qǐng)輸入要讀的文件名: ");scanf("%s",n);while(p!=NULL)if(strcmp(p->listname,n)=0)&&(p->type=0)&&(p->flag=1)/比較printf("nttt文件%s內(nèi)容是:%s",p->listname,p->content);getchar();getchar();system("cls");return; p=p->next; printf(&q
46、uot;nntt讀文件失敗,請(qǐng)確認(rèn)該文件是否已經(jīng)打開(kāi)或文件是否存在!n"); getchar();getchar();void writefile() /寫(xiě)入文件char n10,*temp;LIST *p=currentlist->child;printf("ntttt寫(xiě)入文件n");printf("ntttt請(qǐng)輸入要寫(xiě)的文件名: ");scanf("%s",n);while(p!=NULL)if(strcmp(p->listname,n)=0)&&(p->type=0)if(p->
47、flag=0)printf("nttt文件未打開(kāi),無(wú)法寫(xiě)入!請(qǐng)將文件置打開(kāi)狀態(tài)!n");getchar();getchar();system("cls");else if(p->protect=0) printf("nnttt操作受限!該文件不能寫(xiě)!n"); /該文件限制讀寫(xiě) getchar(); system("cls"); return;elsetemp=(char *)malloc(sizeof(char)*p->length);printf("nntttt請(qǐng)輸入文件內(nèi)容(length&
48、lt;=%d):nnt",p->length);scanf("%s",temp);p->content=temp;getchar();system("cls");return; p=p->next; printf("nnttt該文件不存在!獲取失敗!n");/提示 getchar();getchar();void closefile() /關(guān)閉文件char n10;LIST *p=currentlist->child;printf("ntttt關(guān)閉一個(gè)文件n");printf("ntttt請(qǐng)輸入要關(guān)閉的文件名: ");scanf("%s",n); while(p!=NULL)if(strcmp(p->listname,n)=0)&&(p->type=0)&&(p->flag=1)/尋找需要文件p->flag=0;printf("ntttt文件%s關(guān)閉成功.n",n)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新型能源汽車(chē)短期借用協(xié)議書(shū)4篇
- 2025年度文化產(chǎn)業(yè)發(fā)展基金投資合作合同4篇
- 2025年度智能家居櫥柜定制工程協(xié)議書(shū)4篇
- 2025年度新能源車(chē)輛租賃代理合同模板3篇
- 2024版離婚協(xié)議年范本
- 2025年單梁橋式起重機(jī)項(xiàng)目可行性研究報(bào)告-20250102-152444
- 2025年中鹽青海昆侖堿業(yè)有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年四川壯禾人力資源有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年中國(guó)郵政證券有限責(zé)任公司招聘筆試參考題庫(kù)含答案解析
- 2025年江蘇弘景建設(shè)規(guī)劃有限公司招聘筆試參考題庫(kù)含答案解析
- 漆畫(huà)漆藝 第三章
- CB/T 615-1995船底吸入格柵
- 光伏逆變器一課件
- 貨物供應(yīng)、運(yùn)輸、包裝說(shuō)明方案
- (完整版)英語(yǔ)高頻詞匯800詞
- 《基礎(chǔ)馬來(lái)語(yǔ)》課程標(biāo)準(zhǔn)(高職)
- IEC61850研討交流之四-服務(wù)影射
- 《兒科學(xué)》新生兒窒息課件
- 材料力學(xué)壓桿穩(wěn)定
- 人教版小升初英語(yǔ)知識(shí)點(diǎn)匯總
- 靜態(tài)爆破專(zhuān)項(xiàng)施工方案
評(píng)論
0/150
提交評(píng)論