Вход

Разработка программы

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 137316
Дата создания 2008
Страниц 24
Мы сможем обработать ваш заказ (!) 24 апреля в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
1 580руб.
КУПИТЬ

Содержание

Оглавление
Задание
Структурное описание разработки
Функциональное описание
Описание работы программы на контрольном примере и выводы
Список литературы
Текст программы

Фрагмент работы для ознакомления

is_open()) return -1L;
clear();
seekg(0L, ios::beg);
read((char*)&sz, sizeof(int)); // размер массива указателей
read((char*)&n, sizeof(int)); // текущее количество указателей
if(num > n) return -1L;
read((char*)&p0, sizeof(long)); // смещение (адрес) МУ
seekg(p0 + num * sizeof(long), ios::beg);
read((char*)&p1, sizeof(long)); // смещение строки
seekg(p1, ios::beg);
read((char*)&oldSz, sizeof(int)); // размер строки
sz = strlen(pData);
if(sz > oldSz)
{
seekg(0L, ios::end);
p1 = tellg();
write((char*)&sz, sizeof(int)); // запись длины строки
write(pData, sz); // запись строки
seekg(p0 + num * sizeof(long), ios::beg);
write((char*)&p1, sizeof(long)); // запись смещения строки
}
else
{
seekg(p1, ios::beg);
write((char*)&sz, sizeof(int)); // запись длины строки
write(pData, sz); // запись строки
}
return p1;
}
Файл TextEditor.cpp
#include <stdio.h>
#include <windows.h>
#include "BinaryFile.h"
/* Прототипы функций. */
void printsk (char* format,...);
int menu_select(void); /* Выбор пункта меню. */
void create(void); /* Ввод имени файла и создание файла */
void createFromTxt(); /* Создание и заполнение файла из заданного текстового файла*/
void open(); /* Открыть файл */
void load(); /* Загрузить структуру из файла и вывести несколько строк на экран */
void save(); /* Сохранение загруженной структуры в файл */
void saveAsTxt(); /* Сохранение содержимого файла в текстовом файле */
void loadLine(); /* Загрузка строки из файла */
void append(); /* Добавление строки в конец файла */
void updateLine(); /* Редактирование строки */
void close(); /* Закрыть файл */
void ClearLines(); /* Освободить память, в которой хранятся строки и массив указателей на строки */
/* Глобальные переменные */
BinaryFile binFile; // Объект тестируемого класса
int isOpen = 0; // Флаг, был ли открыт файл
char **pLines = NULL; // Загруженная структура
int main(int argc, char* argv[])
{
int choice;
/* Меню. */
for(;;) {
choice = menu_select();
switch(choice) {
case 1: create();
break;
case 2: createFromTxt();
break;
case 3: open();
break;
case 4: load();
break;
case 5: save();
break;
case 6: saveAsTxt();
break;
case 7: loadLine();
break;
case 8: append();
break;
case 9: updateLine();
break;
case 10: close();
break;
case 11: ClearLines(); exit(0);
}
}
return 0;
}
/* Выбор пункта меню */
int menu_select()
{
char s[50];
int c;
printsk("\n1. Создать файл\n");
printsk("2. Создать и заполнить файл из текстового файла\n");
printsk("3. Открыть файл\n");
printsk("4. Загрузить структуру из файла\n");
printsk("5. Сохранить загруженную структуру в файл\n");
printsk("6. Сохранить содержимое файла в текстовом файле\n");
printsk("7. Загрузить строку из файла\n");
printsk("8. Добавить строку в конец файла\n");
printsk("9. Заменить строку\n");
printsk("10. Закрыть файл\n");
printsk("11. Выход\n");
do {
printsk("\nВведите номер нужного пункта: ");
scanf("%s",&s);
c = atoi(s);
} while(c<0 || c>11);
return c;
}
/* Ввод имени файла и создание файла */
void create()
{
if(isOpen)
{
printsk ("Для начала работы с новым файлом надо закрыть предыдущий файл\n");
return;
}
printsk ("Введите имя файла: ");
char fname[100];
fflush (stdin); // Очистка входного потока
gets (fname); // Ввод имени файла
if(binFile.Create(fname) == 0)
printsk ("Не удалось создать файл.\n");
else
printsk ("Файл создан.\n");
}
/* создание и заполнение файла из заданного текстового файла */
void createFromTxt()
{
if(isOpen)
{
printsk ("Для начала работы с новым файлом надо закрыть предыдущий файл\n");
return;
}
char fnameBin[100], fnameTxt[100];
printsk ("Введите имя файла, который будет создан: ");
fflush (stdin); // Очистка входного потока
gets (fnameBin); // Ввод имени файла
printsk ("Введите имя текстового файла: ");
fflush (stdin); // Очистка входного потока
gets (fnameTxt); // Ввод имени текстового файла
if(binFile.CreateFromTxt(fnameBin, fnameTxt) == 0)
printsk ("Не удалось создать файл.\n");
else
printsk ("Файл создан.\n");
}
/* Открыть файл */
void open()
{
if(isOpen)
{
printsk ("Файл уже открыт\n");
return;
}
printsk ("Введите имя файла: ");
char fname[100];
fflush (stdin); // Очистка входного потока
gets (fname); // Ввод имени файла
if(binFile.Open(fname) == 0)
printsk ("Не удалось открыть файл. Открываемый файл должен существовать.\n");
else
{
int n = binFile.Size();
printsk ("Файл открыт. Количество записей в файле: %d.\n", n);
isOpen = 1;
}
}
/* Загрузить структуру из файла и вывести несколько строк на экран */
void load()
{
if(!isOpen)
{
printsk ("Для работы с файлом он должен быть создан и открыт.\n");
return;
}
ClearLines();
if((pLines = binFile.Load()) == 0)
{
printsk ("Не удалось загрузить структуру.\n");
return;
}
int n = binFile.Size();
printsk ("Структура загружена в память. Количество записей: %d.\n", n);
char s[50];
printsk ("Сколько строк вывести? ");
scanf("%s",&s);
int k = atoi(s);
if(k < 1) return;
printsk ("Номер первой выводимой строки (от 1 до %d): ", n);
scanf("%s",&s);
int m = atoi(s);
if(m < 1 || m > n)
{
printsk ("Вывод не возможен.\n");
return;
}
for(int i = m - 1; i < m - 1 + k && pLines[i] != NULL; i++)
{
printsk (pLines[i]);
printsk ("\n");
}
}
/* Сохранение загруженной структуры в файл */
void save()
{
if(!isOpen)
{
printsk ("Для работы с файлом он должен быть создан и открыт.\n");
return;
}
if(pLines == NULL)
{
printsk ("Структура не загружена.\n");
return;
}
if(binFile.Save(pLines) == 0)
printsk ("Не удалось сохранить структуру.\n");
else
{
ClearLines(); // освобождение памяти, в которой хранилась структура
printsk ("Структура сохранена в файл. Память освобождена.\n");
}
}
/* Сохранение содержимого файла в текстовом файле */
void saveAsTxt()
{
if(!isOpen)
{
printsk ("Для работы с файлом он должен быть создан и открыт.\n");
return;
}
char fnameTxt[100];
printsk ("Введите имя текстового файла: ");
fflush (stdin); // Очистка входного потока
gets (fnameTxt); // Ввод имени текстового файла
if(binFile.SaveAsTxt(fnameTxt) == 0)
printsk ("Не удалось сохранить текстовый файл.\n");
else
printsk ("Содержимое открытого бинарного файла сохранено в текстовом файле.\n");
}
/* Загрузка строки из файла */
void loadLine()
{
if(!isOpen)
{
printsk ("Для работы с файлом он должен быть создан и открыт.\n");
return;
}
char s[50];
int n = binFile.Size();
printsk ("Введите номер строки (от 1 до %d): ", n);
scanf("%s",&s);
int k = atoi(s);
char *str;
if((str = binFile.Load(k - 1)) == NULL)
printsk ("Не удалось загрузить строку с номером %d.\n", k);
else
{
printsk (str);
printsk ("\n");
delete [] str;
}
}
/* Добавление строки в конец файла */
void append()
{
if(!isOpen)
{
printsk ("Для работы с файлом он должен быть создан и открыт.\n");
return;
}
char str[100];
printsk ("Введите строку: ");
fflush (stdin); // Очистка входного потока
gets (str); // Ввод строки
if(binFile.Append(str) == 0)
printsk ("Не удалось добавить строку.\n");
else
printsk ("Строка добавлена в конец файла.\n");
}
/* Редактирование строки */
void updateLine()
{
if(!isOpen)
{
printsk ("Для работы с файлом он должен быть создан и открыт.\n");
return;
}
char s[50];
int n = binFile.Size();
printsk ("Введите номер строки (от 1 до %d): ", n);
scanf("%s",&s);
int k = atoi(s);
char str[100];
printsk ("Введите строку: ");
fflush (stdin); // Очистка входного потока
gets (str); // Ввод строки
if(binFile.Update(str, k - 1) == 0)
printsk ("Не удалось заменить строку с номером %d.\n", k);
else
printsk ("Строка заменена.\n");
}
/* Закрыть файл */
void close()
{
if(!isOpen)
{
printsk ("Файл не был открыт.\n");
return;
}
if(binFile.Close() == 0)
printsk("Не удалось закрыть файл.\n");
else
{
if(pLines)
printsk("Файл успешно закрыт. Память, в которой хранится структура, не освобождена.\n");
else
printsk("Файл успешно закрыт.\n");
isOpen = 0;
}
}
/* Преобразования кодовой таблицы для Windows */
void printsk (char* format,...)
{
char buf[4096];
va_list ptr;
CharToOem(format,buf);
va_start(ptr,format);
vprintf(buf,ptr);
}
/* Освободить память, в которой хранятся строки и массив указателей на строки */
void ClearLines()
{
if(pLines)
{
int i = 0;
while(pLines[i] != NULL)
{
delete [] pLines[i];
i++;
}
delete [] pLines;
pLines = NULL;
}
}
23

Список литературы

Нет данных
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00468
© Рефератбанк, 2002 - 2024