Реализация команды FIND MS-DOS на языке программирования C++

Страницы работы

Содержание работы

Министерство Образования и науки Российской Федерации

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Факультет Бизнеса

Кафедра Экономической информатики

РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА

По теме: "РЕАЛИЗАЦИЯ КОМАНДЫ FIND MS-DOS НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ C++"

Вариант - 14

Группа: ФБИ-

Студент:

Преподаватель: Сваровский С. Г.

Новосибирск

2007

Содержание:

Задание ………………………………………………………………………            3

Алгоритм и блок-схема ……………………………………………………..         3

Текст программы на языке C++ ……………………………………………   6

Тестирование программы …………………………………………………..   7

Вывод ………………………………………………………………………...      10

ЗАДАНИЕ:

Реализовать на языке программирования команду FIND, которая производит поиск текстовой строки в одном или нескольких файлах.

АЛГОРИТМ и БЛОК-СХЕМА ИСПОЛЬЗУЕМОГО АЛГОРИТМА:

В программном коде используются два ключа для команды MYFIND /V и /C. /V – вывод всех строк не содержащих заданную строку, /C – вывод только общего числа строк, содержащих заданную строку.

БЛОК-СХЕМА:

 

Строка в строке файла

 
 


ТЕКСТ ПРОГРАММЫ НА C++:

//---------------------------------------------------------------------------

#include <vcl.h>

#include <stdio.h>

#pragma hdrstop

//---------------------------------------------------------------------------

FILE *myfile;

char str[255],from[255],key[10];

#pragma argsused

int main(int argc, char* argv[]) //argc - количество параметров, argv[i] - i-ый параметр

{

        strcpy(str,"\0"); // обнуление строк

        strcpy(from,"\0"); //обнуление строк

        strcpy(key,"\0"); //обнуление строк

        strcpy(key,argv[1]); // в переменную key заносим первый параметр

        if (key[1]=='?'){

              printf("Poisk tekstovoj stroki v fajle\n\n");

              printf("myfind [/V] [/C] \"stroka\" [[disk:][pyt]imja_fajla]\n\n");

              printf("/V        Vivod vseh strok, NE soderjashih zadannuu stroku\n");

              printf("/C        Vivod obshego chisla strok, soderjashih zadannuu stroku\n");

              printf("\"stroka\"        iskomaja stroka\n");

              printf("[disk:][pyt]imja_fajla\n");

               return 0;     }  //выход

         if ((key[1]=='V'||key[1]=='v')&&(key[2]=='\0')){

         strcpy(str,argv[2]);

         if(myfile=fopen(argv[3],"r")){ // проверка на существование файла

         myfile=fopen(argv[3],"r"); //открытие на чтение

         while (!feof(myfile)){

                fgets(from,254,myfile); //построчное считывание

                if(!strstr(from,str))printf(from); //если данной строки нету то выводим эту строку

         }

         } else printf("file %s not found",argv[3]);

                  return 0;

         }

         if ((key[1]=='C'||key[1]=='c')&&(key[2]=='\0')){

         strcpy(str,argv[2]);

         if(myfile=fopen(argv[3],"r")){

         myfile=fopen(argv[3],"r");

         int i=0; // вводим новую переменную целочисленную

         while (!feof(myfile)){

                fgets(from,254,myfile);

                if(strstr(from,str))i++; // Если заданная строка содержится то увеличиваем переменную i на еденицу

         }

         printf("%i",i); // выводит количество строк содержащих заданную

         }else printf("file %s not found",argv[3]);

         return 0;

         }else{

         strcpy(str,argv[1]);

         if(myfile=fopen(argv[2],"r")){

         myfile=fopen(argv[2],"r");

         while (!feof(myfile)){

                fgets(from,254,myfile);

                if(strstr(from,str))printf(from);

         }  }else printf("file %s not found",argv[2]);

         }

        return 0;

}

//---------------------------------------------------------------------------

ТЕСТИРОВАНИЕ ПРОГРАММЫ:

Создадим в той же папке тестовый файл GRET.TXT с которым будет работать команда MYFIND.

Содержимое файла GRET.TXT:

Запускаем режим MS-DOS указывая в нем путь где лежит наша программа (файлы MYFIND.CPP и MYFIND.EXE)

1.  Тестирование HELPA по программе (ключ [/?]):

2.  Тестирование команды без ключей:

3.  Тестирование команды если заданного файла не существует:

4.  Тестирование команды – вывод всех строк, не содержащих заданную строку (ключ /V):

5.  Тестирование команды – вывод общего числа строк содержащих заданную строку (ключ /C):

Вывод:

Реализовали команду MS-DOS FIND на языке программирования C++ с рабочим именем MYFIND. В процессе создания программы также учитывалось и возможность использования справки по данной команде и двух ключей (/V и /C). С задачей справился в полной мере. Программа тестировалась под Win98 и WinXP.

Похожие материалы

Информация о работе