实验一、命令解释程序的编写实验
专业 商业软件工程 姓名 丘惠敏 学号 201406114203
一、 实验目的
(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. 源程序名:压缩包文件(rar或zip)中源程序名 miniOS6.cpp
可执行程序名:miniOS6.exe
2. 原理分析及流程图
主要是通过二维数组存储各个命令的信息。
通过对ASCII对计算,把命令输入的大写全部转换成小写,小写不变。
再通过字符串判断命令输入是否正确。
3. 主要程序段及其解释:
1 #include<stdio.h> 2 #include <stdlib.h> 3 #include<string.h> 4 #include<windows.h> 5 void helpmeun(); 6 void change(char temp[]); 7 main() 8 { 9 char order[22][5]={"help","quit","dir","cd","md","rd","cls","date","time","ren","cope"}; 10 char temp[5]; 11 printf("Microsoft Windows XP [版本 5.1.1600]\n"); 12 printf("(C) 版本所有 1985-2001 Microsoft Corp.\n\n"); 13 while(1) 14 { 15 printf("C:\\Documents and Settings\\Administrator>"); 16 scanf("%s",temp); 17 change(temp); 18 if(strcmp(temp,order[0])==0) 19 helpmeun(); 20 else if(strcmp(temp,order[1])==0) 21 exit(0); 22 else if(strcmp(temp,order[2])==0) 23 printf("'%s'内部命令输入正确!\n该命令作用是:显示一个目录的文件和子目录。\n\n",temp); 24 else if(strcmp(temp,order[3])==0) 25 printf("'%s'内部命令输入正确!\n该命令作用是:显示当前目录的名称或将其更改。\n\n",temp); 26 else if(strcmp(temp,order[4])==0) 27 printf("'%s'内部命令输入正确!\n该命令作用是:创建一个新的目录。\n\n",temp); 28 else if(strcmp(temp,order[5])==0) 29 printf("'%s'内部命令输入正确!\n该命令作用是:删除目录。\n\n",temp); 30 else if(strcmp(temp,order[6])==0) 31 system("cls"); 32 // printf("'%s'内部命令输入正确!\n该命令作用是:清除屏幕。\n\n",temp); 33 else if(strcmp(temp,order[7])==0) 34 printf("'%s'内部命令输入正确!\n该命令作用是:显示或者设置日期。\n\n",temp); 35 else if(strcmp(temp,order[8])==0) 36 printf("'%s'内部命令输入正确!\n该命令作用是:内部命令显示或者设置系统时间。\n\n",temp); 37 else if(strcmp(temp,order[9])==0) 38 printf("'%s'内部命令输入正确!\n该命令作用是:重命名。\n\n",temp); 39 else if(strcmp(temp,order[10])==0) 40 printf("'%s'内部命令输入正确!\n该命令作用是:复制文件。\n\n",temp); 41 else 42 printf("'%s'不是内部或外部命令,也不是可运行的程序\n或批处理文件。\n\n",temp); 43 } 44 getchar(); 45 } 46 void helpmeun() 47 { 48 printf("有关某个命令的详细信息。请键入 HELP 命令名\n"); 49 printf("DIR\t 显示一个目录的文件和子目录。\n"); 50 printf("CD\t 显示当前目录的名称或将其更改。\n"); 51 printf("MD\t 创建一个新的目录。\n"); 52 printf("RD\t 删除目录。\n"); 53 printf("CLS\t 清除屏幕。\n"); 54 printf("DATE\t 显示或者设置日期。\n"); 55 printf("TIME\t 内部命令显示或者设置系统时间。\n"); 56 printf("REN\t 重命名。\n"); 57 printf("COPE\t 复制文件。\n\n"); 58 printf("有关工具的详细信息,请参阅联机帮助中的命令行参考。\n\n"); 59 } 60 void change(char temp[]) 61 { 62 for(int i=0;i<5;i++) 63 { 64 if(temp[i]>='A'&&temp[i]<='Z') 65 temp[i]=temp[i]+32; 66 } 67 }
4. 运行结果及分析
四、 实验总结
通过这个实验我了解了一些系统中命令提示符的作用和使用,也对外部命令和内部有所了解,但是系统中还有很多命令依然是不了解。