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.运行结果及分析

实验结果与预期的一致。

四、实验总结

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

时间: 2024-10-10 00:16:55

OS实验一实验报告的相关文章

[操作系统实验lab4]实验报告

昨天跟老师建议了OS实验改革的事情,感觉助教老师给的指导书挺坑哈,代码注释也不全.我也算沦落到看别人家的源码了... 我参考的源码注释是:https://github.com/benwei/MIT-JOS/ 这个源码质量暂且不评价,但这个注释质量真心不错!!!良心注释啊!!! 本不想去找源码注释啥来看的,毕竟可能一不小心就抄袭了源码的思想?不知道HT和WLM是怎么写的,他们做的都好快啊=.=难道只有我一个人做OS实验的周期是1~2周吗... 哎,不吐槽了,这篇文章留着慢慢更,不着急.感觉在鸣神的

20145321 实验五实验报告

20145321 实验五实验报告 实验五 Java网络编程 1.客户端步骤: 建立网络连接 交换数据:加密使用AES或者DES/AES或者DES加密密钥key并发送 关闭网络连接 2.服务器端步骤: 监听端口 获得连接 交换数据:使用服务器的公钥加密/公钥算法使用RSA或DH/检验发送信息的完整性使用MD5或者SHA3 关闭连接 实验内容 使用Java语言进行网络编程,对明文进行加密 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.掌握密码技术的使用: 实验步骤 查询IP地址:打

Java实验二实验报告:java面向对象程序设计

java实验二实验报告 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问

20145321 实验四实验报告

20145321 实验三实验报告 实验内容 使用android studio实现helloworld以及加入自己的名字. 实验步骤 Android Studio的安装包并进行安装. 设置SDK: 新建项目 编辑文字 PSP 步骤 耗时 百分比 需求分析 20 18% 设计 30 28% 代码实现 20 18% 测试 20 18% 分析总结 20 18%

20145321 实验三实验报告

20145321 实验三实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 实验步骤 下载.设置git并上传代码 1.下载并安装好git,在cmd中输入git指令: 2.在命令行下模式下给git配置用户名和邮箱: 3.添加公钥: 4.测试是否联通,并上传代码: 5.代码上传成功. PSP 步骤 耗时 百分比 需求分析 10分钟 10% 设计 20分钟 20% 代码实现 30分钟 30% 测试 10分钟 10% 分析总结 30分钟 30% 合作伙伴 刘俊谦

20145321 实验一实验报告

20145321 实验一实验报告 实验名称 Java开发环境的熟悉 实验内容 实现四则运算,并进行测试 实验步骤 1.我做了个简单的四则运算,就是只有两个数的加减乘除. 2.建立Scanner实例可以输入两个数,DecimalFormat类使数字格式化保留小数点后两位. 3.代码: import java.util.Scanner; import java.text.DecimalFormat; public class siZe { public static void main(String

20145321 实验二实验报告

20145321 实验二实验报告 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 PSP统计 步骤 耗时 百分比 需求分析 30min 15% 设计 60min 30% 代码实现 60min 30% 测试 30min 15% 分析总结 20min 10% 实验步骤 1.使用TDD的方式设计关实现复数类Complex (1)伪代码: 复数类Complex 复数=实部+虚部i 复数相加=

20135333苏正生实验二实验报告

实验报告 课程: Java程序设计 班级: 1353 姓名: 苏正生 学号: 2015333 成绩: 指导教师: 娄家鹏 实验日期: 2015.5.6 实验密级: 预习程度: 实验时间: 3:20~5:00 仪器组次: 必修/选修: 必修 实验序号: 实验二 实验名称: Java面向对象程序设计 实验目的: 1.掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式   实验仪器:   名称 型号 数

2017-2018-1 20162306 实验四 实验报告

2017-2018-1 20162306 实验四 实验报告 实验三:查找与排序-1 实验要求: 完成教材P302 Searching.Java ,P305 Sorting.java中方法的测试 不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位 提交运行结果图(可多张) 实验过程: 1.对之前的测试代码进行修改,增加测试用例个数 2.修改排序方法,实现逆序 代码如下: public static void nSort(Comparable

2017-2018-1 20162306 实验五实验报告

2017-2018-1 20162306 实验五实验报告 实验五-1-编译.运行.测试 实验要求: 1 git clone 小组项目 2 编译项目,提交编译成功截图(全屏,要有学号信息) 3 提交运行过程中的截图(全屏,要有学号信息) 实验过程: 1.从码云上将项目clone下来,git clone + xxx 在Android Studio中打开.编译.运行 实验截图 实验五-2-代码修改 实验要求: 在小组项目中,找一个合适的地方添加一个按钮,点击显示自己的学号 提交运行截图(全屏,要有学号