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

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

专业:商业软件工程   姓名:郭明茵  学号: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\n");

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

    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内部命令正确\n");

           break;

    case 2:

           strcpy(d,"md");

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

           break;

    case 3:

           strcpy(e,"rd");

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

           break;

    case 4:

           strcpy(f,"cls");

           system("cls");  //清屏

           break;

    case 5:

           strcpy(g,"date");

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

           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内部命令正确\n");

           break;

    case 8:

           strcpy(j,"copy");

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

           break;

    case 9:

           strcpy(l,"help");

           explain();

           break;

    default:

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

    }

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

           printf("%s\n",b);

    system(b);

    }

}

 

void explain() //解释字符表

{

    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("help    提供Windows命令提示符。");

}

 2.      运行结果及分析

  

 

存在的问题:

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

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

 

四、        实验总结

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

 

posted @ 2016-03-25 16:58  04郭明茵  阅读(160)  评论(0编辑  收藏  举报