天天看點

作業系統 實驗一

實驗一

一、        實驗目的

(1)掌握指令解釋程式的原理;

(2)掌握簡單的DOS調用方法;

(3)掌握C語言程式設計初步。

二、        實驗内容和要求

内容:根據教師指定的實驗課題,完成設計、編碼、測試工作。

要求:編寫類似于DOS,UNIX的指令行解釋程式

(1)自行定義系統提示符

(2)自定義指令集(8-10個)

(3)使用者輸入HELP以查找指令的幫助

(4)列出指令的功能,區分内部還是外部指令

(5)使用者輸入QUIT退出

(6)内部指令有dir, cd, md, rd, cls, date, time, ren, copy等。

三、        實驗方法、步驟及結果測試

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>

int main()
{
    char str[20];
    char mini[20][20]={"?","cd","md","rd","cls","date","time","ren","copy","dir","quit","call",""};
    printf("Microsoft Windows [版本 6.1.7601]\n版權所有 (c) 2013 Microsoft Corporation. 保留所有權利。\n\n");
    while(1)
    {
        printf("C:\\Documents and Settings\\Users>");
        gets(str);
        strlwr(str);
        if(strcmp(str,mini[0])==0)
        {
            printf("'?'\t外部指令輸入正确!\n"); 
            printf("該指令作用是:提供windows指令的幫助資訊。\n\n");
            printf("DIR\t内部指令 顯示一個目錄中的檔案和子目錄。\n");
            printf("CD\t内部指令 顯示目前目錄的名稱或将其更改。\n");
            printf("MD\t内部指令 建立一個目錄。\n");
            printf("RD\t内部指令 删除目錄。\n");
            printf("CLS\t内部指令 清除螢幕。\n");
            printf("DATE\t内部指令 顯示或設定日期。\n");
            printf("TIME\t内部指令 顯示或設定系統時間。\n");
            printf("REN\t内部指令 重新命名檔案。\n");
            printf("COPY\t内部指令 将至少一個檔案複制到另一個位置。\n");
            printf("CALL\t内部指令 從另一個批處理程式調用這一個。\n\n");
            printf("QUIT\t外部指令 退出指令解釋程式。\n");
            printf("?\t外部指令 提供windows指令的幫助資訊。\n");
        }
        else if(strcmp(str,mini[1])==0)
        {
            printf("'CD'\t内部指令輸入正确!\n"); 
            printf("該指令作用是:顯示目前目錄的名稱或将其更改。\n");
        }
        else if(strcmp(str,mini[2])==0)
        {
            printf("'MD'\t内部指令輸入正确!\n");  
            printf("該指令作用是:建立一個目錄。\n");
        }
        else if(strcmp(str,mini[3])==0)
        {
            printf("RD\t内部指令輸入正确!\n"); 
            printf("該指令作用是:删除目錄。\n");
             
        }
        else if(strcmp(str,mini[4])==0)             //清屏
        {
            printf("'CLS'\t内部指令輸入正确!\n");  
            printf("該指令作用是:清除螢幕。\n");
            system("cls");
        }
        else if(strcmp(str,mini[5])==0)          //顯示日期
        {
            printf("'DATE'\t内部指令輸入正确!\n");
            printf("該指令作用是:顯示或設定日期。\n\n");
            time_t t = time(0); 
            char tmp[64]; 
            strftime( tmp, sizeof(tmp), "目前日期:%Y/%m/%d   ",localtime(&t) ); 
            puts( tmp );
            printf("輸入新日期:<年/月>\n"); 
        }
        else if(strcmp(str,mini[6])==0)           //顯示時間
        {
            printf("'TIME'\t内部指令輸入正确!\n");
            printf("該指令作用是:顯示或設定系統時間。\n\n");
            time_t t = time(0); 
            char tmp[64]; 
            strftime( tmp, sizeof(tmp), "目前時間: %X  ",localtime(&t) ); 
            puts( tmp );
            printf("輸入新的時間:\n");
            
        }
        else if(strcmp(str,mini[7])==0)
        {
            printf("'REN'\t内部指令輸入正确!\n");  
            printf("該指令作用是:重新命名檔案。\n");
        }
        else if(strcmp(str,mini[8])==0)
        {
            printf("'COPY'\t内部指令輸入正确!\n");  
            printf("該指令作用是:将至少一個檔案複制到另一個位置。\n");
        }
        else if(strcmp(str,mini[9])==0)
        {
            printf("'DIR'\t内部指令輸入正确!\n");  
            printf("該指令作用是:顯示一個目錄中的檔案和子目錄。\n\n");
            system("dir");
        }
        else if(strcmp(str,mini[10])==0)     //退出
        {
            printf("'QUIT'\t外部指令輸入正确!\n");  
            printf("該指令作用是:退出指令解釋程式。\n");
            printf("see you!\n\n");
            exit(0);
        }
        else if(strcmp(str,mini[11])==0)
        {
            printf("'CALL'\t内部指令輸入正确!\n");  
            printf("該指令作用是:從另一個批處理程式調用這一個。\n");
        }    
        else if(strcmp(str,mini[12])==0)
        {
            printf("");
        }
        else 
        {
            printf("指令輸入錯誤!\n\'%s\'",str);
            printf("不是内部或外部指令,也不是可運作的程式或批處理檔案。\n");
        }
    
    }
    return 0;
}      
作業系統 實驗一
作業系統 實驗一
作業系統 實驗一
作業系統 實驗一
作業系統 實驗一
作業系統 實驗一
作業系統 實驗一

四、        實驗總結

 通過練習實踐,編寫cmd有利于我們了解系統内部程式應用,有利于我們今後對作業系統的熟悉與學習。

下一篇: 1028 文法||