




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、貴州工程應(yīng)用技術(shù)學(xué)院操作系統(tǒng)課程設(shè)計(jì)題 目: 操作系統(tǒng)命令接口設(shè)計(jì)學(xué) 號(hào): 姓 名: 學(xué) 院: 專業(yè)班級(jí): 指導(dǎo)教師: 完成時(shí)間: 2016年 4月14日 信息工程學(xué)院計(jì)算機(jī)系制操作系統(tǒng)命令接口設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?通過(guò)設(shè)計(jì)一些簡(jiǎn)單的操作系統(tǒng)的命令接口,使學(xué)生掌握操作系統(tǒng)接口的設(shè)計(jì)方法。在熟悉操作系統(tǒng)的命令接口及程序接口的基礎(chǔ)上,利用C語(yǔ)言設(shè)計(jì)簡(jiǎn)單的命令接口。命令接口基于DOS的命令行接口二、實(shí)驗(yàn)功能利用C語(yǔ)言、DOS中斷中21H與屏幕顯示相關(guān)的中斷調(diào)用完成設(shè)計(jì),如下:l 命令解釋器l 列目錄命令l 顯示時(shí)間命令l 顯示日期命令l 回顯字符串命令l 創(chuàng)建目錄命令l 刪除目錄命令l 更改路徑命令l
2、顯示當(dāng)前工作目錄命令l 刪除文件命令l 打印文本命令l 文件重新命名l 顯示文本命令l 顯示版本命令l 顯示目錄結(jié)構(gòu)命令l 清除當(dāng)前顯示內(nèi)容命令三、 實(shí)驗(yàn)流程圖四、 函數(shù)功能模塊:函數(shù)1:顯示系統(tǒng)當(dāng)前的時(shí)間函數(shù):void _TIME(void)函數(shù)2:顯示系統(tǒng)當(dāng)前的日期函數(shù):void _DATA(void)函數(shù)3:在當(dāng)前目錄下創(chuàng)建一個(gè)新的目錄函數(shù):void _CTREAT(void)函數(shù)4:刪除當(dāng)前目錄中的一個(gè)目錄函數(shù):void _DELDIR(void)函數(shù)5:更改當(dāng)前目錄的路徑函數(shù):void _ROUTE_C(void)函數(shù)6:顯示當(dāng)前的目錄函數(shù):void _DIR(void)函數(shù)7:刪除
3、當(dāng)前目錄中的文件函數(shù):void _DELETE(void)函數(shù)8:打印目錄中的文本函數(shù):void _PRINT(void)函數(shù)9:給當(dāng)前目錄中的文件重新命名函數(shù):void _RENAME(void)函數(shù)10:以窗口的形式顯示文本函數(shù):void _SHOW(void)函數(shù)11:顯示當(dāng)前系統(tǒng)的版本號(hào)函數(shù):void _SNUM(void)函數(shù)12:以二叉樹的形式顯示系統(tǒng)的目錄文件結(jié)構(gòu)函數(shù):void _TREE(void)函數(shù)13:清屏函數(shù):void _CLS(void)函數(shù)14:輸入判斷函數(shù) 檢查輸入命令函數(shù):Command_num(char Command_name)參數(shù):char Command
4、_name 輸入的命令功能:將其轉(zhuǎn)換成相應(yīng)的case 常量返回值 :numint Command_num(char Command_name)五、 核心算法1.主要是使用API相關(guān)函數(shù),以及調(diào)用DOS命令2.使用strcmp()函數(shù)判斷輸入命令格式是否正確3.使用清空緩沖區(qū),以免影響下一次命令的操作六、 源程序#include<stdio.h>#include<windows.h>#include<conio.h>#include<stdlib.h>#include<string.h>#include "Shellapi.h
5、"/顯示系統(tǒng)時(shí)間函數(shù)void _TIME(void)SYSTEMTIME st; GetLocalTime(&st);/獲取當(dāng)前系統(tǒng)時(shí)間,以本地時(shí)間格式 printf("Now: %d:%d:%d",st.wHour ,st.wMinute ,st.wSecond); printf("n"); SetLocalTime(&st);/設(shè)置當(dāng)前系統(tǒng)時(shí)間/顯示系統(tǒng)日期函數(shù)void _DATE(void)SYSTEMTIME st;GetLocalTime(&st); /獲取當(dāng)前系統(tǒng)時(shí)間,以本地時(shí)間格式printf("
6、Now: %d-%d-%d",st.wYear ,st.wMonth ,st.wDay);printf("n");SetLocalTime(&st); /設(shè)置當(dāng)前系統(tǒng)時(shí)間/創(chuàng)建目錄 creatvoid _CTREAT(void)/在同文件中創(chuàng)建一個(gè)文件夾 先創(chuàng)建 C,D文件夾,C中創(chuàng)建文件夾123,格式C123 char dir_name256;gets(dir_name);if(CreateDirectory(dir_name, NULL)printf("OKn");else printf("NOn");/刪除目錄
7、void _DELDIR(void) char cmd256,dirname256;puts( "Input the file you delete: ");/格式 23 文件3里的東向全部刪除gets(dirname);strcpy(cmd, "rmdir /s /q "); strcat(cmd,dirname); / 連接兩個(gè)字符串system(cmd); /調(diào)用DOS命令/更改路徑名void _ROUTE_C(void)char oldname256, newname256; printf("Route to rename: "
8、;); gets(oldname); /要修改的路徑名 printf("New Root name: "); gets(newname); /修改后的路徑名 if (rename(oldname, newname) = 0) /修改成功 printf("Renamed %s to %s.n", oldname, newname); else /修改失敗 perror("rename"); /顯示當(dāng)前目錄 dirvoid _DIR(void)system("dir");/刪除文件 delete void _DELET
9、E(void)char file80; printf("File to delete: "); gets(file); /輸入刪除的文件名 輸入格式 D123123.txt if (remove(file) = 0) /刪除成功 printf("Removed %s.n",file); else /刪除失敗 perror("remove"); /打印文本 printvoid _PRINT(void)FILE *fp; char ch,file_name256; printf("please input like C1123.
10、txtn");scanf("%s",file_name);if(fp=fopen(file_name,"rt+")=NULL) printf("nCannot open file strike any key exit!"); printf("or this is NULL!"); ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); printf("n");fclose(fp); /重命名 renamevoid _RENAME
11、(void)char oldname256, newname256; printf("File to rename: "); gets(oldname); /要重命名的 文件名printf("New name: "); gets(newname); /新文件名 if (rename(oldname, newname) = 0) printf("Renamed %s to %s.n", oldname, newname); else perror("rename"); / 以窗口的形式顯示文本 showvoid _S
12、HOW(void)char file_name256;scanf("%s",file_name);/ 調(diào)用API ShellExecute()函數(shù)ShellExecute(NULL, "open", file_name, NULL, NULL, SW_SHOWNORMAL);/版本號(hào) snumvoid _SNUM(void)printf("版本號(hào):DIY operat system 1.0n"); /*自己命名*/顯示目錄結(jié)構(gòu) treevoid _TREE(void)char Command256="tree /f | mo
13、re" /調(diào)用DOS 命令system(Command);/清屏 clsvoid _CLS(void)system("cls"); /輸入判斷函數(shù) 檢查輸入命令/函數(shù):Command_num(char Command_name)/參數(shù):char Command_name 輸入的命令/功能:將其轉(zhuǎn)換成相應(yīng)的case 常量int Command_num(char Command_name)int num; / case 常量if(strcmp(Command_name,"exit" )=0 | strcmp(Command_name,"E
14、XIT")=0)num = 0; /退出else if(strcmp(Command_name,"time")=0 | strcmp(Command_name,"TIME")=0) num = 1;/時(shí)間else if(strcmp(Command_name,"date")=0 | strcmp(Command_name ,"DATE")=0) num = 2;/日期else if(strcmp(Command_name,"creat")=0 | strcmp(Command_name
15、,"CREAT")=0) num = 3;/創(chuàng)建文件else if(strcmp(Command_name,"deldir")=0| strcmp(Command_name,"DELDIR")=0)num = 4; /刪除目錄else if(strcmp(Command_name,"croute")=0 | strcmp(Command_name,"CROUTE")=0) num = 5; /修改路徑else if(strcmp(Command_name,"dir")=0 |
16、 strcmp(Command_name,"DIR")=0) num = 6;/顯示當(dāng)前目錄else if(strcmp(Command_name,"delete")=0| strcmp(Command_name,"DELETE")=0)num = 7;/刪除文件else if(strcmp(Command_name,"print")=0 | strcmp(Command_name,"PRINT")=0)num = 8;/打印文件else if(strcmp(Command_name,"
17、;rename")=0| strcmp(Command_name,"RENAME")=0) num = 9; /重命名文件else if(strcmp(Command_name,"show")=0 | strcmp(Command_name,"SHOW")=0) num = 10;else if(strcmp(Command_name,"snum")=0 | strcmp(Command_name,"SNUM")=0)num = 11;/版本號(hào)else if(strcmp(Comman
18、d_name,"tree")=0 | strcmp(Command_name,"TREE")=0)num = 12;/顯示目錄結(jié)構(gòu)else if(strcmp(Command_name,"cls")=0 | strcmp(Command_name,"CLS")=0)num = 13;/清除當(dāng)前顯示else printf("input error!n"); /*輸入錯(cuò)誤*/return num;/主函數(shù)int main(void)char Command_name256;/命令名int Com_n
19、um ; /命令轉(zhuǎn)換成常量的中間變量/程序主界面printf(" 操作系統(tǒng)接口設(shè)計(jì) n");printf("系統(tǒng)時(shí)間 : time/TIME n");printf("系統(tǒng)日期 : date/DATE n");printf("創(chuàng)建目錄 : creat/CREAT n");printf("刪除目錄 : deldir/DELDIR n");printf("更改路徑名 : croute/CROUTE n");printf("顯示當(dāng)前目錄 : dir/DIR n")
20、;printf("刪除文件 : delete/DELETE n");printf("打印文本 : print/PRINT n");printf("重命名文件 : rename/RENAME n");printf("顯示文本 : show/SHOW n");printf("顯示版本 : snum/SNUM n");printf("顯示目錄結(jié)構(gòu) : tree/TREE n");printf("清除屏幕 : cls/CSL n");printf("退出
21、 : exit/EXIT n");printf("n"); printf("請(qǐng)輸入你要執(zhí)行的命令:") ;while( scanf("%s",Command_name)&& Com_num != 0 ) fflush(stdin); /清除按鍵信息的緩存Com_num =Command_num(Command_name);switch(Com_num)case 0: Com_num = 0;printf("EXIT THE SYSTEMn"); return Com_num=0;break; case 1: _TIME(); break;/顯示時(shí)間 case 2: _DATE(); break;/顯示日期 case 3: _CTR
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 股份制企業(yè)的合同簽署文書流程優(yōu)化研究
- 貨幣資金借款合同
- 營(yíng)銷數(shù)據(jù)展示表-線上線下營(yíng)銷策略對(duì)比
- 機(jī)械工程制圖技能測(cè)試
- 信息產(chǎn)業(yè)技術(shù)創(chuàng)新實(shí)力排行榜表
- 機(jī)電設(shè)備維修合同協(xié)議
- 鋼結(jié)構(gòu)勞務(wù)承包合同
- 活動(dòng)安排日程表格
- 跨部門溝通會(huì)議紀(jì)要
- 農(nóng)業(yè)科技農(nóng)業(yè)大數(shù)據(jù)應(yīng)用與精準(zhǔn)農(nóng)業(yè)方案
- 《 大學(xué)生軍事理論教程》全套教學(xué)課件
- 中考數(shù)學(xué)計(jì)算題練習(xí)100道(2024年中考真題)
- 煤礦用鋼絲繩芯阻燃輸送帶(MT668-2008)
- 全省安全生產(chǎn)檢測(cè)檢驗(yàn)機(jī)構(gòu)名單及業(yè)務(wù)范圍
- 辦公用品供貨服務(wù)計(jì)劃方案
- DB37∕T 5107-2018 城鎮(zhèn)排水管道檢測(cè)與評(píng)估技術(shù)規(guī)程
- 酒精溶液體積濃度、質(zhì)量濃度與密度對(duì)照表
- 主要腸內(nèi)營(yíng)養(yǎng)制劑成分比較
- 老年人各系統(tǒng)的老化改變
- 小學(xué)五年級(jí)綜合實(shí)踐課教案
- 煤礦井下供電常用計(jì)算公式及系數(shù)
評(píng)論
0/150
提交評(píng)論