实验一报告

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

物联网工程 刘烨 201306104146

一、 实验目的

1)认识DOS

2)掌握命令解释程序的原理;

3)掌握简单的DOS调用方法;

4)掌握C语言编程初步。

二、 实验内容和要求

 内容:根据要求,完成设计、编码、测试工作。

 要求: 编写类似于DOSUNIX的命令行解释程序

1)自行定义系统提示符

2)自定义命令集(8-10个)

3)用户输入HELP以查找命令的帮助

4)列出命令的功能,区分内部还是外部命令

5)用户输入QUIT退出

6)内部命令有dir, cd, md,rd, cls, date, time, ren, copy等。

三、 实验方法、步骤及结果测试

1.源程序名:caozuo.c

   可执行程序名:caozuo.exe

2.原理分析及流程图

主要算法:运用while(1)循环语句,在while(1)里面主要用if 与 else if的嵌套实现。在程序中,将数组把命令集存储起来,后用strcmp( )来将用户输入的字符串与数组的进行比较,若正确,则出现相关命令功能。若不正确,则会提醒用户输入错误,要求重新输入。

 

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

#include<stdio.h>
#include<string.h>
main()
{
char com[30]={"dir","cd","md","rd","cls","date","time",
"ren","copy","help","arp","start","mem","winver","format","taskmgr","netsh","status","system","quit"};
char str1[30];

while (1)
{
printf("input the command:");
gets(str1);
if (strcmp(str1,com[0])==0)

printf("dir 表示无参数:查看当前所在目录的文件和文件夹\n");
else if (strcmp(str1,com[1])==0)
printf("cd 目录名:进入特定的目录\n");

else if (strcmp(str1,com[2])==0)
printf("md 目录名:建立特定的文件夹;dos下面习惯叫目录,win 下习惯叫文件夹\n");

else if (strcmp(str1,com[3])==0)
printf("rd 目录名:删除特定的文件夹;\n");

else if (strcmp(str1,com[4])==0)
printf("cls 目录名:表示清屏功能\n");

else if (strcmp(str1,com[5])==0)
printf("data 目录名:设置日期命令,功能是设置日期\n");

else if (strcmp(str1,com[6])==0)
printf("time 目录名:系统时钟设置命令,功能是设置或显示系统时间\n");

else if (strcmp(str1,com[7])==0)
printf("ren表示文件改个名字,ren命令的格式是:ren 源文件名 目的文件名\n");

else if (strcmp(str1,com[8])==0)
printf("copy 表示复制命令,它的功能是复制信息\n");

else if (strcmp(str1,com[9])==0)
{
printf("无参数:查看当前所在目录的 文件和文件夹\n");
printf("cd 目录名:进入特定的目录\n");
printf("md 目录名:建立特定的文件夹;dos下面习惯叫目录,win 下习惯叫文件夹\n");
printf("rd 目录名:删除特定的文件夹;\n");
printf("cls 目录名:表示清屏功能\n");
printf("data 目录名:设置日期命令,功能是设置日期\n");
printf("time 目录名:系统时钟设置命令,功能是设置或显示系统时间\n");
printf("ren表示文件改个名字,ren命令的格式是:ren 源文件名 目的文件名\n");
printf("copy 表示复制命令,它的功能是复制信息\n");
printf("arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息\n");
printf("start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令 \n");
printf("mem 查看cpu使用情况 ver 在DOS窗口下显示版本信息 \n");
printf("winver 弹出一个窗口显示版本信息(内存大小、系统版本、补丁版本、计算机名)\n");
printf("format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS\n");
printf(" taskmgr 调出任务管理器 \n");
printf(" netsh 查看或更改本地网络配置情况 \n");
printf(" status 显示当前FTP的状态\n");
printf("system 显示远端主机系统类型 \n");
}
else if (strcmp(str1,com[10])==0)
printf("arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息\n");
else if (strcmp(str1,com[11])==0)
printf("start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令 \n");
else if (strcmp(str1,com[12])==0)
printf("mem 查看cpu使用情况 ver 在DOS窗口下显示版本信息 \n");
else if (strcmp(str1,com[13])==0)
printf("winver 弹出一个窗口显示版本信息(内存大小、系统版本、补丁版本、计算机名)\n");
else if (strcmp(str1,com[14])==0)
printf("format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS\n");
else if (strcmp(str1,com[15])==0)
printf(" taskmgr 调出任务管理器 \n");
else if (strcmp(str1,com[16])==0)
printf(" netsh 查看或更改本地网络配置情况 \n");
else if (strcmp(str1,com[17])==0)
printf(" status 显示当前FTP的状态\n");
else if (strcmp(str1,com[18])==0)
printf("system 显示远端主机系统类型 \n");

else if (strcmp(str1,com[19])==0)
return ;

else
printf("你输入的信息错误!请重新输入:\n");

}
}

4.运行结果及分析

用户输入HELP以查找命令的帮助

用户输入其他命令

 

用户输入错误

 

 

用户输入quit则退出程序

 

四、 实验总结

       在开始实验前,曾想过用while循环里嵌套else if语句来实现,但却忘记了如何比较字符串。查找了书籍后清楚了strcmp()的用法。在编写完成后,利用VC++编译,仍有些错误。虽然只是简单的C语言编写,但若不够仔细,依然完成不了工作。

 

posted @ 2015-10-07 20:02  ly婠婠  阅读(147)  评论(0编辑  收藏  举报