Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PZ_kR.doc
Скачиваний:
4
Добавлен:
13.09.2019
Размер:
694.27 Кб
Скачать

2.1 Определение структуры файла базы данных

Для структурирования данных внутри файла были выбраны две структуры данных:

а) Для контактов

struct contacts

{

wchar_t* surname; // фамилия

wchar_t* name; // имя

wchar_t* grandname; // отчество

wchar_t* addr; // адрес проживания

wchar_t* email; // адрес электронной почты

wchar_t* icq; // номер ICQ

contacts* prev; // указатель на предыдущий элемент

contacts* next; // указатель на следующший элемент

struct Contdate // дата рождения

{

unsigned short day; //день

unsigned short month; //месяц

unsigned short year; //год

} birthdate;

}

б) Для событий

struct events

{

wchar_t* event_type; // тип или название события

SYSTEMTIME event_date; // дата события

bool completed; // флаг выполненное (чтобы при запуске о выполненных не напоминалось)

wchar_t* event_text; // текст события

events* prev; // указатель на спредыдущий элемент

events* next; // указатель на следующший элемент

};

Основные поля структур имеют текстовый формат. Для удобства дата рождения представлена в виде структуры, содержащей отдельно день, месяц и год рождения.

Выбранные структуры просты и соответствуют всем потребностям программы.

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

При добавлении новых записей, редактировании записей или их удалении производится сортировка базы данных, и файл базы данных полностью перезаписывается.

Ниже на рисунке 2 представлена схема данных.

Рисунок 2 - Схема данных.

3 Описание разработки программы

Для написания данной программы будет использован язык программирования Си. Этот язык является распространённым языком программирования. При разработке языка Си был принят компромисс между низким уровнем языка ассемблера и высоким уровнем других языков. В языке Си предусмотрено много операций, непосредственно исполняемых большинством микропроцессоров; в то же время он дает программисту возможность выражать свои алгоритмы и данные наиболее подходящими средствами. Язык Си обеспечивает возможности структурирования данных. Он позволяет разрабатывать большие, но структурированные программы, предоставляя возможность отдельной разработки подпрограмм.

Целью создателей языка Си была разработка мобильного языка, который можно было бы использовать для разработки системного программного обеспечения. Программы, написанные на языке высокого уровня, мобильны, поскольку язык должен быть одним и тем же независимо от того, на каком компьютере и в какой операционной системе он используется. Дополнительное свойство языка Си, называемое условной компиляцией, позволяет программисту изолировать машинно-зависимые операторы и контролировать их компиляцию в другой среде. Это дополнительно повышает мобильность программного обеспечения, написанного на языке Си.

В качестве среды программирования был выбран программный продукт Visual Studio 2005.

Разработка программы началась с реализации набора функций, необходимых для работы с файлами баз данных. Для сохранения файлов были задействованы функции SaveDbContacts и SaveDbEvents . Для чтения из файлов используются функции ReadDbContacts и ReadDbEvents . Добавление элементов осуществляется с помощью функций AddContact и AddEvent, а их редактирование с помощью функций EditContact() и EditEvent(). Поиск выполняют функции FindContact и FindEvent. Для реализации псевдографического интерфейса была изучена библиотека Barfic.lib. Библиотека содержит все необходимые функции для инициализации консоли, отображения меню, вывода окон, ввода текстовой информации с клавиатуры, получения событий клавиатуры и мыши, перемещения курсора, рисование символов и линий.

Основная программа Organizer.exe выполнятся функцией main. В функции main осуществляется переход к вспомогательным функциям, которые реализуют меню добавления, редактирования, поиска и другие. Был разработан алгоритм функции main. Блок-схема функции представлена на рисунке 3. Функция отвечает за инициализацию консоли, за вывод заставки-приветствия и за передачу управления в функции обработки меню. Цикл обработки событий главного окна обеспечивает активизацию меню и выход из него. После выхода из функции обработки меню функция обработки событий главного окна получает идентификатор выбранного пункта меню. В зависимости от идентификатора функция вызывает функцию обработки выбранного пункта меню.

Блок схема функции main() и функции обработки событий главного окна представлена на рисунке 3. Основной задачей данной функции является получения события от клавиатуры или мыши, если событие присутствует, то вызывается функция обработки этого события. Если события нет, то программа засыпает на 20 миллисекунд, после чего вновь получает событие от клавиатуры и мыши, и так пока не выберут пункт меню «Выход».

Рисунок 3 — Схема программы. Функция обработки событий главного окна

Как только главная функция обнаружила событие от клавиатуры или мыши, вызывается функция обработки события. В зависимости от активного элемента выполняются те или иные действия. Если события принадлежат меню, то выполняется перемещение выделенного пункта меню. Если выбрано меню, вызываются функции реализации меню. В функциях реализации меню находится свой цикл проверки событий клавиатуры или мыши. На выходе из функций реализации меню определяется, какой из пунктов меню был выбран. Алгоритм работы представлен на рисунке 4.

Рисунок 4 - Алгоритм работы главного меню

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]