歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

[計(jì)算機(jī)軟件及應(yīng)用]Windows命令接口實(shí)驗(yàn)報(bào)告

  • 資源ID:27971167       資源大?。?span id="yws5ef0" class="font-tahoma">1.69MB        全文頁數(shù):37頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

[計(jì)算機(jī)軟件及應(yīng)用]Windows命令接口實(shí)驗(yàn)報(bào)告

操作系統(tǒng)課程設(shè)計(jì)報(bào)告 作者:半童 合肥工業(yè)大學(xué) 獨(dú)立之精神,自由之思想!Windows命令接口實(shí)驗(yàn)一實(shí)驗(yàn)題目: 第29題操作系統(tǒng)接口:Windows命令接口。(3人) 4分二實(shí)驗(yàn)任務(wù):1.設(shè)計(jì)要求:l 為Windows操作系統(tǒng)建立兼容的DOS命令接口,文件與目錄命令;l 具體命令:DIR, RD,CD,MD, DEL,MOVE,REN, COPY, XCOPY, TIME, DATE,SORT,重定向命令>,<.,|,MORE,TYPE ,CLS,EXIT命令格式可參照Windows的CMD.EXE或MS-DOS提供的命令;l 設(shè)計(jì)命令的名稱、參數(shù)等格式;l 可以字符形式接收命令,執(zhí)行命令,然后顯示命令執(zhí)行結(jié)果.2設(shè)計(jì)目的:(1)DIR命令:能夠正確顯示一個(gè)目錄里面的子目錄和文件(2)RD命令:能夠刪除一個(gè)空目錄(3)CD命令:能夠打開一個(gè)存在的目錄(4)MD命令:能夠建立一個(gè)空目錄(5)DEL命令:能夠刪除一個(gè)文件(6)MOVE命令:能夠移動(dòng)一個(gè)目錄或文件(7)REN命令:能夠重命名一個(gè)目錄或文件(8)XCOPY命令:能夠拷貝整個(gè)目錄(8)TIME命令:顯示系統(tǒng)的時(shí)間(8)DATE命令:顯示系統(tǒng)的日期(8)SORT命令:對(duì)文本內(nèi)容進(jìn)行分類(8)MORE命令:逐步分屏顯示(8)TYPE命令:顯示文本內(nèi)容(8)CLS命令:清楚屏幕顯示(8)EXIT命令:退出三:實(shí)驗(yàn)環(huán)境:1 PC機(jī)一臺(tái) 386以上2 Microsoft Visual Studio2010 軟件3 實(shí)現(xiàn)語言:C語言四:原理及算法描述:1基本原理: 用戶利用聯(lián)機(jī)命令接口實(shí)現(xiàn)與機(jī)器的交互時(shí),先在終端的鍵盤上打入所需的命令,由終端處理程序接受該命令,并將它顯示在終端屏幕上。當(dāng)一條命令輸入完后,由命令解釋程序?qū)γ钸M(jìn)行分析,然后執(zhí)行相應(yīng)命令的處理程序。2算法描述:(1)存貯輸入的各命令參數(shù)void store_parameter(char *buffer,char *parameter10,int *para_num)說明:將輸入的命令一條一條存儲(chǔ)parameter10中,最大允許的參數(shù)個(gè)數(shù)為10個(gè)。算法描述:為buffer設(shè)置一個(gè)指針buffer_point,如果該指針向下移動(dòng),碰到空格,繼續(xù)向下移動(dòng),直到遇到字符,讀進(jìn)各存儲(chǔ)變量中parameter10,最后如果遇到0,則結(jié)束。(2)瀏覽一個(gè)路徑下的目錄和文件void my_dir(char *a,int *num)說明:該命令只能顯示當(dāng)前目錄中的文件和子目錄和當(dāng)前目錄中子目錄中的文件和子目錄。并無如Windows中命令參數(shù)如此豐富。主要是考慮其復(fù)雜性,予以簡(jiǎn)化了。算法描述:如果只接受到mydir命令,后面并無其他參數(shù)時(shí),顯示當(dāng)前目錄下文件和子目錄。如果接受到兩個(gè)參數(shù),如果第二個(gè)參數(shù)(表示當(dāng)前目錄中子目錄)存在,則顯示該目錄下文件和子目錄,如果不存在,則報(bào)錯(cuò)。(3)刪除一個(gè)存在的目錄,如果不存在,刪除失敗!void my_rd(char *a,int *num)算法描述:如果該目錄存在且為空目錄,則刪除,否則失敗。(4)打開一個(gè)存在的目錄,如果不存在,打開失敗! void my_cd(char *a,int *num)算法描述:如果接受到兩個(gè)參數(shù),第二個(gè)參數(shù)表示要打開的目錄。如果該目錄存在,則成功,否則失敗。(5)創(chuàng)建一個(gè)目錄void my_md(char *a,int *num)算法描述:如果接受到兩個(gè)參數(shù),第二個(gè)參數(shù)表示要建立的目錄。如果存在該目錄,失敗,否則成功。(6)刪除一個(gè)存在的文件,如果不存在,刪除文件失敗!void my_del(char *a,int *num)算法描述:如果接受到兩個(gè)參數(shù),第二個(gè)參數(shù)表示要?jiǎng)h除的文件。如果該文件存在,則刪除成功,否則失敗。(7)移動(dòng)一個(gè)存在的文件,否則,移動(dòng)失敗void my_move(char *a,int *num)算法描述:如果接受到三個(gè)參數(shù),其中第二個(gè)參數(shù)表示存在的文件或目錄,第三個(gè)參數(shù)表示將要移動(dòng)到的參數(shù)。如果第二個(gè)參數(shù)不存在,則失敗,存在,成功。(8)重命名一個(gè)已經(jīng)存在的文件,否則,重命名失敗!void my_ren(char *a,int *num)算法描述:如果接受到三個(gè)參數(shù),其中第二個(gè)參數(shù)表示將要重命名的目錄或文件,第三個(gè)參數(shù)表示將要重命名的新的名字。(9)拷貝文件void my_xcopy(char *a,int *num)算法描述:如果接受到三個(gè)參數(shù),其中第二個(gè)參數(shù)表示存在的目錄或文件,第三個(gè)表示將要拷貝成的目錄或文件。(10)顯示系統(tǒng)的時(shí)間void my_time(char *a,int *num)算法描述:如果接受到一個(gè)參數(shù),調(diào)用系統(tǒng)的時(shí)間函數(shù),參數(shù)正確則輸出系統(tǒng)時(shí)間。(11)顯示系統(tǒng)的日期void my_date(char *a,int *num)算法描述:如果接受到一個(gè)參數(shù),調(diào)用系統(tǒng)的日期函數(shù),參數(shù)正確則輸出當(dāng)時(shí)日期。(12)對(duì)文本內(nèi)容進(jìn)行分類void my_sort(char *a,int *num)算法描述:如果接受到兩個(gè)參數(shù),第二個(gè)參數(shù)表示要分類的文本文檔。如果該文件存在,則分類成功,否則失敗。(13)逐步分屏顯示文本內(nèi)容void my_more(char *a,int *num)算法描述:如果接受到兩個(gè)參數(shù),第二個(gè)參數(shù)表示要分屏顯示的文本文檔。如果該文件存在,則分屏顯示成功,否則失敗。(14)顯示文本內(nèi)容void my_type(char *a,int *num)算法描述:如果接受到兩個(gè)參數(shù),第二個(gè)參數(shù)表示要顯示的文本文檔。如果該文件存在,則顯示成功,否則失敗。(15)清除屏幕顯示void my_cls(char *a,int *num)算法描述:如果接受到一個(gè)參數(shù),調(diào)用系統(tǒng)的清屏函數(shù),參數(shù)正確則清除屏幕的輸入輸出。(16)退出,后面可帶退出參數(shù)void my_exit(char *a,int *num)算法描述:可以接受小于10個(gè)的參數(shù),其中第一個(gè)參數(shù)表示退出。后面幾個(gè)參數(shù)一起表示輸出的信息。五設(shè)計(jì)思路描述:1本課程設(shè)計(jì)調(diào)用到的API函數(shù)有:(1)typedef struct _WIN32_FIND_DATA DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwOID; TCHAR cFileNameMAX_PATH; WIN32_FIND_DATA; 該結(jié)構(gòu)存放著所找到文件的詳細(xì)信息,通過第一個(gè)字段,我們可以判斷找到的文件是目錄還是文件,通過cFileName可以獲得該文件的文件名,繼而可以對(duì)找到的文件進(jìn)行操作。(2)HANDLE FindFirstFile(LPCTSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData ); 根據(jù)文件名查找文件,如執(zhí)行成功,返回一個(gè)搜索句柄。如果出錯(cuò),返回一個(gè)INVALID_HANDLE_VALUE常數(shù)。應(yīng)該用FindClose函數(shù)關(guān)閉這個(gè)句柄。(3)BOOL FindNextFile( HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData );該函數(shù)根據(jù)調(diào)用FindFirstFile函數(shù)返回的句柄查找下一個(gè)文件,返回值非零表示成功,零表示失敗。如不再有與指定條件相符的文件,會(huì)將GetLastError設(shè)置成ERROR_NO_MORE_FILES。(4)BOOL FindClose( HANDLE hFindFile );該函數(shù)用來關(guān)閉FindFirstFile函數(shù)創(chuàng)建的一個(gè)搜索句柄。 (5)HANDLE CreateFile(LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORDdwCreationDispostion , DWORD dwFlagsAndAttributes, HANDLE hTemplateFile); 該函數(shù)創(chuàng)建,打開,或截取一個(gè)文件。它返回一個(gè)對(duì)象訪問句柄。也可以返回和打開一個(gè)目錄句柄。(6)BOOL GetFileTime( HANDLE hFile, LPFILETIME lpCreationTime,LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime );該函數(shù)得到一個(gè)文件創(chuàng)建,最近訪問,最近修改日期,時(shí)間。(7)GetCurrentDirectory(DWORD nBufferLength,LPWSTR lpBuffer );該函數(shù)得到當(dāng)前目錄,存放在lpBuffer中。(8) BOOL RemoveDirectory(LPCTSTR lpPathName);該函數(shù)一個(gè)存在的空目錄。(9)BOOL SetCurrentDirectory(LPCWSTR lpPathName);該函數(shù)設(shè)置當(dāng)前目錄。(10BOOLCreateDirectory(LPCTSTRlpPathName,LPSECURITY_ATTRIBUTES lpSecurityAttributes ); 該函數(shù)創(chuàng)建一個(gè)新目錄。如果該文件存在,創(chuàng)建失敗。(11)BOOL DeleteFile(LPCTSTR lpFileName);該函數(shù)刪除一個(gè)存在的文件。(12)BOOL MoveFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName);該函數(shù)移動(dòng)或重命名一個(gè)文件或目錄(不管這個(gè)目錄里是否由子目錄或文件)。(13)BOOL CopyFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists );該函數(shù)拷貝一個(gè)存在的文件或新文件。(14)BOOL TimeFile(LPCTSTR lpExistingFileName);該函數(shù)調(diào)用輸出系統(tǒng)地時(shí)間。(15)BOOL DateFile(LPCTSTR lpExistingFileName);該函數(shù)調(diào)用輸出系統(tǒng)地日期。(16)BOOL SortFile(LPCTSTR lpExistingFileName);該函數(shù)打開文本文檔,將內(nèi)容進(jìn)行分類。(17)BOOL MoreFile(LPCTSTR lpExistingFileName);該函數(shù)打開文本文檔,將內(nèi)容進(jìn)行分屏顯示。(18)BOOL TypeFile(LPCTSTR lpExistingFileName); 該函數(shù)打開文本文檔,將內(nèi)容進(jìn)行顯示。(19)BOOL ClsFile(LPCTSTR lpExistingFileName);該函數(shù)清除屏幕輸入輸出的全部?jī)?nèi)容。2重要算法: 其實(shí)談不上重要算法,只是對(duì)上述API函數(shù)的活學(xué)活用而已。其中我的my_dir(char *a,int *num)函數(shù)要稍微復(fù)雜點(diǎn)。其中涉及到一個(gè)文件或目錄時(shí)間日期的獲取和轉(zhuǎn)換,這點(diǎn)是需要注意的。在源程序中,我已經(jīng)給出詳細(xì)的注解。還有,最后結(jié)束時(shí)得關(guān)閉創(chuàng)建文件的句柄和搜索句柄。這點(diǎn)非常重要。3 流程圖:開始輸入一個(gè)完整的命令parameter0=”mydir” or “MYDIR”執(zhí)行my_dir()函數(shù)parameter0=”myrd” or “MYRD”執(zhí)行my_rd()函數(shù)parameter0=”mycd” or”MYCD”執(zhí)行my_cd()函數(shù)parameter0=”mymd” or”MYMD”執(zhí)行my_md()函數(shù)parameter0=”mydel” or”MYDEL”執(zhí)行my_del()函數(shù)parameter0=”mymove” or”MYMOVE”執(zhí)行my_move()函數(shù)parameter0=”myren” or”MYREN”執(zhí)行my_ren()函數(shù)parameter0=”myxcopy” or”MYXCOPY”執(zhí)my_xcopy()函數(shù)parameter0=”myexit” or”MYEXIT”執(zhí)行my_exit()函數(shù)返回當(dāng)前目錄存儲(chǔ)各命令參數(shù)parameter0=”mytime” or”MYTIME”parameter0=”mydate” or”MYDATE”parameter0=”mysort” or”MYSORT”parameter0=”mymore” or”MYMORE”parameter0=”myxtype” or”MYTYPE”parameter0=”mycls” or”MYCLS”執(zhí)my_time()函數(shù)執(zhí)my_date()函數(shù)執(zhí)my_sort()函數(shù)執(zhí)my_more()函數(shù)執(zhí)my_type()函數(shù)執(zhí)my_ mycls()函數(shù)七實(shí)驗(yàn)步驟:(1)測(cè)試源程序是否正常,測(cè)試通過即可運(yùn)行Microsoft Visual Studio2010 軟件 讓源程序生成執(zhí)行operating_system.exe,如圖:(2)將生成的operating_system.exe文件放置于要操作的文件夾內(nèi),并打開準(zhǔn)備進(jìn)行操作,如圖:原目錄列表:(3)使用mydir命令正確顯示一個(gè)目錄里面的子目錄和文件,如圖:(4)使用myrd命令能夠刪除一個(gè)空目錄,如圖:(5)使用mycd能夠打開一個(gè)存在的目錄,如圖:(6)使用mymd命令能夠建立一個(gè)空目錄,如圖:(7)使用mydel命令能夠刪除一個(gè)文件,刪除后與前面的源目錄參照可知其刪除功能,如圖:(8)使用mymove命令能夠移動(dòng)一個(gè)目錄或文件,移動(dòng)后與前面的源目錄參照可知其移動(dòng)功能,如圖:(9)使用myren命令能夠重命名一個(gè)目錄或文件,命名后與前面的源目錄參照可知其命名功能,如圖:(10)使用myxcopy命令能夠拷貝整個(gè)目錄,拷貝后與前面的源目錄參照可知其拷貝功能 (11)使用mytime命令能夠顯示系統(tǒng)的時(shí)間,如圖:(12)使用mydate命令能夠顯示系統(tǒng)的日期,如圖:(13)使用mysort命令能夠?qū)ξ谋緝?nèi)容進(jìn)行分類,分類后與前面的源目錄參照可知其分類功能,該功能是以首字母順序的方式進(jìn)行重排,如圖:(14)使用mymore命令能夠?qū)ξ谋緝?nèi)容進(jìn)行分屏顯示,按Enter鍵可以逐步顯示文檔內(nèi)容,如圖:(15)使用mytype命令能夠顯示文本內(nèi)容,如圖:(16)使用CLS命令能夠清除屏幕的顯示內(nèi)容,如圖:(17)使用EXIT命令退出operating_system.exe六程序清單:(1)function.h 頭文件:/*/存貯輸入的各命令參數(shù)#include<iostream>#include<iomanip>#include<fstream>using namespace std;void store_parameter(char *buffer,char *parameter10,int *para_num)char *buffer_point = buffer;for(*para_num) = 0; *buffer_point != 0 && (*para_num) < 10; (*para_num)+)parameter(*para_num) = (char*)malloc(64*sizeof(char);int j = 0;/如果為空格,指針繼續(xù)移進(jìn)while(*buffer_point = )buffer_point+;/如果不是空格,讀進(jìn)變量存儲(chǔ)區(qū)while(*buffer_point != && *buffer_point != 0)*(parameter(*para_num)+j) = *buffer_point;buffer_point+;j+;*(parameter(*para_num)+j) = 0;/*/瀏覽一個(gè)路徑下的目錄和文件void my_dir(char *a,int *num)/瀏覽當(dāng)前目錄文件if( (*num) = 1)HANDLEobj_handle;char *lpFileName = (char*)malloc(64*sizeof(char);WIN32_FIND_DATA* find_file = new WIN32_FIND_DATA(); /API函數(shù)WIN32_FIND_DATAFILETIME lpCreationTime,lpLastAccessTime,lpLastWriteTime;/創(chuàng)建時(shí)間,最近訪問時(shí)間,最近修改時(shí)間SYSTEMTIME systime;/定義系統(tǒng)時(shí)間/獲取當(dāng)前目錄GetCurrentDirectory(64,lpFileName); /API函數(shù)GetCurrentDirectorystrcat(lpFileName,"*.*");obj_handle = FindFirstFile(lpFileName,find_file);/obj_handle初始化 API函數(shù)FindFirstFile(2)if(FindFirstFile(lpFileName, find_file) != INVALID_HANDLE_VALUE) /API函數(shù)FindFirstFile(2)while (FindNextFile(obj_handle, find_file) /API函數(shù)FindNextFileHANDLE obj_dir = CreateFile(find_file->cFileName,GENERIC_READ,FILE_SHARE_READ | FILE_SHARE_DELETE |FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS, NULL); /API函數(shù)CreateFileif(GetFileTime(obj_dir,&lpCreationTime,&lpLastAccessTime,&lpLastWriteTime) /API函數(shù)GetFileTime FILETIME temp_time; FileTimeToLocalFileTime(&lpLastWriteTime, &temp_time); / 轉(zhuǎn)換成本地時(shí)間 FileTimeToSystemTime(&temp_time, &systime); / 轉(zhuǎn)換成系統(tǒng)時(shí)間格式 printf("%d/%d/%d ",systime.wYear,systime.wMonth,systime.wDay);/年月日printf("%d:%d:%d ",systime.wHour,systime.wMinute,systime.wSecond);/時(shí)分秒printf("%sn",find_file->cFileName);/printf("%d ",find_file->dwFileAttributes);CloseHandle(obj_dir);/API函數(shù)DWORD(1)FindClose(obj_handle); /API函數(shù)FindClose/瀏覽其中目錄文件else if(*num) = 2)HANDLEobj_handle;char *lpFileName = (char*)malloc(64*sizeof(char);char *next_dir = (char*)malloc(64*sizeof(char);WIN32_FIND_DATA* find_file = new WIN32_FIND_DATA(); /API函數(shù)WIN32_FIND_DATAFILETIME lpCreationTime,lpLastAccessTime,lpLastWriteTime;/創(chuàng)建時(shí)間,最近訪問時(shí)間,最近修改時(shí)間SYSTEMTIME systime;/定義系統(tǒng)時(shí)間WIN32_FIND_DATA* fd = new WIN32_FIND_DATA(); /API函數(shù)WIN32_FIND_DATAGetCurrentDirectory(64,lpFileName); /API函數(shù)GetCurrentDirectory/打開其中的某一個(gè)目錄if(!SetCurrentDirectory(a1) /API函數(shù)SetCurrentDirectoryprintf("瀏覽目錄失敗,可能沒有此目錄!n"); elseGetCurrentDirectory(64,next_dir); /API函數(shù)GetCurrentDirectorystrcat(next_dir,"*.*");obj_handle = FindFirstFile(next_dir, fd);/obj_handle初始化 API函數(shù)FindFirstFile(2)if(FindFirstFile(next_dir, find_file) != INVALID_HANDLE_VALUE) /API函數(shù)FindFirstFile(2)while (FindNextFile(obj_handle, find_file) /API函數(shù)FindNextFileHANDLE obj_dir = CreateFile(find_file->cFileName,GENERIC_READ,FILE_SHARE_READ | FILE_SHARE_DELETE |FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS, NULL); /API函數(shù)CreateFileif(GetFileTime(obj_dir,&lpCreationTime,&lpLastAccessTime,&lpLastWriteTime) /API函數(shù)GetFileTime FILETIME temp_time; /臨時(shí)變量 FileTimeToLocalFileTime(&lpLastWriteTime,&temp_time); FileTimeToSystemTime(&temp_time, &systime); /轉(zhuǎn)換成系統(tǒng)時(shí)間 printf("%d/%d/%d ",systime.wYear,systime.wMonth,systime.wDay);/年月日printf("%d:%d:%d ",systime.wHour,systime.wMinute,systime.wSecond);/時(shí)分秒printf("%sn",find_file->cFileName);/CloseHandle(obj_dir);FindClose(obj_handle); /API函數(shù)FindClose/返回上一個(gè)目錄SetCurrentDirectory(lpFileName); /API函數(shù)SetCurrentDirectory/參數(shù)個(gè)數(shù)大于等于3,警告錯(cuò)誤else if(*num) >= 3)printf("語法格式不正確!n");/刪除一個(gè)存在的目錄,如果不存在,刪除失敗!void my_rd(char *a,int *num)if(*num) = 2)if(!RemoveDirectory(a1) /API函數(shù)RemoveDirectoryprintf("刪除目錄失敗,可能沒有此目錄!n"); else printf("刪除目錄成功!n"); else if(*num) = 1)printf("正確語法格式為:n");printf("t myrd directoryn");elseprintf("語法格式不正確!n");/打開一個(gè)存在的目錄,如果不存在,打開失敗!void my_cd(char *a,int *num)if(*num) =2)if(!SetCurrentDirectory(a1) /API函數(shù)SetCurrentDirectoryprintf("打開目錄失敗,可能沒有此目錄!n"); elseprintf("打開目錄成功!n"); else if(*num) = 1)printf("正確語法格式為:n");printf("t mycd directoryn");elseprintf("語法格式不正確!n");/創(chuàng)建一個(gè)目錄void my_md(char *a,int *num)if(*num) = 2)if(!CreateDirectory(a1,NULL) printf("創(chuàng)建新目錄失敗!");else printf("創(chuàng)建新目錄成功n"); else if(*num) = 1)printf("正確語法格式為:n");printf("t mymd directoryn");else printf("語法格式不正確!n");/刪除一個(gè)存在的文件,如果不存在,刪除文件失敗!void my_del(char *a,int *num)if(*num) = 2)if(!DeleteFile(a1) /API函數(shù)DeleteFileprintf("刪除文件失敗!n"); else printf("刪除文件成功!n"); else if(*num) = 1)printf("正確語法格式為:n");printf("t mydel filen");else printf("語法格式不正確!n");/移動(dòng)一個(gè)存在的文件,否則,移動(dòng)失敗void my_move(char *a,int *num)if(*num) = 3)if(!MoveFile(a1,a2) /API函數(shù)MoveFileprintf("移動(dòng)文件失敗,文件可能不存在!n");elseprintf("文件移動(dòng)成功!n");else if(*num) = 1)printf("正確語法格式為:n");printf("t mymove filen");else printf("語法格式不正確!n");/重命名一個(gè)已經(jīng)存在的文件,否則,重命名失敗!void my_ren(char *a,int *num)if(*num) = 3) if(!MoveFile(a1,a2) /API函數(shù)MoveFileprintf("重命名文件失敗,文件可能不存在!n"); else printf("重命名文件成功!n");else if(*num) = 1)printf("正確語法格式為:n");printf("t myren filen");else printf("語法格式不正確!n");/拷貝文件void my_xcopy(char *a,int *num)if(*num) = 3)if(!CopyFile(a1,a2,1) /API函數(shù)CopyFileprintf("拷貝文件失敗,文件可能不存在!n");else printf("拷貝文件成功!n");else if(*num) = 1)printf("正確語法格式為:n");printf("t myxcopy filen");else printf("語法格式不正確!n");/顯示日期void my_date()system( "date");/顯示時(shí)間void my_time()system( "time");void my_sort(char *a,int *num)int lnum=0,min;char line100100,tmp100;/行數(shù)、每行字符數(shù)string s100;ifstream infile(a1);if(!infile)cout<<"無法打開文件"<<a1<<endl;elsewhile(!infile.eof()infile.getline(linelnum,100,n);lnum+;/記錄總行數(shù)infile.close();for(int x=0;x<lnum-1;x+)min=x;for(int y=x+1;y<lnum;y+)if(strcmp(liney,linemin)<0)min=y;if(min!=x)for(int a=0;a<100;a+)tmpa=linexa;linexa=linemina;linemina=tmpa;ofstream outfile(a1,ios:out);if(!outfile)cout<<"文件寫入失敗"<<endl;elsefor(int c=0;c<lnum;c+)outfile<<linec<<endl;outfile.close();/屏顯void my_type(char *a,int *num)char ch1000;ifstream infile(a1);if(!infile)cout<<"無法打開文件"<<a1<<endl;elseinfile.getline(ch,1000,EOF);cout<<ch<<endl;infile.close();/分屏顯示void my_more(char *a,int *num)int quit=0;char ch1000;ifstream infile(a1);if(!infile)cout<<"無法打開文件"<<a1<<endl;elseint count1=0,count2=0,l;/count1用于顯示文件總行數(shù),count2用于顯示當(dāng)前讀到的文件行數(shù)while(!infile.eof()infile.getline(ch,1000,n);count1+;infile.clear();/不用clear,之前的文件狀態(tài)屬性不會(huì)變化infile.seekg(0,ios:beg);/把流指針重新定位到文件頭if(count1<24)for(l=0;l<count1;l+)infile.getline(ch,1000,n);cout<<ch<<endl;elsefor(l=0;l<24;l+)infile.getline(ch,1000,n);cout<<ch<<endl;count2+;cout<<"-More-"<<int(double)count2/count1*100)<<"%"while(!infile.eof()&&(quit!=113)quit=getchar();if(cin.get()=n)infile.getline(ch,1000,n);cout<<ch<<endl;count2+;cout<<"-More-"<<int(double)count2/count1*100)<<"%"else if(getchar()=32)/輸入兩次空格,一次回車if(cin.get()=n)/不加此判斷條件,會(huì)把回車符解釋成逐行顯示文件的命令if(count1-count2)>0&&(count1-count2)<24)for(l=0;l<(count1-count2);l+)infile.getline(ch,1000,n);cout<<ch<<endl;count2+;else if(count1-count2)>24)for(l=0;l<24;l+)infile.getline(ch,1000,n);cout<<ch<<endl;count2+;cout<<"-More-"<<int(double)count2/count1*100)<<"%"<<n;if(int(double)count2/count1*100)=100)cout<<endl;break;infile.close();void my_cls()system( "cls ");/退出,后面可帶退出參數(shù)void my_exit(char *a,int *num)int i;for(i=1; i< (*num);i+)printf("%s ",ai);printf("n");exit(1);(2)主函數(shù)程序:#include<stdio.h>#include<string.h>#include<conio.h>#include<windows.h>#include<process.h>#include"function.h"/*/ 主程序/*int main()printf("t=n");/printf("t* 這是29題的文件和目錄操作系統(tǒng)課程設(shè)計(jì)! *n");/ printf("t* OPERATING ORDER *n");/ printf("t* 瀏覽文件和目錄: mydir *n");/ printf("t* 刪除目錄 : myrd *n");/ printf("t* 打開目錄 : mycd *n");/ printf("t* 建立目錄 : mymd *n");/ printf("t* 刪除文件 : mydel *n");/ printf("t* 移動(dòng)文件 : mymove *n");/ printf("t* 重命名文件 : myren *n");/ printf("t* 拷貝文件 : myxcopy *n");/printf("t* 時(shí)間查詢 : mytime *n");/printf("t* 日期查詢 : mydata *n");/printf("t* 文本排序 : mysort *n");/printf("t* 分屏顯示 : mymore *n");/printf("t* 文本輸出 : mytype *n");/printf("t* 清除屏幕 : mycls *n");/printf("t* 退出 : myexit *n");/ printf("t=n");/printf("n");/獲取當(dāng)前路徑char *current_path = (char*)malloc(64*sizeof(char);GetCurrentDirectory(64,current_path); /API函數(shù)GetCurrentDirectoryprintf("%s->",current_path);while(1)/定義一個(gè)輸入命令緩沖區(qū),存儲(chǔ)輸入的一個(gè)或多個(gè)命令參數(shù)char *buffer = (char*)malloc(1024*sizeof(char);/存放具體輸入的各命令參數(shù),參數(shù)最大數(shù)目為10char *parameter10;/存放參數(shù)個(gè)數(shù)int *para_num = (int*)malloc(sizeof(int);/輸入命令gets(buffer);/將buffer中各參數(shù)存儲(chǔ)到paremeter中store_parameter(buffer,parameter,para_num);/解釋各命令,并執(zhí)行!if(strcmp(parameter0,"mydir")=0 | strcmp(parameter0,"MYDIR")=0)my_dir(parameter,para_num);goto back_currentdirectory;else if(strcmp(parameter0,"myrd")=0 | strcmp(parameter0,"MYRD")=0 )my_rd(parameter,para_num);goto back_currentdirectory;else if(strcmp(parameter0,"mycd")=0 | strcmp(parameter0,"MYCD")=0 )my_cd(parameter,para_num);goto back_currentdirectory;else if(strcmp(parameter0,"mymd")=0 | strcmp(parameter0,"MYMD")=0 )my_md(parameter,para_num);goto back_currentdirectory;else if(strcmp(parameter0,"mydel")=0 | strcmp(parameter0,"MYDEL")=0)my_del(parameter,para_num);goto back_currentdirectory;else if(strcmp(parameter0,"mymove")=0 | strcmp(parameter0,"MYMOVE")=0)my_move(parameter,para_num);goto back_currentdirectory;else if(strcmp(parameter0,"myren")=0 | strcmp(parameter0,"MYREN")=0)my_ren(parameter,para_num);goto back_currentdirectory;else if(strcmp(parameter0,"myxcopy")=0 | strcmp(parameter0,"MYXCOPY")=0)my_xcopy(parameter,para_num);goto back_currentdirectory;else if(strcmp(parameter0,"mydate")=0 | strcmp(parameter0,"MYDATE")=0)

注意事項(xiàng)

本文([計(jì)算機(jī)軟件及應(yīng)用]Windows命令接口實(shí)驗(yàn)報(bào)告)為本站會(huì)員(仙***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!