OS实验一实验报告

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

专业:商业软件工程   姓名:王泽锴  学号:201406114113

一、实验目的

(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>

#define N 30

main()

{

    char str[N];

    int i,j;

    char cmd[N][N] = {"dir","cd","md","rd","cls","date","time","ren","copy","quit","help"};

    printf("Microsoft Windows XP [版本 5.1.2600]\n");

    printf("<C> 版权所有 1985-2001 Microsoft Crop.\n");

    while(1)

    {

           printf("\nC:\\Documents and Settings\Administrator>");

           gets(str);

           for(i=0;i<20;i++)

           {      

                  {  

                         if(strcmp(str,cmd[0])==0) 

                         {   

                                printf("类型:内部命令\n"); 

                                printf("显示一个目录中的文件和子目录。\n");       

                                break;     

                         } 

                         else if(strcmp(str,cmd[1])==0)

                         {   

                                printf("类型:内部命令\n");   

                                printf("显示当前目录的名称或将其更改。\n");       

                                break;    

                         }   

                         else if(strcmp(str,cmd[2])==0)  

                         {  

                                printf("类型:内部命令\n");  

                                printf("创建一个目录。\n");     

                                break;  

                         }    

                         else if(strcmp(str,cmd[3])==0)   

                         { 

                                printf("类型:内部命令\n");   

                                printf("删除目录。\n");   

                                break;     

                         }   

                         else if(strcmp(str,cmd[4])==0)   

                         {         

                                printf("类型:内部命令\n");  

                                printf("清除屏幕。\n");

                                break;    

                         }  

                         else if(strcmp(str,cmd[5])==0)  

                         {   

                                printf("类型:内部命令\n");

                                printf("显示或设置日期。\n");    

                                break;     

                         }  

                         else if(strcmp(str,cmd[6])==0) 

                         {  

                                printf("类型:内部命令\n");    

                                printf("内部命令显示或设置系统时间。\n");      

                                break;   

                         } 

                         else if(strcmp(str,cmd[7])==0) 

                         {  

                                printf("类型:内部命令\n");   

                                printf("重新命名文件。\n");     

                                break;   

                         }   

                         else if(strcmp(str,cmd[8])==0)     

                         {    

                                printf("类型:内部命令\n");  

                                printf("将至少一个文件复制到另一个位置。\n");    

                                break;   

                         }      

                         else if(strcmp(str,cmd[9])==0)  

                         {   

                                exit(0);

                         }  

                         else if(strcmp(str,cmd[10])==0)   

                         {

                                printf("类型:外部命令\n");

                                printf("有关某个命令的详细信息,请键入 HELP 命令名\n");

                                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命令的帮助信息。\n");

                                printf("quit 外部命令 退出命令解释程序\n");    

                                /* printf("CALL\t从一个批处理程序调用这一个。\n");

                                printf("CMD\t打开另一个Windows命令解释窗口。\n");

                                printf("COLOR\t设置默认控制台前景和背景颜色。\n");

                                printf("DEL\t删除至少一个文件。\n");  

                                printf("EXIT\t退出命令解释程序。\n"); 

                                printf("FIND\t在一个或多个文件中搜索一个文本字符串。\n");  

                                printf("MKDIR\t创建一个目录。\n");   

                                printf("MODE\t配置系统设备。\n");  

                                printf("PRINT\t打印一个文本文件。\n");   

                                printf("REPLACE\t替换文件。\n");

                                printf("RENAME\t重新命名文件。\n");*/ 

                                printf("\n有关工具的详细信息,请参阅联机帮助中的命令行参考。\n");

                                break;          

                         }

                         else if(strcmp(str,cmd[i])!=0)

                         {     

                                printf("此命令不是内部或外部命令,也不是可运行的程序或批处理文件\n"); 

                                printf("\n");   

                                break;

                         }

                  }

           }

    }    

}

4.运行结果及分析

实验结果与预期的一致。

四、实验总结

  命令解释程序总体来说还是比较简单的,主要的难度在于读取文件,还有作比较的地方,由于一开始采用读取文档的方法,但问题没得到解决,之后采用了直接存储在数组中。

转载于:https://www.cnblogs.com/wangzekai/p/5289113.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习的练功方式(四)——KNN算法

文章目录致谢致歉4 KNN算法4.1 sklearn转换器和估计器4.1.1 转换器4.1.2 估计器4.2 KNN算法4.2.1 概述4.2.2 电影类型分析4.2.3 算法实现致谢 闵氏距离_百度百科 (baidu.com) 机器学习之KNN&#xff08;k近邻&#xff09;算法详解_平原的博客-CSDN博客_knn 鸢尾花(Iris)数据集_…

数据库杂谈(七)——数据库的存储结构

文章目录7 数据库的存储结构7.1 数据库访问管理-文件组织7.2 数据库访问管理——索引技术7 数据库的存储结构 让我们重新温习第六讲的所学知识。 这个图实际上我们要关注的是蓝色箭头指向的那一层。在这一层之上&#xff0c;我们都是对SQL语句动手&#xff0c;而在这一层之下&…

JSP中直接在输入框中校验

jsp: <label class"control-label col-sm-2" for"codeAdd">险种代码<span style"color: red;">*</span></label> <div classcontrols col-sm-4> <input class"form-control remote-validate" data-r…

【iCore3 双核心板_FPGA】例程十二:Modelsim仿真实验

实验指导书及代码包下载&#xff1a; 链接&#xff1a;http://pan.baidu.com/s/1hs4zNFY 密码&#xff1a;5z62 iCore3 购买链接&#xff1a; https://item.taobao.com/item.htm?id524229438677

机器学习的练功方式(五)——模型选择及调优

文章目录5 模型选择及调优5.1 数据增强5.2 过拟合5.3 交叉验证5.4 超参数搜索——网格搜索5 模型选择及调优 5.1 数据增强 有时候&#xff0c;你和你的老板说你数据不够&#xff0c;它是不会理你的。老板会发问&#xff1a;为什么你是做机器学习的要那么多数据干嘛&#xff0…

关于内存的一些基础知识

1、free&#xff1a;Display amount of free and used memory in the system. free显示的数值来自/proc/meminfo&#xff08;默认单位是KB&#xff09;。各个项的含义分别是&#xff1a; 1&#xff09;Mem这一行&#xff0c;shared&#xff1a;已废弃&#xff1b;buffers&#…

Flask 单例模式 session

一、单例模式 单例模式分为四种&#xff1a;基于文件的单例模式&#xff0c;基于类方法的单例模式&#xff0c;基于__new__的单例模式&#xff0c;基于metaclass的单例模式 1. 基于类方法的单例模式 - 不支持多线程模式 import threadingclass Singleton(object):def __init__(…

数据处理工具(一)——Matplotlib

文章目录致谢1 Matplotlib1.1 什么是Matplotlib1.2 实现一个简单的图1.3 Matplotlib三层结构1.3.1 容器层1.3.2 辅助显示层1.3.3 图像层1.3 使用模块1.3.1 画布的设置1.3.2 添加网格辅助背景1.3.3 附加属性1.3.4 标签1.3.5 刻度1.3.6 一个图上多条线1.3.7 子区域1.4 基础图表1.…

Java解析Rss(三)

2019独角兽企业重金招聘Python工程师标准>>> package com.ninemax.application.rss;import java.net.URL; import java.text.SimpleDateFormat; import java.util.List;import com.sun.syndication.feed.synd.SyndCategory; import com.sun.syndication.feed.synd.S…

Redis服务器启动之后3个警告信息的解决方案

今天是年前最后一篇文章了&#xff0c;不想写太多的东西&#xff0c;就写一些有关Redis相关问题的解决方案。当我们启动了Redis服务器之后&#xff0c;会看到3个警告&#xff0c;如果没看到&#xff0c;那是很好的&#xff0c;但是我看到了。看到了就不能不管&#xff0c;所以就…

ASP .NET MVC 之Entity Framework入门教程及源码

本文主要的目的是 1. 说明Entity Framework Power Tools如何使用。 2. Entity Framework 快速门 实验环境&#xff1a; OS: Windows Server 2012, Windows 7 DE: VS2013 MVC 6.0Entity Framework SQL Server 2012 准备工作 基于现有数据库生成POCO数据类和数据库上下文需要借…

机器学习的练功方式(六)——朴素贝叶斯

文章目录致谢6 朴素贝叶斯6.1 概述6.2 概率论6.2.1 大数定律6.2.2 基本概念6.2.3 极大似然估计6.2.4 多项式分布6.2.4.1 伯努利分布6.2.4.2 二项分布6.2.5 朴素贝叶斯6.3 朴素贝叶斯文本分类6.3.1 一个例子6.3.2 拉普拉斯平滑系数6.3.3 算法实现6.4 贝叶斯分类器6.4.1 多项式贝…

数据库杂谈(八)——查询优化

文章目录8 查询优化8.1 概述8.2 查询数和语法树8.3 代数优化8.4 物理优化8.5 连接操作优化8.5.1 嵌套循环法8.5.2 利用B树索引或哈希索引寻找匹配元组法8.5.3 散列连接法8.6 后话8 查询优化 8.1 概述 我们不管是在数据库软件如MySQL、SQLServer等&#xff0c;还是通过应用程序…

Android-入门学习笔记-使用 CursorLoader 加载数据

3 使用这个代码片段开始练习 也可以参考 Codepath 教程 高级内容补充: 你是否在思考ArrayAdapter’s 的 getView() 方法和CursorAdapter 的 newView() 和 bindView() 方法? 你可以查看 CursorAdapter 类的源码. getView() 方法依然存在, 但是它实际根据是否存在列表项能够被循…

在 Angularjs 中 ui-sref 和 $state.go 如何传递参数

1 ui-sref、$state.go 的区别 ui-sref 一般使用在 <a>...</a>&#xff1b; <a ui-sref"message-list">消息中心</a> $state.go(someState)一般使用在 controller里面&#xff1b; .controller(firstCtrl, function($scope, $state) {$state.…

机器学习的练功方式(七)——决策树

文章目录致谢7 决策树7.1 认识决策树7.2 决策树原理7.3 信息论7.3.1 信息熵7.3.1.1 熵7.3.1.2 信息7.3.1.3 信息熵7.3.2 信息增益7.4 决策树实现7.5 决策图7.6 后话致谢 信息熵是什么&#xff1f; - 知乎 (zhihu.com) 没有免费午餐定理_百度百科 (baidu.com) 7 决策树 决策树(…

机器学习的练功方式(八)——随机森林

文章目录致谢8 随机森林8.1 引入8.2 决策森林8.2.1 集成学习方法8.2.2 什么是随机森林8.2.3 无偏估计8.2.4 决策森林原理过程8.2.5 决策森林算法实现8.3 总结致谢 如何理解无偏估计&#xff1f;无偏估计有什么用&#xff1f;什么是无偏估计&#xff1f;_司南牧|知乎|博客|易懂教…

并行计算(一)——并行计算机系统及结构模型

致谢 SMP、COW、PVP、MPP计算机相关_神.秘.人的博客-CSDN博客_并行向量处理机 1 并行计算机系统及结构模型 1.1 并行计算 在下面的讲解之前&#xff0c;我们先看一下并行计算的量纲。 1.1.1 并行计算和计算机科学 随着计算机和计算机学科的发展&#xff0c;所有的学科都转向…

【机器学习实战】极大似然法

2019独角兽企业重金招聘Python工程师标准>>> http://baike.baidu.com/link?url3Ej1VIItwWd35sXeoRWRhcJkJLCFvzPzNIoTkAfai8ZIS4Ppcch4_maQ25FjNCU1Eplsp4k3oPKLyv6VIsPhsq 一、 最大似然法是一种具有理论性的点估计法&#xff0c;基本思想是&#xff0c;当从模型…

机器学习的练功方式(九)——线性回归

文章目录致谢9 线性回归再相遇9.1 再遇9.1.1 概述9.1.2 矩阵和向量9.1.3 矩阵加减乘除9.1.3.1 矩阵——矩阵加减9.1.3.2 矩阵——标量加减乘9.1.3.3 矩阵——向量相乘9.1.3.4 矩阵——矩阵相乘9.1.3.5 矩阵的逆9.1.3.6 矩阵的转置9.1.4 向量化9.1.5 广义线性模型9.2 正规方程9.…