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

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Программирование
  • 2424 страницы
  • 0 + 0 источников
  • Добавлена 20.06.2008
800 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Оглавление
Задание
Структурное описание разработки
Функциональное описание
Описание работы программы на контрольном примере и выводы
Список литературы
Текст программы

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

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
#include
#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

Нет данных

Вопрос-ответ:

Какое задание выполняет программа?

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

Какие параметры используются для структурного описания разработки программы?

Для структурного описания разработки программы используются следующие параметры: размер массива указателей, текущее количество указателей, смещение адреса МУ.

Каким образом программа считывает данные из файла?

Программа считывает данные из файла с помощью функции read, указывая размер и тип данных, которые нужно прочитать.

Как программа обрабатывает контрольный пример и какие выводы делает?

Программа обрабатывает контрольный пример, выполняя определенные операции с указателями и адресами МУ. Вывод программы зависит от входных данных контрольного примера, но программой должны быть осуществлены все необходимые операции и выведены соответствующие значения.

Какие функции и команды используются в программе?

В программе используются функции is_open, clear, seekg, ios и команды return, sizeof, beg, read. Они используются для проверки состояния файла, очистки потока, перемещения курсора чтения в нужное место, установки режима работы потока, чтения данных из файла.

Какие задачи решает программа "Оглавление Задание"?

Программа "Оглавление Задание" разрабатывается для решения задач, связанных с созданием оглавления для текстового документа. Она позволяет структурировать содержание документа, создавать заголовки разного уровня и автоматически формировать список заголовков.

Как описывается разработка программы "Оглавление Задание"?

Разработка программы "Оглавление Задание" осуществляется с помощью структурного описания и функционального описания. Сначала проводится анализ задачи и формулируется структурное описание, определяющее необходимую структуру программы. Затем составляется функциональное описание, где подробно описываются функции и алгоритмы, выполняемые программой.

Какова структура программы "Оглавление Задание"?

Программа "Оглавление Задание" состоит из нескольких функций, предназначенных для чтения текстового документа, создания оглавления и записи результатов в файл. Она использует указатели и массивы для работы с данными. Основная структура программы состоит из блока чтения данных, блока анализа данных и блока записи результатов.