天天看點

作業系統實驗一.指令解釋程式的編寫

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

專業:商業軟體工程1班   姓名:周詩琦  學号:201406114108

一、        實驗目的

(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.      源程式名:壓縮封包件中源程式名 MiniOS.cpp

                 可執行程式名:MiniOS.exe

        2.      原理分析及流程圖

                  本次實驗主要是用while語句進行選擇,用if、else if等循環語句嵌套做出判斷。

                  利用strcmp進行判斷,當輸入與對應的指令相等時,則可以顯示其指令解釋,還可輸入help進行檢視指令行提示,輸入quit後則退出程式。

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

1 #include<stdio.h>
 2 #include<string.h>
 3 void main()
 4 {
 5     char mingling[15][15]={"dir","cd","md","rd","cls","date","time","ren","cope","help","quit"};
 6     char ch[15];
 7     printf("Microsoft Windows XP [版本 5.1.2600]\n");
 8     printf("<c> 版權所有 1985-2001 Microsoft Corp.");
 9     printf("c:\Users\Administrator");
10     
11     while(1)
12     {
13         printf("請輸入指令>");
14         gets(ch);//讀入字元串
15         if(strcmp(ch,mingling[0])==0)
16         {
17             printf("dir  内部指令 顯示一個目錄中的檔案和子目錄\n");
18         }
19         else if(strcmp(ch,mingling[1])==0)  
20         {
21             printf("cd 内部指令 顯示目前目錄的名稱或将其更改。\n");
22         }
23         else if(strcmp(ch,mingling[2])==0)  
24         {
25             printf("md 内部指令 建立一個目錄。\n");
26         }
27         else if(strcmp(ch,mingling[3])==0)    
28         {
29             printf("rd 内部指令 删除目錄。\n");
30         } 
31         else if(strcmp(ch,mingling[4])==0)  
32         {
33             printf("cls 内部指令 清除螢幕\n");
34         }
35         else if(strcmp(ch,mingling[5])==0)  
36         {
37             printf("date 内部指令 顯示或設定日期\n");
38         }
39         else if(strcmp(ch,mingling[6])==0)  
40         {
41             printf("time 内部指令 内部指令顯示或設定系統時間\n");
42         }
43         else if(strcmp(ch,mingling[7])==0)  
44         {
45             printf("ren 内部指令 重新命名檔案\n");
46         }else if(strcmp(ch,mingling[8])==0)  
47         {
48             printf("cope 内部指令 将至少一個檔案複制到另一個位置\n");
49         }
50         else if(strcmp(ch,mingling[9])==0) 
51         {
52             printf("dir 内部指令 顯示一個目錄中的檔案和子目錄\n");
53             printf("cd 内部指令 顯示目前目錄的名稱或将其更改。\n");
54             printf("md 内部指令 建立一個目錄。\n");
55             printf("rd 内部指令 删除目錄。\n");
56             printf("cls 内部指令 清除螢幕\n");
57             printf("date 内部指令 顯示或設定日期\n");
58             printf("time 内部指令 内部指令顯示或設定系統時間\n");
59             printf("ren 内部指令 重新命名檔案\n");
60             printf("cope 内部指令 将至少一個檔案複制到另一個位置\n");
61             printf("help 外部指令 提供Windows指令的幫助資訊\n");
62             printf("quit 外部指令 退出指令解釋程式\n");
63         }
64         else if(strcmp(ch,mingling[10])==0)
65             return;
66         else
67         {
68             printf("你輸入錯誤的資訊,請重新輸入:\n");  
69         }
70     }
71 }      
作業系統實驗一.指令解釋程式的編寫

四、        實驗總結

             原本是想通過讀取檔案進行對比判斷後列印檔案内容的方法,但是由于本身對C語言的運用不夠熟悉,是以選擇了簡單的直接的鍵盤讀取和直接printf。在今後的學習中要加強對程式設計的運用,熟悉更多的方法,以便更好地輔助作業系統的學習。