• 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命令解释器! ");

        while(1)

      {  

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

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

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

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

          {

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

          }

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

          {

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

          }  

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

          {

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

          }  

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

          {

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

          }

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

          {

              printf("cls 清屏 ");

          } 

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

          {

              printf("date 日期设置 ");

          } 

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

          {

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

          }    

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

          {

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

          } 

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

          {

              printf("copy复制 ");

          }

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

          {

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

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

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

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

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

             printf("date设置日期 ");   

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

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

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

             printf("quit退出 ");

          } 

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

          {

              printf("quit退出 ");

              return;}

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

          {   

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

          }    

      }

    }

    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退出”,并退出输入,此时按任意键可退出显示。

     

  • 相关阅读:
    Java ExecutorService四种线程池的例子与说明
    当代中国社会划分为十大阶层
    各大公司Java面试题超详细总结
    浅谈Java中的hashcode方法
    Java 9的JDK中值得期待的:不仅仅是模块化
    整理Excel数据,10秒搞定别人半天的工作量
    零基础搭建Hadoop大数据处理-环境
    Java性能优化权威指南第三章虚拟机概览第一部分
    15个顶级Java多线程面试题及答案
    最全面的Java多线程用法解析
  • 原文地址:https://www.cnblogs.com/zy1717/p/4864993.html
Copyright © 2020-2023  润新知