天天看點

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

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

專業:商業軟體工程   姓名:郭明茵  學号: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.      運作結果及分析

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

存在的問題:

現在程式算是可以正常運作,但仍存在一些問題:

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

有時候會彈出這樣的對話框,如果選擇中止,程式就會結束運作,選擇忽略,程式就繼續運作。

四、        實驗總結

通過這次實驗,對指令解釋有了更深一層的認識,能知道它是如何運作的,大概了解它的工作原理。在做的過程中比較困難的是不知道指令的功能是什麼,都需要一個個的去查找。