- •Федеральное агенство по образованию
- •Оглавление
- •Массивы указателей на строки Задание 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 (массивы строк, структуры, классы)
Задание 5. Объектно-ориентированная реализация информационной системы Задание 5.1 Представление структуры данных записи (Record), в виде класса с конструкторами и деструкторами
В отдельный заголовочный файл с именем Record.hпомещается описание класса данных, содержащей учетную информацию некоторой предметной области, и декларации функций –элементов класса.
#pragma once
#include "io.h"
#include "compare.h"
class Record
{ char* title; // название
char autor[10]; // автор
int number; // инвентарный номер
int price; // цена
int day,month,year;
public:
Record(); //выделяет память под классRecord
//и инициализирует ее значениями по умолчанию
Record(char*a,char*t,int n,int p,int d,int m,int y);
Record(const Record&);
~Record();
Record*copy(); //coздает копию структурыRecordв динамической памяти
voiddispose(); // Освобождает выделенную память под структурRecord
intvalidate(); // проверяет корректность данных
intequal(constRecord&); // функция, проверяющая равенство значений полей записей
//Используется при поиске
intcmp(constRecord&); // функция, сравнивающая записи Используется при сортировки
friend int CmpField(Record* a,Record* b,char*s);
int finput(File f);
int input(File fp) ;
int input() ;
int output(File f);
void output();
void copyto(String* m[], int first=0);
int input (TextBox* m[], int first=0) ;
void output(TextBox* m[], int first=0);
void output(ListView*list);
};
Задание 5. 2 Разработка класса таблица для хранения объектов классаRecord.
Выполняется аналогично заданию 4.2
Файл item.h
#pragma once
#include "record.h"
typedef Record* T;
typedef T* Iterator;
Файл Tabl.h
#include “item.h”
class Tabl{
vec v;
Iterator cur;
T buf;
public:
Tabl( int sz=100,T buffer=0);
~Tabl( );
void resize(int n);
void clear();
void dispose ();
Iterator begin();
Iterator end() ;
int length();
T get_item(int i);
Iterator insert(const T& item);
Iterator erase(Iterator pos);
int remove (const Iterator& first,const Iterator& last,const T& item);
int remove (const Iterator& first,const Iterator& last t,const Predicate& pred);
Tabl* Query(Predicat& pred);
void sort(Compare &Comp );
void output();
int input();
int input(File f);
void output(File f);
void foutput(char* FileName);
int finput(char* FileName);
void output(ListView*list);
};
С помощью typedefдляT* вводится новое названиеIterator, для того чтобы подчеркнуть, что к элементам таблицы осуществляется последовательный доступ, независящий от ее внутреннего устройства.
Функции, зависящие от конкретной реализации таблицы (например , вставка и удаление) реализованы в виде функций-элементов класса.
Функции, которые используют только последовательный доступ к элементам таблицы с помощью итераторов, реализованы в виде глобальных функций. Такие функции далее будем называть алгоритмами. Параметрами алгоритмов являются итераторы, которые могут указывать на элементы произвольной таблицы.
Файл "algo.h"
Iterator find (const Iterator& first,const Iterator& last,const T& item);
Iterator find (const Iterator& first,const Iterator& last, const Predicate& pred);
int replace (const Iterator& first,const Iterator& last,const T&Old,const T&New);
void sort (const Iterator& first, const Iterator& last,const Compare& comp);
void for_each(const Iterator& first,const Iterator& last,const Function& Funct);
Пример реализации
Iterator find(const Iterator& first,const Iterator& last, Predicate& pred)
{Iterator i;
for(i=first; i!=last; i++)
if(pred.fun(*i)) return i;
returnlast;
}