Разработка приложений для баз данных

Автор работы: Пользователь скрыл имя, 10 Марта 2013 в 13:19, курсовая работа

Описание

Цель курсовой работы - закрепление знаний и умений, полученных на лекционных и практических занятиях при изучении дисциплин «Базы данных» и «Разработка приложений для баз данных».
Задача курсовой работы - разработка законченного программного модуля автоматизированной системы обработки информации и управления.

Содержание

1. Описание предметной области 4
2. Описание системы 5
а) Реляционная модель данных 5
б) Таблица атрибутов 6
3. Проектирование базы данных 7
а) ER-диаграмма 7
б) Диаграмма экземпляров 7
в) Схема таблиц и связей 8
г) Проверка на НФБК 8
д) Концептуальная схема базы данных 9
е) Ссылочная целостность 9
ж) Реализация SQL-команд 10
4) Архитектура системы 11
а) Архитектура СУБД 11
б) СУБД 12
в) Метод связи приложения и базы данных 12
г) Язык программирования 13
5) Разработка программы 14
а) Разработка меню 14
б) Разработка пункта «Справочники» 15
в) Разработка пункта «Запросы» 17
г) Разработка пункта «Отчеты» 25
6) Список использованной литературы 29

Работа состоит из  1 файл

курсовая.doc

— 900.00 Кб (Скачать документ)

Ссылочная целостность

Клиент – Подключение

Insert (вставка) – Cascade (каскадное добавление клиента)

Update (изменение) – Cascade (каскадное изменение данных клиента)

Delete (удаление) – Cascade (каскадное удаление клиента)

Телефон – Подключение

Insert (вставка) – Ignore (игнорирование добавления телефона)

Update (изменение) – Cascade (каскадное изменение телефона)

Delete (удаление) – Cascade (каскадное удаление телефона)

Менеджер – Подключение

Insert (вставка) – Ignore (игнорирование добавления менеджера)

Update (изменение) – Cascade (каскадное изменение данных менеджера)

Delete (удаление) – Ignore (игнорирование удаления менеджера)

 

 

 

Реализация SQL-команд

Вывести общее количество заключенных договоров, посчитав количество клиентов в таблице «Подключение».

SELECT count(Подключение.Клиент) AS [Количество договоров]

FROM Подключение;

Вывести контактные данные клиента и менеджера, осуществившего его подключение, взяв их из таблиц «Клиент» и «Менеджер».

SELECT Клиент.ФИО AS Клиент_ФИО,  Клиент.Адрес AS Клиент_Адрес, Клиент.[E-mail] AS [Клиент_E-mail], Менеджер.ФИО AS Менеджер_ФИО,  Менеджер.Адрес AS Менеджер_Адрес,  Менеджер.[E-mail] AS [Менеджер_E-mail], Менеджер.[Контактный телефон]

FROM Менеджер INNER JOIN (Клиент INNER JOIN Подключение ON Клиент.ФИО = Подключение.Клиент) ON Менеджер.ФИО = Подключение.Менеджер;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Архитектура системы

Архитектура СУБД

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

Недостатки архитектуры "файл-сервер" решаются при переводе приложений в архитектуру "клиент-сервер". Характерной особенностью архитектуры "клиент-сервер" является перенос вычислительной нагрузки на сервер базы данных (sql-сервер) и максимальная разгрузка приложения клиента от вычислительной работы, а также существенное укрепление безопасности данных – как от злонамеренных, так и просто ошибочных изменений. БД в этом случае помещается на сетевом сервере, как и в архитектуре "файл-сервер", однако прямого доступа к базе данных (БД) из приложений не происходит. Функция прямого обращения к БД осуществляет специальная управляющая программа – сервер БД (sql-сервер), поставляемый разработчиком СУБД.

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

Функциями приложения-клиента являются:

  • Посылка к серверу запросов;
  • Интерпретация результатов запросов, полученных от сервера, и представление их пользователю в требуемой форме;
  • Реализация интерфейса пользователя.

Sql-сервер должен быть  загружен на момент принятия  запроса клиента.  
Функциями сервера БД являются:

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

Таким образом наиболее удобной является архитектура "клиент-сервер", которая предотвращает возникновение ряда проблем при работе с базой данных.

СУБД

Microsoft Office Access или просто Microsoft Access — реляционная СУБД корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных.

MS Access является файл-серверной СУБД и потому применима лишь к маленьким приложениям. Отсутствует ряд механизмов, необходимых в многопользовательских БД, таких, например, как триггеры. Три́ггер (англ. trigger) — это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено наступлением определенного события (действием) — по сути добавлением INSERT или удалением DELETE строки в заданной таблице, или модификации UPDATE данных в определенном столбце заданной таблицы реляционной базы данных.

Существенно расширяет возможности MS Access по написанию приложений механизм связи с различными внешними СУБД: "связанные таблицы" (связь с таблицей СУБД) и "запросы к серверу" (запрос на диалекте SQL, который "понимает" СУБД). Также MS Access позволяет строить полноценные клиент-серверные приложения на СУБД MS SQL Server. При этом имеется возможность совместить с присущей MS Access простотой инструменты для управления БД и средства разработки.

Метод связи  приложения и базы данных

ADO (от англ. ActiveX Data Objects — «объекты данных ActiveX») — интерфейс программирования приложений для доступа к данным, разработанный компанией Microsoft (MS Access, MS SQL Server) и основанный на технологии компонентов ActiveX. ADO позволяет представлять данные из разнообразных источников (реляционных баз данных, текстовых файлов и т. д.) в объектно-ориентированном виде.

Объектная модель ADO состоит из следующих  объектов высокого уровня и семейств объектов:

  • Connection (представляет подключение к удалённому источнику данных)
  • Recordset (представляет набор строк, полученный от источника данных)
  • Command (используется для выполнения команд и SQL-запросов с параметрами)
  • Record (может представлять одну запись объекта Recordset или же иерархическую структуру, состоящую из текстовых данных)
  • Stream (используется для чтения и записи потоковых данных, например, документов XML или двоичных объектов)
  • Errors (представляет ошибки)
  • Fields (представляет столбцы таблицы базы данных)
  • Parameters (представляет набор параметров SQL-инструкции)
  • Properties (представляет набор свойств объекта)

Компоненты ADO используются в языках высокого уровня, таких  как VBScript в ASP, JScript в WSH, Visual Basic, Delphi.

Язык программирования

Delphi (Де́лфи) — среда программирования, в которой используется язык программирования Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения связанные с современными тенденциями (например, с развитием платформы .net) развития языков программирования: появились class helpers, перегрузки операторов и д.р.

Turbo Delphi — интегрированная среда разработки (IDE), разработанная компанией CodeGear, ориентированная в первую очередь на студентов, индивидуальных пользователей и программистов-любителей. Основана на языке программирования Delphi, который является диалектом языка Object Pascal. Основное отличие данного продукта от других продуктов CodeGear - наличие бесплатной версии Turbo Delphi Explorer.

Turbo Delphi 2006 был анонсирован 8 августа 2006 года, и стал доступен для скачивания на сайте www.turboexplorer.com 5 сентября 2006 года.

Существует две версии:

  • Turbo Delphi for Windows — для создания приложений Win32;
  • CLR — для создания машинно-независимого кода для Microsoft .NET

Каждая версия вышла  в двух редакция: свободно распространяемая Explorer edition и Professional edition, стоимостью около 400 долларов. В редакции Professional имеется возможность устанавливать дополнительные визуальные компоненты и модификации IDE, а также присутствует компилятор командной строки.

Turbo Delphi входит в серию  продуктов Delphi 2006. Новых версий среды в бесплатной редакции Explorer не выпускалось. В настоящее время Turbo Delphi Explorer не доступен для скачивания на официальном сайте, также прекращена регистрация новых пользователей, хотя поддержка ранее зарегистрированных пользователей осуществляется.

Разработка  программы

Разработка  меню

На форме «Билайн» устанавливаем компонент MainMenu, форму соединяем с модулем Unit3 используя средство Use Unit (в Файле), создаем в меню необходимые вкладки и подключаем к ним формы:

implementation

 

uses unit2,unit3,unit4,unit5,unit6,unit7, Unit8, Unit9, Unit11, Unit12;

 

{$R *.dfm}

 

 

procedure TForm1.N12Click(Sender: TObject);

begin

form11.ShowModal;

end;

 

procedure TForm1.N13Click(Sender: TObject);

begin

form12.ShowModal;

end;

 

procedure TForm1.N2Click(Sender: TObject);

begin

form2.ShowModal;

end;

 

 

procedure TForm1.N3Click(Sender: TObject);

begin

form4.ShowModal;

end;

 

procedure TForm1.N4Click(Sender: TObject);

begin

form5.ShowModal;

end;

 

procedure TForm1.N5Click(Sender: TObject);

begin

form6.ShowModal;

end;

 

procedure TForm1.N7Click(Sender: TObject);

begin

form7.ShowModal;

end;

 

procedure TForm1.N8Click(Sender: TObject);

begin

form8.ShowModal;

end;

 

procedure TForm1.N9Click(Sender: TObject);

begin

form9.ShowModal;

end;

На этом работа с настойками меню окончена, переходим к разработке форм.

Разработка  пункта «Справочники»

1-й пункт «Справочники»  главного меню содержит пункты выпадающего меню: «Клиент», «Менеджер», «Телефон», «Подключение»:

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

Сначала в модуле (Unit3) выставляем компоненты ADOConnection1, ADOTable1, DataSourse1 (аналогично для оставшихся 3-х таблиц) и задаем для них следующие свойства:

ADOConnection1: свойство ConnectionString=…Build→Выбираем нужный выриант базы данных, в нашем случае MS Access и устанавливаем соединение, задав путь до базы: C:\Users\Юля\Desktop\учеба\приложения для бд\курсовая\Билайн.mdb

ADOTable1: свойство Connection= ADOConnection1, TableName=Клиент, Activ=True

DataSourse1: свойство DataSet= ADOTable1

На этом работа с формой «Клиент» окончена. При ее запуске имеем:

Аналогично имеем 3 оставшиеся формы:

Разработка  пункта «Запросы»

2-й пункт «Запросы»  главного меню содержит пункты  выпадающего меню: «Подключение», «Договор», «Счет»:

Форма «Подключение»  нужна для добавления в базу данных нового клиента, при этом происходит добавление новых строк в таблицы  «Клиент» и «Подключение» и редактирование данных о номере телефона в таблице  «Телефон».

К уже созданным ADOConnection1, ADOTable1, DataSourse1 добавляем компонент ADOCommand для 3-х таблиц, в свойстве Connection= ADOConnection1 (и так же для других компонентов) и в свойстве CommandText= SQL-запрос на добавление строки в таблицу «Клиент» insert into Клиент values(:fio, :dr, :pol, :ad, :mail, :pasp) и в таблицу «Подключение» insert into Подключение values (:kl, :tel, :men, :zak, :deist) и на редактирование трок в таблице «Телефон»: 1. update Телефон set Тариф=:tar Where [№ телефона]=:tel, 2. update Телефон set [Состояние счета]=:sost where [№ телефона]=:tel, 3. update Телефон set [Способ доставки счета]=:dost where [№ телефона]=:tel, 4. update Телефон set [Дата выставления счета]=:vyst where [№ телефона]=:tel.

В событиях формы Form7 указываем для событий OnCreate и OnActivate = FormCreate. Прописываем эту процедуру:

procedure TForm7.FormCreate(Sender: TObject);

var s:string;

    i:integer;

begin

DataModule3.ADOTable2.Open;

DataModule3.ADOTable2.First;

ComboBox1.Items.Clear;

while not  DataModule3.ADOTable2.Eof do

     begin

     s:=DataModule3.ADOTable2.FieldByName('ФИО').Text;

     ComboBox1.Items.Add(s);

     DataModule3.ADOTable2.Next;

     end;

 

DataModule3.ADOTable3.Open;

DataModule3.ADOTable3.First;

ComboBox2.Items.Clear;

while not  DataModule3.ADOTable3.Eof do

     begin

     if DataModule3.ADOTable3.FieldByName('Тариф').Value=Null then

        begin

        s:=DataModule3.ADOTable3.FieldByName('№ телефона').Text;

        ComboBox2.Items.Add(s);

        end;

     DataModule3.ADOTable3.Next;

     end;

 

ComboBox4.Items.Clear;

ComboBox4.Items.Add('sms');

ComboBox4.Items.Add('E-mail');

ComboBox4.Items.Add('Почта');

 

ComboBox5.Items.Clear;

for I := 1 to 31 do

begin

ComboBox5.Items.Add(IntToStr(i));

Информация о работе Разработка приложений для баз данных