- •Федеральное агенство по образованию
- •Оглавление
- •Массивы указателей на строки Задание 1. Текстовый редактор Задание 1.1 Динамическая память. Модульное программирование
- •Задание 1.2 Реализация таблицы на основе динамического массива
- •Задание 1.3 Специальные функции работы со строками
- •Задание 1.3 Разработка приложенияWindowsForms
- •Структуры Задание 2 Реализация текстового редактора с использованием структур данных Задание 2.1 Представления набора строк в виде структур данных
- •Задание 2.2 Реализация операций выборки, преобразования и сортировки наборов строк с использованием словаря данных
- •Задание 3. Информационная система
- •Задание 3.1 Модульное программирование
- •Задание 3.2 Работа с и динамической памятью
- •Задание 3.3 Ввод и вывод
- •Пример реализации для консольного приложения
- •Пример реализации для приложения с оконным графическим интерфейсом
- •Задание 3.4 Сравнение структур
- •Задание 3.5 Консольное приложение
- •Задание 3.5 Приложение WindowsForms
- •3.6 Пример пошаговой разработки приложение WindowsForms
- •Классы. Задание 4. Объектно-ориентированная реализация текстового редактора
- •Задание 4. 1 Разработка класса классаMyString.
- •Задание 4. 2 Разработка класса таблица.
- •Задание 5. Объектно-ориентированная реализация информационной системы Задание 5.1 Представление структуры данных записи (Record), в виде класса с конструкторами и деструкторами
- •Задание 5. 2 Разработка класса таблица для хранения объектов классаRecord.
- •Задание 5.3 Представление базовых понятий предметной области в виде классов. Разработка интерфейса и реализации. Определение конструкторов классов.
- •1. Разработать класс MyDate (дата-время)
- •3. Дополнить класс MyString (строка)
- •4. Разработать класс Title (название)
- •5 . Разработать класс Name (имя)
- •6. Разработать класс Address (Адрес)
- •7. Разработать класс Telephone ( номер телефона)
- •8. Разработать класс e_Mail (Адрес электронной почты)
- •Задание 5.2 Использование объектов классов в качестве элементов классов
- •Задание 5.3 Использование указателей на объекты классов и объекты классов в качестве элементов классов
- •Задание 5.4 Система управления данными.
- •Задание 5.5 Иерархия классов
- •Задание 5.6 Шаблоны классов
- •Приложение 1
- •Приложение 2
- •Приложение 3
- •В среде разработки Visual Studio .Net (массивы строк, структуры, классы)
Задание 3.1 Модульное программирование
На первом шаге производится разработка структуры данных и проектирование программы с учетом модульного стиля программирования. Разбиение программы на независимые друг от друга модули делает ее структуру более гибкой и легко модифицируемой. Например, это позволит быстро заменить используемую для хранения совокупности записей структуру данных Tablна другую, а также перейти с консольного варианта программы на программу с оконным графическим интерфейсом.
В отдельный заголовочный файл с именем Record.hпомещается описание структуры данных, содержащей учетную информацию некоторой предметной области, и декларации функций для работы со структурой.
Описание структуры данных, которая используется для хранения всех записей, помещается в другой файл Tabl.h. При необходимости использования другого типа контейнера для хранения записей изменения в коде затронут только эту часть программы.
Реализация функций полностью аналогична коду функций в таблице строк
В начале заголовочного файла Tabl.h следует с помощью директивы #include подключить заголовочный файл item.h.
#pragma once
#include "record.h"
typedef Record* T;
//#include "chars.h"
//typedef char* T;
Изменяя этот заголовочный файл можно работать как с таблицей строк, так и с таблицей структур.
В качестве примера рассматривается предметная область библиотека.
Файл Record.h
class Record (Запись)
{public:
char* title; // название
char autor[10]; // автор
long number; // инвентарный номер
int price; // цена
charname[10]; //имя читателя
longnumber; // номер читательского билета
charaddress[40];//адрес читателя
longtelephone; // телефон читателя
charbname[10]; //имя библиотекаря
intday,month,year; // дата выдачи читателю
};
Record*init(Record*); // выделяет память под структурRecord
//и инициализирует ее значениями по умолчанию
Record*copy(Record*); //coздает копию структурыRecordв динамической памяти
voiddispose(Record*); // Освобождает выделенную память под структурRecord
intvalidate(Record*); // проверяет корректность данных
intequal(Record*,Record*); // функция, проверяющая равенство значений полей записей. Используется при поиске
intcmp(Record*,Record*); // функция, сравнивающая записи Используется при сортировке
int input(File fp,Record* r) ;
int input(Record* r) ;
int output(File f,Record* r);
void output(Record* r);
В файл Record.cpp помещаются реализации функций
#include"Record.h"
Задание 3.2 Работа с и динамической памятью
На втором шаге реализуются функции, работающие с динамической памятью.
Record*init(Record*r) // выделяет память под структурRecord
//и инициализирует ее значениями по умолчанию
{ r=new Record;
r->autor[0]='\0';
r->title=0;
r-> number=0;
r->price=0;
r->day=0;r->month=0;r->year=0;
return r;
}
Record* copy(Record* t)//coздает копию структуры Record в динамической памяти
{Record* r=init(t);
strcpy(r->autor,t->autor);
r->title=new char[strlen (t->title)+1] ;
strcpy(r->title, t->title);
r-> number=t-> number;
r->price=t->price;
r->day= t->day;r->month=t->month; r->year=t->year;
return r;}
void dispose (Record* t) // Освобождает выделенную память под структур Record
{if(t)
delete [] t->title;
deletet;}