Разработка приложения для предметной области базы данных «Адресная Книжка» с применением языка программирования Delphi 7
Если Вы используете SDI приложение типа Delphi, то уже знаете, что перед началом работы лучше минимизировать другие приложения, чтобы их окна не загромождали рабочее пространство. Если нужно переключиться на другое приложение, то просто щелкните мышкой на системную кнопку минимизации Delphi. Вместе с главным окном свернутся все остальные окна среды программирования, освободив место для работы… Читать ещё >
Разработка приложения для предметной области базы данных «Адресная Книжка» с применением языка программирования Delphi 7 (реферат, курсовая, диплом, контрольная)
Министерство Образования и Науки Республики Казахстан Центральный Технический Колледж г. Алматы КУРСОВАЯ РАБОТА На тему: Разработка приложения для предметной области база данных «АдресснаяКнижка» с применением языка программирования Delphi 7
Выполнил учащийся:
группы ВтиПО 14−11р Скребец Е.А.
Проверил преподаватель: Сексембаева Н.С.
Алматы 2015 г.
Содержание ВВЕДЕНИЕ
1. ОСНОВНАЯ ЧАСТЬ
1.1 Цель разработки
1.2 Анализ разработки
1.3 Требование к надежности
1.4 Требование к составу и параметрам технических средств
2. ТЕХНИЧЕСКАЯ ЧАСТЬ
2.1 Структура БД
2.2 Описание программы
3. ПРОЕКТНАЯ ЧАСТЬ
3.1 Выбор и обоснование выбора СУБД
3.2 Руководство пользователя ЗАКЛЮЧЕНИЕ СПИСОК ЛИТЕРАТУРЫ ПРИЛОЖЕНИЕ, А Введение С точки зрения пользователя, база данных — это программа, которая обеспечивает работу с информацией. При запуске такой программы на экране, как правило, появляется таблица, просматривая которую пользователь может найти интересующие его сведения. Если система позволяет, то он может внести изменения в базу данных: добавить новую информацию или удалить ненужную.
С точки зрения программиста, база данных — это набор файлов, содержащих информацию. Разрабатывая базу данных для пользователя, программист создает программу, которая обеспечивает работу с файлами данных.
В настоящее время существует достаточно большое количество программных систем, позволяющих создавать и использовать локальные (dBASE, FoxPro, Access, Paradox) и удаленные (Interbase, Oracle, Sysbase, Infomix, Microsoft SQL Server) базы данных.
В состав Delphi входят компоненты, позволяющие создавать программы работы с файлами данных, созданными различными системами: от dBASE до Infomix и Oracle. Delphi также позволяет программисту, используя утилиту Borland Database Desktop, создавать файлы баз данных в различных форматах.
База данных — это набор однородной, как правило, упорядоченной по некоторому критерию, информации. База данных может быть представлена в «бумажном» или в компьютерном виде.
Типичным примером «бумажной» базы данных является каталог библиотеки — набор бумажных карточек, содержащих информацию о книгах. Информация в этой базе однородная (содержит сведения только о книгах) и упорядоченная (карточки расставлены, например, в соответствии с алфавитным порядком фамилий авторов). Другими примерами «бумажной» базы данных являются телефонный справочник и расписание движения поездов.
Компьютерная база данных представляет собой файл (или набор связанных файлов), содержащий информацию.
База данных состоит из записей. Каждая запись содержит информацию об одном экземпляре. Записи состоят из полей. Каждое поле содержит информацию об одной характеристике экземпляра. Следует обратить внимание, что каждая запись состоит из одинаковых полей. Некоторые поля могут быть не заполнены, однако они все равно присутствуют в записи. 1]
Таблицы БД располагаются на диске и являются физическими объектами. Для операций с данными, содержащимися в таблицах, используются наборы данных (НД). В терминах Delphiнабор данных — это совокупность записей, взятых из одной или нескольких таблиц БД. НД является логической таблицей, с которой можно работать при выполнении приложения. Взаимодействие таблицы и НД напоминает взаимодействие физического файла и файловой переменной. В Delphi для работы с наборами данных таблиц применяются несколько компонент, но наиболее универсальным и часто используемыми являются НД Table и Query. 3]
1. Основная часть
1.1 Цель разработки
Целью создания данного программного продукта является создание приложения позволяющее заносить данные о жителях любых городов, персонала каких либо компаний, учащихся учебных заведений и т. д., в документ формата ADB.
Delphi— среда разработки, использует язык программирования Delphi, разработанный фирмой Borland и изначально реализованный в её пакете Borland Delphi, от которого и получил в 2003 году своё нынешнее название. Object Pascal по сути является наследником языка Pascal с объектно-ориентированными расширениями.
Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован также для платформ GNU/Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft .NET.
Delphi — результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль начиная с версии 5.5 добавил в Паскаль объектно-ориентированные свойства, а Delphi — объектно-ориентированный язык программирования с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией.
Де-факто Object Pascal, а затем и язык Delphi являются функциональными наращиваниями Turbo Pascal.
Внешний вид среды программирования Delphi отличается от многих других из тех, что можно увидеть в Windows. Кпримеру, Borland Pascal for Windows 7.0, Borland C++ 4.0, Word for Windows, Program Manager — этовсе MDI приложенияивыглядятпо-другому, чем Delphi. MDI (Multiple Document Interface) — определяет особый способ управления нескольких дочерних окон внутри одного большого окна.
Среда Delphi же следует другой спецификации, называемой Single Document Interface (SDI), и состоит из нескольких отдельно расположенных окон. Это было сделано из-за того, что SDI близок к той модели приложений, что используется в Windows 95.
Если Вы используете SDI приложение типа Delphi, то уже знаете, что перед началом работы лучше минимизировать другие приложения, чтобы их окна не загромождали рабочее пространство. Если нужно переключиться на другое приложение, то просто щелкните мышкой на системную кнопку минимизации Delphi. Вместе с главным окном свернутся все остальные окна среды программирования, освободив место для работы других программ. 11]
Главные составные части среды программирования Ниже перечислены основные составные части Delphi:
1. Дизайнер Форм (Form Designer)
2. Окно Редактора Исходного Текста (Editor Window)
3. Палитра Компонент (Component Palette)
4. Инспектор Объектов (Object Inspector)
5. Справочник (On-line help)
Есть, конечно, и другие важные составляющие Delphi, вроде линейки инструментов, системного меню и многие другие, нужные Вам для точной настройки программы и среды программирования.
Программисты на Delphi проводят большинство времени переключаясь между Дизайнером Форм и Окном Редактора Исходного Текста (которое для краткости называют Редактор). Прежде чем Вы начнете, убедитесь, что можете распознать эти два важных элемента. Дизайнер Форм показан на рис. 1, окно Редактора — на рис. 2.
Рис.1: Дизайнер Форм — то место, где Вы создаете визуальный интерфейс программы.
Рисунок 2- В окне Редактора Вы создаете логику управления программой.
Дизайнер Форм в Delphi столь интуитивно понятен и прост в использовании, что создание визуального интерфейса превращается в детскую игру. Дизайнер Форм первоначально состоит из одного пустого окна, которое Вы заполняете всевозможными объектами, выбранными на Палитре Компонент. Несмотря на всю важность Дизайнера Форм, местом, где программисты проводят основное время является Редактор. Логика является движущей силой программы и Редактор — то место, где Вы ее «кодируете». Палитра Компонент (см. рис.3) позволяет Вам выбрать нужные объекты для размещения их на Дизайнере Форм. Для использования Палитры Компонент просто первый раз щелкните мышкой на один из объектов и потом второй раз — на Дизайнере Форм. Выбранный Вами объект появится на проектируемом окне и им можно манипулировать с помощью мыши. Палитра Компонент использует постраничную группировку объектов. Внизу Палитры находится набор закладок — Standard, Additional, Dialogs и т. д. Если Вы щелкнете мышью на одну из закладок, то Вы можете перейти на следующую страницу Палитры Компонент. Принцип разбиения на страницы широко используется в среде программирования Delphi и его легко можно использовать в своей программе. (На странице Additional есть компоненты для организации страниц с закладками сверху и снизу). 4]
Рисунок3- Палитра Компонент — место, где Вы выбираете объекты, которые будут помещены на вашу форму.
Предположим, Вы помещаете компонент TEdit на форму; Вы можете двигать его с места на место. Вы также можете использовать границу, прорисованную вокруг объекта для изменения его размеров. Большинством других компонент можно манипулировать тем же образом. Однако, невидимые во время выполнения программы компоненты (типа TMenu или TDataBase) не меняют своей формы.
Слева от Дизайнера Форм Вы можете видеть Инспектор Объектов (рис.4). Заметьте, что информация в Инспекторе Объектов меняется в зависимости от объекта, выбранного на форме. Важно понять, что каждый компонент является настоящим объектом и Вы можете менять его вид и поведение с помощью Инспектора Объектов.
Инспектор Объектов состоит из двух страниц, каждую из которых можно использовать для определения поведения данного компонента. Первая страница — это список свойств, вторая — список событий. Если нужно изменить что-нибудь, связанное с определенным компонентом, то Вы обычно делаете это в Инспекторе Объектов. К примеру, Вы можете изменить имя и размер компонента TLabel изменяя свойства Caption, Left, Top, Height, и Width.
Вы можете использовать закладки внизу Инспектора Объектов для переключения между страницами свойств и событий.
Рисунок 4- Инспектор Объектов позволяет определять свойства и поведение объектов, помещенных на форму.
Страница событий связана с Редактором; если Вы дважды щелкнете мышкой на правую сторону какого-нибудь пункта, то соответствующий данному событию код автоматически запишется в Редактор, сам Редактор немедленно получит фокус, и Вы сразу же имеете возможность добавить код обработчика данного события. Данный аспект среды программирования Delphi будет еще обсуждаться позднее. 7]
Последняя важная часть среды Delphi — Справочник (on-line help). Для доступа к этому инструменту нужно просто выбрать в системном меню пункт Help и затем Contents. На экране появится Справочник, показанный на рис.5
Рисунок 5- Справочник — быстрый поиск любой информации.
Справочник является контекстно-зависимым; при нажатии клавиши F1, Вы получите подсказку, соответствующую текущей ситуации. Например, находясь в Инспекторе Объектов, выберите какое-нибудь свойство и нажмите F1 — Вы получите справку о назначении данного свойства. Если в любой момент работы в среде Delphi возникает неясность или затруднение — жмите F1 и необходимая информация появится на экране.
Для дальнейшего знакомства со средой программирования Delphi потребуется рассказать о составе первой страницы Палитры Компонент.
На первой странице Палитры Компонент размещены 14 объектов (рис.8) определенно важных для использования. Мало кто обойдется длительное время без кнопок, списков, окон ввода и т. д. Все эти объекты такая же часть Windows, как мышь или окно.
Набор и порядок компонент на каждой странице являются конфигурируемыми. Так, Вы можете добавить к имеющимся компонентам новые, изменить их количество и порядок.
Рисунок 8-Компоненты, расположенные на первой странице Палитры.
Стандартные компоненты
Стандартные компоненты Delphi перечислены ниже с некоторыми комментариями по их применению. При изучении данных компонент было бы полезно иметь под рукой компьютер с тем, чтобы посмотреть, как они работают и как ими манипулировать.
TMainMenu позволяет Вам поместить главное меню в программу. Припомещении TMainMenu на форму это выглядит, как просто иконка. Иконки данного типа называют «невидимыми компонентом», поскольку они невидимы во время выполнения программы. Создание меню включает три шага: (1) помещение TMainMenu на форму, (2) вызов Дизайнера Меню через свойство Items в Инспекторе Объектов, (3) определение пунктов меню в Дизайнере Меню.
TPopupMenu позволяет создавать всплывающие меню. Этот тип меню появляется по щелчку правой кнопки мыши.
TLabel служит для отображения текста на экране. Вы можете изменить шрифт и цвет метки, если дважды щелкнете на свойство Font в Инспекторе Объектов. Вы увидите, что это легко сделать и во время выполнения программы, написав всего одну строчку кода.
TEdit — стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы.
TMemo — иная форма TEdit. Подразумевает работу с большими текстами. TMemo может переносить слова, сохранять в Clipboard фрагменты текста и восстанавливать их, и другие основные функции редактора. TMemo имеет ограничения на объем текста в 32Кб, этосоставляет 10−20 страниц. (Есть VBX и «родные» компоненты Delphi, где этот предел снят).
TButton позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. В Delphi все делается очень просто. Поместив TButton на форму, Вы по двойному щелчку можете создать заготовку обработчика события нажатия кнопки. Далее нужно заполнить заготовку кодом (подчеркнуто то, что нужно написать вручную):
procedure TForm1. Button1Click (Sender: TObject);
begin
MessageDlg ('Are you there?', mtConfirmation, mbYesNoCancel, 0);
end;
TCheckBox отображает строку текста с маленьким окошком рядом. В окошке можно поставить отметку, которая означает, что что-то выбрано. Например, если посмотреть окно диалога настроек компилятора (пункт меню Options | Project, страница Compiler), то можно увидеть, что оно состоит преимущественно из CheckBox’ов.
TRadioButton позволяет выбрать только одну опцию из нескольких. Если Вы опять откроете диалог Options | Project и выберете страницу Linker Options, то Вы можете видеть, что секции Map file и Link buffer file состоят из наборов RadioButton.
TListBox нужен для показа прокручиваемого списка. Классический пример ListBox’а в среде Windows — выбор файла из списка в пункте меню File | Open многих приложений. Названия файлов или директорий и находятся в ListBox’е.
TComboBox во многом напоминает ListBox, за исключением того, что позволяет водить информацию в маленьком поле ввода сверху ListBox. Есть несколько типов ComboBox, но наиболее популярен выпадающий вниз (drop-down combo box), который можно видеть внизу окна диалога выбора файла.
TScrollbar — полоса прокрутки, появляется автоматически в объектах редактирования, ListBox’ах при необходимости прокрутки текста для просмотра.
TGroupBox используется для визуальных целей и для указания Windows, каков порядок перемещения по компонентам на форме (при нажатии клавиши TAB).
TPanel — управляющий элемент, похожий на TGroupBox, используется в декоративных целях. Чтобы использовать TPanel, просто поместите его на форму и затем положите другие компоненты на него. Теперь при перемещении TPanel будут передвигаться и эти компоненты. TPanel используется также для создания линейки инструментов и окна статуса.
TScrollBox представляет место на форме, которое можно скроллировать в вертикальном и горизонтальном направлениях. Пока Вы в явном виде не отключите эту возможность, форма сама по себе действует так же. Однако, могут быть случаи, когда понадобится прокручивать только часть формы. В таких случаях используется TScrollBox. 8]
1.2 Анализ разработки Данная программа универсальна, так как может применяться в любой среды, она может использоваться в качестве адресной книжки в любой компании или учебных заведениях.
1.3 Требование к надежности Надежность программы зависит от работы всей системы и от условий ее хранения. В качестве постоянного хранения программы следует использовать жесткий магнитный диск, а для распространения программы, установку программы лучше записывать на CD-ROM.
1.4 Требования к составу и параметрам технических средств Программа была выполнена в оперционной системе WindowsME, она совместима с опеационными системами Windows 98, Windows XP, Windows 95, Windows 7, Windows 8.1, Windows 10.
Для работы данной программы используется ПК имеющий следующий характеристики:
§ Процессор не ниже Pentium 100
§ Емкость ОЗУ не ниже 64 МБ
§ Разрядность 32 бит
§ Жесткий магнитный диск
§ Диск 3,5
§ CD-ROM
2. Техническая часть
2.1 Структура БД Любой из нас, начиная с раннего детства, многократно сталкивался с «базами данных». Это — всевозможные справочники (например, телефонный), энциклопедии и т. п. Записная книжка — это тоже «база данных», которая есть у каждого из нас.
Базы данных представляют собой информационные модели, содержащие данные об объектах и их свойствах. Базы данных хранят информацию о группах объектов с одинаковымнабором свойств.
Например, база данных «Записная книжка» хранит информацию о людях, каждый из которых имеет фамилию, имя, телефон и так далее. Библиотечный каталог хранит информацию о книгах, каждая из которых имеет название, автора, год издания и так далее.
Информация в базах данных хранится в упорядоченном виде. Так, в записной книжке все записи упорядочены по алфавиту, а в библиотечном каталоге — либо по алфавиту (алфавитный каталог), либо по области знания (предметный каталог).
База данных (БД) — это информационная модель, позволяющая в упорядоченном виде хранить данные о группе объектов, обладающих одинаковым набором свойств.
Существует несколько различных структур информационных моделей и соответственно различных типов баз данных: табличные, иерархические и сетевые. 9]
Табличные базы данных
Табличная база данных содержит перечень объектов одного типа, то есть объектов, имеющих одинаковый набор свойств. Такую базу данных удобно представлять в виде двумерной таблицы: в каждой ее строке последовательно размещаются значения свойств одного из объектов; каждое значение свойства — в своем столбце, озаглавленном именем свойства.
Столбцы такой таблицы называют полями; каждое поле характеризуется своим именем (именем соответствующего свойства) и типом данных, представляющих значения данного свойства.
Поле базы данных — это столбец таблицы, содержащий значения определенного свойства.
Строки таблицы являются записями об объекте; эти записи разбиты на поля столбцами таблицы, поэтому каждая запись представляет собой набор значений, содержащихся в полях.
Запись базы данных — это строка таблицы, содержащая набор значений свойств, размещенный в полях базы данных.
Каждая таблица должна содержать, по крайней мере, одно ключевое поле, содержимое которого уникально для каждой записи в этой таблице. Ключевое поле позволяет однозначно идентифицировать каждую запись в таблице.
Ключевое поле — это поле, значение которого однозначно определяет запись в таблице.
В качестве ключевого поля чаще всего используют поле, содержащее тип данных счетчик. Однако иногда удобнее в качестве ключевого поля таблицы использовать другие поля: код товара, инвентарный номер и т. п.
Тип поля определяется типом данных, которые оно содержит. Поля могут содержать данные следующих основных типов:
· счетчик — целые числа, которые задаются автоматически при вводе записей. Эти числа не могут быть изменены пользователем;
· текстовый — тексты, содержащие до 255 символов;
· числовой — числа;
· дата/время — дата или время;
· денежный — числа в денежном формате;
· логический — значения Истина (Да) или Ложь (Нет);
· гиперссылка — ссылки на информационный ресурс в Интернете (например, Web-сайт). 6]
Поле каждого типа имеет свой набор свойств. Наиболее важными свойствами полей являются:
· размер поля — определяет максимальную длину текстового или числового поля;
· формат поля — устанавливает формат данных;
· обязательное поле — указывает на то, что данное поле обязательно надо заполнить.
Рассмотрим, например, базу данных «Компьютер», которая содержит перечень объектов (компьютеров), каждый из которых имеет имя (название). В качестве характеристик (свойств) можно рассмотреть тип установленного процессора и объем оперативной памяти. Поля Название и Тип процессора являются текстовыми, Оперативная память — числовым, а поле № п/п — счетчиком (табл.1). 2]
При этом каждое поле обладает определенным набором свойств. Например, для поля Оперативная память задан формат данных целое число.
Таблица 1- Табличная база данных
№ п/п | Название | Тип процессора | Оперативная память (Мбайт) | |
Compaq | Celeron | |||
Dell | Pentium III | |||
IBM | Pentium 4 | |||
2.2 Описание программы Для создания моего приложения используется основная форма: Form1, в которой вводятся все основные коды для нужной выполняемой приложению функции.
Рисунок.1-Form1
На панели Object TreeView показаны функции отвечающие за все компоненты в приложении это: добавления кнопок и определенных функций.
Рисунок.2 -Панель Object TreeView
Рисунок 3-Панель всех компонентов которые используются для созданий приложений Моя база данных разделена на 3 основных части:
Часть 1 в которой сортируется по группам:
Рисунок4-Сортировка по группам Часть 2 в которой вводится основные параметры клиента это ФИО, страна, город и т. д.
Рисунок.5-Поля для заполнения Часть 3 в которой отображается имя клиента:
Рисунок 6- Отображение имени
3. Проектная часть
- 3.1 Выбор и обоснование выбора СУБД
Реляционная БД состоит из взаимосвязанных таблиц. Обычно таблицы, образующие БД, находятся в каталоге на жестком диске. Таблицы хранятся в файлах, поэтому их можно перемещать и копировать обычным способом.
Для одной таблицы создается несколько файлов, содержащих данные, индексы, ключи и т. п. Имя главного файла таблицы (файла, содержащего данные) — оно же является именем таблицы — задается при создании таблицы. Имена остальных файлов задаются автоматически, причем имена файлов совпадают с именем таблицы, за исключением расширений имен.
Каждая таблица БД, состоящая из строк и столбцов, предназначена для хранения информации об однотипных объектах системы. Строка таблицы называется записью, а столбец — полем. Каждое поле должно иметь уникальное имя в пределах таблицы. Поле содержит данные одного из допустимых типов, например, целого или строкового.
Основу таблицы составляет описание ее полей, каждая таблица должна иметь хотя бы одно поле. Структура таблицы включает описание полей, ключи, индексы, ограничения на значения полей, пароли.
С таблицей в целом можно выполнять следующие операции:
§ создание (определение структуры);
§ изменение структуры (реструктуризация);
§ переименование;
§ удаление.
При создании таблицы задается структура и имя таблицы.
При изменении структуры таблицы в ней могут измениться названия и характеристики полей, состав и названия ключа и индексов, ограничения. Название таблицы и ее файлов остается прежним.
При переименовании таблица получает новое имя, в результате чего новое имя также получают все ее файлы. Для этого используются соответствующие программы (утилиты), предназначенные для работы с БД, например, DatabaseDesktop или DataPump.
При удалении таблицы с диска удаляются все ее файлы.
Для работы с БД предназначены специальные средства Delphi, которые можно разделить на два вида:
Инструментальные средства (специальные программы и пакеты, обеспечивающие обслуживание БД вне разрабатываемых приложений).
Компоненты, предназначенные для создания приложений, осуществляющих операции с БД.
Инструментальные средства:
BorlandDatabaseEngine (BDE) — процессор баз данных, который представляет собой набор библиотек, предназначенных для организации доступа к БД из приложений Delphi.
§ DatabaseDesktop — программа создания и редактирования таблиц и другие.
Компоненты, связанные с БД, делятся на визуальные (используются для создания интерфейсной части приложения, видны в работающих программах) и невизуальные (предназначены для организации доступа к данным, содержащимся в таблицах, не видны в работающих программах). Эти компоненты находятся на страницах DataAccess, DataControls, Midas, DecisionCube, QReport, InterBase палитры компонентов. [5]
3.2 Руководство пользователя Рисунок 7 -Главное окно программы На рисунке 7 показано главное окно программы. В нём отображаются поля которые заполняются о человеке которого нужно добавить в БД.
Рисунок 8- Сохранение БД Что бы сохранить проект необходимо выбрать меню" Файл" — «Сохранить как» вводим свое название и сохраняем.
Рисунок 9 -Редактирование БД Для дальнейшего редактирования БД необходимо выбрать меню «Файл" — «Открыть «, выбрать ранее сохраненный проект и продолжить заполнения Бд.
ЗАКЛЮЧЕНИЕ
Система Delphi позволяет решать множество задач, в частности:
Создавать законченные приложения для Windows самой различной направленности: от чисто вычислительных и логических, до графических и мультимедиа.
*Быстро создать (даже начинающим программистам) профессионально выглядящий оконный интерфейс для любых приложений.
*Создавать мощные системы работы с локальными и удаленными базами данных
*Создавать справочные системы (файлы. hlp) для своих приложений и мн. др.
Delphi — это комбинация нескольких важнейших технологий:
Высокопроизводительный компилятор в машинный код
*Объектно-ориентированная модель компонент
*Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов
*Масштабируемые средства для построения баз данных.
*В процессе выполнения курсового проекта я усвоил некоторые возможности Delphi. Но даже этот небольшой объем материала позволил мне убедиться в колоссальности данной среды.
Целью курсовой работы было изучение языка программирования DELPHI и разработка баз данных.
При выполнении курсовой работы:
*была изучена теория и технология работы с средой программированияBorlandDelphi7;
*была изучена и проанализирована соответствующая литература;
СПИСОК ЛИТЕРАТУРЫ
программирование база данные компилятор
1.Архангельский, А. Я, Программирование в C++ Builder 6./ А. Я. Архангельский. -Москва: ООО Бином — пресс, 2012. — 1152с.
2.КалвертЧ., РейсдорфК., Borland C++ Builder 6. Настольная книга программиста/ Ч. Калверт, К. Рейсдорф.- Санкт-Петербург: ООО «ДиаСофт», 2010 — 1008 с.
3. Маклаков, С.В., ВPwin и ERwin. CASE — средства разработки информационных систем / С. В. Маклаков.- Москва: Диалог-МИФИ, 2011, 256с.
4. Технологии разработки программного обеспечения. Учебное пособие. 2-е изд./С. Орлов. — Санкт-Петербург, 2011.
5. Роб П., Коронел К. Системы баз данных: проектирование, реализация и управление. — 5-е изд., перераб. и доп.: Пер. с англ./ П. Роб, К. Коронел.- Санкт-Петербург: БХВ-Петербург, 2012.
6. Прагг, К., Ирвин, М. Access 2010. Библия пользователя.: Пер. с англ./ К. Прагг, М. Ирвин. — Москва: Издательский дом «Вильямс», 2013.
7. Михаил Фленов, Библия Делфи, БХВ-Петербург, 2011 г.
8. Гайдамакин Н. А. Автоматизированные информационные системы, базы и банки данных. Вводный курс: Учебное пособие. — М.: Гелиос АРВ, 2002.
9. Информационные системы в экономике: Учебник для вузов / К. В. Балдин, В. Б. Уткин. — М.: Издательско-торговая корпорация «Дашков и К», 2004.
10. Delphi7 учебный курс /от Шпак Ю. А
11. Сайт http://www.delphi-manual.ru/
ПРИЛОЖЕНИЕА.
ДАННЫЙ КОД ОТВЕЧАЕТ ЗА ОСНОВНЫЕ ДЕЙСТВИЯ ВЫПОЛНЯЕМЫЕ ПРОГРАММОЙ
unit UC_AdrBook;
interface
uses Classes, SysUtils;
const
NamLength = 20; FullNameL = 65;
TelLength = 20;
AdrLength = 60; PlcLength = 20; ComLength = 255;
Line = '***—-***—-(***)—-***—-***';
Type// отвечает за функцию ввода дня, месяца, года.
NamString = string[NamLength]; FullNameS = string[FullNameL];
CusString = string[ComLength]; TelString = string[TelLength];
AdrString = string[AdrLength];
PlcString = string[PlcLength]; ComString = string[ComLength];
GrpType = 0.8; GrpArr = array [0.8] of Boolean;
TUC_Date = record
Day: 1.31;
Month: 1.12;
Year: 1000.2300;
end;{TDate = record}
TUC_Time = record
Hour: 0.23;
Minute: 0.59;
end;{TUC_Time}
TArr = array of Integer;
PPerson = ^TPerson;
ПродолжениеприложенияА
TPerson = record
Name, PatrName, Surname: NamString;
HomeTel, WorkTel, MobiTel, ICQ: TelString;
Group: GrpType;
EMail, HomeAdr, WorkAdr, Web: AdrString;
Country, City: PlcString;
BirthDay: TUC_Date;
Comments: ComString;
Prev, Next: PPerson;
end;{TPerson = record}
TPeople = class
FFirst: PPerson;
constructor Create;
destructor Destroy; override;
procedure Clear;
function Add (const Name, PatrName, Surname: NamString;
const HomeTel, WorkTel, MobiTel, ICQ: TelString;
const Group: GrpType;
const EMail, HomeAdr, WorkAdr, Web: AdrString;
const Country, City: PlcString;
const BirthDay: TUC_Date;
const Comments: ComString): Boolean;
function ReadFromFile (const F: TextFile): Boolean;
function SaveToFile (const F: TextFile): Boolean;
function GetSize: Integer;
function Delete (const p: pointer): Boolean;
function GetItem (const p: pointer;
var Name, PatrName, Surname: NamString;
ПродолжениеприложенияА
var HomeTel, WorkTel, MobiTel, ICQ: TelString;
var Group: GrpType;
var EMail, HomeAdr, WorkAdr, Web: AdrString;
var Country, City: PlcString;
var BirthDay: TUC_Date;
var Comments: ComString): Boolean;
function Modify (const p: pointer;
const Name, PatrName, Surname: NamString;
const HomeTel, WorkTel, MobiTel, ICQ: TelString;
const Group: GrpType;
const EMail, HomeAdr, WorkAdr, Web: AdrString;
const Country, City: PlcString;
const BirthDay: TUC_Date;
const Comments: ComString): Boolean;
function FillTStrings: TStrings;
function FindItem (FullName: string): pointer;
function FillItemsByGroup (Groups: GrpArr): TStrings;
property Count: Integer read GetSize;
end;{TPeople = class}
procedure FillGroupArr;
procedure CutNSP (str: string; var Name, Surname, PatrName: NamString);
procedure Zodiac (Date: TUC_Date; var Month, Year: string);
function UC_StrToDate (str: string): TUC_Date;
function UC_DateToStr (Date: TUC_Date): string;
function UC_StrToTime (str: string): TUC_Time;
function UC_TimeToStr (Time: TUC_Time): string;
function LeadZero (w: Word; Count: Byte = 1): string;
ПродолжениеприложенияА
var
GroupArr: array [0.8] of string[20];
FAdr: TextFile;
FAdrWay: string;
implementation
constructor TPeople. Create;
begin
inherited;
if FFirst <> nil then Clear;
FFirst := nil;
end;{constructor TPeople. Create}
destructor TPeople. Destroy;
begin
if FFirst <> nil then Clear;
end;{destructor TPeople. Destroy}
procedure TPeople. Clear;
var
Item: PPerson;
begin
while FFirst <> nil do begin
Item := FFirst;
FFirst := FFirst. Next;
Dispose (Item);
end;{while FFirst <> nil}
end;{procedure TPeople. Clear}
//отвечаетзавводФИО. Адресамобильныеитд.
function TPeople. Add (const Name, PatrName, Surname: NamString;
const HomeTel, WorkTel, MobiTel, ICQ: TelString;
constGroup: GrpType;
ПродолжениеприложенияА
const EMail, HomeAdr, WorkAdr, Web: AdrString;
const Country, City: PlcString;
const BirthDay: TUC_Date;
const Comments: ComString): Boolean;
var
Item: PPerson;
begin
Result := True;
try
New (Item);
Item.Name:= Name;
Item.PatrName := PatrName;
Item.Surname := Surname;
Item.HomeTel := HomeTel;
Item.WorkTel := WorkTel;
Item.MobiTel := MobiTel;
Item.ICQ := ICQ;
Item.Group:= Group;
Item.EMail:= EMail;
Item.HomeAdr:= HomeAdr;
Item.WorkAdr:= WorkAdr;
Item.Web := Web;
Item.Country := Country;
Item.City := City;
Item.BirthDay := BirthDay;
Item.Comments := Comments;
Item.Prev := nil;
if Count > 1 then FFirst.Next.Prev := FFirst;
Item.Next := FFirst;
ПродолжениеприложенияА
FFirst := Item;
except
Result := False;
end;{try except}
end;{function TPeople. Add}
function TPeople. ReadFromFile (const F: TextFile): Boolean;
var
Name, PatrName, Surname: NamString;
HomeTel, WorkTel, MobiTel, ICQ: TelString;
Group: GrpType;
EMail, HomeAdr, WorkAdr, We: AdrString;
Country, City: PlcString;
Birth: string;
Comments: ComString;
I: Integer;
begin
Result := True;
try
for I := 0 to 5 do Readln (F, GroupArr[i]);
Readln (F);
while not Eof (F) do begin
Readln (F, Name);
Readln (F, PatrName);
Readln (F, Surname);
Readln (F, HomeTel);
Readln (F, WorkTel);
Readln (F, MobiTel);
Readln (F, ICQ);
Readln (F, Group);
ПродолжениеприложенияА
Readln (F, EMail);
Readln (F, HomeAdr);
Readln (F, WorkAdr);
Readln (F, Web);
Readln (F, Country);
Readln (F, City);
Readln (F, Birth);
Readln (F, Comments);
Readln (F);
Add (Name, PatrName, Surname, HomeTel, WorkTel, MobiTel, ICQ,
Group, EMail,
HomeAdr, WorkAdr, Web, Country, City, UC_StrToDate (Birth), Comments)
end;{while not Eof (F)}
except
Result := False;
end;{try except}
end;{function TPeople. ReadFromFile}
function TPeople. SaveToFile (const F: TextFile): Boolean;
var
Item: PPerson;
I: Integer;
begin
Result := True;
try
for I := 0 to 5 do Writeln (F, GroupArr[i]);
Writeln (F);
Item := FFirst;
while Item <> nil do begin
Writeln (F, Item.Name);
ПродолжениеприложенияА
Writeln (F, Item. PatrName);
Writeln (F, Item. Surname);
Writeln (F, Item. HomeTel);
Writeln (F, Item. WorkTel);
Writeln (F, Item. MobiTel);
Writeln (F, Item. ICQ);
Writeln (F, IntToStr (Item.Group));
Writeln (F, Item. EMail);
Writeln (F, Item. HomeAdr);
Writeln (F, Item. WorkAdr);
Writeln (F, Item. Web);
Writeln (F, Item. Country);
Writeln (F, Item. City);
Writeln (F, UC_DateToStr (Item.BirthDay));
Writeln (F, Item. Comments);
Writeln (F, Line);
Item := Item^.Next;
end;{while Item<>nil}
except
Result := False;
end;{try except}
end;{function TPeople. SaveToFile}
function TPeople. GetSize: Integer;
var
Count: Integer;
Item: PPerson;
begin
Count := 0;
Item := FFirst;
ПродолжениеприложенияА
if Item <> nil then begin
while Item <> nil do begin
Inc (Count);
Item := Item. Next;
end;{while Item <> nil}
end;{if Item <> nil}
Result := Count;
end;{function TPeople. GetSize}
function TPeople. Delete (const p: pointer): Boolean;
var
Item, Prev, Next: PPerson;
begin
if p <> nil then begin
Item := p;
Prev := Item. Prev;
Next := Item. Next;
Dispose (Item);
if Prev <> nil then begin
Item := Prev;
Item.Next := Next;
end else FFirst := Next;
if Next <> nil then begin
Item := Next;
Item.Prev := Prev;
end;{if Next <> nil}
if FFirst = nil then begin
Clear;
Create;
end;{ifFFirst<>nil}
ПродолжениеприложенияА
Result := True;
end else Result := False;
end;{function TPeople. Delete}
function TPeople. GetItem (const p: pointer;
var Name, PatrName, Surname: NamString;
var HomeTel, WorkTel, MobiTel, ICQ: TelString;
var Group: GrpType;
var EMail, HomeAdr, WorkAdr, Web: AdrString;
var Country, City: PlcString;
var BirthDay: TUC_Date;
var Comments: ComString): Boolean;
var
Item: PPerson;
begin
Item := p;
if Item <> nil then begin
Name := Item.Name;
PatrName := Item. PatrName;
Surname := Item. Surname;
HomeTel := Item. HomeTel;
WorkTel := Item. WorkTel;
MobiTel := Item. MobiTel;
ICQ := Item. ICQ;
Group := Item. Group;
EMail:= Item. EMail;
HomeAdr:= Item. HomeAdr;
WorkAdr:= Item. WorkAdr;
Web := Item. Web;
Country:= Item. Country;
ПродолжениеприложенияА
City := Item. City;
BirthDay := Item. BirthDay;
Comments := Item. Comments;
Result := True;
end else Result := False;
end;{function TPeople. GetItem}
function TPeople. Modify (const p: pointer;
const Name, PatrName, Surname: NamString;
const HomeTel, WorkTel, MobiTel, ICQ: TelString;
const Group: GrpType;
const EMail, HomeAdr, WorkAdr, Web: AdrString;
const Country, City: PlcString;
const BirthDay: TUC_Date;
const Comments: ComString): Boolean;
var
Item: PPerson;
begin
Item := p;
if Item <> nil then begin
Item.Name := Name;
Item.PatrName := PatrName;
Item.Surname := Surname;
Item.HomeTel := HomeTel;
Item.WorkTel := WorkTel;
Item.MobiTel := MobiTel;
Item.ICQ := ICQ;
Item.Group:= Group;
Item.EMail := EMail;
Item.HomeAdr:= HomeAdr;
ПродолжениеприложенияА
Item.WorkAdr:= WorkAdr;
Item.Web := Web;
Item.Country:= Country;
Item.City:= City;
Item.BirthDa:= BirthDay;
Item.Comments := Comments;
Result := True;
end else Result := False;
end;{function TPeople. Modify}
function TPeople. FillTStrings: TStrings;
var
Item: PPerson;
Lines: TStrings;
begin
Item := FFirst;
Lines := TStringList. Create;
while Item <> nil do begin
Lines.Add (Item.Surname +', '+ Item.Name +' '+ Item. PatrName);
Item := Item. Next;
end;{while Item <> nil}
Result := Lines;
end;{function TPeople. FillTStrings}
function TPeople. FindItem (FullName: string): pointer;
var
p, Item: PPerson;
Name, SurName, PatrName: NamString;
bN, bS, bP: Boolean;
begin
CutNSP (FullName, Name, SurName, PatrName);
ПродолжениеприложенияА
Item := FFirst;
p := nil;
while (Item <> nil) and (p = nil) do begin
if Name = Item.Name then bN := True else bN := False;
if Surname = Item. Surname then bS := True else bS := False;
if PatrName = Item. PatrName then bP := True else bP := False;
if (bN = True) and (bS = True) and (bP = True) then p := Item else Item := Item. Next;
end;{while Item^<>nil}
Result := p;
end;{function TPeople. FindItem}
function TPeople. FillItemsByGroup (Groups: GrpArr): TStrings;
var
Item: PPerson;
Lines: TStrings;
I: Integer;
begin
Item := FFirst;
Lines := TStringList. Create;
while Item <> nil do begin
for I := 0 to 8 do begin
if Groups[I] = True then if I = Item. Group then begin
Lines.Add (Item.Surname +', '+ Item.Name +' '+ Item. PatrName);
Break;
end;
end;
Item := Item. Next;
end;{while Item <> nil}
Result := Lines;
ПродолжениеприложенияА
end;{function TPeople. FillItemsByGroup}
procedureFillGroupArr;
Begin// Отвечает за сортировку по группам.
GroupArr[0] := ' группа 1';
GroupArr[1] := 'группа 2';
GroupArr[2] := 'группа 3';
GroupArr[3] := 'группа 4';
GroupArr[4] := ' группа 5';
GroupArr[5] := группа 6';
GroupArr[6] := 'личная информация';
GroupArr[7] := 'другие';
GroupArr[8] := 'безгруппы';
end;
procedure
CutNSP (str: string; var Name, Surname, PatrName: NamString);
var
k: Integer;
begin
k := Pos (', ', str);
PatrName := '';
Surname := Copy (str, 1, k-1);
str := Copy (str, k+2, Length (str));
k := Pos (' ', str);
if k = Length (str) then Name := Copy (str, 1, k-1) else begin
Name := Copy (str, 1, k-1);
PatrName := Copy (str, k+1, Length (str));
end;
end;{procedureCutNSP}
//отвечает за ввод и отображении даты рождения ПродолжениеприложенияА
procedure Zodiac (Date: TUC_Date; var Month, Year: string);
var
k: Integer;
begin
case Date. Month of
1: if Date. Day >= 20 then Month;
2: if Date. Day >= 19 then Month;
3: if Date. Day >= 21 then Month;
4: if Date. Day >= 20 then Month;
5: if Date. Day >= 21 then Month;
6: if Date. Day >= 22 then Month;
7: if Date. Day >= 23 then Month;
8: if Date. Day >= 23 then Month;
9: if Date. Day >= 23 then Month;
10: if Date. Day >= 23 then Month;
11: if Date. Day >= 23 then Month;
12: if Date. Day >= 22 then Month;
end;
function UC_StrToDate (str: string): TUC_Date;
var
Date: TUC_Date;
ValCode: Integer;
begin
Val (Copy (str, 1,2), Date. Day, ValCode);
Val (Copy (str, 4,2), Date. Month, ValCode);
Val (Copy (str, 7,4), Date. Year, ValCode);
Result:=Date;
end;{function UC_StrToDate}
function UC_DateToStr (Date: TUC_Date): string;
ПродолжениеприложенияА
begin
Result:=
LeadZero (Date.Day, 2)+'.'+LeadZero (Date.Month, 2)+'.'+LeadZero (Date.Year, 4);
end;{function UC_DateToStr}
function UC_StrToTime (str: string): TUC_Time;
var
Time: TUC_Time;
ValCode: Integer;
begin
Val (Copy (str, 1,2), Time. Hour, ValCode);
Val (Copy (str, 4,2), Time. Minute, ValCode);
Result:=Time;
end;{function UC_StrToTime}
function UC_TimeToStr (Time: TUC_Time): string;
begin
Result := LeadZero (Time.Hour, 2)+':'+LeadZero (Time.Minute, 2);
end;{function UC_TimeToStr}
function LeadZero (w: Word; Count: Byte = 1): string;
var
s: string;
begin
Str (w, s);
while Count>Length (s) do s:='0'+s;
Result:=s;
end;{function LeadZero}
begin
FillGroupArr;
end.