實驗一、指令解釋程式的編寫
專業:商業軟體工程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。在今後的學習中要加強對程式設計的運用,熟悉更多的方法,以便更好地輔助作業系統的學習。