實驗一、指令解釋程式的編寫
專業:商業軟體工程 姓名:郭明茵 學号:201406114204
一、 實驗目的
(1)掌握指令解釋程式的原理;
(2)掌握簡單的DOS調用方法;
(3)掌握C語言程式設計初步。
二、 實驗内容和要求
1.實驗内容:根據教師指定的實驗課題,完成設計、編碼、測試工作。
2.實驗要求:編寫類似于DOS,UNIX的指令行解釋程式
(1)自行定義系統提示符
(2)自定義指令集(8-10個)
(3)使用者輸入HELP以查找指令的幫助
(4)列出指令的功能,區分内部還是外部指令
(5)使用者輸入QUIT退出
(6)内部指令有dir, cd, md, rd, cls, date, time, ren, copy等。
三、 實驗方法、步驟及結果測試
1. 主要程式段及其解釋:
#include<stdio.h>
#include<process.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
void explain();//指令解釋表
void main()
{
int k,num;
char a[10],b[50],c[50],d[50],e[50],f[50],g[50],h[50],i[50],j[50],l[50];
char order[11][20]={"dir","cd","md","rd","cls","date","time","ren","copy","help"};//存儲指令符
printf("Microsoft Windows XP [版本 5.1.2600]cls\n");
printf("<C> 版權所有 1985-2001 Microsoft Corp.\n\n");
while(1){
printf("C:\\Documents and Settings\\administrator>");
scanf("%s",&a);
for(k=0;k<10;k++)//查找指令
{
if(!strcmp(a,order[k]))//比較字元串,查找相對應的指令
{
num=k;
break;
}
}
strcpy(b,"");
strcpy(c,"");
strcpy(d,"");
strcpy(e,"");
strcpy(f,"");
strcpy(g,"");
strcpy(h,"");
strcpy(i,"");
strcpy(j,"");
strcpy(l,"");
switch(num){ //相應指令的功能
case 0:
strcpy(b,"dir");
break;
case 1:
strcpy(c,"cd");
printf("cd内部指令正确\n");
case 2:
strcpy(d,"md");
printf("md内部指令正确\n");
case 3:
strcpy(e,"rd");
printf("rd内部指令正确\n");
case 4:
strcpy(f,"cls");
system("cls"); //清屏
case 5:
strcpy(g,"date");
printf("date内部指令正确\n");
case 6:
strcpy(h,"time"); //與系統時間一緻
time_t rawtime;
struct tm * timeinfo;
time (&rawtime);
timeinfo =localtime (&rawtime);
printf ("目前時間: %s",asctime (timeinfo));
case 7:
strcpy(i,"ren");
printf("ren内部指令正确\n");
case 8:
strcpy(j,"copy");
printf("copy内部指令正确\n");
case 9:
strcpy(l,"help");
explain();
default:
printf("錯誤輸入,重新輸入\n");
if(num>=0&&num<=9)
printf("%s\n",b);
system(b);
}
void explain() //解釋字元表
printf("dir 顯示一個目錄中的檔案和子目錄。\n");
printf("cd 顯示目前目錄的名稱或将其更改。\n");
printf("md 建立一個目錄。\n");
printf("rd 删除目錄。\n");
printf("cls 清除螢幕。\n");
printf("date 顯示或設定日期。\n");
printf("time 顯示或設定系統時間。\n");
printf("ren 重新命檔案。\n");
printf("copy 将至少一個檔案複制到另一個位置。\n");
printf("help 提供Windows指令提示符。");
2. 運作結果及分析

存在的問題:
現在程式算是可以正常運作,但仍存在一些問題:
有時候會彈出這樣的對話框,如果選擇中止,程式就會結束運作,選擇忽略,程式就繼續運作。
四、 實驗總結
通過這次實驗,對指令解釋有了更深一層的認識,能知道它是如何運作的,大概了解它的工作原理。在做的過程中比較困難的是不知道指令的功能是什麼,都需要一個個的去查找。