zoukankan      html  css  js  c++  java
  • 实验一 命令解释程序

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

     

    一、 实验目的

    (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.      源程序名:压缩包文件中源程序名 1.cpp

                     可执行程序名: 1.exe

            2.      原理分析及流程图

               在程序里建一个命令结构体,里面包含了命令名、命令功能、判断内部或外部命令的编号、参数,如:

                      struct Cmd{

                                          char cmd[30];  //命令名

                                          char function[500];  //命令功能

                                          int post;  //是否是内部命令,是则为1否则为0

                                          char parameter[1000];  //参数

                       };

                      最后通过用户输入的字符串,比较是否与二维数组里面的命令名一样,相同则输出该命令的所有信息,

                      若不同则输出该命令不是内部命令或外部命令。如果用户输入quit,则程序结束。 

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

    #include<stdio.h>

    #include<string.h>

    int main(){

        //建立数组

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

        char ben[10];

        int i;

              printf("Microsoft Windows [版本 6.1.7601 ");

        printf("(c) 2009 Microsoft Corporation。保留所有权利。 ");

        //循环

        while(1){

            printf("Please input 提示符:>");

            gets(ben);

           

            for(i=0;i<20;i++){

                if(strcmp(ben,cmd[0])==0){

                    printf("类型:内部命令 ");

                    printf("查看当前目录。。 ");

                    printf(" ");

                    printf(" ");

                    break;

                }

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

                    printf("类型:内部命令 ");

                    printf("查看当前目录的名称。。 ");

                    printf(" ");

                    printf(" ");

                    break;

                }

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

                    printf("类型:内部命令 ");

                    printf("新建一个新目录。。 ");

                    printf(" ");

                    printf(" ");

                    break;

                }

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

                    printf("类型:内部命令 ");

                    printf("删除这个目录。。 ");

                    printf(" ");

                    printf(" ");

                    break;

                }

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

                    printf("类型:内部命令 ");

                    printf("清除屏幕。。 ");

                    printf(" ");

                    printf(" ");

                    break;

                }

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

                    printf("类型:内部命令 ");

                    printf("显示或者设置新日期。。 ");

                    printf(" ");

                    printf(" ");

                    break;

                }

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

                    printf("类型:内部命令 ");

                    printf("显示或者设置系统时间。。 ");

                    printf(" ");

                    printf(" ");

                    break;

                }

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

                    printf("类型:内部命令 ");

                    printf("文件重命名。。 ");

                    printf(" ");

                    printf(" ");

                    break;

                }

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

                    printf("类型:内部命令 ");

                    printf("将至少一个文件复制到另一个位置去。。 ");

                    printf(" ");

                    printf(" ");

                    break;

                }

                else if(strcmp(ben,cmd[9])==0){

                    return 0;

                }

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

                    printf("类型:外部命令 ");

                    printf("dir 内部命令 显示一个目录的文件和子目录。 ");

                    printf("cd 内部命令 显示当前目录的名称或将其更改。 ");

                    printf("md 内部命令 创建一个新的目录。 ");

                    printf("rd 内部命令 删除目录。 ");

                    printf("cls 内部命令 清除屏幕。 ");

                    printf("date 内部命令 显示或者设置日期。 ");

                    printf("time 内部命令 内部命令显示或者设置系统时间。 ");

                    printf("ren 内部命令 重命名。 ");

                    printf("cope 内部命令 复制文件。 ");

                    printf("help 内部命令 取得帮助。 ");

                    printf("quit 内部命令 退出程序。 ");

                    printf(" ");

                    printf(" ");

                    break;

                }

            }         

            }

    }

    4、运行结果及分析


    测试结果与预期结果一样。

     

    四、实验总结

       在大一的时候学习过C语言程序设计,可是之后并没有自己加强巩固,所以现在好多都已经忘记了。所以做这个实验的时候遇到了蛮多的问题的,例如不会运用二维数组、还有那个字符串函数也不太懂。所以,深刻的了解到,学完一样东西之后一定要抽时间去在复习一下。

          

  • 相关阅读:
    PAT (Advanced Level) 1114. Family Property (25)
    PAT (Advanced Level) 1113. Integer Set Partition (25)
    PAT (Advanced Level) 1112. Stucked Keyboard (20)
    PAT (Advanced Level) 1111. Online Map (30)
    PAT (Advanced Level) 1110. Complete Binary Tree (25)
    PAT (Advanced Level) 1109. Group Photo (25)
    PAT (Advanced Level) 1108. Finding Average (20)
    PAT (Advanced Level) 1107. Social Clusters (30)
    PAT (Advanced Level) 1106. Lowest Price in Supply Chain (25)
    PAT (Advanced Level) 1105. Spiral Matrix (25)
  • 原文地址:https://www.cnblogs.com/linfa/p/5312998.html
Copyright © 2011-2022 走看看