操作系统实验一实验报告

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

专业14商软一    姓名 曾昱霖  学号 201406114138

一、实验目的

(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.源程序名:MiniOS.cpp

 可执行程序名:MiniOS.exe

2.原理分析及流程图

进入程序操作页面,输入命令后,判断是否存在相应的命令,如果不存在则提示说命令错误。如果存在则输入该命令是内部命令或者外部命令,并解释该命令的作用。

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

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{    
    char cmd[30][30]={"dir","cd","md","rd","cls","date","time","ren", "copy","quit","help"};
    char str[10];
    
    int i;
    printf("Microsoft Windows XP [版本 2.1.2600]\n");
    printf("<C> 版权所有 1985-2001 Microsoft Corp.\n\n");
    while(1){
        
        printf("C:\\Documents and Settings\\hskd>");
        gets(str);
        
        
        for(i=0;i<20;i++){
            
            {
                
                if(strcmp(str,cmd[0])==0)
                {
                    printf("类型:内部命令\n");
                    printf("查看当前的目录···\n");
                    printf("\n");
                    printf("\n");
                    break;
                }
                else if(strcmp(str,cmd[1])==0)
                {
                    printf("类型:内部命令\n");
                    printf("显示当前目录的名称···\n");
                    printf("\n");
                    printf("\n");
                    break;
                }
                else if(strcmp(str,cmd[2])==0)
                {
                    printf("类型:内部命令\n");
                    printf("创建一个新目录···\n");
                    printf("\n");
                    printf("\n");
                    break;
                }
                else if(strcmp(str,cmd[3])==0)
                {
                    printf("类型:内部命令\n");
                    printf("删除该目录....\n");
                    printf("\n");
                    printf("\n");
                    break;
                }
                else if(strcmp(str,cmd[4])==0)
                {
                    
                    printf("类型:内部命令\n");
                    printf("清屏···\n");
                    
                    printf("\n");
                    printf("\n");
                    break;
                }
                else if(strcmp(str,cmd[5])==0)
                {
                    printf("类型:内部命令\n");
                    printf("显示或设置日期···\n");
                    printf("\n");
                    printf("\n");
                    break;
                }
                else if(strcmp(str,cmd[6])==0)
                {
                    printf("类型:内部命令\n");
                    printf("显示或设置系统时间···\n");
                    printf("\n");
                    printf("\n");
                    break;
                }
                else if(strcmp(str,cmd[7])==0)
                {
                    printf("类型:内部命令\n");
                    printf("重命名文件···\n");
                    printf("\n");
                    printf("\n");
                    break;
                }
                else if(strcmp(str,cmd[8])==0)
                {
                    printf("类型:内部命令\n");
                    printf("将至少一个文件复制到另一个位置···\n");
                    printf("\n");
                    printf("\n");
                    break;
                }
                
                
                
                else if(strcmp(str,cmd[9])==0)
                {
                    return 0;
                    
                }
                else if(strcmp(str,cmd[10])==0)
                {
                    
                    printf("类型:外部命令\n");
                    printf("dir\t内部命令 显示一个目录中的文件和子目录。\n");
                    printf("cd\t内部命令 显示当前目录的名称或将其更改。\n");
                    printf("md\t内部命令 创建一个目录。\n");
                    printf("rd\t内部命令 删除目录。.\n");
                    printf("cls\t内部命令 清除屏幕。\n");
                    printf("date\t内部命令 显示或设置日期。\n");
                    printf("time\t内部命令 内部命令显示或设置系统时间。\n");
                    printf("ren\t内部命令 重新命名文件。\n");
                    printf("cope\t内部命令 将至少一个文件复制到另一个位置。\n");
                    printf("help\t外部命令 提供Windows命令的帮助信息。\n");
                    printf("quit\t外部命令 退出命令解释程序\n");
                    printf("\n");
                    printf("\n");
                    break;
                    
                }else if(strcmp(str,cmd[i])!=0){
                    printf("此命令不是内部或外部命令,也不是可运行的程序或批处理文件\n");
                    printf("\n");
                    break;}
                
  }
  }
   }
   
 }

4.运行结果及分析

         运行结果无误。

 

 

 

四、实验总结

命令解释程序相对简单,但是这次实验内容做得还不够完善,没有把所有命令解释出来;也没有用数组来存储,接下来慢慢改进慢慢学习

 

 

 

 

posted @ 2016-03-17 21:03  38.曾昱霖  阅读(669)  评论(0编辑  收藏  举报