Информационная система ремонтной мастерской

Автор работы: Пользователь скрыл имя, 12 Января 2013 в 17:47, курсовая работа

Описание работы

В ходе работы была проанализирована предметная область «Ремонтная мастерская», построена и реализована инфологическая модель: создана информационная система ремонтной мастерской, представляющее собой клиент-серверное приложение. Клиентская часть – Windows-приложение (интерфейс взаимодействия пользователя и базы данных), реализованное средствами Visual Studio 2008. Серверная часть – база данных, реализованная средствами Microsoft Access 2007.

Содержание работы

1 ИССЛЕДОВАНИЕ И АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ 4
1.1 Обзор предметной области 4
1.2 Обзор существующих аналогичных информационных систем 5
1.3 Актуальность разрабатываемой информационной системы 7
1.4 Требования к информационной системе 8
2 ПРОЕКТИРОВАНИЕ МОДЕЛИ БАЗЫ ДАННЫХ 10
2.1 Инфологическое проектирование модели базы данных 10
2.2 Логическое проектирование модели базы данных 14
2.3 Физическое проектирование модели базы данных 19
3 РЕАЛИЗАЦИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ 24
3.1 Реализация функций информационной системы 24
3.2 Формирование и реализация выходной информации 29
ЗАКЛЮЧЕНИЕ 33
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 34

Файлы: 1 файл

Курсовая 2 курс 1 сем.docx

— 2.43 Мб (Скачать файл)

Необходимо  рассмотреть структуру отношения Заказы деталей:

 

Таблица 2.8 – Структура отношения Заказы деталей

Имя атрибута

Имя поля

Домен

№ запроса

Query#

Числовой

Идентификатор детали

detailID

Числовой

Дата запроса

Query_date

Дата/время

Дата получения

Receipt_date

Дата/время


 

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

2.3 Физическое проектирование модели  базы данных

Разработка  клиент-серверного приложения ведется на языке C# в среде разработкиVisualStudio 2005.

База данных данной предметной области разрабатывается в СУБД MSAccess.Выбранный программный продукт входит в широко распространённый офисный пакет Microsoft Office. Эта СУБД не требует сложной настройки, имеет интуитивно-понятный интерфейс, содержит все необходимые типы данных и встроенные функции.

Системные требования Microsoft Access 2010:

  • процессор с тактовой частотой 500 МГц или выше;
  • 256 МБ ОЗУ или больше;
  • 2,0 ГБ свободного места на жестком диске;
  • монитор с разрешением 1024 x 576 или выше;
  • Windows XP с пакетом обновления 3 (SP3) (32-разрядная версия), Windows 7, Windows Vista с пакетом обновления 1 (SP1), Windows Server 2003 с пакетом обновления 2 (SP2) и MSXML 6.0 (только для 32-разрядной версии Office), Windows Server 2008 либо более поздняя 32- или 64-разрядная версия операционной системы.

База данных располагается непосредственно  в папке клиент-серверного приложения и состоит из нескольких таблиц.

В таблице  Сотрудники содержится информация обо  всех сотрудниках мастерской.

 

Рисунок 2.8 – Сотрудники

 

В таблице  Категории сотрудников содержится информация о категориях сотрудников.

 

Рисунок 2.9 – Категории сотрудников

 

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

 

Рисунок 2.10 – Ремонты

 

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

 

Рисунок 2.11 – Типы ремонтов

 

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

 

Рисунок 2.12 – Ремонтируемые объекты

 

В таблице  Детали содержится информация о базе деталей мастерской.

 

Рисунок 2.13 – Информация о ремонтах

 

В таблице  Детали содержится информация о базе деталей мастерской.

Рисунок 2.14 – Детали

В таблице  Заказы деталей содержится информация обо всех заказах деталей этой мастерской.

 

Рисунок 2.15 – Заказы деталей

 

Между таблицами  созданы связи и в БД обеспечивается целостность данных.

В связи между  таблицами Сотрудники и Категории  сотрудников, главная – таблица  Категории сотрудников с ключевым полем № категории.

В связи между  таблицами Сотрудники и Ремонты, главная таблица - Сотрудники с ключевым полем Идентификатор сотрудника.

В связи между  таблицами Ремонты и Типы ремонтов, главная таблица – Типы ремонтов с ключевым полем Идентификатор типа ремонта.

В связи между  таблицами Ремонты и Ремонтируемые  объекты, главная таблица – Ремонтируемые объекты с ключевым полем Идентификатор модели.

В связи между  таблицами Заказы деталей и Детали, главная таблица – Детали с ключевым полем Идентификатор детали.

 

 

Рисунок 2.8 – Схема данных базы данных Ремонтная мастерская

3 РЕАЛИЗАЦИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ

3.1 Реализация функций информационной системы

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

Информационная  система имеет следующую структуру. Первоначально запускается форма Start, представляющая собой заставку. Следующей открывается форма Main – главная форма приложения. В этой форме пользователю предоставляется возможности подключения базы данных и выбора необходимой ему таблицы.

В случае выбора таблицы «Задания» открывается форма Assignments. Данная форма предоставляет пользователю информацию о заданиях ремонтной мастерской, а также возможности поиска (по критериям «Номер квитанции», «Производитель», «Название модели», «Дата добавления», «Фамилия мастера»; также возможен отбор всех текущих заданий), добавления, редактирования информации, фиксирования завершения, указания использованных деталей (добавление, редактирование производятся в форме AddAssign).

В случае выбора таблицы «Сотрудники» открывается форма Staff. Данная форма предоставляет пользователю информацию о заданиях ремонтной мастерской, а также возможности поиска (по критериям «Фамилия», «Категория», «Специализация»), добавления, редактирования информации и фиксирования увольнения (добавление, редактирование производятся в форме EditStaff).

В случае выбора таблицы «Модели», открывается форма Models. Данная форма предоставляет пользователю информацию о моделях техники, которую возможно отремонтировать в данной ремонтной мастерской, а также возможности поиска (по критериям «Производитель», «Тип», «Название модели»), добавления и редактирования информации. Добавление и редактирование таблицы «Модели» (а также таблицы «Ремонты») производятся в форме EditModels.

В случае выбора таблицы «Склад», открывается форма Store. Данная форма содержит две закладки: «База деталей» и «Заказы». Закладка «База деталей» предоставляет пользователю информацию о деталях, необходимых для ремонтов, а также возможности поиска, добавления и редактирования информации. Закладка «Заказы» предоставляет пользователю информацию о заказах деталей, необходимых мастерской, а также возможности поиска, добавления и редактирования информации.

Для реализации функций подключения к базе данных, получения и изменения данных из базы данных был разработан класс dbConnection.

Для реализации функций получения и поиска данных предназначены методы public DataTable GetTable (string sqlCom, out string errMessage) – метод выполняющий запрос, записанный в объект sqlCom типа string и возвращающий экземпляр класса DataTable при помощи объекта класса OleDbDataAdapter; public DataTable.DoQuery (string sqlCom, out string errMessage) – метод выполняющий запрос, записанный в объект sqlCom типа string и возвращающий экземпляр класса DataTable при помощи объекта класса OleDbDataReader; public object DoScalar(string sqlCom, out string errMessage) – метод выполняющий запрос, записанный в объект sqlCom типа string и возвращающий единственное значение.

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

Для реализации функции подключения к базе данных предназначено свойство public static string DataBaseFileName – задает адрес файла базы данных, а также методы public string TryConnection() – метод, реализующий проверку соединения, public bool TryConnectionB() – метод, реализующий проверку соединения с указанной базой данных.

В случае выбора файла и нажатия кнопки OK произойдет событие OpenFileDialog.FileOk, которое вызовет метод openFileDialog1_FileOk, действующий по следующему алгоритму: метод TryConnectionB() выполняет проверку базы данных на соответствие схеме, принадлежащей базе данных, подключенной по умолчанию. Если база данных соответствует эталону, в переменную dbConnection.dbFileName записывается строка пути к выбранному файлу базы данных.

private void openFileDialog1_FileOk(object sender, CancelEventArgs e)

{dbConnection dbc = new dbConnection(openFileDialog1.FileName);

if (dbc.TryConnectionB())

  {dbConnection.DataBaseFileName=openFileDialog1.FileName; }}

 

Получение данных из базы данных. В данном программном продукте получение данных осуществляется двумя способами: при помощи метода dbConnection.GetTable() и при помощи метода dbConnection.DoQuery(). Оба метода возвращают объект класса DataTable.

Метод dbConnection.GetTable() работает по следующему алгоритму: открывается соединение с базой данных, при помощи объекта OleDbDataAdapter выполняется требуемый запрос, результаты выполнения которого помещаются в объект DataTable.

 

Public DataTable GetTable (string sqlCom, out string errMessage)

{DataTable dt = new DataTable();

errMessage = "";

using (cn = new OleDbConnection(bldr.ConnectionString))

{cn.Open();

try{da = new OleDbDataAdapter(sqlCom, cn);

da.Fill(dt); }

catch (OleDbException ex)

{errMessage = ex.Message; }}

Return dt;}

 

Метод dbConnection.DoQuery() работает по схожему алгоритму, за тем исключением, что запрос выполняется при помощи метода OleDbCommand.ExecuteReader().

 

publicDataTableDoQuery(string sqlCom, out string errMessage) {errMessage = "";

DataTable dT1 = new DataTable();

using (cn = new OleDbConnection(bldr.ConnectionString)) {

try{cn.Open();

OleDbCommand com1 = new OleDbCommand(sqlCom, cn);

OleDbDataReader dr1 = com1.ExecuteReader();

dT1.Load(dr1);

dr1.Close();

cn.Close();}

catch (OleDbException ex) {errMessage = ex.Message;}}

return dT1;}

 

По выполнению вышеупомянутых методов, результаты запроса  передаются в элементы управления, расположенные в соответствующих формах.

Например, вэлемент управления «Таблица» (DataGridView):

 

dt = dbc.DoQuery(sqlCom, out exMess);

dataGridView1.DataSource = dt.DefaultView;

 

В элемент управления «Список» (ListBox):

listBox2.DataSource = dbc.DoQuery("SELECT [Detail_name] FROM Details", out exMes);

listBox2.DisplayMember = "Detail_name";

 

При необходимости  получить одиночное значение (например, код, соответствующий данному названию модели), используется метод dbConnection.DoScalar():

 

Public object DoScalar(string sqlCom, out string errMessage)

{object val = 0; errMessage = "";

using (cn = new OleDbConnection(bldr.ConnectionString))

{try{cn.Open();

OleDbCommand com1 = new OleDbCommand(sqlCom, cn);

val = com1.ExecuteScalar();cn.Close();}

catch (OleDbException ex) {errMessage = ex.Message; }}

return val; }

 

Поиск данных. Поиск осуществлен двумя способами: конструированием и выполнением запроса, или при помощи метода DataTable.Select(string select, string sort), который позволяет сортировать данные. Для осуществления поиска этим методом необходимо получить данные объект DataTable, сформировать строку условия, содержащую значения критериев поиска, и, опционально, строку сортировки. Так как метод возвращает значения в виде массива объектов DataRow, зачастую возникает необходимость преобразования для вывода результатов выборки в DataGridView.

 

DataRow[] dr = dt.Select(selectString, sortString);

DataTabletempDataTable = newDataTable();

foreach (DataColumn dc in dt.Columns)

{tempDataTable.Columns.Add(dc.ColumnName, dc.DataType); }

foreach (DataRow row in dr)

tempDataTable.Rows.Add(row.ItemArray);

dataGridView1.DataSource = tempDataTable;

 

Добавление, редактирование и удаление записей. Для реализации функций добавления, редактирования и удаления данных предназначен разработанный метод public void DoNonQuery (string sqlCom, out string errMessage, params OleDbParameter[] parameters), выполняющий записанный в объект sqlCom типа string запрос, не возвращающий значений.

В данной информационной системе добавление, редактирование и удаление данных реализовано по следующей схеме: формируется SQL-запрос соответствующей конструкции, который передается в разработанный метод dbConnection.DoNonQuery():

 

public void DoNonQuery(string sqlCom, out string errMessage, params OleDbParameter[] parameters) {errMessage = "";

using (cn = new OleDbConnection(bldr.ConnectionString)){ try{

cn.Open();

OleDbCommand com1 = new OleDbCommand(sqlCom, cn);

if (parameters.Length != 0)

com1.Parameters.AddRange(parameters);

com1.ExecuteNonQuery();}

catch (OleDbException ex) {errMessage = ex.Message; }}}

 

Метод получает команду и выполняет метод OleDbCommand.ExecuteNonQuery(). В случае необходимости передачи значений из элементов управления формы, возможно использованиезапроса с параметрами.

Пример запроса на добавление:

 

strSQL="INSERT INTO Staff (ID, Surname, Name, Patronymic, Birthdate, Category, Telephone, Address, Specialization, HiringDate) VALUES ("+idText.Text+",'"+surnameText.Text + "','"+nameText.Text + "','"+ patrName.Text + "',"+birthDate.Value.Date.ToOADate() + ","+ catCombo.SelectedItem + ",'"+ phone.Text + "','"+ addrText.Text + "','"+ specText.Text + "'," + hireDate.Value.Date.ToOADate() + ")";

dbc.DoNonQuery(strSQL, out exMess);

 

Пример запроса на изменение:

 

strSQL = "UPDATE Staff SET ID=" + idText.Text+ ",Surname='" + surnameText.Text+ "', Name='" + nameText.Text+ "', Patronymic='" + patrName.Text+ "',Birthdate=" + birthDate.Value.Date.ToOADate()+ ",Category=" + catCombo.SelectedItem.ToString()+ ",Telephone='" + phone.Text+ "',Address='" + addrText.Text+ "',Specialization='" + specText.Text+ "',HiringDate=" + hireDate.Value.Date.ToOADate()+ " WHERE ID=" + ID1; dbc.DoNonQuery(strSQL, outexMess);

 

Пример запроса на удаление:

 

dbc.DoNonQuery("DELETE FROM Assignment WHERE [Rec#]=" + val, out exMes);

 

Пример запроса  на добавление с параметрами:

 

stringstrIns = "INSERT INTO [detail_query] VALUES (@[query#], @detailID, @[query_date],@[receipt_date])";

OleDbParameter param1= newOleDbParameter("@[query#]", rowToInsert[0]);

OleDbParameter param2 = newOleDbParameter("@detailID", rowToInsert[0]);

OleDbParameter param3 = newOleDbParameter("@[query_date]", rowToInsert[0]);

OleDbParameter param4 = newOleDbParameter("@[receipt_date]", rowToInsert[0]);

dbc.DoNonQuery(strIns, out exMes, param1, param2, param3, param4);

 

3.2 Формирование и реализация выходной информации

В данной информационной системе вывод реализован тремя  способами: в элемент управления DataGridView, в элемент управления ListBox и при помощи отчетов. Вывод информации в элементы управления происходит по следующему алгоритму: формируется запрос, который выполняется при помощи разработанного метода dbConnection.DoQuery() либо dbConnection.GetTable(). Затем при помощи свойства DataSource указывается источник данных для элемента управления.

Информация о работе Информационная система ремонтной мастерской