操作系统命令接口设计_第1页
操作系统命令接口设计_第2页
操作系统命令接口设计_第3页
操作系统命令接口设计_第4页
操作系统命令接口设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

贵州工程应用技术学院操作系统课程设计题 目: 操作系统命令接口设计学 号: 姓 名: 学 院: 专业班级: 指导教师: 完成时间: 2016年 4月14日 信息工程学院计算机系制操作系统命令接口设计一、实验目的 通过设计一些简单的操作系统的命令接口,使学生掌握操作系统接口的设计方法。在熟悉操作系统的命令接口及程序接口的基础上,利用C语言设计简单的命令接口。命令接口基于DOS的命令行接口二、实验功能利用C语言、DOS中断中21H与屏幕显示相关的中断调用完成设计,如下:l 命令解释器l 列目录命令l 显示时间命令l 显示日期命令l 回显字符串命令l 创建目录命令l 删除目录命令l 更改路径命令l 显示当前工作目录命令l 删除文件命令l 打印文本命令l 文件重新命名l 显示文本命令l 显示版本命令l 显示目录结构命令l 清除当前显示内容命令三、 实验流程图四、 函数功能模块:函数1:显示系统当前的时间函数:void _TIME(void)函数2:显示系统当前的日期函数:void _DATA(void)函数3:在当前目录下创建一个新的目录函数:void _CTREAT(void)函数4:删除当前目录中的一个目录函数:void _DELDIR(void)函数5:更改当前目录的路径函数:void _ROUTE_C(void)函数6:显示当前的目录函数:void _DIR(void)函数7:删除当前目录中的文件函数:void _DELETE(void)函数8:打印目录中的文本函数:void _PRINT(void)函数9:给当前目录中的文件重新命名函数:void _RENAME(void)函数10:以窗口的形式显示文本函数:void _SHOW(void)函数11:显示当前系统的版本号函数:void _SNUM(void)函数12:以二叉树的形式显示系统的目录文件结构函数:void _TREE(void)函数13:清屏函数:void _CLS(void)函数14:输入判断函数 检查输入命令函数:Command_num(char Command_name)参数:char Command_name 输入的命令功能:将其转换成相应的case 常量返回值 :numint Command_num(char Command_name)五、 核心算法1.主要是使用API相关函数,以及调用DOS命令2.使用strcmp()函数判断输入命令格式是否正确3.使用清空缓冲区,以免影响下一次命令的操作六、 源程序#include#include#include#include#include#include Shellapi.h/显示系统时间函数void _TIME(void)SYSTEMTIME st; GetLocalTime(&st);/获取当前系统时间,以本地时间格式 printf(Now: %d:%d:%d,st.wHour ,st.wMinute ,st.wSecond); printf(n); SetLocalTime(&st);/设置当前系统时间/显示系统日期函数void _DATE(void)SYSTEMTIME st;GetLocalTime(&st); /获取当前系统时间,以本地时间格式printf(Now: %d-%d-%d,st.wYear ,st.wMonth ,st.wDay);printf(n);SetLocalTime(&st); /设置当前系统时间/创建目录 creatvoid _CTREAT(void)/在同文件中创建一个文件夹 先创建 C,D文件夹,C中创建文件夹123,格式C123 char dir_name256;gets(dir_name);if(CreateDirectory(dir_name, NULL)printf(OKn);else printf(NOn);/删除目录void _DELDIR(void) char cmd256,dirname256;puts( Input the file you delete: );/格式 23 文件3里的东向全部删除gets(dirname);strcpy(cmd, rmdir /s /q ); strcat(cmd,dirname); / 连接两个字符串system(cmd); /调用DOS命令/更改路径名void _ROUTE_C(void)char oldname256, newname256; printf(Route to rename: ); gets(oldname); /要修改的路径名 printf(New Root name: ); gets(newname); /修改后的路径名 if (rename(oldname, newname) = 0) /修改成功 printf(Renamed %s to %s.n, oldname, newname); else /修改失败 perror(rename); /显示当前目录 dirvoid _DIR(void)system(dir);/删除文件 delete void _DELETE(void)char file80; printf(File to delete: ); gets(file); /输入删除的文件名 输入格式 D123123.txt if (remove(file) = 0) /删除成功 printf(Removed %s.n,file); else /删除失败 perror(remove); /打印文本 printvoid _PRINT(void)FILE *fp; char ch,file_name256; printf(please input like C1123.txtn);scanf(%s,file_name);if(fp=fopen(file_name,rt+)=NULL) printf(nCannot open file strike any key exit!); printf(or this is NULL!); ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); printf(n);fclose(fp); /重命名 renamevoid _RENAME(void)char oldname256, newname256; printf(File to rename: ); gets(oldname); /要重命名的 文件名printf(New name: ); gets(newname); /新文件名 if (rename(oldname, newname) = 0) printf(Renamed %s to %s.n, oldname, newname); else perror(rename); / 以窗口的形式显示文本 showvoid _SHOW(void)char file_name256;scanf(%s,file_name);/ 调用API ShellExecute()函数ShellExecute(NULL, open, file_name, NULL, NULL, SW_SHOWNORMAL);/版本号 snumvoid _SNUM(void)printf(版本号:DIY operat system 1.0n); /*自己命名*/显示目录结构 treevoid _TREE(void)char Command256=tree /f | more; /调用DOS 命令system(Command);/清屏 clsvoid _CLS(void)system(cls); /输入判断函数 检查输入命令/函数:Command_num(char Command_name)/参数:char Command_name 输入的命令/功能:将其转换成相应的case 常量int Command_num(char Command_name)int num; / case 常量if(strcmp(Command_name,exit )=0 | strcmp(Command_name,EXIT)=0)num = 0; /退出else if(strcmp(Command_name,time)=0 | strcmp(Command_name,TIME)=0) num = 1;/时间else if(strcmp(Command_name,date)=0 | strcmp(Command_name ,DATE)=0) num = 2;/日期else if(strcmp(Command_name,creat)=0 | strcmp(Command_name,CREAT)=0) num = 3;/创建文件else if(strcmp(Command_name,deldir)=0| strcmp(Command_name,DELDIR)=0)num = 4; /删除目录else if(strcmp(Command_name,croute)=0 | strcmp(Command_name,CROUTE)=0) num = 5; /修改路径else if(strcmp(Command_name,dir)=0 | strcmp(Command_name,DIR)=0) num = 6;/显示当前目录else if(strcmp(Command_name,delete)=0| strcmp(Command_name,DELETE)=0)num = 7;/删除文件else if(strcmp(Command_name,print)=0 | strcmp(Command_name,PRINT)=0)num = 8;/打印文件else if(strcmp(Command_name,rename)=0| strcmp(Command_name,RENAME)=0) num = 9; /重命名文件else if(strcmp(Command_name,show)=0 | strcmp(Command_name,SHOW)=0) num = 10;else if(strcmp(Command_name,snum)=0 | strcmp(Command_name,SNUM)=0)num = 11;/版本号else if(strcmp(Command_name,tree)=0 | strcmp(Command_name,TREE)=0)num = 12;/显示目录结构else if(strcmp(Command_name,cls)=0 | strcmp(Command_name,CLS)=0)num = 13;/清除当前显示else printf(input error!n); /*输入错误*/return num;/主函数int main(void)char Command_name256;/命令名int Com_num ; /命令转换成常量的中间变量/程序主界面printf( 操作系统接口设计 n);printf(系统时间 : time/TIME n);printf(系统日期 : date/DATE n);printf(创建目录 : creat/CREAT n);printf(删除目录 : deldir/DELDIR n);printf(更改路径名 : croute/CROUTE n);printf(显示当前目录 : dir/DIR n);printf(删除文件 : delete/DELETE n);printf(打印文本 : print/PRINT n);printf(重命名文件 : rename/RENAME n);printf(显示文本 : show/SHOW n);printf(显示版本 : snum/SNUM n);printf(显示目录结构 : tree/TREE n);printf(清除屏幕 : cls/CSL n);printf(退出 : exit/EXIT n);printf(n); printf(请输入你要执行的命令:) ;while( scanf(%s,Command_name)& Com_num != 0 ) fflush(stdin); /清除按键信息的缓存Com_num =Command_num(Command_name);switch(Com_num)case 0: Com_num = 0;printf(EXIT THE SYSTEMn); return Com_num=0;break; case 1: _TIME(); break;/显示时间 case 2: _DATE(); break;/显示日期 case 3: _CTREAT(); break;/创建文件 case 4: _DELDIR(); break;/删除目录 case 5: _ROUTE_C(); break;/修改目录 case 6: _DIR(); break;/显

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论