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

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

专业:商业软件工程  姓名:何宇明  学号:201406114240

一、实验目的

(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.源程序名:压缩包文件(rarzip)中源程序名×××.c

可执行程序名:×××.exe

  1. 2.原理分析及流程图

主要总体设计问题。

(包括存储结构,主要算法,关键函数的实现等)

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

实现主要功能的程序段,重要的是程序的注释解释。

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void word(char *a)
{
    
    if(strcmp(a,"dir")==0) 
    {    

        printf("驱动器C中的卷没有标签。\n");
        printf("\n");    
        printf("卷的序列号是 B0A9-10ED\n");
        printf("C:/Documents and Settings/hskd的目录\n");
        printf("\n");
        printf("2016-03-24 14:29   <DIR>      .\n");
        printf("2016-03-24 14:29   <DIR>      ..\n");
        printf("2014-08-28 17:30   <DIR>      Favoritesn\n");
        printf("2014-08-28 14:14   <DIR>      My Documents\n");
        printf("2016-03-22 16:28   <DIR>      [开始]菜单\n");
        printf("2016-03-28 08:29   <DIR>     桌面\n");
        printf("              0 个文件         0字节\n");
        printf("              6 个目录 61,423,775,744  可用字节\n");
        printf("\n");
    }
    else if(strcmp(a,"cd")==0)
    {   
        printf("/Documents and Settings/hskd");
        printf("\n");
        printf("\n");
    }
    else if(strcmp(a,"md")==0)
    {    
        printf("'%s' 内部命令输入正确!\n该命令作用是:",a);
        printf("创建目录。\n");
        printf("\n");
    }
    else if(strcmp(a,"rd")==0)
    {    
        printf("'%s' 内部命令输入正确!\n该命令作用是:",a);
        printf("删除目录。\n");
        printf("\n");
    }
    else if(strcmp(a,"cls")==0)
    {    
        printf("'%s' 内部命令输入正确!\n该命令作用是:",a);
        printf("创建目录。\n");
        printf("\n");
    }
    else if(strcmp(a,"date")==0)
    {    
        printf("'%s' 内部命令输入正确!\n该命令作用是:",a);
        printf("显示或设置日期。\n");
        printf("\n");
    }
    else if(strcmp(a,"time")==0)
    {    
        printf("'%s' 内部命令输入正确!\n该命令作用是:",a);
        printf("显示或设置系统时间。\n");
        printf("\n");
    }
    else if(strcmp(a,"ren")==0)
    {    
        printf("'%s' 内部命令输入正确!\n该命令作用是:",a);
        printf("重命名文件。\n");
        printf("\n");
    }
    else if(strcmp(a,"copy")==0)
    {    
        printf("'%s' 内部命令输入正确!\n该命令作用是:",a);
        printf("将至少一个文件复制到另一个位置。\n");
         printf("\n");
    }
    else if(strcmp(a,"javac")==0)
    {
        printf("'%s' 外部命令输入正确!\n该命令作用是:",a);
        printf("将某一个java程序进行编译。\n");
        printf("\n");
    }
    else if(strcmp(a,"java")==0)
    {
        printf("'%s' 外部命令输入正确!\n该命令作用是:",a);
        printf("运行某一个已编译的java文件。\n");
        printf("\n");
    }
    else if(strcmp(a,"erase")==0)
    {    
        printf("'%s' 外部命令输入正确!\n该命令作用是:",a);
        printf("删除至少一个文件。\n");
        printf("\n");
    }
    else if(strcmp(a,"chkntfs")==0)
    {
        printf("'%s' 外部命令输入正确!\n该命令作用是:",a);
        printf("显示或修改启动时间磁盘检查。\n");
        printf("\n");
    }
    else if(strcmp(a,"assoc")==0)
    {    
        printf("'%s' 外部命令输入正确!\n该命令作用是:",a);
        printf("显示或修改文件扩展名关联。\n");
        printf("\n");
    }
    else if(strcmp(a,"at")==0)
    {    
        printf("'%s' 外部命令输入正确!\n该命令作用是:",a);
        printf("计划在计算机上运行的命令和程序。\n");
        printf("\n");
    }
    else if(strcmp(a,"attrib")==0)
    {
        printf("'%s' 外部命令输入正确!\n该命令作用是:",a);
        printf("显示或更改文件属性。\n");
        printf("\n");
    }
    else if(strcmp(a,"call")==0)
    {    
        printf("'%s' 外部命令输入正确!\n该命令作用是:",a);
        printf("从另一个批处理程序调用这一个。\n");
        printf("\n");
    }
    else if(strcmp(a,"help")==0)
    {
        printf("命令指示符有以下命令");
        printf("\ndir      显示一个目录中的文件和子目录。");
        printf("\ncd       显示当前目录的名称或将其更改。") ;
        printf("\nmd       创建目录。") ;
        printf("\nrd       删除目录。") ;
        printf("\ncls      清除屏幕。") ;
        printf("\ndate     显示或设置日期。") ;
        printf("\ntime     显示或设置系统时间。") ;
        printf("\nren      重命名文件。") ;
        printf("\ncopy     将至少一个文件复制到另一个位置。") ;
        printf("\njavac    将某一个java程序进行编译。") ;
        printf("\njava     运行某一个已编译的java文件。") ;
        printf("\nerase    删除至少一个文件。") ;
        printf("\nchkntfs  显示或修改启动时间磁盘检查。") ;
        printf("\nassoc    显示或修改文件扩展名关联。") ;
        printf("\nat       计划在计算机上运行的命令和程序。") ;
        printf("\nattrib   显示或更改文件属性。") ;
        printf("\ncall     从另一个批处理程序调用这一个。\n") ;
        printf("\nquit     退出程序。\n") ;
        printf("\n");
    }
    else 
    {
        printf("'%s'不是内部或外部命令,也不是可运行的程序\n",a);
        printf("或批处理文件。\n");
        printf("\n");
    }
    
}
main()
{
    char a[50];
    char *quit="quit";
    
    printf("Microsoft Windows [版本 6.17601]\n");
    printf("版权所有 <c> 2009 Microsoft Corporation。保留所有权利。\n");
    printf("\n");
    while(1){
    printf("C:\\Users\\Administrator>");
    scanf("%s",&a);
    if(strcmp(a,quit)==0)
          exit(0);
    word(a);
    }


}

 

转载于:https://www.cnblogs.com/40heyuming/p/5319836.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值