实验一、命令解释程序的编写

 

商软2班   刘皓  201406114229

一、 实验目的

(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 #include <fstream>
 2 #include <iostream>
 3 #include <stdio.h>
 4 
 5 struct cmd
 6 {
 7     char name[40];
 8     char effect[100];
 9 };
10 
11 int main(void)
12 {
13     std::ifstream OpenFile("test.txt");
14 
15     if (!OpenFile)
16     {
17         std::cout << "Can't not open this file.\n";
18         exit(0);
19     }
20 
21     const int N = 100;
22 
23     cmd c[N];
24     int n = 0;
25     while (!OpenFile.eof())
26     {
27         OpenFile >> c[n].name;
28         OpenFile >> c[n].effect;
29 
30         n++;
31     }
32     OpenFile.close();
33 
34     char ch[20];
35     int x;
36     std::cout << "Microsoft Windows [版本 6.1.7601]\n版权所有 (c) 2009 Microsoft Corporation。保留所有权利。";
37     std::cout << "\n\nC:\\Users\\Administrator>";
38     gets(ch);
39     while (1)
40     {
41         x = 0;
42         for (int i = 0; i < 20; i++)
43         {
44             if (ch[i] >= 'a' && ch[i] <= 'z')
45                 ch[i] -= 32;
46         }
47         for (i = 0; i < n; i++)
48             if (strcmp(ch, c[i].name) == 0)
49             {
50                 std::cout << c[i].name << c[i].effect << std::endl;
51                 x = 1;
52                 break;
53             }
54 
55         if (strcmp(ch, "HELP") == 0)
56         {
57             for (int i = 0; i < n; i++)
58                 std::cout << c[i].name << "        " << c[i].effect << std::endl;
59             x = 1;
60         }
61 
62         if (strcmp(ch, "EXIT") == 0)
63         {
64             std::cout << "程序即将退出!\n\n";
65             exit(0);
66         }
67 
68         if (x == 0)
69             std::cout << "'" <<ch << "'" <<"不是内部或外部命令,也不是可运行的程序或批处理文件。\n";
70 
71         std::cout << "\nC:\\Users\\Administrator>";
72         gets(ch);
73     } 
74 
75     return 0;
76 }

posted on 2016-03-25 16:59  29刘皓  阅读(226)  评论(0编辑  收藏  举报