Рефераты. Интерпретатор команд MS DOS

Алгоритм программы

Для реализации моей задачи используется следующий алгоритм (рисунок 1.).

Описание алгоритма:

Ввод команды с клавиатуры

Индификация вводимой команды

Операции над параметрами команды

Выполнение команды

Рис. 1. Алгоритм программы.

2.3 Описание разработанной программы

Моя программа интерпретирует команды MS DOS

В программе можно пользоваться четырьмя командами:

Exit- программа завершается.

Copy - копирование файла или файлов.

Ren -переименование файла.

Del -Удаление файла.

В программе я использую встроенные библиотеки С++. Таб. 1

В основном программа работает со строковыми функциями. Эти функции нужны для обработки строк с клавиатуры, для устранения ошибок С++.

strtok -для устранения ошибок в строке

strncat -копирует определённое количество символов в переменную.

strstr - для поиска слова в строке.

strcpy -копирует строку в переменную.

strcat -добавляет строку в переменную.

Strrev- реверсирует строку.

Strlen- определяет количество символов в строке

Strlwr-все символы преобразовывает в строчные.

Strpbrk- ищет определённые символы.

Почти в любой программе не обойдешься без собственных функций, они упрощают программирование, программа становится более понятна и удобна в изучении. В моей программе я использую шесть своих функций FILCOP, GAD, GIP, DELFILE, RENFILE, COPYES.

Filcop - функция для копирования файлов.

Gad - функция для выреза одного пути без имени файла из строки.

Gip - функция для выреза одного имени файла из строки.

Delete- функция удаления файлов.

Renfile- функция переименования файлов.

Copyes- функция обрабатывающая строку и вызова функции Filcop. Она разделяет строку на два параметра копирования- какой файл и куда копировать с учётов шаблонов (*?).

После загрузки программы появится меню с приглашением «>>>>». Теперь можно вводить команды. После ввода команды программа определяет её.

Если:

EXIT - программа завершается.

REN -оставляет в введённой строке только два параметра (какой файл, на какой переименовывать) и вызывает функцию Renfile.

Copy- оставляет в введённой строке только два параметра (какой файл, куда копировать и что), вызывает функцию Copyes.

Del- оставляет в введённой строке только один параметр (какой файл) и вызывает функцию Delete.

В программе в основном я работаю со строковыми переменными и функциями для вырезания путей с файлами, путей, и т.д. Это всё нужно, чтобы использовать шаблоны в некоторых командах (Copy,delete).

Название библиотеки

Описание функции

Stdlib.h

Преобразование данных, генерирование случайных чисел, получение и установка переменных среды SHELL

Time.h

Организация имитационного процесса системного времени

Iostream.h

Потоки ввода \ вывода

Conio.h

Прототип функции задержки

Stdio.h

Обозначение потоковых файлов

Sys\stat.h

Системные вызовы для работы с файлами

Sys\types.h

Системные вызовы для работы с файлами

Fstream.h

Операции ввода \ вывода в файлах

String.h

Обработка строк

Fcntl.h

Флаги

Io.h

Организация ввода \ вывода

Math.h

Использование математических функций

Таблица 1. Библиотеки C++.

3. Заключение

В данной курсовой работе были рассмотрены команды MS DOS, позволяющие копировать, удалять, переименовывать файлы. А также функции и системные вызовы языка С++, позволяющие организовывать копирование, удаление файлов и т.д. Данная работа позволила мне более углубленно изучить работу с строковыми функциями, различные тонкости языка и увидеть недостатки С++. В курсовой работе была создана и описана программа, позволяющая работать с файлами в среде MS DOS. Данная программа может быть использована студентами для изучения работы с файлами в среде MS DOS и частично с UNIX, на лабораторных занятиях по изучению теоретического материала и приобретения практических навыков по дисциплине «Системное Программное Обеспечение».

4. СПИСОК ЛИТЕРАТУРЫ

Герхард Франкен, Сергей Молявко MS DOS для пользователя.- Киев, 1993.

С. Краковяк Основы организации и функционирования ОС ЭВМ.- М.: Мир, 1998.

С. Кейслер Проектирование операционных систем для малых ЭВМ. - М.: Мир, 1996.

Э. Немет, Г. Снайдер Unix. Руководство системного администратора. - Киев.: BHV, 1997.

Дегтярев Е.К. Введение в Unix.- М.: Память, 1992.

Свиридов С.В. Системные вызовы ОС UNIX.-М.:Память, 1992.

Дунаев С. UNIX-сервер. Настройка, конфигурирование, работа в операционной среде, Internet-возможности: в 2-х томах.Том 1.-М.:Диалог -МИФИ, 1999.

Дунаев С. UNIX-сервер. Настройка, конфигурирование, работа в операционной среде, Internet-возможности: в 2-х томах.Том 2.-М.:Диалог -МИФИ, 1999.

Шамер Л., Негус К. UNIX (серия «Без проблем»):Пер. с англ. -М.:Бином, 1998.

Кейлингерт П. Элементы операционных систем. Введение для пользователей. Пер. с англ.-М.:Мир,1995.

Персон Р. Windows 95 в подлиннике. Пер. с англ.-СПБ:BHV-Санкт -Петербург, 1996.

5. Приложение

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <string.h>

#include <ctype.h>

#include <stdlib.h>

#include <dir.h>

//Процедура для копирования файла

//FILCOP----------------------------------------------------------------------

int FILCOP(char *sd,char *sf)

{

FILE *in, *out;

in = fopen(sd, "r"); открывает фаил и копирует в буфер содержимое

out = fopen(sf, "w"); открывает или создаёт фаил

while (!feof(in))

fputc(getc(in), out); заполняет новый фаил

fclose(in); fclose(out); закрывает фаил

return(0); возрашет функции значение 0

}

Функция для создания полного пути

//ANY----------------------------------------------------------------------

char *GAD(char *sm, char *namf)

{ char *zzx,kr[254],*newfil; kr[0]='\0'; устанавливаем переменые

zzx=strpbrk(sm,"\\"); ишет "\"

if (zzx) { если есть

strcpy(kr,sm); копирует в kr путь без имени файла

strrev(kr); реверс строки

newfil = strstr(kr, "\\"); отрезает до "\"

strrev(newfil); реверс строки

strcat(newfil,namf); добовляет имя файла в путь

strlwr(newfil); уменьшает символы

return newfil;

}

else return namf;

}

Функция для вырезки только путя

//ANY55----------------------------------------------------------------------

char *GIP(char *sm)

{ char *zzx,kr[254],*newfil; kr[0]='\0'; устанавливаем переменые

zzx=strpbrk(sm,"\\"); ишет "\"

if (zzx) { если есть

strcpy(kr,sm); копирует в kr путь без имени файла

strrev(kr); реверс строки

newfil = strstr(kr, "\\"); отрезает до "\"

strrev(newfil);реверс строки

strlwr(newfil);уменьшает символы

return newfil;

} else return sm;

}

Удаление фаил (а,ов)

//DELFILE----------------------------------------------------------------------

DELFILE(char *sm)

{ //char *newfil, kr[254]; устанавливаем переменые

struct ffblk ffblk; Структура о файле

int done;

done = findfirst(sm,&ffblk,0); ишет файлы

if (done==-1) cout<<"\nError"; если путь неправельный- ошибка

while (!done) ишет пока не кончатся файлы

{

if (remove(GAD(sm,ffblk.ff_name)) == 0) удаление файла

cout<<"\n Delete 1 files"; вывод на экран текста

else

cout<<"\n File do not delete "; вывод на экран текста

done = findnext(&ffblk); следующий файл

}

return (0);

}

Переименование фаила

//RENAME----------------------------------------------------------------------

RENFILE(char *sm,char *nm)

{

strcpy(kr,sm); копирует в kr путь без имени файла

strrev(kr); реверс строки

newfil = strstr(kr, "\\"); отрезает до "\"

strrev(newfil);реверс строки

strlwr(newfil);уменьшает символы

if (rename(sm, nm) == 0) Фу Переименование фаила

cout<<"File renamed"; вывод на экран текста

Страницы: 1, 2, 3



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.