操作系统 实验一

实验一

 

一、        实验目的

(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有利于我们了解系统内部程序应用,有利于我们今后对操作系统的熟悉与学习。

 

 

posted @ 2016-03-24 13:47  J航  阅读(363)  评论(0编辑  收藏  举报