Название связи
|
Описание святи
|
Тип святи
|
Zakazchik- Nakladnaya
|
Оформляет
|
1:М
|
Nakladnaya- Sklad
|
Вмещает информацию
|
М:1
|
Postavshik-
Sklad
|
Поставляет на
|
1:М
|
Tovar- Sklad
|
Поступает на
|
1:М
|
Tovar-
Type_tovara
|
Имеет
|
М:1
|
Описание нормализации.
Отношение находится в первой нормальной форме тогда и только
тогда, когда в любом допустимом значении отношения каждый его кортеж содержит
только одно значение для каждого из атрибутов.
Отношение находится во второй нормальной форме, если оно находится в
первой нормальной форме, и при этом любой его атрибут, не входящий в состав
потенциального ключа,функционально полно зависит от каждого потенциального
ключа.
Отношение находится третей нормальной форме, если ни одно поле не может
зависит от неключевого поля (или совокупности полей).
Выводы
программный автоматизация аccess база данный
При выполнении курсовой работы была проанализирована предметная область
"Склад строительных материалов". Были описаны документы о варианте
использования, об образе и границах проекта, спецификация требований также были
созданы диаграмма вариантов использования, диаграмма сущность-связь, диаграмма
потоков данных и декомпозиция процесса.
Было разработано программное средство для работы с базой данных Access, позволяющее добавлять, удалять,
редактировать, просматривать информацию в базе данных и оформлять накладную.
Перечень ссылок
С# для начинающих -Мартынов Н.Н. КУДИЦ-ПРЕСС 2007
Базы данных. Язык SQL -Дунаев В.В. СПб.: БХВ-Петербург 2006
Анализ требований и проектирование систем с использованием
UML- Лешек А. Мацяшек Вильямс 2002
C# в кратком изложении- Дж.Бишоп, Н. Хорспул БИНОМ.
Лаборатория знаний 2005
Приложение А
Руководство пользователя
Документ "Руководство пользователя" предназначен для
ознакомления пользователя с назначением и функциональными возможностями
программного средства и правил его эксплуатации.
Также документ содержит рекомендации по освоению программы.
А.1 НАЗНАЧЕНИЕ И УСЛОВИЕ ПРИМЕНЕНИЯ
Программное средство предназначено для автоматизации работы склада
строительных материалов.
Программа должна выполнять следующие функции:
. -Просмотр информации;
. -Добавление информации;
. -Удаление информации;
. -Изменение информации;
. -Создание накладной;
. -Сохранение изменений;
Программа включает в себя базу данных и программу для работы с этой базой
данных.Приложение разработано в среде MS Visual Studio 2010 и поддерживается для
использования на ОС Windows
XP/Seven/Vista.
A.2.
ПОДГОТОВКА К РАБОТЕ
Для запуска программы следует открыть папку Sklad и запустить в папке Debug файл Sklad.После
чего появится главное окно программы.
Рисунок А.2.1-главное окно пограммы
А.3 Описание операций
Выбор формы:
В главном окне выбираем пункт "Склад" после чего открывается
новое окно(для заказчика).
Рисунок А.2.2 - окно пункта "склад"
Рисунок А.2.3-найденные и отсортированные данные
Рисунок А.2.4-оповищение об удалении выбранного элемента
Рисунок А.3.5-форма для заполнения накладной для заказчика
Рисунок А.3.6-форма редактирования товаров менеджером
Приложение В
Программный код и SQL
запросы
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;SKLAD
{partial class NakladForm : Form
{List<Naklad> m_nklList = new
List<Naklad>();struct Naklad
{string insert;string update;string select;
// public string DELETE;
};string m_id_zak;int kol_vo_na_skl, kol_vo_razn,
kol_vo_razn1;DataBase m_db = new DataBase();NakladForm(DataBase db)
{();_db = db;_Nakl.MinDate = DateTime.Now;
}void btnExit_Click(object sender, EventArgs e)
{();
}void NakladForm_Load(object sender, EventArgs e)
{.Items.Clear();.Text = "";.Text =
"";.Text = "";.Text = "";_vo.Text =
"";dgv = new DataGridView();_db.ReadDataBase(dgv, "Select
name_zakazchika From zakazchik");.Items.Clear();(int i = 0; i <
dgv.RowCount - 1; i++)
{(i < dgv.RowCount -
1).Items.Add(dgv.Rows[i].Cells[0].Value.ToString());
}_db.ReadDataBase(dgv, "Select id_tovara_na_sklade From
Sklad ");.Items.Clear();(int i = 0; i < dgv.RowCount - 1; i++)
{(i < dgv.RowCount -
1).Items.Add(dgv.Rows[i].Cells[0].Value.ToString());
}
}void cmbIdTovNaSkl_SelectedIndexChanged(object sender,
EventArgs e)
{(cmbIdTovNaSkl.Items.Contains(cmbIdTovNaSkl.Text))
{(txtTov.Text != "")
{.Text = "";
}(txtPost.Text != "")
{.Text = "";
}dgv = new DataGridView();_db.ReadDataBase(dgv, "Select
Tovar.name_tovara From Tovar Where " +
"id_tovara in (Select id_tovara From Sklad Where
id_tovara_na_sklade =" + cmbIdTovNaSkl.Text + ")");(int i = 0; i
< dgv.RowCount - 1; i++)
{(i < dgv.RowCount - 1).Text =
(dgv.Rows[i].Cells[0].Value.ToString());
}_db.ReadDataBase(dgv, "Select
Postavshik.name_postavshika From Postavshik Where " +
"id_postavshika in (Select id_postavshika From Sklad
Where id_tovara_na_sklade =" + cmbIdTovNaSkl.Text + ")");(int i
= 0; i < dgv.RowCount - 1; i++)
{(i < dgv.RowCount - 1).Text =
(dgv.Rows[i].Cells[0].Value.ToString());
}
}
}void btnAddNew_Click(object sender, EventArgs e)
{(txtKol_vo.Text != "" && cmbZak.Text !=
"" && cmbIdTovNaSkl.Text != "")
{dgv = new DataGridView();_db.ReadDataBase(dgv, "Select
id_zakazchika From Zakazchik Where name_zakazchika='" + cmbZak.Text +
"'");_id_zak =
dgv.Rows[0].Cells[0].Value.ToString();_db.ReadDataBase(dgv, "Select
kolichestvo From Sklad Where id_tovara_na_sklade = " +
Convert.ToInt32(cmbIdTovNaSkl.Text));_vo_na_skl = (int)dgv.Rows[0].Cells[0].Value;tick
= new Naklad();m_txtKol_vo = Convert.ToInt32(txtKol_vo.Text);
// если на складе не хватает(kol_vo_na_skl < m_txtKol_vo)
{_vo_razn = m_txtKol_vo -
kol_vo_na_skl;(MessageBox.Show("На складе не достаточно этого товара. Не
хватает " + kol_vo_razn, "Внимание!",
MessageBoxButtons.OKCancel) == DialogResult.OK)
{_Load(0, null);
}
}
//else if (kol_vo_na_skl == m_txtKol_vo)
//{
// tick.DELETE = "Delete From Sklad Where
id_tovara_na_sklade = " + cmbIdTovNaSkl.Text;
//}
{_vo_razn1 = kol_vo_na_skl - m_txtKol_vo;.update =
"UPDATE Sklad SET kolichestvo = " + kol_vo_razn1 + " Where
id_tovara_na_sklade = " + Convert.ToInt32(cmbIdTovNaSkl.Text);.insert =
"Insert Into nakladnaya(id_zakazchika, id_tovara_na_sklade,
date_nakladnoy, kolichestvo_tovarov) Values(" + m_id_zak + ", "
+ cmbIdTovNaSkl.Text + ", DateValue('" +_Nakl.Value.Date.ToString() +
"'), " + txtKol_vo.Text + ")";.select = "Select
id_nakladnoy, id_zakazchika , id_tovara_na_sklade, date_nakladnoy, kolichestvo_tovarov"
+
" From nakladnaya Where id_zakazchika =" + m_id_zak
+ " And id_tovara_na_sklade =" + cmbIdTovNaSkl.Text +
" And DateValue(date_nakladnoy) = DateValue('" +
dtpicDate_Nakl.Value.Date.ToString() + "')";_nklList.Add(tick);
}
}_Load(0, null);
}void btnPrint_Click(object sender, EventArgs e)
{(txtKol_vo.Text != "" && cmbZak.Text !=
"" && cmbIdTovNaSkl.Text != "")
{dgv = new DataGridView();_db.ReadDataBase(dgv, "Select
id_zakazchika From Zakazchik Where name_zakazchika='" + cmbZak.Text +
"'");_id_zak = dgv.Rows[0].Cells[0].Value.ToString();_db.ReadDataBase(dgv,
"Select kolichestvo From Sklad Where id_tovara_na_sklade = " +
Convert.ToInt32(cmbIdTovNaSkl.Text));_vo_na_skl =
(int)dgv.Rows[0].Cells[0].Value;tick = new Naklad();m_txtKol_vo =
Convert.ToInt32(txtKol_vo.Text);
// если на складе не хватает(kol_vo_na_skl < m_txtKol_vo)
{_vo_razn = m_txtKol_vo -
kol_vo_na_skl;(MessageBox.Show("На складе не достаточно этого товара. Не
хватает " + kol_vo_razn, "Внимание!",
MessageBoxButtons.OKCancel) == DialogResult.OK)
{_Load(0, null);
}
}
//else if (kol_vo_na_skl == m_txtKol_vo)
//{
// tick.DELETE = "Delete From Sklad Where
id_tovara_na_sklade = " + cmbIdTovNaSkl.Text;
//}
{_vo_razn1 = kol_vo_na_skl - m_txtKol_vo;.update =
"UPDATE Sklad SET kolichestvo = " + kol_vo_razn1 + " Where
id_tovara_na_sklade = " + Convert.ToInt32(cmbIdTovNaSkl.Text);.insert =
"Insert Into nakladnaya(id_zakazchika, id_tovara_na_sklade,
date_nakladnoy, kolichestvo_tovarov) Values(" + m_id_zak + ", "
+ cmbIdTovNaSkl.Text + ", DateValue('" +_Nakl.Value.Date.ToString() +
"'), " + txtKol_vo.Text + ")";.select = "Select
id_nakladnoy, id_zakazchika , id_tovara_na_sklade, date_nakladnoy,
kolichestvo_tovarov" +
" From nakladnaya Where id_zakazchika =" + m_id_zak
+ " And id_tovara_na_sklade =" + cmbIdTovNaSkl.Text +
" And DateValue(date_nakladnoy) = DateValue('" +
dtpicDate_Nakl.Value.Date.ToString() + "')";_nklList.Add(tick);
{query = "";(int i = 0; i < m_nklList.Count;
i++)
{
//
m_db.WriteDataBase(m_nklList[i].DELETE);_db.WriteDataBase(m_nklList[i].update);_db.WriteDataBase(m_nklList[i].insert);(i
< m_nklList.Count - 1)+= m_nklList[i].select + " UNION ";+=
m_nklList[i].select;
}ReportForm(m_db, query).ShowDialog();
}
{
}
}
}
{.Show("Заполнены не все поля!",
"Внимание!");
}
}
}
}SKLAD
{partial class AdmSklForm : Form
{DataBase m_db;
// Количество данных на старте
// переменная которая хранит стартовое кол-во строк взятых из
таблицыint m_AdmSklCountStart;
// конструктор формы постформ . передается аргумент db типа
DataBaseAdmSklForm(DataBase db)
{();_db = db;
}void btnDel_Click(object sender, EventArgs e)
{
//условие проверяющее выделели мы хоть одну строку для
удаления? если да...(dgvAdmSkl.SelectedRows[0].Index < m_AdmSklCountStart)
{
//вылазит прдупреждающее окошко name удаление . в нем вопрос
вы уверены? и если нажата ок...(MessageBox.Show("Вы уверены?",
"Удаление", MessageBoxButtons.OKCancel) == DialogResult.OK)
{_db.WriteDataBase("Delete From sklad Where
sklad.[id_tovara_na_sklade]=" +
dgvAdmSkl.SelectedRows[0].Cells[0].Value.ToString());_db.WriteDataBase("Delete
From nakladnaya Where nakladnaya.[id_tovara_na_sklade]=" +
dgvAdmSkl.SelectedRows[0].Cells[0].Value.ToString());
}
//загрузить форму без удаленной строчки_Load(0, null);
}
}void btnEdit_Click(object sender, EventArgs e)
{
// Все старые записи, которые изменили(int i = 0; i <
m_AdmSklCountStart; i++)
{
//_db.WriteDataBase("Update sklad Set id_postavshika =
'" + dgvAdmSkl.Rows[i].Cells[1].Value.ToString() + "', id_tovara
='" + dgvAdmSkl.Rows[i].Cells[2].Value.ToString() + "', kolichestvo =
'" + dgvAdmSkl.Rows[i].Cells[3].Value.ToString() + "' Where
id_tovara_na_sklade=" + dgvAdmSkl.Rows[i].Cells[0].Value.ToString());
}
// Всё, что добавили(m_AdmSklCountStart <
dgvAdmSkl.RowCount - 1)
{(int i = m_AdmSklCountStart; i < dgvAdmSkl.RowCount - 1;
i++)
{_db.WriteDataBase("Insert Into sklad(id_postavshika,
id_tovara, kolichestvo) Values('" +
dgvAdmSkl.Rows[i].Cells[1].Value.ToString() + "', '" +
dgvAdmSkl.Rows[i].Cells[2].Value.ToString() +"','"+
dgvAdmSkl.Rows[i].Cells[3].Value.ToString() + "')");
}
}.Show("Изменено!", "Редактирование");_Load(0,
null);
}void btnExit_Click(object sender, EventArgs e)
{();
}void AdmSklForm_Load(object sender, EventArgs e)
{_db.ReadDataBase(dgvAdmSkl, "Select * from
sklad");.Columns[0].Visible = false;_AdmSklCountStart = dgvAdmSkl.RowCount
- 1;
}
}
}SKLAD
{partial class TypeTovForm : Form
{DataBase m_db;
// переменная которая хранит стартовое кол-во строк взятых из
бдint m_TTovCountStart;TypeTovForm(DataBase db)
{();_db = db;
}void TypeTovForm_Load(object sender, EventArgs e)
{_db.ReadDataBase(dgvTTov, "Select * from
type_tovara");.Columns[0].ReadOnly = true;_TTovCountStart =
dgvTTov.RowCount - 1;
}void btnEdit_Click(object sender, EventArgs e)
{
// Все старые записи, которые изменили(int i = 0; i <
m_TTovCountStart; i++)
{
//_db.WriteDataBase("Update type_tovara Set opisanie =
'" + dgvTTov.Rows[i].Cells[1].Value.ToString() + "',
uslovia_hraneniya ='" + dgvTTov.Rows[i].Cells[2].Value.ToString() +
"' Where id_type_tovara=" + dgvTTov.Rows[i].Cells[0].Value.ToString());
}
// Всё, что добавили(m_TTovCountStart < dgvTTov.RowCount -
1)
{(int i = m_TTovCountStart; i < dgvTTov.RowCount - 1; i++)
{_db.WriteDataBase("Insert Into type_tovara( opisanie,
uslovia_hraneniya) Values('" + dgvTTov.Rows[i].Cells[1].Value.ToString() +
"', '" + dgvTTov.Rows[i].Cells[2].Value.ToString() + "')");
}
}.Show("Изменено!",
"Редактирование");_Load(0, null);
}void btnExit_Click(object sender, EventArgs e)
{();
}void btnDel_Click_1(object sender, EventArgs e)
{(dgvTTov.SelectedRows[0].Index < m_TTovCountStart)
{(MessageBox.Show("Вы уверены?",
"Удаление", MessageBoxButtons.OKCancel) == DialogResult.OK)
{_db.WriteDataBase("Delete From type_tovara Where
type_tovara.[id_type_tovara] = " +
dgvTTov.SelectedRows[0].Cells[0].Value.ToString());_db.WriteDataBase("Delete
From tovar Where tovar.[id_type_tovara] = " +
dgvTTov.SelectedRows[0].Cells[0].Value.ToString());
}_Load(0, null);
}
}
}
}
Запросы
Select id_tovara_na_sklade From SkladFrom nakladnaya Where
nakladnaya.[id_tovara_na_sklade]Distinct(Postavshik.name_postavshika) From
Postavshik, Sklad Where Postavshik.id_postavshika=Sklad.id_postavshikaInto
sklad(id_postavshika, id_tovara, kolichestvo) Values('" +
dgvAdmSkl.Rows[i].Cells[1].Value.ToString() + "', '" +
dgvAdmSkl.Rows[i].Cells[2].Value.ToString() +"','"+ dgvAdmSkl.Rows[i].Cells[3].Value.ToString()
+ "')");
"Select Tovar.name_tovara From Tovar Where " +
"id_tovara in (Select id_tovara From Sklad Where
id_tovara_na_sklade =" + cmbIdTovNaSkl.Text + ")");
"Select kolichestvo From Sklad Where id_tovara_na_sklade
= " + Convert.ToInt32(cmbIdTovNaSkl.Text));
"Select Tovar.cena_tovara From Tovar Where " +
"id_tovara in (Select id_tovara From Tovar Where
name_tovara ='"id_type_tovara, opisanie as [Описание], uslovia_hraneniya
as [Условия хранения]" +
"From type_tovara Where id_type_tovara in (Select
id_type_tovara From Tovar Where name_tovara ='"
"UPDATE Sklad SET kolichestvo = " + kol_vo_razn1 +
" Where id_tovara_na_sklade = "
"Select id_tovara_na_sklade as [Номер товара на складе],
Postavshik.name_postavshika as [ФИО поставщика]," +
" Tovar.name_tovara as [Наименование
товара],Sklad.kolichestvo as [Количество товара]" +
" FROM Postavshik, Sklad, Tovar WHERE
Postavshik.id_postavshika= Sklad.id_postavshika " +
" And Tovar.id_tovara = Sklad.id_tovara ");