实验一、命令解释程序的编写实验
专业: 商业软件工程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. 源程序名:压缩包文件中源程序名 text.c
可执行程序名:text.exe
- 2. 原理分析及流程图
显示程序提示信息;
While(1)
{ 显示提示符;
接收键盘的字符串;
判断是否quit程序退出指令,是则退出;
判断是否内部命令,并给出相应的信息,否则给出错误信息;
}
显示退出程序信息;
- 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 }
- 4. 运行结果及分析
二、 实验总结
通过本次实验我进一步加深了对数组的了解,遇到不懂的通过询问同学和上网搜索相关知识,最后还是成功地解决了问题。