Написание программного средства, которое будет работать с базой данных с фамилиями абонентов, их телефонами и адресами

Использование текстовых файлов для хранения данных в программе, реализация диалога с пользователем. Диалоговая процедура окна диалога результатов поиска элементов. Разработка структуры и алгоритмов программы. Реализация и тестирование программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 10.10.2017
Размер файла 104,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

План

Введение

1. Разработка структуры и алгоритмов программы

2. Описание программы

3. Тестирование программы

4. Инструкция пользователя

Выводы

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

Введение

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

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

Процессы обработки информации имеют общую природу и опираются на описание фрагментов реальности, выраженное в виде совокупности взаимосвязанных данных. Базы данных являются эффективным средством представления структур данных и манипулирования ими. Концепция баз данных предполагает использование интегрированных средств хранения информации, позволяющих обеспечить централизованное управление данными и обслуживание ими многих пользователей. При этом база данных должна поддерживаться единым программным обеспечением, называемым системой управления базами данных (СУБД). СУБД вместе с прикладными программами называют банком данных.

Одно из основных назначений СУБД - поддержка программными средствами представления, соответствующего реальности.

Предметной областью называется фрагмент реальности, который описывается или моделируется с помощью БД и ее приложений. В предметной области выделяются информационные объекты - идентифицируемые объекты реального мира, процессы, системы, понятия и т.д., сведения о которых хранятся в БД.

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

Анализ предметной области и постановка задачи. Базы данных являются эффективным средством представления структур данных и манипулирования ими. В настоящее время объём информации, которую нужно использовать ежедневно растёт в геометрической прогрессии. Возникает задача хранения этих данных в выгодном (с точки зрения оптимальности) формате, занимающем как можно меньше памяти и одновременно максимально удобного для пользователя, который не имеет ни малейшего представления о программировании и концепции представления данных. К сожалению, любые носители являются не долговечными.

Использование внешних запоминающих устройств является наиболее надежным и удобным способом хранения информации. Для хранения информации неизвестного размера лучше всего использовать файлы. Файл - динамическая структура данных, размер которой может меняться в процессе выполнения над ним каких-либо действий (он может быть равен нулю, что соответствует пустому файлу). Вообще-то, понятие файла используют и как абстракцию данных, хранящихся в памяти, что позволяет единообразно определить их общие характеристики и операции над ними. В данной работе для хранения информации используются текстовые файлы.

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

Для обеспечения поддержки пользователя необходимо создать программу «Телефонная книга», которая обеспечивала бы наглядность данных и удобство работы с ними. При этом обеспечить максимальное удобство интерфейса для пользователя и надёжность хранения данных.

Данная работа является актуальной для большинства пользователей, так как «твёрдые» записные книжки не являются в наше время самым удобным способом хранения информации о телефонах и адресах. Удобство программы заключается в скорости поиска и доступа к элементам телефонной книги, что является неоспоримым преимуществом по сравнению с записной книжкой.

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

В ходе выполнения курсовой работы необходимо изучить литературу по принципам поиска, удаления, сортировки, манипуляции с данными, работы с файлами при помощи функций WinAPI.

1. Разработка структуры и алгоритмов программы

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

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

Блок работы с файлами, системное меню описано в оконной процедуре главного окна WndProc.

Были созданы четыре диалоговые процедуры:

1) BOOL CALLBACK AboutDlgAddProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);

Диалоговая процедура окна диалога добавления элемента. Содержит три элемента редактирования (edit) (Фамилия, телефон, адрес). При помощи этого окна пользователь может добавить элемент в телефонную книгу. Для добавления элемента в окно списка (list box) используется функция SendMessage отправляющая сообщение LB_ADDSTRING окну списка. Начальное заполнение списка осуществляется при помощи цикла с параметром for. Для обновления окна списка (list box) используется сообщение LB_RESETCONTENT, а затем список заново заполняется посредством цикла с параметром for.

2) BOOL CALLBACK AboutDlgFindProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);

Диалоговая процедура окна диалога поиска элемента. Содержит три элемента редактирования. Имеет аналогичный вид с предыдущим окном. При помощи этого окна пользователь может выполнить поиск элемента в телефонной книге. Алгоритм поиска реализован при помощи функции сравнения строк char *strstr (srting1, string2), где char *string1 - поле структуры (то, где ищем), а char *string2 - строка, которая введена в окно редактирования в диалоговом окне. Данная функция возвращает NULL, если соответствующий элемент не найден. И так, при помощи троекратного вызова этой функции в условном операторе if был получен результат поиска по трём параметрам. Для связи найденных элементов и элементов структуры был создан массив указателей на структуру TelBook dbFind. Это обеспечило возможность удаления элементов, найденных во время поиска.

3) BOOL CALLBACK AboutDlgResProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);

Диалоговая процедура окна диалога результатов поиска элементов. Содержит три элемента редактирования и несколько кнопок, при помощи которых пользователь может перемещаться между найденными записями. Так же при помощи этого окна пользователь может редактировать найденные записи и/или удалять их. Алгоритм удаления из телефонной книги заключается в поэлементном удалении из полей структуры соответствующих элементов. Удалять можно только те элементы, которые были найдены функцией поиска и записаны в массив указателей dbFind.

4) BOOL CALLBACK AboutDlgSelProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);

Диалоговая процедура окна диалога выбора ресурса для телефонной книги: либо открытие старой книги, либо создание новой. Данное окно появляется при создании главного окна.

Для вызова вышеописанных окон диалога используются соответствующие пункты меню.

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

2. Описание программы

Для удобства контроля над ресурсами памяти используется объект типа vector. Vector - C-подобный динамический массив произвольного доступа с автоматическим изменением размера при добавлении/удалении элемента. Как и массив к вектору можно обратиться воспользовавшись операцией индексирования [].

Для работы с файлами использовались следующие функции:

· CreateFile

Все действия с файлом происходят после использования функции CreateFile(). Эта функция используется для того, чтобы указать, какие права на использование файла необходимо предоставить, а также для создания файлов и работы с внешними портами (функция довольно универсальна и является одной из основных). Все это многообразие действий можно осуществить, передавая в функцию те или иные многочисленные параметры, выбор которых уже зависит от реализации частной задачи.

· OpenFile

Данная функция, по сути своей, предназначена для открытия файлов или устройств. Функция OpenFile в случае успеха возвращает дискриптор (указатель) открываемого файла. В случае неудачи мы получим в качестве дискриптора значение INVALID_HANDLE_VALUE.

· ReadFile, WriteFile

Простого открытия или создания файла не достаточно, возникает проблема что-то в него записать или прочитать уже находящуюся в нем информацию. Решение проблемы заключает в себе использование функций ReadFile() - для чтения информации и WriteFile() - для записи информации. По синтаксису они похожи. Главное отличие заключается именно в самом использовании рассматриваемой функции, а именно, что данные не записываются в файл, а считываются из него. А так, буфер, размер в байтах буфера и число считанных байт используются аналогично.

· CloseFile

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

Для сохранения файла используется комбинация функций CreateFile() и WriteFile().

В случае попытки пользователем произвести какие-либо действия с файлами при отсутствии файла, появляется сообщение об ошибке и диалоговое окно с предложением выбора файла.

Для вывода на экран информации из текущей телефонной книги используется окно списков (list box). Список -- это набор текстовых строк, который выводится на экран в виде прокручиваемого в прямоугольнике столбца текста. Программа может добавлять или удалять строки в списке путем посылки сообщений оконной процедуре списка. Добавление, удаление или изменение элементов списка осуществляется при помощи использования функции SendMessage для отправки сообщения окну списка. Ссылка на строки текста обычно осуществляется через индекс, который начинается с 0, что соответствует самому верхнему элементу списка. Для сортировки элементов списка используется стиль LBS_SORT. Список заполняется при помощи сообщения LB_ADDSTRING. Для обновления окна списка используется сообщение LB_RESETCONTENT, а затем список заново заполняется. Для расчета размеров окна списка использовалась структура TEXTMETRIC. Для установки цвета фона и текста окна списка использовалось сообщение родительскому окну WM_CTLCOLORLISTBOX, а так же функции SetTextColor() и SetBgColor().

Реализация удобного диалога с пользователем была осуществлена при помощи диалоговых окон, которые были созданы при помощи редактора. Диалоговое окно - временное окно, которое создает прикладная программа, чтобы получить данные, вводимые пользователем. Диалоговые окна используются пользователем на этапе поиска, добавления, просмотра результатов, удаления элементов телефонной книги. Процедура диалогового окна (dialog box procedure) - определяемая программой функция повторного вызова, которую Windows вызывает, когда операционная система получает ввод данных для диалогового окна или задачу для выполнения в блоке диалога. Хотя процедура диалогового окна подобна оконной процедуре, у неё не те же самые обязанности. Диалоговая процедура или процедура диалога программы обрабатывает сообщения, получаемые окном диалога. Хотя она очень сильно напоминает оконную процедуру, это не настоящая оконная процедура. Оконная процедура окна диалога находится в Windows. Эта оконная процедура вызывает вашу диалоговую процедуру, передавая ей многие из сообщений, которые получает сама. Для создания окна диалога используется функция DialogBox. Функция DialogBox, которая вызывается для вывода на экран окна диалога, не возвращает управление в WndProc до тех пор, пока окно диалога не будет закрыто. Целесообразность выбора этой функции заключается в исключении пользовательских ошибок во время работы программы. файл данные алгоритм программа

В используемых окнах диалога используются такие дочерние окна управления, как кнопки (button), окна редактирования (edit) и статический текст (static). При помощи этих дочерних окон осуществляется обмен информацией между пользователем и программой. Для реализации этого использовались следующие функции:

· SetWindowText

Данная функция использовалась для помещения в редактируемое поле текста (при поиске).

· GetWindowText

Данная функция использовалась для получения из редактируемого поля текста (при редактировании, добавлении, поиске элементов).

Для улучшения удобства диалога с пользователем использовались окна сообщений (Message boxes). Эти окна используются для оповещения пользователя об ошибках, а так же для получения кратких ответов пользователя на вопросы программы в неопределённых ситуациях (например, во время сохранения файл). Так же окна сообщения используются для оповещения пользователя о происходящих событиях (например, добавление элемента).

Кроме вышеперечисленных функций в программе использовались и другие функции WinAPI.

Для реализации программы были использованы стандартные средства языка С++, функции WinAPI, были подключены заголовочные файлы windows.h (для работы функций WinAPI), vector(для работы объектами типа vector), использовано пространство имён std.

Для реализации программы были необходимы следующие функции:

· Добавление элемента;

· Поиск элемента;

· Удаление элемента;

· Редактирование элементов.

Рассмотрим подробнее эти функции:

· Добавление элемента в телефонную книгу:

Эта функция осуществляется при помощи вызова диалогового окна добавления элемента. Добавление элемента происходит при помощи вызова функции GetDlgItemText следующим образом:

GetDlgItemText(hDlg, IDC_ADD_ADRESS, dbBook[numOfNow].adress, sizeof(dbBook[numOfNow].adress));

GetDlgItemText(hDlg, IDC_ADD_NAME, dbBook[numOfNow].name, sizeof(dbBook[numOfNow].name));

GetDlgItemText(hDlg, IDC_ADD_PHONE, dbBook[numOfNow].phone, sizeof(dbBook[numOfNow].phone));

Вторым параметром является идентификатор окна редактирования.

· Поиск элемента в телефонной книге:

Эта функция осуществляется при помощи вызова диалогового окна поиска элементов. Поиск элемента происходит при помощи вызова функции strstr следующим образом:

for(int i = 0; i<numOfNow; i++){if((strstr(dbBook[i].adress, Find.adress)!=NULL) && (strstr(dbBook[i].name, Find.name)!=NULL) && (strstr(dbBook[i].phone, Find.phone)!=NULL)){isFound = 1;

dbFind[numOfFind] = &dbBook[i];

numOfFind++;}}, где

numOfNow - номер последнего элемента, numOfFind - кол-во найденных элементов.

· Удаление элемента из телефонной книги:

Эта функция осуществляется при помощи вызова диалогового окна результатов поиска элементов. Вызов этого диалогового окна осуществляется сразу после команды поиска.

for(int i = 0;i<sizeof(dbFind[numElemNow]->adress);i++)

dbFind[numElemNow]->adress[i] = '\0';

for(int i = 0;i<sizeof(dbFind[numElemNow]->name);i++)

dbFind[numElemNow]->name[i] = '\0';

for(int i = 0;i<sizeof(dbFind[numElemNow]->phone);i++)

dbFind[numElemNow]->phone[i] = '\0';

После этого осуществляется сдвиг элементов, стоящих после удалённого на оду позицию вперёд.

· Редактирование элементов телефонной книги:

Редактирование происходит аналогично функции добавления элементов после выполнения команды сохранения при помощи функции GetDlgItemText, вторым параметром которой являются идентификаторы окон редактирования данного диалогового окна.

Заполнение окна списка осуществляется при помощи функции sprintf и цикла с параметром for следующим образом:

for(int i = 0; i<numOfNow; i++) {sprintf(buffer,"%-80s %-57s %s", dbBook[i].name, dbBook[i].phone, dbBook[i].adress);

SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM) buffer);}

При изменении телефонной книги для обновления окна списка вызывается функция SendMessage(hwndList, LB_RESETCONTENT, 0, 0), которая очищает окно списка, а после этого проводится вышеописанная операция, но без цикла с параметром for.

3. Тестирование программы

Программа была написана в среде Microsoft Visual Studio 2008 и протестирована на компьютере с операционной системой Windows7, оперативной памятью 2Гб, процессором Intel Centrino2 с тактовой частотой 2,1 ГГц; разрешение монитора 1280x800. Все ошибки, обнаруженные при тестировании программы, были устранены.

4. Инструкция пользователя

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

1)File;

· Open source file - вызов окна выбора файла;

· Create new DB - вызов окна «Сохранить как…»;

· Save source file - сохранение изменений в текущем файле;

· Exit DB - выход из текущего файла;

· Exit - выход из программы;

2) Edit;

· Find - поиск элемента;

· Add - добавление элемента;

3)Help;

· About…;

При запуске программы появляется окно диалога (см. Рисунок 5.1), при помощи которого пользователь выбирает файл ресурса (открыть старый или создать новый).

Рисунок 5.1 Диалоговое окно выбора источника данных

После того, как пользователь выбрал файл с телефонной книгой, он может выбрать действие в пункте меню «Edit»: добавить или найти элемент. В зависимости от выбора появится диалоговое окно добавления или поиска соответственно. Эти окна идентичны за исключением одной кнопки (Add или Find соответственно).

После нажатия на кнопку «Find» в случае успешного поиска появляется диалоговое окно с результатами поиска (см. Рисунок 5.2), иначе, если искомый элемент не найден, то появляется окно с соответствующим сообщением.

Рисунок 5.2 Результаты поиска

В диалоговом окне есть кнопки управления записью: «Delete» и «Save changes». Так же при наличии нескольких записей пользователь может перемещаться между ними посредством кнопок «Next», «Previous», «Begin» и «End».

При желании пользователь может сменить файл при помощи пункта меню «Exit DB».

Выводы

Поставленное задание курсового проекта было реализовано полностью. Все недоработки и ошибки были устранены на этапе тестирования программы на нескольких примерах. Разработанная программа может широко использоваться для хранения и перемещения адресных книг в электронном виде. Этот метод намного удобнее по сравнению с хранением данных телефонной книги в записных книжках. Этот метод отличается безопасностью хранения и скоростью доступа к данным.

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

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

1. Петзолд Ч. Программирование для Windows 95 в двух томах. Том 1 - СПб: BHV -- Санкт-Петербург, 1997. - 495 с.

2. Щупак Ю. А. Win32API. Эффективная разработка приложений - СПб: Питер, 2007. - 572 с.

3. Страуструп Б. Язык программирования C++. Специальное издание - М: Бином-Пресс, 2008. - 1099 с.

4. Финогенов К.Г. Win32. Основы программирования - М: Диалог-МИФИ, 2006. - 416 с.

5. Рихтер Дж. Windows для профессионалов. Создание эффективных Win32-пpилoжeний с учетом специфики 64-разрядной версии Windows - СПб: Питер, 2001. - 752 с.

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.