天天看點

指令解釋程式的編寫實驗報告

實驗一、指令解釋程式的編寫實驗

專業 商業軟體工程  姓名 丘惠敏 學号 201406114203

一、        實驗目的

(1)掌握指令解釋程式的原理;

(2)掌握簡單的DOS調用方法;

(3)掌握C語言程式設計初步。

二、        實驗内容和要求

 編寫類似于DOS,UNIX的指令行解釋程式

(1)自行定義系統提示符

(2)自定義指令集(8-10個)

(3)使用者輸入HELP以查找指令的幫助

(4)列出指令的功能,區分内部還是外部指令

(5)使用者輸入QUIT退出

(6)内部指令有dir, cd, md, rd, cls, date, time, ren, copy等。

三、        實驗方法、步驟及結果測試

1.      源程式名:壓縮封包件(rar或zip)中源程式名 miniOS6.cpp

可執行程式名:miniOS6.exe

2.      原理分析及流程圖

主要是通過二維數組存儲各個指令的資訊。

通過對ASCII對計算,把指令輸入的大寫全部轉換成小寫,小寫不變。

再通過字元串判斷指令輸入是否正确。

3.      主要程式段及其解釋:

1 #include<stdio.h>
 2 #include <stdlib.h>
 3 #include<string.h>
 4 #include<windows.h>
 5 void helpmeun();
 6 void change(char temp[]);
 7 main()
 8 {
 9     char order[22][5]={"help","quit","dir","cd","md","rd","cls","date","time","ren","cope"};
10     char temp[5];
11     printf("Microsoft Windows XP [版本 5.1.1600]\n");
12     printf("(C) 版本所有 1985-2001 Microsoft Corp.\n\n");
13     while(1)
14     {
15         printf("C:\\Documents and Settings\\Administrator>");
16         scanf("%s",temp);
17         change(temp);
18            if(strcmp(temp,order[0])==0)
19                helpmeun();
20         else if(strcmp(temp,order[1])==0)
21             exit(0);
22         else if(strcmp(temp,order[2])==0)
23             printf("'%s'内部指令輸入正确!\n該指令作用是:顯示一個目錄的檔案和子目錄。\n\n",temp);
24         else if(strcmp(temp,order[3])==0)
25             printf("'%s'内部指令輸入正确!\n該指令作用是:顯示目前目錄的名稱或将其更改。\n\n",temp);
26         else if(strcmp(temp,order[4])==0)
27             printf("'%s'内部指令輸入正确!\n該指令作用是:建立一個新的目錄。\n\n",temp);
28         else if(strcmp(temp,order[5])==0)
29             printf("'%s'内部指令輸入正确!\n該指令作用是:删除目錄。\n\n",temp);
30         else if(strcmp(temp,order[6])==0)
31             system("cls"); 
32     //        printf("'%s'内部指令輸入正确!\n該指令作用是:清除螢幕。\n\n",temp);
33         else if(strcmp(temp,order[7])==0)
34             printf("'%s'内部指令輸入正确!\n該指令作用是:顯示或者設定日期。\n\n",temp);
35         else if(strcmp(temp,order[8])==0)
36             printf("'%s'内部指令輸入正确!\n該指令作用是:内部指令顯示或者設定系統時間。\n\n",temp);
37         else if(strcmp(temp,order[9])==0)
38             printf("'%s'内部指令輸入正确!\n該指令作用是:重命名。\n\n",temp);
39         else if(strcmp(temp,order[10])==0)
40             printf("'%s'内部指令輸入正确!\n該指令作用是:複制檔案。\n\n",temp);
41         else
42             printf("'%s'不是内部或外部指令,也不是可運作的程式\n或批處理檔案。\n\n",temp);
43     }
44     getchar();
45 }
46 void helpmeun()
47 {
48     printf("有關某個指令的詳細資訊。請鍵入 HELP 指令名\n");
49     printf("DIR\t 顯示一個目錄的檔案和子目錄。\n");
50     printf("CD\t 顯示目前目錄的名稱或将其更改。\n");
51     printf("MD\t 建立一個新的目錄。\n");
52     printf("RD\t 删除目錄。\n");
53     printf("CLS\t 清除螢幕。\n");
54     printf("DATE\t 顯示或者設定日期。\n");
55     printf("TIME\t 内部指令顯示或者設定系統時間。\n");
56     printf("REN\t 重命名。\n");
57     printf("COPE\t 複制檔案。\n\n");
58     printf("有關工具的詳細資訊,請參閱聯機幫助中的指令行參考。\n\n");
59 }
60 void change(char temp[])
61 {
62     for(int i=0;i<5;i++)
63     {
64         if(temp[i]>='A'&&temp[i]<='Z')
65             temp[i]=temp[i]+32;
66     }
67 }      

4.      運作結果及分析

指令解釋程式的編寫實驗報告

四、       實驗總結

通過這個實驗我了解了一些系統中指令提示符的作用和使用,也對外部指令和内部有所了解,但是系統中還有很多指令依然是不了解。