Информационная система 'Техническое обслуживание станков'
МИНИСТЕРСТВО
ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УЧРЕЖДЕНИЕ
ОБРАЗОВАНИЯ
«ГРОДНЕНСКИЙ
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ ЯНКИ КУПАЛЫ»
ФИЗИКО-ТЕХНИЧЕСКИЙ
ФАКУЛЬТЕТ
КУРСОВОЙ
ПРОЕКТ
по
дисциплине: Представление знаний в информационных системах на тему: Решение
задач Вариант №15
СТУДЕНТ:
курса, 1 группы,
заочного полного отделения
Специальности:ИИТ
Кургун А. В.
РУКОВОДИТЕЛЬ:
Садовская О.И
Гродно,2014
Содержание
Введение
.
Анализ предметной области
.1
Назначение проектируемой базы данных
.1.1
Требования к информации
.1.2
Требования к надежности
.1.3
Требования к составу и параметрам технических средств
.
Инфологическая (концептуальная) модель предметной области
.1
Описание информационных объектов
.2
Нормализация информационных объектов
.
Логическая модель данных
.
Физическая модель базы данных
.1
Описание выбранной СУБД
.2
Создание структуры БД в СУБД MS ACCESS
.
Программирование приложения
.
Описание работы с системой
Заключение
Список
использованных источников
Приложение
Введение
Большинство приложений, которые предназначены
для выполнения хотя бы какой-нибудь полезной работы, тем или иным образом
используют структурированную информацию или, другими словами, упорядоченные
данные. Такими данными могут быть, например, списки заказов на тот или иной
товар, списки предъявленных и оплаченных счетов или список телефонных номеров
ваших знакомых. Обычное расписание движения автобусов в городе - это тоже
пример упорядоченных данных.
При компьютерной обработке информации,
упорядоченные каким-либо образом данные принято хранить в базах данных - особых
файлах, использование которых вместе со специальными программными средствами
позволяет пользователю как просматривать необходимую информацию, так и, по мере
необходимости, манипулировать ею, например, добавлять, изменять, копировать,
удалять, сортировать и т.д.
Цель курсового проекта - приобретение студентом
практических навыков по формулированию требований к разрабатываемым базам
данных и построению их моделей. Для ее достижения необходимо разработать
структуру реляционной базы данных для информационной системы «Техническое
обслуживание станков». Эта система предназначена отслеживания финансовой
стороны работы компании.
Объектом управления является процесс учета
обслуживания станков.
Предметом исследования является модель
информационной системы, отражающий процессы деятельности программного
обеспечения для отслеживания деятельности компании, работающей со станками.
Цель управления состоит в создании модели
информационной системы финансовой стороны работы компании.
Задачи данного курсового проекта:
Сформулировать и проанализировать исходные
данные;
Построить инфологическую модель;
Построить логическую модель;
Спроектировать и построить в среде выбранной
СУБД физическую компьютерную структуру данных.
1. Анализ предметной области
информационная система база данные
Описание предметной области
Ваше предприятие занимается ремонтом станков и
другого промышленного оборудования. Вашей задачей является отслеживание
финансовой стороны деятельности предприятия.
Клиентами Вашей компании являются промышленные
предприятия, оснащенные различным сложным оборудованием. В случае поломок
оборудования они обращаются к Вам.
Ремонтные работы в Вашей компании организованы
следующим образом: все станки проклассифицированы по странам-производителям,
годам выпуска и маркам. Все виды ремонта отличаются названием,
продолжительностью в днях, стоимостью. Исходя из этих данных, по каждому факту
ремонта Вы фиксируете вид станка и дату начала ремонта.
Нужно не просто подразделять станки по типам, а
иметь информацию о том, сколько раз ремонтировался тот или иной конкретный
станок.
База данных будет разработана в СУБД MS Access,
как наиболее удобной и популярной. Содержание создаваемой базы данных не
повлияет на её структуру и является примерным.
На первом этапе проектирования БД определяют:
цель создания БД, ее функции и примерный перечень информации.
Целью создания БД "Техническое обслуживание
станков" является автоматизация финансовой стороны деятельности
предприятия.
База данных должна отвечать требованиям тех, кто
будет непосредственно с ней работать. Для этого нужно определить темы, которые
должна покрывать база данных, отчеты, которые она должна выдавать,
проанализировать формы, которые в настоящий момент используются для записи
данных, сравнить создаваемую базу данных с хорошо спроектированной, подобной ей
базой.
1.1 Назначение проектируемой базы данных
Необходимо разработать базу данных для
автоматизации учета проведения ремонта станков.
Предполагается, что база данных должна хранить
информацию о станках, их видах, производителях, датах ремонта, количестве
ремонтов.
Определим функции, выполняемые проектируемой
базы данных и задачи, решаемые системой.
Функции проектируемой БД:
хранение информации о станках,
хранение информации о ремонтах,
хранения информации о производителях,
обновление и добавление информации,
выдача итоговой информации в виде отчетов.
1.1.1 Требования к информации
Ниже приведенные таблицы можно изменять и
дополнять непосредственно в базе данных.
Таблицы «Виды ремонта», «Ремонт», «Станки» могут
заполняться непосредственно в программном приложении либо в базе данных.
Для вывода информации на экран были разработаны
специальные формы, упрощающие работу с записями таблиц базы данных.
Данная база данных предоставляет следующие
возможности:
просмотр информации в специальных формах.
изменение информации, добавление новой.
Ограничения представляют собой набор некоторых
условий налагаемых на элементы базы данных (таблицы, столбцы и т.д.) или всю
базу данных, гарантирующие, что информация будет подчиняться определенным
правилам целостности данных.
В данном курсовом проекте было использовано
ограничение ссылочной целостности, т. к. значения одних столбцов таблиц связаны
со значениями других столбцов в другой таблице. В каждой из таблиц
проектируемой базы данных использовались первичный и внешний ключи, содержащие
уникальные значения столбцов. Благодаря обеспечению ссылочной целостности
данных была исключена возможность дублирования записей в базе данных,
обеспечено каскадное обновление, вставка и удаление записей базы данных.
1.1.2 Требования к надежности
Защита базы данных от несанкционированного
доступа осуществляется с помощью создания роли Администратора, которая
используется для доступа к редактированию данных в приложении.
1.1.3 Требования к составу и параметрам
технических средств
Для успешной эксплуатации программного продукта
необходим персональный компьютер со следующими характеристиками: процессор
Intel Pentium с тактовой частотой 800 МГц и выше, оперативная память - не менее
256 Мбайт, свободное дисковое пространство - не менее 700 Мбайт, устройство для
чтения компакт-дисков, монитор типа Super VGA (число цветов - 256) с диагональю
не менее 15″, принтер.
2.
Инфологическая (концептуальная) модель предметной области
2.1 Описание информационных объектов
Все информационные объекты рассматриваемой
предметной области поделены на следующие структурные элементы: информационные
объекты, относящиеся к ремонту станков: виды ремонта, марки, производители, год
выпуска, время ремонта.
Рассмотрим каждый из этих структурных элементов
и выделим сущности.
Таблица 2.1. Сущности и их атрибуты
Сущность
|
Атрибут
|
Тип
данных
|
Виды
ремонта
|
Код
|
Счетчик
|
|
Название
|
Текстовый
|
|
Продолжительность
|
Текстовый
|
|
Стоимость
|
Числовой
|
Ремонт
|
Код
|
Счетчик
|
|
Вид
станка
|
Текстовый
|
|
Марка
|
Текстовый
|
|
Дата
начала
|
Дата/
Время
|
|
Дата
окончания
|
Дата/
Время
|
Станки
|
Код
|
Счетчик
|
|
Страна
производитель
|
Текстовый
|
|
Марка
|
Текстовый
|
|
Год
выпуска
|
Числовой
|
|
Количество
ремонтов
|
Числовой
|
2.2 Нормализация информационных объектов
Нормализацией называется формальная процедура, в
ходе которой атрибуты данных группируются в таблицы, а таблицы группируются в
базу данных (БД).
Результатами анализа проведенного в предыдущем
разделе стали 3 сущности: Виды ремонта, Станки, Ремонт. Каждая сущность
характеризуется группой атрибутов, часть из которых может дублироваться в
других сущностях. Для оптимизации данных необходимо провести процедуру
нормализации, которая выполняется поэтапно.
Первая нормальная форма (1НФ). Для нее
требуется, чтобы таблица была плоской и не содержала повторяющихся групп. У
плоской таблицы есть только две характеристики - длина (количество записей или
строк) и ширина (количество полей или столбцов). Такая таблица не должна
содержать ячеек, включающих несколько значений. Т.е. в одну ячейку не должны
помещаться несколько атрибутов.
Для приведения сущностей к таблицам первой
нормальной форме, необходимо исключить дублирование множества характеристик
между двумя сущностями, путем присвоения ключевых атрибутов тем сущностям,
которые их не имеют.
Для второй нормальной формы (2НФ) требуется,
чтобы все поля таблицы зависели от первичного ключа, то есть, чтобы первичный
ключ однозначно определял запись и не был избыточен. Значение первичного ключа
в таблице БД должно быть уникальным, т.е. в таблице не должно существовать двух
и более записей с одинаковым значением первичного ключа. Те поля, которые
зависят только от части первичного ключа, должны быть выделены в составе отдельных
таблиц. Примером приведение таблиц ко второй нормальной форме, является
разделение сведений об видах ремонтов таблице.
Для третьей нормальной формы (ЗНФ) требуется,
чтобы все не ключевые столбцы таблицы зависели от первичного ключа таблицы, но
были независимы друг от друга. Для этого требуется, чтобы таблицы были
приведены к 1НФ и 2НФ.
3.
Логическая модель данных
Следующий этап в создании информационной системы
- проектирование информационных структур. Результатом этого должна стать
логическая модель данных, представляющая собой графическое изображение
структуры информационной системы: названия таблиц с именами входящих в них
полей и типами связей между полями таблиц с данными.
С учетом требований к содержанию реляционных
таблиц получен список полей для каждой таблицы. В построенной ER-диаграмме нет
многозначных атрибутов и связей «многие ко многим».
Модель “сущность - связь” (МСС) (entity-relation
diagram) является неформальной моделью предметной области и используется на
этапе инфологического проектирования БД. Моделируются объекты предметной
области и их взаимоотношения. В данном курсовом проекте представлена модель
«сущность - связь» для сетевой базы данных «».
Рисунок 1 ER-диаграмма для базы
данных «Техническое обслуживание станков»
4.
Физическая модель базы данных
4.1 Описание выбранной СУБД
Реляционная база данных представляет собой
множество взаимосвязанных таблиц, каждая из которых содержит информацию об
объектах определенного типа.
Наиболее удобной и популярной системой
управления базой данных (СУБД), которая позволит реализовать все необходимые
задачи по разработке базы данных и программного приложения является продукт
компании Microsoft - Access.Access является настольной СУБД реляционного типа.
Достоинством Access является то, что она имеет очень простой графический
интерфейс, который позволяет не только создавать собственную базу данных, но и
разрабатывать простые и сложные приложения. В отличие от других настольных
СУБД, Access хранит все данные в одном файле, хотя и распределяет их по разным
таблицам.позволяет не только вводить данные в таблицы, но и контролировать
правильность вводимых данных. Для этого необходимо установить правила проверки
прямо на уровне таблицы. Тогда каким бы образом не вводились данные - прямо в
таблицу, через экранную форму или на странице доступа к данным, Access не
позволит сохранить в записи те данные, которые не удовлетворяют заданным
правилам.
Таблицы баз данных могут включать в себя
огромное количество записей, и при этом СУБД обеспечивает удобные способы
извлечения из этого множества нужной информации.
В Access возможно создание связей между
таблицами, что позволяет совместно использовать данные из разных таблиц. При
этом для пользователя они будут представляться одной таблицей.
Устанавливая взаимосвязи между отдельными
таблицами, Access позволяет избежать ненужного дублирования данных, сэкономить
память компьютера, а также увеличить скорость и точность обработки информации.
Для этого таблицы, содержащие повторяющиеся данные, разбивают на несколько
связанных таблиц. может поддерживать одновременную работу с базой данных 50
пользователей, при этом все пользователи гарантировано будут работать с
актуальными данными.
4.2 Создание структуры БД в СУБД MS ACCESS
На рисунках ниже представлены разработанные
таблицы:
Рисунок 2 - Таблица «Станки»
Рисунок 3 - Таблица «Ремонт»
Рисунок 4 - Таблица «Виды ремонта»
Схема базы данных формируется после
окончания работы над макетами таблиц с помощью меню Сервис/Схема данных.
При формировании связей между
таблицами обязательно устанавливается поддержка целостности данных
Готовая схема базы данных приведена
ниже:
Рисунок 5 - Схема данных
5.
Программирование приложения
Последовательность действий
Создадим меню из нескольких форм. Для этого
разместим на форме приложения компонент MainMenu и отредактируем его.
Организуем доступ
к
БД
через
ADOConnection, ADOTable, DataSource. Разместим следующие
компоненты (Рис. 6):
Рисунок 6 - Компоненты
Настройка компонентов::
свойство ConnectionString - открывается окно, в
нем по нажатию кнопки Build выбираем Microsoft Jet 4.0v OLE DB Provider, потом
по кнопке Next - выбираем нашу БД
свойство
Login Promt: False
свойство
Connected: True
DataSource
свойство DataSet - выбираем соответствующий
компонент AdoQuery;
Если всё сделано правильно, то после задания
таблицы компонент DBGrid1 заполнится данными (рис. 7).
Рисунок 7 Приложение для просмотра таблицы базы
данных Access
Для большего удобства при создании приложений
баз данных реализовано добавление данных
void __fastcall
TMainForm::menuAddGoodsClick(TObject *Sender)
{>CreateForm(__classid(TGoodsForm),
&GoodsForm);
GoodsForm->ShowModal();
}
Рисунок 8
Поиск записей
Для поиска записей использован методом Locate. К
примеру, поиск будет производиться по заданному полю. Для поиска необходимо
поместить на форму компонент для ввода критерия поиска и кнопку.
В обработчик события нажатия кнопки «Поиск»
записываем:
void __fastcall
TMainForm::btnSearchClick(TObject *Sender)
{(editSearch->Text.IsEmpty());Options;.Clear();<<
loCaseInsensitive << loPartialKey;(!DataSource->DataSet->Locate(boxSearch->Text,editSearch->Text,
Options))(Application->Handle, "По
вашему
запросу
ничего
не
найдено!",
"Поиск",
MB_ICONINFORMATION);
}
Очистка базы данных происходит следующим
образом:
void __fastcall
TMainForm::menuClearBaseClick(TObject *Sender)
{(MessageBoxA(Application->Handle,
"Вы
действительно
хотите
очистить
текущую
базу?",
"Подтверждение
очистки",
MB_ICONQUESTION + MB_YESNO) ==
IDNO);>DataSet->Edit();>DataSet->First();
DataSource->DataSet->Delete();(!DataSource->DataSet->Eof)
{>DataSet->Delete();>DataSet->Next();
}
}
6.
Описание работы с системой
Целью проведения испытаний является проверка
работоспособности (надежности) программы при различных условиях ее
функционирования.
Программа должна обеспечивать корректность ввода
исходных данных (путем осуществления соответствующих проверок и информирования
пользователя о возникших неточностях в работе), а также получение
непротиворечивого результата.
Разрабатываемый интерфейс включает в себя
средства редактирования всех используемых для расчета данных и является простым
и понятным в работе для обычного пользователя.
При запуске программы появляется окно
Рисунок 9 - Окно авторизации
Рисунок 10 - Главное окно
Главное окно, которое содержит
главное меню,
вкладки,
возможность поиска записей,
область отображения и редактирования данных
(рис. 11-13):
Ввод данных максимально автоматизирован.
Рисунок 11
Рисунок 12
Рисунок 13
Редактирование (изменение, удаление)
базы данных возможно только при правильной авторизации пользователя.
Рисунок 13
Кроме того, на формах предусмотрена возможность
добавления покупателя, товара, заказа.
Поиск в программе работает корректно согласно
предъявляемым требованиям.
В данном приложении организован диалог с пользователем
в виде сообщений системы:
Рисунок 14
Рисунок 15
Рисунок 16
Программа содержит справочную
информацию (рис. 17).
Рисунок 17
Таким образом, проведенное тестирование
программы не выявило сбойных ситуаций и некорректностей в ее работе. Следует
считать, что в целом программа протестирована, отвечает поставленным
требованиям и вполне работоспособна.
Заключение
В ходе выполнения курсового проекта:
были закреплены знания по курсу «Представление
знаний в информационных системах»;
приобретен опыт при проектировании и
программировании баз данных;
приобретен опыт при разработке
объектно-ориентированных программ;
освоены методы передачи данных между
приложениями;
изучены возможности создания справочной системой
высокой степени сложности и различных форматов.
Программа имеет достаточно ясный и понятый
дружелюбный пользовательский интерфейс, обеспечивающий удобство в работе и
обеспечивающий получение необходимой пользователю информации с наименьшими
затратами времени.
Решены следующие задачи: возможность
просматривать, редактировать, добавлять данные, получать результаты запросов.
Так же обеспечена удобная работа для персонала организации. Следует отметить
что:
при проектировании использовалась точка зрения
самого разработчика;
среда разработки
-Microsoft Access и
Borland C++ Builder.
Таким образом, разработанное в ходе выполнения
курсовой работы приложение является законченным программным продуктом.
Программа может быть использована для
отслеживания финансовой стороны работы предприятия, занимающегося ремонтом
станков и другого промышленного оборудования.
Список использованных источников
Карпова
Т.С. Базы данных. Модели, разработка, реализация/СПб.: Питер, 2002. - 304 с.
Хомоненко
А.Д., Цыганков В.М., Мальцев М.Г. Базы данных. Учебник для ВУЗов /под ред.
проф.А.Д. Хомоненко СПб.:КОРОНА принт, 2000.- 416
Корнеев
В.В. и др. Базы данных. Интеллектуальная обработка информации // М.:Нолидж,
2000.- 352 с.
Ханcен
Г., Ханcен Д. Базы данных. Разработка и управление/М.: Бином, 1999-704С.
Глушаков
С.В., Ломотько Д.В. Базы данных. Учебный курс // Харьков: Фолио; Ростов н/Д:
Феникс; Киев: Абрис, 2000. - 504 с.
Игорева,
Е.Л., Основы алгоритмизации и программирования (3-е издание)./ И.И. Попов, О.Л.
Игорева - М. : Инфа-М, 2006 - 432 с.
Приложение
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
#include "Unit3.h"
#include "Unit4.h"
#include "Unit5.h"
//
---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"*Form2;a;int
fld;
//
---------------------------------------------------------------------------
__fastcall
TForm2::TForm2(TComponent* Owner) : TForm(Owner) {
}
//
---------------------------------------------------------------------------__fastcall
TForm2::FormCreate(TObject *Sender) {->Position = poScreenCenter;
ComboBox1->Items->Add(ComboBox1->Text);
}
//
---------------------------------------------------------------------------__fastcall
TForm2::N2Click(TObject *Sender) {(mrOk == MessageDlg("Вы
действительно
хотите
выйти?",
mtConfirmation,() << mbOK << mbCancel, 0)) {->Close();
}
}
//
---------------------------------------------------------------------------__fastcall
TForm2::RadioButton1Click(TObject *Sender) {->DataSet =
ADOTable1;->Active = true;->Enabled = true;->Enabled =
true;->Enabled = true;->Enabled = true;->Enabled =
true;->Visible=true;
ComboBox2->Visible=false;
ComboBox3->Visible=false;
}
//
---------------------------------------------------------------------------__fastcall
TForm2::RadioButton2Click(TObject *Sender)
{->DataSet =
ADOTable2;->Active = true;->Enabled = true;->Enabled =
true;->Enabled = true;->Enabled = true;
ComboBox3->Visible=true;
ComboBox2->Visible=false;
ComboBox1->Visible=false;
}
//
---------------------------------------------------------------------------__fastcall
TForm2::RadioButton3Click(TObject *Sender) {->DataSet =
ADOTable3;->Active = true;->Enabled = true;->Enabled =
true;->Enabled = true;->Enabled = true;->Visible=true;
ComboBox3->Visible=false;
ComboBox1->Visible=false;
}
//
---------------------------------------------------------------------------__fastcall
TForm2::Button6Click(TObject *Sender) {(RadioButton1->Checked == 1)
{
Form5->Button1->Visible=true;->Button4->Visible=false;->ShowModal();
}(RadioButton2->Checked == 1)
{
Form3->Button1->Visible=true;
Form3->Button4->Visible=false;->ShowModal();
}(RadioButton3->Checked == 1)
{->Button1->Visible=true;
Form4->Button4->Visible=false;
}
}
//
--------------------------------------------------------------------------__fastcall
TForm2::FormClose(TObject *Sender, TCloseAction &Action) {->Close();
}
//
---------------------------------------------------------------------------__fastcall
TForm2::Button1Click(TObject *Sender) {
if (mrOk == MessageDlg("Вы действительно
хотите удалить?", mtConfirmation,
TMsgDlgButtons() << mbOK
<< mbCancel, 0)) {->DataSet->Delete();
}
}
//
---------------------------------------------------------------------------__fastcall
TForm2::Button3Click(TObject *Sender) {(RadioButton1->Checked == 1)
{
Form5->Edit1->Text =
Form2->ADOTable1->FieldByName("Название")->AsString;
Form5->Edit2->Text =
Form2->ADOTable1->FieldByName("Продолжительность")->AsString;
Form5->Edit3->Text =
Form2->ADOTable1->FieldByName("Стоимость")->AsString;->Button4->Visible=true;->Button1->Visible=false;->ShowModal();
}(RadioButton2->Checked == 1) {
Form3->Edit1->Text =
Form2->ADOTable2->FieldByName("Страна
производитель")->AsString;
Form3->Edit2->Text =
Form2->ADOTable2->FieldByName("Марка")->AsString;
Form3->Edit3->Text =
Form2->ADOTable2->FieldByName("Год
выпуска")->AsString;->Button4->Visible=true;->Button1->Visible=false;->ShowModal();
}(RadioButton3->Checked == 1) {
Form4->Edit1->Text =
Form2->ADOTable3->FieldByName("Вид
станка")->AsString;
Form4->ComboBox1->Text =
Form2->ADOTable3->FieldByName("Марка")->AsString;
Form4->DateTimePicker1->DateTime
= Form2->ADOTable3->FieldByName("Дата
начала")->AsDateTime;
Form4->DateTimePicker2->DateTime
= Form2->ADOTable3->FieldByName("Дата
окончания")->AsDateTime;->Button4->Visible=true;->Button1->Visible=false;->ShowModal();
}
}
//
---------------------------------------------------------------------------__fastcall
TForm2::SpeedButton2Click(TObject *Sender)
{(RadioButton1->Checked == 1)
{->ShowModal();
}(RadioButton2->Checked == 1)
{->ShowModal();
}(RadioButton3->Checked == 1) {
Form4->ShowModal();
}
}
//---------------------------------------------------------------------------__fastcall
TForm2::Button2Click(TObject *Sender)
{(RadioButton1->Checked == 1)
{(Edit2->Text.IsEmpty());
TLocateOptions
Options;.Clear();<< loCaseInsensitive <<
loPartialKey;(!DataSource1->DataSet->Locate(ComboBox1->Text,Edit2->Text,
Options))(Application->Handle, "По
вашему
запросу
ничего
не
найдено!",
"Поиск",
MB_ICONINFORMATION);
}(RadioButton2->Checked == 1)
{
if(Edit2->Text.IsEmpty());
TLocateOptions
Options;.Clear();<< loCaseInsensitive <<
loPartialKey;(!DataSource1->DataSet->Locate(ComboBox3->Text,Edit2->Text,
Options))(Application->Handle, "По
вашему
запросу
ничего
не
найдено!",
"Поиск",
MB_ICONINFORMATION);
}(RadioButton3->Checked == 1)
{
if(Edit2->Text.IsEmpty());
TLocateOptions
Options;.Clear();<< loCaseInsensitive <<
loPartialKey;(!DataSource1->DataSet->Locate(ComboBox2->Text,Edit2->Text,
Options))(Application->Handle, "По
вашему
запросу
ничего
не
найдено!",
"Поиск",
MB_ICONINFORMATION);
}->Text="";
}
//---------------------------------------------------------------------------__fastcall
TForm2::N3Click(TObject *Sender)
{a = ExtractFilePath(Application->ExeName)+"Spravka.chm";(Handle,L"open",a.c_str(),NULL,NULL,SW_NORMAL);
}