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

下载本文档

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

文档简介

1、贵州工程应用技术学院操作系统课程设计题目:操作系统命令接口设计学号:姓名:学院:专业班级:指导教师:完成时间:2016年4月14日信息工程学院计算机系制操作系统命令接口设计、实验目的通过设计一些简单的操作系统的命令接口,使学生掌握操作系统接口的设计方法。在熟悉操作系统的命令接口及程序接口的基础上,利用C语言设计简单的命令接口。命令接口基于DOS勺命令行接口、实验功能利用C语言、DOS中断中21H与屏幕显示相关的中断调用完成设计,如下:命令解释器列目录命令显示时间命令显示日期命令回显字符串命令创建目录命令删除目录命令更改路径命令显示当前工作目录命令删除文件命令打印文本命令文件重新命名显示文本命令

2、显示版本命令显示目录结构命令清除当前显示内容命令三、实验流程图显HE最玷悯泰丁显墓岑*匚,显“而清1-1执彳相关探定Q程片造四、函数功能模块:函数1:显示系统当前的时间函数:void_TIME(void)函数2:显示系统当前的日期函数:void_DATA(void)函数3:在当前目录下创建一个新的目录函数:void_CTREAT(void)函数4:删除当前目录中的一个目录函数:void_DELDIR(void)函数5:更改当前目录的路径函数:void_ROUTE_(void)函数6:显示当前的目录函数:void_DIR(void)函数7:删除当前目录中的文件函数:void_DELETE(voi

3、d)函数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_um(charCommand_name)参数:charCommand_name口输入的命令功能:将其转换成相应的case常量返回值:numin

4、tComnand_num(charCommand_name)五、核心算法1 .主要是使用API相关函数,以及调用DO阶令2 .使用strcmp()函数判断输入命令格式是否正确3 .使用清空缓冲区,以免影响下一次命令的操作六、源程序#include<stdio.h># include<windows.h>#include<conio.h>#include<stdlib.h># include<string.h># include"Shellapi.h"/显示系统时间函数void_TIME(void)?SYSTEM?I

5、MEst;GetLocalTime(&st);/获取当前系统时间,以本地时间格式?printf("Now:%d:%d:%d",st.wHour,st.wMinute,st.wSecond);printf("n");SetLocalTime(&st);/设置当前系统时间)显示系统日期函数void_DATE(void)(SYSTEMTIMEst;?GetLocalTime(&st);/获取当前系统时间,以本地时间格式?printf("Now:%d-%d-%d",st.wYear,st.wMonth,st.wDay)

6、;printf("n");SetL.ocalTime(&st);/设置当前系统时间)创建目录creatvoid_CTREAT(void)/在同文件中创建一个文件夹先创建C,D文件夹,C中创建文件夹123,格式C12?chardir_name256;gets(dir_name);?if(CreateDirectory(dir_name,NULL)printf("OK'n");?elseprintf("NOn");)/删除目录void_DELDIR(void)?charcmd256,dirname256;删除?puts(&

7、quot;Inputthefileyoudelete:");/格式23文件3里的东向全部gets(dirname);strcpy(cmd,"rmdir/s/q");strcat(cmd,dirname);/连接两个字符串system(cmd);调用DOS命令/更改路径名void_ROUTE_C(void)?charoldname256,newname256;printf("Routetorename:");gets(oldname);/要修改的路径名printf("NewRootname:");gets(newname);/

8、修改后的路径名if(rename(o1dname,newname)=0)/修改成功printf("Renamed%sto%s.n",oldname,newname);else/修改失败perror("rename");/显示当前目录dirvoid_DIR(void)system("dir");/删除文件deletevoid_DELETE(void)charfile80;1123.txtprintf("Filetode1ete:");gets(file);/输入删除的文件名输入格式if(remove(file)=0)

9、/删除成功printf("Removed%s.n",file);else/删除失败perror("remove");/打印文本printvoid_PRINT(void)FILE*fp;charch,file_name256;printf("pleaseinputlikeC1123.txtn");scanf("%s",fi1e_name);?if(fp=fopen(file_name,"rt+")=NULL)?printfnCannotopenfilestrikeanykeyexit!"

10、);?printf("orthisisNULL!");?ch=fgetc(fp);?whi1e(ch!=EOF)?putchar(ch);?ch=fgetc(fp);?printf("n");?fc1ose(fp);/重命名renamevoid_RENAME(void)charoldname256,newname256;?printf("Filetorename:");gets(oldname);/要重命名的文件名printf("Newname:");gets(newname);/新文件名?if(rename(ol

11、dname,newname)=0)printf("Renamed%sto%s.n",oldname,newname);?elseperror("rename");show/以窗口的形式显示文本void_SHOW(void)charfile_name256;scanf("%s",file_name);/调用APIShellExecute()函数?Shel1Execute(NULL,"open",file_name,NULL,NULL,SWCSHOWNORMAL);/版本号snumvoid_SNUM(void)prin

12、tf("版本号:DIYoperatsystem1.0n");/*自己命名*/显示目录结构treevoid_TREE(void)?charCommand256="tree/f|more"调用DOS命令?system(Command);/清屏clsvoid_CLS(void)system("cIs");/输入判断函数检查输入命令函数:Command_num(charCommand_name口)参数:charCommand_name口输入的命令/功能:将其转换成相应的case常量intCommand_num(charCommand_name

13、)?intnum;/case常量if(stremp(Command_name,"exit")=0I|strcmp(Commandname,"EXIT")=0)?num=0;/退出elseif(strcmp(Command_name,"time")=0|strcmp(Command_name,"TIME")=0)?num=1;时间elseif(strcmp(Command_name,"date")=0|strcmp(Command_name,"DATE")=0)num=2;/日

14、期elseif(strcmp(Command_name,"creat")=0|strcmp(Command_name,"CREAT)=0)?num=3;/创建文件elseif(strcmp(C0mmand_name,"deldir")=0|strcmp(Command_name,"DELDIR")=0)num=4;/删除目录elseif(strcmp(Command_name,"croute")=0|strcmp(Command_name,"CROUTE")=0)?num=5;/修改路

15、径elseif(strcmp(Command_name,"dir")=0|strcmp(Command_name,"DIR")=0)?num=6;显示当前目录elseif(strcmp(Command_name,"delete")=0|DELETE")=0)?num=7;/删除文件elseif(strcmp(Command_name,"print")=0|strcmp(Command_name,"strcmp(Command_name,"PRINT")=0)?num=8;/打

16、印文件=0|strcmpelseif(strcmp(Command_name,"rename")(Command_name,"RENAME")=0)?num=9;重命名文件elseif(strcmp(Command_name,"show")=0|")=0)num=10;elseif(strcmp(Command_name,"snum""SNUM")=0)?num=11;版本号strcmp(Command_name,"SHOW=0|strcmp(Command_name,=0|

17、strcmp(Command_naelseif(strcmp(Command_name,"tree"me,"TREE")=0)num=12;显示目录结构?elseif(strcmp(Command_name,"c1s")=0|e,"CLSi)=0)num=13;/清除当前显示elseprintf("inputerrn");/*输入错误*/?returnnum;/主函数intmain(void)?charCommand_name256;/命令名intCom_num;/命令转换成常量的中间变量?/程序主界面p

18、rintf("操作系统接口设计printf("系统时间:n");printf("系统日期:n");?printf("创建目录:n");?printf("删除目录:DIRn");printf("更改路径名:TEn");?printf("显示当前目录:strcmp(Command_namn");time/TIMEdate/DATEcreat/CREATdeldir/DELcroute/CROUdir/DIRn");printf("删除文件:En&qu

19、ot;);?printf("打印文本:n");printf("重命名文件:n");printf("显示文本:n");?printf("显示版本:n");printf("显示目录结构:n");printf("清除屏幕:n");?printf("退出:n");?printf("n");printf("请输入你要执行的命令:");?while(scanf("%s",Command_name)&&

20、amp;Com_num!=0?(?fflush(stdin);/清除按键信息的缓存delete/DELETprint/PRINTrename/RENAMEshow/SHOWsnum/SNUMtree/TREEcls/CSLexit/EXIT?Com_num=Command_num(Command_name);?switch(Com_num)?case0:Com_num=0;printf("EXITTHESYSTEMn");returnCom_num=0;break;?case1:_TIME();break;/显示时间?case2:_DATE();break;显示日期?cas

21、e3:_CTREAT();break;/创建文件?case4:_DELDIR();break;删除目录?case5:_ROUTE_C();break;修改目录?case6:_DIR();break;/显示当前目录?case7:_DELETE()break;删除文件?case8:_PRINT();break;打印文件?case9:_RENAME();break;/重命名文件?case10:_SHOW();break;/显示文件?case11:_SNUM();break;/显示版本号?case12:_TREE()break;/显示目录结构?case13:CLS();break;/清除当前显示?re

22、turn0;七、程序结果图"CpX'ObwgM.eK口演讦19iSe5iMitiinnzlinfdat-oDAIIEtIt?at-C崩EATdhbimmIitCu-C币皿1"而也±1*皿HduldVODFUTTKiprlntPRTHTfenanEZ7JbNftE”»hcMdH®Ujp-nunSNUMt.«日-TREEclifZCSLmxiBXFT录构件结国wh,:p'I,,."却时目身寻八支名统统H静黑注不外累I,络WHTa.Tkul-rLLtL4Tm汗7日¥KE1.pJl-fwPI:NF再<

23、DIH>Wild&理4星cmic"(HiMIhiBim1!Arif«<DLls>D«Ihuw<»«»><DIl»lucar»>UlLBrjF?<DLR>chs4011”Im<DLH>界胞寄物例租!&计<UIli>I-i<DEH?客性in.vji>”rj"量49«9411jp04.ML<4*-41314n211WMll40妙建H-zgBx字也»1、,£JilWaXwl

24、JL工11*二E&G与才才?5-4£A与与4I3-<141i-11i111Mlfdld吃*4I4-T434,llq/q<-&&&Hfi.Gfh必f.Kf.rkl.fh:;s;案RIttlnlttlMIttlMIEHlBlKBRhhtlwciKNIIamHdiU14Ma14ftali14H9014AZ3=3才wsnn*tt±44f2Z;H10二,i-aVIMMzeiifrcMtiaZ01fc«533Sha«±frei4-ife2t工也“04八£与,也7%51.心尸*!D*dAJL一g14中产ngMittIWFIle-youda-lete=i-t:Ml*t-*a*f1.ncli*A“etB乂*M,里程BDoirnlo«.dl>9Xh"MuClaliii1_Kmm61i好MRWE=han户-,Nr*Fi*4t-rt-<PIH><DIR>CPIF><PIR><DIH>“IIO<BI.H><&lns<31、口勺口量否是网,轴”三常:m二韶;r自t畲01产粉,工二£.仁丁X-心J-)411.d.v01n<'hi-4山r

温馨提示

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

评论

0/150

提交评论