实验一、命令解释程序的编写
实验一、命令解释程序的编写
专业:商业软件工程 姓名:郭明茵 学号: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. 运行结果及分析
存在的问题:
现在程序算是可以正常运行,但仍存在一些问题:
有时候会弹出这样的对话框,如果选择中止,程序就会结束运行,选择忽略,程序就继续运行。
四、 实验总结
通过这次实验,对命令解释有了更深一层的认识,能知道它是如何运行的,大概了解它的工作原理。在做的过程中比较困难的是不知道命令的功能是什么,都需要一个个的去查找。