1009实验一 认识DOS

实验一、DOS实验

物联网工程  张怡   201306104149

一、 实验目的

    (1)认识DOS;

    (2)掌握命令解释程序的原理;

    (3)掌握简单的DOS调用方法;

    (4)掌握C语言编程初步。

 

二、实验内容和要求

     编写类似于DOS,UNIX的命令行解释程序。

     (1)自行定义系统提示符

      (2)自定义命令集(8-10个)

      (3)用户输入HELP以查找命令的帮助

      (4)列出命令的功能,区分内部还是外部命令

      (5)用户输入QUIT退出

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

 

三、 实验方法、步骤及结果测试

 1.   源程序名:压缩包文件(rar或zip)中源程序名1.c

       可执行程序名:1.exe

2.   原理分析及流程图

    这个程序主要是while(1)语句和if( )……else( )语句的嵌套使用,此外是数组的使用。将所需实现的命令存入数组cmd[20][20],然后将输入的字符串存入数组str[20],将两个数组内的字符串进行比对,若满足“strcmp(str,cmd[n])==0”,则输出数字n对应的命令及其解释,若不满足“strcmp(str,cmd[n])==0”,则提示“输入出错,请重新输入:”,直至输入的字符串与数组cmd[20][20]内的字符串对应为止,此时输出n对应的命令。若一直不输入“quit”,则每次显示上次输入的命令对应的语句时,提示“请用户输入命令:”。

 3.   主要程序段及其解释:

#include<stdio.h>

#include<string.h>

main()

    char cmd[20][20]={"dir","cd","md","rd","cls","date","time","ren","copy","help","quit"};   

    char str[20];//存储字符串的数组

    printf("欢迎使用DOS命令解释器!\n\n");

    while(1)

  {  

      printf("\n请用户输入命令:");    

      gets(str); //str等于输入的字符串    

      if(strcmp(str,cmd[0])==0) 

    //比较函数,和前面的数组进行比较,相同为0不同为1,为0时输出

      {

         printf("dir显示磁盘目录\n");

      }

      else if(strcmp(str,cmd[1])==0) 

      {

          printf("cd 进入特定的目录\n");

      }  

      else if(strcmp(str,cmd[2])==0) 

      {

         printf("md 创建新的目录\n");//dos下面习惯叫目录,win下面习惯叫文件夹。

      }  

      else if(strcmp(str,cmd[3])==0)   

      {

         printf("rd 删除文件夹\n");

      }

      else if(strcmp(str,cmd[4])==0) 

      {

          printf("cls 清屏\n");

      } 

      else if(strcmp(str,cmd[5])==0)  

      {

          printf("date 日期设置\n");

      } 

      else if(strcmp(str,cmd[6])==0)   

      {

         printf("time 设置(或显示)系统时期\n");

      }    

      else if(strcmp(str,cmd[7])==0)  

      {

         printf("ren 文件改名\n");//ren命令的格式是:ren 源文件名目的文件名

      } 

      else if(strcmp(str,cmd[8])==0) 

      {

          printf("copy复制\n");

      }

      else if(strcmp(str,cmd[9])==0)  //输入help,显示以下内容

      {

         printf("dir (无参数)显示磁盘目录\n");    

         printf("cd  进入特定的目录 \n");   

         printf("md  创建新的目录\n");

         printf("rd  删除特定的文件夹\n");   

         printf("cls 清屏幕命令\n");    

         printf("date设置日期 \n");   

         printf("time设置或显示系统时期\n");

         printf("ren 文件改名命令\n");    

         printf("copy文件复制命令\n");

         printf("quit退出\n");

      } 

          else if(strcmp(str,cmd[10])==0)  

      {

          printf("quit退出\n");

          return;}

      else  //与数组内字符串不同,为1,提示出错 

      {   

         printf("输入出错,请重新输入:\n");  

      }    

  }

}

4.   运行结果及分析

    运行程序,有如下效果:显示“欢迎使用DOS命令解释器!”,并提示“请用户输入命令”。此处,打印“请用户输入命令”这一句的语句放在while(1)里面,使其不断提示。

 

 

    输入程序的寄存数组内未设置的命令,则提示“输入出错,请重新输入:”。此处用到if( )……else( )语句,如果满足“str,cmd[n])==0”,则显示数字n对应的命令及其解释,否则提示“输入出错,请重新输入:”。

 

 

输入“help”,则显示寄存数组内设置的命令及其解释。

      

 

  输入寄存数组内设置的命令,则显示该命令及其解释。

 

 

  输入“quit”,则显示“quit退出”,并按任意键可退出程序。

  

 

四、实验总结

     这是操作系统的第一个实验,之前并没有了解过DOS命令,因此上网查着了相关资料。DOS的内部命令有dir, cd, md,rd, cls, date, time, ren, copy等,程         序对这些命令进行了简要的解释。程序运行后,提示“欢迎使用DOS命令解释器!”和“请用户输入命令”,不了解的话可以输入“help”命令,则显示DOS命令及相关解释。

     刚开始做实验的时候只有模糊的框架概念,知道可以用if(),else if()和else()语句进行编程,但思路很乱,不知具体如何实现。通过查找相关书籍以及上网浏览程序代码,发现数组可以很好的解决这个问题。于是用一个数组来存储所要用到的命令,另外用一个数组来存储刚输入的命令(字符串),然后和前面的数组进行比较,相同为0不同为1,为0时输出,为1则提示出错,要求重新输入命令。当输入“quit”命令时,提示“quit退出”,并退出输入,此时按任意键可退出显示。

 

posted @ 2015-10-09 20:16  49张怡  阅读(189)  评论(0编辑  收藏  举报