zoukankan      html  css  js  c++  java
  • 实验一报告

    实验一、  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 表示无参数:查看当前所在目录的文件和文件夹 ");
    else if (strcmp(str1,com[1])==0)
    printf("cd 目录名:进入特定的目录 ");

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

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

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

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

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

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

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

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

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

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

    }
    }

    4.运行结果及分析

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

    用户输入其他命令

     

    用户输入错误

     

    用户输入quit则退出程序

     

    四、 实验总结

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

  • 相关阅读:
    安卓强制杀死进程的几种方法收集汇总
    android studio :Timeout waiting to lock daemon addresses registry
    20170825遇到的问题
    百度地图的那些坑
    静态内部类的加载方式
    C#文本转语音并保存wav和MP3文件
    一个ASPX页面的生命周期?
    用SQL替换最后一个指定字符后面的所有字符
    用SQL求1到N的质数和
    谈谈托管代码、IL、CLR、ISAPI?
  • 原文地址:https://www.cnblogs.com/46ly/p/4859270.html
Copyright © 2011-2022 走看看