zoukankan      html  css  js  c++  java
  • 操作系统 实验1 命令解释程序的编写

    实验一  命令解释程序的编写

    专业:商软一班   姓名:董婷婷 学号:201406114105

    一、 实验目的

      (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等。

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

    1、本程序采用c语言中的while语句和if、else if的嵌套的方法完成。将所需的命令字符串存到定义的数组内,从键盘输入利用strcmp进行筛选,若输入正确的命令会显示此命令的解释。输入“help”就会提示将命令全部显示出来,而输入“quit”就会退出程序。

    2、主要程序段

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

    释:定义数组,将命令存入数组中,需要时就进行调用。

            if(strcmp(str,cmd[0])==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("data     内部命令:显示或设置日期
    ");
            }
            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)
            {
                printf("dir    显示一个目录中的文件和子目录
    ");
                printf("cd     显示当前目录的名称或将其更改
    ");
                printf("md     建立一个目录或文件夹.dos下面习惯叫目录,win下面习惯叫文件夹
    ");
                printf("rd     删除目录
    ");
                printf("cls    清除屏幕
    ");
                printf("data   显示或设置日期
    ");
                printf("time   显示或设置系统时间
    ");
                printf("ren    重新命名文件,ren命令的格式是:ren 源文件名目的文件名
    ");
                printf("copy   将至少一个文件复制到另一个位置
    ");
                printf("help   提供Windows命令的帮助信息
    ");
                printf("quit   退出命令解释程序
    ");
            }
            else if(strcmp(str,cmd[10])==0)
                return;
                else
            {
                printf("你输入错误的信息,请重新输入!
    ");
            }
        }
    }

    释:这一段则是主要的程序内容,用while语句进行选择,然后用if、else if进行嵌套。当输入对应的命令则可以显示其命令解释,还可输入help进行查看命令行提示,输入quit后则退出程序。利用strcmp进行判断,虽然程序较为冗余,但是清晰明了。

    源程序:

    #include<stdio.h> 
    #include<string.h> 
    void main() 
    {  
        char cmd[20][20]={"dir","cd","md","rd","cls","date","time","ren","copy","help","quit"};  
        char str[20];
        printf("    欢迎来到命令解释程序!
    ");
        printf("                
    ");
        while(1)
        {
            printf("请输入显示符:");
            gets(str);
            if(strcmp(str,cmd[0])==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("data     内部命令:显示或设置日期
    ");
            }
            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)
            {
                printf("dir    显示一个目录中的文件和子目录
    ");
                printf("cd     显示当前目录的名称或将其更改
    ");
                printf("md     建立一个目录或文件夹.dos下面习惯叫目录,win下面习惯叫文件夹
    ");
                printf("rd     删除目录
    ");
                printf("cls    清除屏幕
    ");
                printf("data   显示或设置日期
    ");
                printf("time   显示或设置系统时间
    ");
                printf("ren    重新命名文件,ren命令的格式是:ren 源文件名目的文件名
    ");
                printf("copy   将至少一个文件复制到另一个位置
    ");
                printf("help   提供Windows命令的帮助信息
    ");
                printf("quit   退出命令解释程序
    ");
            }
            else if(strcmp(str,cmd[10])==0)
                return;
                else
            {
                printf("你输入错误的信息,请重新输入!
    ");
            }
        }
    }

    四、实验总结

          因为对c语言掌握不够熟悉,要加强C语言的学习,尤其是数组和指针。经过查询资料后,顺利的完成了程序。经过了这次实验,我对c语言有了深一步的了解,也初步了解了DOS的调用原理,命令解释程序的工作原理,希望能够更加深一步的了解。

  • 相关阅读:
    eclipse上运行spark程序
    Java实现高斯模糊算法处理图像
    Hadoop环境共享
    P1182 数列分段`Section II`
    NOIP2015题解
    镜面上的迷失之链 —— 二分判定性问题
    网络最大流
    [IOI2008]Island
    历史的进程——单调队列
    快速幂
  • 原文地址:https://www.cnblogs.com/babys8023/p/5313407.html
Copyright © 2011-2022 走看看