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

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

专业: 商业软件工程2班  姓名 :许佳仪 学号 :201406114212

一、        实验目的

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

可执行程序名:text.exe

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

显示程序提示信息;

While(1)

{ 显示提示符;

接收键盘的字符串;

判断是否quit程序退出指令,是则退出;

判断是否内部命令,并给出相应的信息,否则给出错误信息; 

显示退出程序信息;

 

  1. 3.      主要程序段及其解释:
  1 #include<stdio.h> 
  2 #include<stdlib.h> 
  3 #include<string.h> 
  4 #define N 100
  5 main() 
  6 {     
  7     char cmd[N][N]={"dir","cd","md","rd","cls","date","time","ren", "copy",
  8         "javac","java","erase","chkntfs","assoc","at","attrib","call","help","quit"};     
  9     char str[N];       
 10     int i;
 11     printf("Microsoft Windows [版本 6.1.7601]\n");
 12     printf("版权所有 (c)2009 Microsoft Corporation。保留所有权利。\n");
 13     while(1)
 14     {   
 15         printf("C:\\Users\\Administrator>"); 
 16         gets(str);            
 17         for(i=0;i<N;i++)       
 18         {            
 19             if(strcmp(str,cmd[0])==0)       
 20             {    
 21                 printf("'%s'内部命令输入正确!\n",str);       
 22                 printf("该命令的作用是:显示一个目录中的文件和子目录。\n\n");      
 23                 break;       
 24             }    
 25             else if(strcmp(str,cmd[1])==0)       
 26             {    
 27                 printf("'%s'内部命令输入正确!\n",str);       
 28                 printf("该命令的作用是:显示当前目录的名称或将其更改。\n\n");      
 29                 break;       
 30             }    
 31             else if(strcmp(str,cmd[2])==0)       
 32             {    
 33                 printf("'%s'内部命令输入正确!\n",str);       
 34                 printf("该命令的作用是:创建目录。\n\n");   
 35                 break;       
 36             }    
 37             else if(strcmp(str,cmd[3])==0)       
 38             {    
 39                 printf("'%s'内部命令输入正确!\n",str);       
 40                 printf("该命令的作用是:删除目录。\n\n");      
 41                 break;       
 42             }    
 43             else if(strcmp(str,cmd[4])==0)       
 44             {             
 45                 printf("'%s'内部命令输入正确!\n",str);      
 46                 printf("该命令的作用是:清除屏幕。\n\n");      
 47                 break;      
 48             }    
 49             else if(strcmp(str,cmd[5])==0)      
 50             {   
 51                 printf("'%s'内部命令输入正确!\n",str);       
 52                 printf("该命令的作用是:显示或设置日期。\n\n");  
 53                 break;       
 54             }    
 55             else if(strcmp(str,cmd[6])==0) 
 56             {    
 57                 printf("'%s'内部命令输入正确!\n",str);       
 58                 printf("该命令的作用是:显示或设置系统时间。\n\n");        
 59                 break;       
 60             }    
 61             else if(strcmp(str,cmd[7])==0)       
 62             {    
 63                 printf("'%s'内部命令输入正确!\n",str);       
 64                 printf("该命令的作用是:重命名文件。\n\n");         
 65                 break;       
 66             }    
 67             else if(strcmp(str,cmd[8])==0)       
 68             {       
 69                 printf("'%s'内部命令输入正确!\n",str);       
 70                 printf("该命令的作用是:将至少一个文件复制到另一个位置。\n\n");       
 71                 break;      
 72             } 
 73             else if(strcmp(str,cmd[9])==0)       
 74             {    
 75                 printf("'%s'外部命令输入正确!\n",str);       
 76                 printf("该命令的作用是:将某一个java程序进行编译。\n\n");      
 77                 break;
 78             }
 79             else if(strcmp(str,cmd[10])==0)       
 80             {    
 81                 printf("'%s'外部命令输入正确!\n",str);       
 82                 printf("该命令的作用是:运行某一个已编译的java文件。\n\n");      
 83                 break;
 84             }
 85             else if(strcmp(str,cmd[11])==0)       
 86             {       
 87                 printf("'%s'内部命令输入正确!\n",str);       
 88                 printf("该命令的作用是:删除至少一个文件。\n\n");       
 89                 break;      
 90             } 
 91             else if(strcmp(str,cmd[12])==0)       
 92             {       
 93                 printf("'%s'内部命令输入正确!\n",str);       
 94                 printf("该命令的作用是:显示或修改启动时间磁盘检查。\n\n");       
 95                 break;      
 96             } 
 97             else if(strcmp(str,cmd[13])==0)       
 98             {       
 99                 printf("'%s'内部命令输入正确!\n",str);       
100                 printf("该命令的作用是:显示或修改文件扩展名关联。\n\n");       
101                 break;      
102             } 
103             else if(strcmp(str,cmd[14])==0)       
104             {       
105                 printf("'%s'内部命令输入正确!\n",str);       
106                 printf("该命令的作用是:计划在计算机上运行的命令和程序。\n\n");       
107                 break;      
108             } 
109             else if(strcmp(str,cmd[15])==0)       
110             {       
111                 printf("'%s'内部命令输入正确!\n",str);       
112                 printf("该命令的作用是:显示或更改文件属性。\n\n");       
113                 break;      
114             } 
115             else if(strcmp(str,cmd[16])==0)       
116             {       
117                 printf("'%s'内部命令输入正确!\n",str);       
118                 printf("该命令的作用是:从另一个批处理程序调用这一个。\n\n");       
119                 break;      
120             } 
121           
122             else if(strcmp(str,cmd[17])==0)      
123             {   
124                 printf("有关某个命令的详细信息,请键入 HELP 命令名\n");
125                 printf("dir\t内部命令 显示一个目录中的文件和子目录。\n");     
126                 printf("cd\t内部命令 显示当前目录的名称或将其更改。\n");     
127                 printf("md\t内部命令 创建目录。\n");    
128                 printf("rd\t内部命令 删除目录。\n");     
129                 printf("cls\t内部命令 清除屏幕。\n");     
130                 printf("date\t内部命令 显示或设置日期。\n");      
131                 printf("time\t内部命令 显示或设置系统时间。\n");      
132                 printf("ren\t内部命令 重命名文件。\n");      
133                 printf("cope\t内部命令 将至少一个文件复制到另一个位置。\n"); 
134                 printf("javac\t外部命令 将某一个java程序进行编译。\n"); 
135                 printf("java\t外部命令 运行某一个已编译的java文件。\n");
136                 printf("erase\t内部命令 删除至少一个文件。\n");
137                 printf("chkntfs\t内部命令 显示或修改启动时间磁盘检查。 \n");
138                 printf("assoc\t内部命令 显示或修改文件扩展名关联。  \n");
139                 printf("at\t内部命令 计划在计算机上运行的命令和程序。 \n");
140                 printf("attrib\t内部命令 显示或更改文件属性。 \n");
141                 printf("call\t内部命令 从另一个批处理程序调用这一个。 \n");
142                 printf("help\t外部命令 提供Windows命令的帮助信息。\n");    
143                 printf("quit\t外部命令 退出命令解释程序\n\n");  
144                 break;              
145             }
146             else if(strcmp(str,cmd[18])==0)      
147             {   
148                 printf("\n程序结束!\n");
149                 return 0; 
150             } 
151                else if(strcmp(str,cmd[i])!=0)
152                {     
153                      printf("'%s'不是内部或外部命令,也不是可运行的程序或批处理文件。\n\n",str);     
154                     break;
155                }
156         }       
157     }           
158 }

 

  1. 4.      运行结果及分析

 

 

 

 

 

 

二、        实验总结

通过本次实验我进一步加深了对数组的了解,遇到不懂的通过询问同学和上网搜索相关知识,最后还是成功地解决了问题。

 

 

 

转载于:https://www.cnblogs.com/xjy-gg/p/5318120.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值