Автор работы: Пользователь скрыл имя, 13 Октября 2013 в 19:59, курсовая работа
Главной целью курсовой работы является подведение итогов в изучении определенной дисциплины. Работа охватывает весь изученный материал на протяжении определенного интервала времени. И именно систематизировав и углубив весь этот материал, студент должен приниматься за самостоятельное выполнение курсовой. В принципе именно это и является главной целью ее выполнения, т.е. систематизация знаний и приобретение определенных творческих навыков и навыков индивидуальной работы.
Введение 2
1. Постановка цели 2
2. Проектирование БД 4
Сущности 4
Связи 5
Атрибуты 8
ER-диаграмма 10
Ключи 11
3. Перенос логической модели данных в среду СУБД 12
4. Разработка программной оболочки 14
Среда разработки 14
Интерфейс программы 14
Формы добавления/редактирования 16
Отображение данных 18
Отчеты 21
Примеры кода 23
5. Запросы, используемые в программе 25
Литература 28
Целью выполнения этих этапов является получение гарантий того, что каждое из отношений, созданных на основании логической модели данных, отвечает, по крайней мере, требованиям НФБК. Если будут найдены отношения, не отвечающие требованиям НФБК, это может указывать на то, что часть логической модели данных неверна либо преобразование логической модели в набор отношений выполнено некорректно. При необходимости требуется перестроить модель данных и убедиться, что она правильно отображает моделируемую часть информационной структуры предприятия.
Проверим модель в отношении транзакций пользователей. Целью выполнения данного этапа является проверка логической модели данных на возможность выполнения всех транзакций, предусмотренных представлением пользователя. Основные транзакции соответствуют перечню печатных отчетов. Проанализируем, достаточно ли в таблицах базы данных «АртПолигон» информации для их получения.
Печатный отчёт |
Используемые таблицы |
Остатки товаров |
Товар Вид Фирмы |
Поставки |
Товар Вид Фирмы Поставщик |
Продажи |
Товар Вид Фирмы Служащие |
3. Перенос логической модели данных в среду реляционной СУБД
Средой реализации спроектированной базы данных «Арт-Склад» я выбрал MS SQL Server 2005 Enterprise. Эта реляционная СУБД распространяется фирмой Microsoft бесплатно и имеет весь набор необходимых мне для данного проекта функций. При переносе я руководствовался общепринятыми правилами:
Для успешной и безотказной работы БД необходимо соблюдать меры обеспечения целостности данных. Обеспечение целостности базы данных – это система мер, направленных на поддержание правильности данных в базе в любой момент времени.
Ограничения целостности – это набор определенных правил, которые устанавливают допустимость данных и связей между ними. Ограничения целостности могут относиться к разным объектам базы данных: атрибутам (полям), записям, отношениям, связям между ними и т.п.
Для полей были использованы такие виды ограничений:
Целостность сущностей
Все таблицы в БД имеют первичный ключ с идентификатором ID.
Ссылочная целостность
Реализована на основании вышеприведенных ограничений, используемых при построении БД возможностях MSSQL, а так же ограничениями программного кода.
4. Разработка программной оболочки
Среда разработки
Для создания программной оболочки взаимодействия с БД «АртПолигон» я выбрал один из наиболее современных языков программирования C#, который сочетает в себе мощность и гибкость. Этот язык полностью построен по концепции ООП и включает в себя новейшие технологии, используемые в написании программ.
Интерфейс программы
Интерфейс разрабатываемого приложения основан на классах, являющихся наследниками глобального класса Form, которые представляет собой множество методов, свойств и событий, реализующих функциональность Windows форм. Поэтому интерфейс разработанной программы интуитивно понятен любому пользователю и не вызовет сложностей при его использовании. Количество управляющих элементов сведено к минимуму, чтобы не перегружать интерфейс и не сбивать пользователя с толку.
Главное окно содержит в себе элемент отображения данных DataGridView, который в табличном виде отображает содержимое таблиц и выборок по ним, которые предусмотрены в программе. Также здесь находятся все основные управляющие элементы, обеспечивающие взаимодействие пользователя с программой.
Внешний вид окна:
При запуске программы DataGridView заполняется выборкой данных из таблиц Товар, Вид и Фирмы (запрос 1 в разделе 4 «Запросы, используемые в программе»), результатом которой является вывод списка занесенных в реестр товаров и их наявного количества на складе.
Меню «Транзакции» содержит в себе операции добавления новых записей в базу данных:
- Добавить поставщика;
- Добавить товар;
- Добавить вид товаров;
- Добавить производителя;
- Добавить служащего.
Меню «Данные» содержит команды вывода содержимого таблиц для редактирования или удаления записей:
- Товар;
- Архив поставок;
- Архив продаж;
- Поставщики;
- Производители;
- Служащие.
Меню «Отчеты» содержит команды отображения печатных отчетов:
- Остатки товаров;
- Поставки;
- Продажи.
Формы добавления/редактирования
На нижеследующих формах осуществляется ввод данных для добавления или редактирования поставщиков.
1. Добавление поставщика:
2. Добавление товара:
3. Добавление вида товаров:
4. Добавление производителя:
5. Добавление служащего:
Как можно заметить – формы ввода довольно однотипны и предельно просты для понимания, что обеспечивает наибольший круг возможных пользователей, даже мало знакомых с компьютером.
Отображение данных
1. Остатки товаров:
Сначала выводится форма
обеспечения конкретизации
Результат:
2. Архив поставок:
Первой отображается форма выбора временного промежутка поставок:
Результат:
3. Архив продаж:
4. Поставщики:
5. Производители:
6. Служащие:
7. Виды товаров:
Поставка и продажа
Кнопки, несущие эти функции, находятся на главной форме и активируются при выборе строки с необходимым товаром на DataGridView.
1. Поставка:
2. Продажа:
Отчеты
Данный раздел содержит в себе окна вывода печатных отчетов, реализованных на основе Microsoft Reporting Server, обеспечивающего наглядную подачу материала с неплохой функциональностью. Функции, обеспечиваемые им: поддержка многостраничных отчетов, печать, сохранение в различных форматах, полнотекстовый поиск, масштабирование…
3. Продажи:
Примеры кода
Вот несколько типичных примеров программного кода, используемых мной в программе.
1. Процедура заполнения DataGridView данными об наличии товаров (прим.: код запроса хранится в самой БД):
private void ReFill(string ReqStr, int TypeN, int ProdN)
{
if (ReqStr == "")
ReqStr = "dbo.FillProducts";
using (SqlConnection MyConn = DBWork.GetDBConnection())
{
SqlCommand request = new SqlCommand(ReqStr, MyConn);
request.CommandType = CommandType.StoredProcedure;
if (TypeN != 0)
{
if (ProdN != 0)
{
request.Parameters.Add("@
request.Parameters.Add("@Вид", SqlDbType.Int).Value = TypeN;
}
else
request.Parameters.Add("@Вид1"
}
else
{
if (ProdN != 0)
request.Parameters.Add("@
}
SqlDataAdapter adapter = new SqlDataAdapter(request);
DataSet dataSet = new DataSet();
adapter.Fill(dataSet, "[Товар]");
dataGridView1.DataSource = dataSet.Tables[0];
dataGridView1.Update();
lbl_Head.Text = "Товары:";
}
}
2. Процедура обновления данных о товаре с небольшим конструктором:
public static int Prod_upd(int id, int typeID, int vendor, string mdl, string descr, int count, float prc)
{
int succefull = 0;
string query = "UPDATE [Товар] SET ";
if (typeID != 0)
query = query + "[ID_вид] = @type, ";
if (vendor != 0)
query = query + "[ID_фирма] = @vendor, ";
if (mdl != "")
query = query + "[Модель] = @mdl, ";
if (descr != "")
query = query + "[Описание] = @descr, ";
if (prc != 0)
query = query + "[Розн_цена] = @prc, ";
query = query + "[Количество] = @count WHERE ([ID] = @id) ";
if (query == "UPDATE [Товар] SET ")
return succefull;
using (SqlConnection MyConn = GetDBConnection())
{
SqlCommand command = new SqlCommand(query, MyConn);
command.CommandType = CommandType.Text;
command.Parameters.Add("@id", SqlDbType.Int).Value = id;
command.Parameters.Add("@type"
command.Parameters.Add("@
command.Parameters.Add("@mdl", SqlDbType.Text).Value = mdl;
command.Parameters.Add("@
command.Parameters.Add("@
command.Parameters.Add("@prc", SqlDbType.Money).Value = prc;
succefull = command.ExecuteNonQuery();
}
return succefull;
}
3. Добавление поставщика:
public static int NewProducer(string Name, string Mnemo, string Addres, string Phone)
{
int succefull = 0;
string query = "INSERT INTO [Поставщик] (Поставщик.Название, Поставщик.Мнемокод, Поставщик.Адрес, Поставщик.Телефон) VALUES (@name, @mnemo, @addres, @phone)";
using (SqlConnection MyConn = GetDBConnection())
{
SqlCommand command = new SqlCommand(query, MyConn);
command.CommandType = CommandType.Text;
command.Parameters.Add("@name"
command.Parameters.Add("@
command.Parameters.Add("@
command.Parameters.Add("@
succefull = command.ExecuteNonQuery();
}
return succefull;
}
4. Удаление строки:
public static int DeleteRow(int id, string tabName)
{
int succefull = 0;
string request = "DELETE FROM " + tabName + " WHERE (ID = @id)";
using (SqlConnection MyConn = GetDBConnection())
{
SqlCommand command = new SqlCommand(request, MyConn);
command.CommandType = CommandType.Text;
command.Parameters.Add("@id", SqlDbType.Int).Value = id;
succefull = command.ExecuteNonQuery();
}
return succefull;
}
5. Заполнение ComboBox'ов на формах:
public static void CB_fill(ComboBox cmb, string table)
{
string query = "";
if (table == "Вид")
query = "SELECT [ID], [Вид] FROM [Вид]";
if (table == "Фирмы")
query = "SELECT [ID], [Название] FROM [Фирмы]";
if (table == "Товар")
query = "SELECT [ID], [Название] FROM [Товар]";
if (table == "Поставщик")
query = "SELECT [ID], [Мнемокод] FROM [Поставщик]";
if (table == "Служащие")
query = "SELECT [ID], [ФИО] FROM [Служащие]";