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


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

    专业:商业软件工程   姓名:郭明茵  学号:201406114204

    一、        实验目的

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

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

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

    二、        实验内容和要求

       1.实验内容:根据教师指定的实验课题,完成设计、编码、测试工作。

    2.实验要求:编写类似于DOS,UNIX的命令行解释程序

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

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

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

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

    (5)用户输入QUIT退出

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

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

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

    #include<stdio.h>

    #include<process.h>

    #include<string.h>

    #include<time.h>

    #include<stdlib.h>

    void explain();//命令解释表

    void main()

    {

        int k,num;

        char a[10],b[50],c[50],d[50],e[50],f[50],g[50],h[50],i[50],j[50],l[50];

        char order[11][20]={"dir","cd","md","rd","cls","date","time","ren","copy","help"};//存储命令符

        printf("Microsoft Windows XP [版本 5.1.2600]cls ");

        printf("<C> 版权所有 1985-2001 Microsoft Corp. ");

        while(1){

        printf("C:\Documents and Settings\administrator>");

        scanf("%s",&a);

        for(k=0;k<10;k++)//查找命令

        {

               if(!strcmp(a,order[k]))//比较字符串,查找相对应的命令

               {

                      num=k;

                      break;

               }

        }

        strcpy(b,"");

        strcpy(c,"");

        strcpy(d,"");

        strcpy(e,"");

        strcpy(f,"");

        strcpy(g,"");

        strcpy(h,"");

        strcpy(i,"");

        strcpy(j,"");

        strcpy(l,"");

        switch(num){      //相应命令的功能

        case 0:

               strcpy(b,"dir");

               break;

        case 1:

               strcpy(c,"cd");

               printf("cd内部命令正确 ");

               break;

        case 2:

               strcpy(d,"md");

               printf("md内部命令正确 ");

               break;

        case 3:

               strcpy(e,"rd");

               printf("rd内部命令正确 ");

               break;

        case 4:

               strcpy(f,"cls");

               system("cls");  //清屏

               break;

        case 5:

               strcpy(g,"date");

               printf("date内部命令正确 ");

               break;

        case 6:

               strcpy(h,"time");   //与系统时间一致

               time_t rawtime; 

               struct tm * timeinfo; 

               time (&rawtime); 

               timeinfo =localtime (&rawtime); 

               printf ("当前时间: %s",asctime (timeinfo)); 

               break;

        case 7:

               strcpy(i,"ren");

               printf("ren内部命令正确 ");

               break;

        case 8:

               strcpy(j,"copy");

               printf("copy内部命令正确 ");

               break;

        case 9:

               strcpy(l,"help");

               explain();

               break;

        default:

               printf("错误输入,重新输入 ");

        }

        if(num>=0&&num<=9)

               printf("%s ",b);

        system(b);

        }

    }

    void explain() //解释字符表

    {

        printf("dir     显示一个目录中的文件和子目录。 ");

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

        printf("md      创建一个目录。 ");

        printf("rd      删除目录。 ");

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

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

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

        printf("ren     重新命文件。 ");

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

        printf("help    提供Windows命令提示符。");

    }

     2.      运行结果及分析

      

     

    存在的问题:

    现在程序算是可以正常运行,但仍存在一些问题:

    有时候会弹出这样的对话框,如果选择中止,程序就会结束运行,选择忽略,程序就继续运行。

     

    四、        实验总结

    通过这次实验,对命令解释有了更深一层的认识,能知道它是如何运行的,大概了解它的工作原理。在做的过程中比较困难的是不知道命令的功能是什么,都需要一个个的去查找。

  • 相关阅读:
    全卷积神经网络FCN
    面试题 —— 面向对象
    【一题多解】平方根的计算及完全平方数的判断
    【一题多解】Python 字符串逆序
    JVM 自带性能监测调优工具 (jstack、jstat)及 JVM GC 调优
    n 中选 m —— 随机采样的艺术
    位图(bitmap)—— C语言实现
    C++ STL 数据结构与算法 —— 排序
    斐波那契 —— 矩阵形式推导
    常用文本编辑器 editor 的常用插件 —— CopyEdit
  • 原文地址:https://www.cnblogs.com/mingyin/p/5320150.html
Copyright © 2020-2023  润新知