Саратовский государственный технический университет
имени Гагарина Ю. А.
Курсовой работа на тему:
«Разработка фрагмента базы данных для кассового узла»
Выполнил:
Студент ФЭТиПа, ПВС-31
Толочкова А.С.
Проверил:
Доцент кафедры ПВС
Костюк В.П.
Саратов 2011
Оглавление
-
Введение……………………………………………………………………………………………………………………………3
-
Актуальность………………………………………………………………………………………………………..3
-
Цель……………………………………………………………………………………………………………………...3
-
Описание программы……………………………………………………………………………………………………….3
-
Предназначение…………………………………………………………………………………………………..3
-
Структура………………………………………………………………………………………………………………3
-
Создание таблиц…………………………………………………………………………………………………..4
-
Основные транзакции…………………………………………………………………………………………..6
-
Руководство пользователя………………………………………………………………………………………………18
-
Заключение………………………………………………………………………………………………………………………24
Введение
-
Актуальность.
Актуальность данной работы обусловлена необходимостью автоматизации системы производства кафе по обслуживанию клиентов.
2) Цель.
Цель создания данной системы (база данных + приложение) – выполнение курсовой работы в рамках учебного плана специальности ПВС по дисциплине «Базы данных». Тема индивидуального задания: «Разработка фрагмента базы данных для поддержки кафе».
Описание программы
-
Предназначение.
Данная программа предназначена для выполнения следующих функций в кассовом узле коммерческого банка:
А) Добавление, редактирование, удаление блюд, продуктов, дат продаж;
Б) Расчет прибыли: за день, учитывая текущую дату;
В) Конструктор блюд;
Г) Расчёт себестоимости продукта;
Д) Учет и контроль всех совершенных операций за все время существования системы.
Е) Автоматический перерасчёт кассы при изменении проданного блюда
-
Структура.
База данных кафе состоит из следующих таблиц: Продажа, Меню, Вес, Продукты, Продукты_блюдо, Блюдо_вес, Продажа_блюда. Все они соединены посредством связей многие ко многим по следующей схеме. Используются таблицы для реализации связи.
Структура БД:
-
Создание таблиц:
create table Продажа
(
ID_Продажа int primary key identity(1,1),
Цена int,
Дата date null,
Коэфициент int,
)
create table Продажа_блюда
(
Id_Продажа_блюда int primary key identity(1,1),
Номер_блюда int,
Количество int,
Номер_продажа int,)
create table Меню
(
ID_Меню int primary key identity(1,1),
Наименование varchar(30) not null,
Цена int,
)
create table Продукты_вес(
ID_Продукты_вес int primary key identity(1,1),
Номер_вес int,
Номер_продукты int,
)
create table Вес
(
ID_Вес int primary key identity(1,1),
Вес int not null,
)
create table Продукты
(
ID_Продукты int primary key identity(1,1),
Наименования varchar(30) not null,
Цена int,
)
create table Блюдо_вес(
ID_Блюдо_вес int primary key identity(1,1),
Номер_Блюдо int,
Номер_вес int,
)
-
Основные транзакции.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.SqlTypes;
namespace WindowsFormsApplication2
{
public partial class AddBludo : Form
{
string con_str = "Data Source=(local);Initial Catalog=Cafe;Integrated Security=True";
SqlConnection con;
SqlDataAdapter adapt;
DataSet ds, ds_u;
BindingSource bs, bs_u;
int n=0;
int[] x=new int[10];
int zv;
public AddBludo()
{
InitializeComponent();
}
public DataRow FindCurrentRow(DataGridView dgv)
{
CurrencyManager cManager =
dgv.BindingContext[dgv.DataSource, dgv.DataMember]
as CurrencyManager;
if (cManager == null || cManager.Count == 0)
return null;
DataRowView drv = cManager.Current as DataRowView;
return drv.Row;
}
private void Blud_Load(object sender, EventArgs e){
con = new SqlConnection(con_str);// подключение к базе
con.Open();
adapt = new SqlDataAdapter("select * from Продукты", con);// извлеч. данных
ds = new DataSet(); //ОП
DataTable t = new DataTable();
bs = new BindingSource();
bs.DataSource = t;
adapt.Fill(t);
dataGridView1.DataSource = bs;
dataGridView1.Update();
dataGridView1.Refresh();
dataGridView1.Columns[0].Visible = false;
con.Close();
}
public partial class AddDate : Form
{
string con_str = "Data Source=(local);Initial Catalog=Cafe;Integrated Security=True";
SqlConnection con;
SqlDataAdapter adapt;
DataSet ds, ds_u;
BindingSource bs, bs_u;
public AddDate()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
con = new SqlConnection(con_str);// подключение к базе
con.Open();
string a = textBox1.Text;
string str = "insert into Продажа values ('0','" + textBox1.Text[3] + textBox1.Text[4] + textBox1.Text[2] + textBox1.Text[0] + textBox1.Text[1] + textBox1.Text[2] + textBox1.Text[6] + textBox1.Text[7] + textBox1.Text[8] + textBox1.Text[9] + "','"+textBox2.Text + "')"; ;
SqlCommand com = new SqlCommand(str, con);
com.ExecuteNonQuery();
con.Close();
this.Close();
}
}
public partial class AddProduct : Form
{
string con_str = "Data Source=(local);Initial Catalog=Cafe;Integrated Security=True";
SqlConnection con;
SqlDataAdapter adapt;
DataSet ds, ds_u;
BindingSource bs, bs_u;
int id9;
public AddProduct()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
con = new SqlConnection(con_str);// подключение к базе
con.Open();
string str = "insert into Продукты values ('" + textBox1.Text + "' , '" + textBox2.Text + "' ) ";
SqlCommand com = new SqlCommand(str, con);
com.ExecuteNonQuery();
con.Close();
this.Close();
}
namespace WindowsFormsApplication2
{
public partial class Adds : Form
{
public Adds()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
AddProduct frmService = new AddProduct();
frmService.Show();
}
private void button1_Click(object sender, EventArgs e)
{
AddBludo frmService = new AddBludo();
frmService.Show();
}
private void button3_Click(object sender, EventArgs e)
{
AddDate frmService = new AddDate();
frmService.Show();
}
}
}
public partial class Bludo : Form
{
string con_str = "Data Source=(local);Initial Catalog=Cafe;Integrated Security=True";
SqlConnection con;
SqlDataAdapter adapt;
DataSet ds, ds_u;
BindingSource bs, bs_u;
public DataRow FindCurrentRow(DataGridView dgv)
{
CurrencyManager cManager =
dgv.BindingContext[dgv.DataSource, dgv.DataMember]
as CurrencyManager;
if (cManager == null || cManager.Count == 0)
return null;
DataRowView drv = cManager.Current as DataRowView;
return drv.Row;
}
int id;
public void refreshGrid(){
con = new SqlConnection(con_str);// подключение к базе
con.Open();
adapt = new SqlDataAdapter("select * from Меню where Id_Меню ="+this.id.ToString(), con);// извлеч. данных
ds = new DataSet(); //ОП
DataTable t = new DataTable();
bs = new BindingSource();
bs.DataSource = t;
adapt.Fill(t);
dataGridView1.DataSource = bs;
dataGridView1.Update();
dataGridView1.Refresh();
dataGridView1.Columns[0].Visible = false;
//dataGridView1.Columns[3].Visible = false;
adapt = new SqlDataAdapter("select * from Вес where Id_Меню =" + this.id.ToString(), con);// извлеч. данных
ds = new DataSet(); //ОП
DataTable t1 = new DataTable();
bs = new BindingSource();
bs.DataSource = t1;
adapt.Fill(t1);
dataGridView2.DataSource = bs;
dataGridView2.Update();
dataGridView2.Refresh();
dataGridView2.Columns[0].Visible = false;
dataGridView2.Columns[2].Visible = false;
adapt = new SqlDataAdapter("select * from Продукты_вес inner join Продукты on Продукты_вес.Номер_продукты=Продукты.ID_Продукты where Номер_вес In (Select ID_Вес From Вес Where ID_Меню=" + this.id.ToString() + ")", con);// извлеч. данных
ds = new DataSet(); //ОП
DataTable t2 = new DataTable();
bs = new BindingSource();
bs.DataSource = t2;
adapt.Fill(t2);
dataGridView3.DataSource = bs;
dataGridView3.Update();
dataGridView3.Refresh();
dataGridView3.Columns[0].Visible = false;
dataGridView3.Columns[1].Visible = false;
dataGridView3.Columns[2].Visible = false;
dataGridView3.Columns[3].Visible = false;
con.Close();
}
public Bludo()
{
InitializeComponent();
}
public Bludo(int id)
{
InitializeComponent();
this.id = id;
}
private void button1_Click(object sender, EventArgs e)
{
int id1 = (int)FindCurrentRow(dataGridView1)[0];
Bludored frm = new Bludored(id1);
frm.ShowDialog();
}
private void button2_Click(object sender, EventArgs e)
{
int id2 = (int)FindCurrentRow(dataGridView2)[0];
Vesred frm = new Vesred(id2);
frm.ShowDialog();
}
private void button3_Click(object sender, EventArgs e)
{
int id3 = (int)FindCurrentRow(dataGridView3)[0];
izmProduct frm = new izmProduct(id3);
frm.ShowDialog();
}
private void Bludo_Activated(object sender, EventArgs e)
{
refreshGrid();
}
}
namespace WindowsFormsApplication2
{
public partial class Rasch : Form
{
string con_str = "Data Source=(local);Initial Catalog=Cafe;Integrated Security=True";
SqlConnection con;
SqlDataAdapter adapt;
DataSet ds, ds_u;
BindingSource bs, bs_u;
public Rasch()
{
InitializeComponent();
}
public DataRow FindCurrentRow(DataGridView dgv)
{
CurrencyManager cManager =
dgv.BindingContext[dgv.DataSource, dgv.DataMember]
as CurrencyManager;
if (cManager == null || cManager.Count == 0)
return null;
DataRowView drv = cManager.Current as DataRowView;
return drv.Row;
}
private void Blud_Load(object sender, EventArgs e)
{
con = new SqlConnection(con_str);// подключение к базе
con.Open();
adapt = new SqlDataAdapter("select * from Меню", con);// извлеч. данных
ds = new DataSet(); //ОП
DataTable t = new DataTable();
bs = new BindingSource();
bs.DataSource = t;
adapt.Fill(t);
dataGridView1.DataSource = bs;
dataGridView1.Update();
dataGridView1.Refresh();
dataGridView1.Columns[0].Visible = false;
con.Close();
}
private void button1_Click(object sender, EventArgs e)
{
int i5 = (int)FindCurrentRow(dataGridView1)[0];
con = new SqlConnection(con_str);// подключение к базе
con.Open();
string str = "update Меню set Цена=(select sum(Вес*Цена) from Продукты_вес inner join Продукты on Продукты_вес.Номер_продукты=Продукты.ID_Продукты inner join Вес on Продукты_вес.Номер_вес=Вес.ID_Вес where Номер_вес In (Select ID_Вес From Вес Where ID_Меню='" + i5.ToString() + "'))/1000 where Id_Меню='" + i5.ToString()+"'";
SqlCommand com = new SqlCommand(str, con);
com.ExecuteNonQuery();
adapt = new SqlDataAdapter("select * from Меню", con);// извлеч. данных
ds = new DataSet(); //ОП
DataTable t = new DataTable();
bs = new BindingSource();
bs.DataSource = t;
adapt.Fill(t);
dataGridView1.DataSource = bs;
dataGridView1.Update();
dataGridView1.Refresh();
dataGridView1.Columns[0].Visible = false;
con.Close();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
bs.Filter = string.Format("Наименование like '{0}*'", textBox1.Text);
}
}
} namespace WindowsFormsApplication2
{
public partial class Prodano : Form
{
string con_str = "Data Source=(local);Initial Catalog=Cafe;Integrated Security=True";
SqlConnection con;
SqlDataAdapter adapt;
DataSet ds, ds_u;
BindingSource bs, bs_u;
int id11;
int id12;
int ik;
public Prodano()
{
InitializeComponent();
}
public Prodano(int id11,int id12,int ik)
{
InitializeComponent();
this.id11 = id11;//дата
this.id12 = id12;//продажа за весь день
this.ik = ik;//продажа за весь день
}
public DataRow FindCurrentRow(DataGridView dgv)
{
CurrencyManager cManager =
dgv.BindingContext[dgv.DataSource, dgv.DataMember]
as CurrencyManager;
if (cManager == null || cManager.Count == 0)
return null;
DataRowView drv = cManager.Current as DataRowView;
return drv.Row;
}
public void refreshGrid(object sender, EventArgs e)
{
con = new SqlConnection(con_str);// подключение к базе
con.Open();
adapt = new SqlDataAdapter("select * from Продажа_блюда inner join Меню on Продажа_блюда.Номер_блюда=Меню.ID_Меню where Номер_продажа=" + this.id11.ToString(), con);// извлеч. данных
ds = new DataSet(); //ОП
DataTable t = new DataTable();
bs = new BindingSource();
bs.DataSource = t;
adapt.Fill(t);
dataGridView1.DataSource = bs;
dataGridView1.Update();
dataGridView1.Refresh();
dataGridView1.Columns[0].Visible = false;
dataGridView1.Columns[1].Visible = false;
dataGridView1.Columns[3].Visible = false;
dataGridView1.Columns[4].Visible = false;
// dataGridView1.Columns[7].Visible = false;
con.Close();
}
private void button1_Click(object sender, EventArgs e)
{
int id15 = (int)FindCurrentRow(dataGridView1)[2];
int id16 = (int)FindCurrentRow(dataGridView1)[0];
int id17 = (int)FindCurrentRow(dataGridView1)[6];
int id13=id11;
int id14=id12;
int id18 = ik;
Prodanored frm = new Prodanored(id13, id14, id15,id16,id17,id18);
frm.ShowDialog();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
bs.Filter = string.Format("Наименование like '{0}*'", textBox1.Text);
}
}
}
namespace WindowsFormsApplication2
{
public partial class prosmotr : Form
{
string con_str = "Data Source=(local);Initial Catalog=Cafe;Integrated Security=True";
SqlConnection con;
SqlDataAdapter adapt;
DataSet ds, ds_u;
BindingSource bs, bs_u;
int num = 0;
public prosmotr()
{
InitializeComponent();
}
/* public void Prosmotr_Load()
{
con = new SqlConnection(con_str);// подключение к базе
con.Open();
adapt = new SqlDataAdapter("select * from Сотрудники", con);// извлеч. данных
ds = new DataSet(); //ОП
DataTable t = new DataTable();
bs = new BindingSource();
bs.DataSource = t;
adapt.Fill(t);
grid_s.DataSource = bs;
grid_s.Update();
grid_s.Refresh();
grid_s.Columns[0].Visible = false;
grid_s.Columns[9].Visible = false;
grid_s.Columns[10].Visible = false;
grid_s.Columns[11].Visible = false;
con.Close();
}*/
public DataRow FindCurrentRow(DataGridView dgv)
{
CurrencyManager cManager =
dgv.BindingContext[dgv.DataSource, dgv.DataMember]
as CurrencyManager;
if (cManager == null || cManager.Count == 0)
return null;
DataRowView drv = cManager.Current as DataRowView;
return drv.Row;
}
private void button1_Click(object sender, EventArgs e)
{
num = 1;
label2.Text = "По наименованию";
con = new SqlConnection(con_str);// подключение к базе
con.Open();
adapt = new SqlDataAdapter("select * from Меню", con);// извлеч. данных
ds = new DataSet(); //ОП
DataTable t = new DataTable();
bs = new BindingSource();
bs.DataSource = t;
adapt.Fill(t);
grid_s.DataSource = bs;
grid_s.Update();
grid_s.Refresh();
grid_s.Columns[0].Visible = false;
// grid_s.Columns[3].Visible = false;
con.Close();
}
private void button2_Click(object sender, EventArgs e)
{
num = 2;
label2.Text = "По наименованию";
con = new SqlConnection(con_str);// подключение к базе
con.Open();
adapt = new SqlDataAdapter("select * from Продукты", con);// извлеч. данных
ds = new DataSet(); //ОП
DataTable t = new DataTable();
bs = new BindingSource();
bs.DataSource = t;
adapt.Fill(t);
grid_s.DataSource = bs;
grid_s.Update();
grid_s.Refresh();
grid_s.Columns[0].Visible = false;
con.Close();
}
private void button3_Click(object sender, EventArgs e)
{
num = 3;
label2.Text = "Поиск недоступен";
con = new SqlConnection(con_str);// подключение к базе
con.Open();
adapt = new SqlDataAdapter("select * from Продажа", con);// извлеч. данных
ds = new DataSet(); //ОП
DataTable t = new DataTable();
bs = new BindingSource();
bs.DataSource = t;
adapt.Fill(t);
grid_s.DataSource = bs;
grid_s.Update();
grid_s.Refresh();
grid_s.Columns[0].Visible = false;
con.Close();
}
private void button4_Click(object sender, EventArgs e)
{
int id = (int)FindCurrentRow(grid_s)[0];
Bludo frm = new Bludo(id);
frm.ShowDialog();
}
private void button5_Click(object sender, EventArgs e)
{
int id8 = (int)FindCurrentRow(grid_s)[0];
Productred frm = new Productred(id8);
frm.ShowDialog();
}
private void button7_Click(object sender, EventArgs e)
{
int id9 = (int)FindCurrentRow(grid_s)[0];
Datared frm = new Datared(id9);
frm.ShowDialog();
}
private void button8_Click(object sender, EventArgs e)
{
int id10 = (int)FindCurrentRow(grid_s)[1];
int d=(int)FindCurrentRow(grid_s)[3];
id10 = (id10 / d) * (d - 1);
Prib frm = new Prib(id10);
frm.ShowDialog();
}
private void button6_Click(object sender, EventArgs e)
{
int id11 = (int)FindCurrentRow(grid_s)[0];
int id12 = (int)FindCurrentRow(grid_s)[1];
int ik = (int)FindCurrentRow(grid_s)[3];
Prodano frm = new Prodano(id11,id12,ik);
frm.ShowDialog();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (num == 1) bs.Filter = string.Format("Наименование like '{0}*'", textBox1.Text);
if (num == 2) bs.Filter = string.Format("Наименования like '{0}*'", textBox1.Text);
}
}
}
Руководство пользователя
Вход в систему
-
Для входа в программу, достаточно запустить программу.
Главное меню программы
-
На главной панели программы изображено 5 кнопок, позволяющие производить различные операции и запросы. Все эти операции рассмотрены ниже поочередно.
-
Так же на главной странице размещен титульный лист работы.
Просмотр данных хранящихся БД
-
В данном окне отображаются все не приватные данные. При нажатии нужных данных, появляются различные окна:
-
В данном окне отображается состав блюда, выбирая соответствующее поле и нажимая соответствующие кнопки можно изменить блюдо его продукты с весами.
-
Так же можно изменить отредактировать всю базу продуктов. Отобразив продукты и выбрав изменить
-
Выбрав даты продаж, пользователь может просмотреть что продано, и заменить блюдо, если было продано не то. Перерасчет кассы происходит автоматически. Посмотреть прибыль в этот день(счёт) изменить дату продажи если в ней ошибка
Добавление
-
Для добавлении даты продажи, продукты и блюда не обходимо выбрать соответствующий пункт.
При создании блюда используется конструктор выбираем продукты из поля сбоку добавляем их, прописываем веса и называем блюда. После этого блюдо будет создано по нажатию кнопки.
Удаление
-
В данном окне выводится выбирается удаление блюда или даты. В данной БД продукты Удалять нельзя!
Выбираем соответствующий пункт и удаляем.
Рассчитать
-
Рассчитывает себестоимость блюда на основе цены продукта за килограмм учитывая вес этого продукта в блюде складывая все затраты на продукты.
Продажа
-
В этом окне отображаются все данные датах продажи выбрав соответствующую дату переходим к окну выбора блюда нажав кнопку
-
Выбираем блюдо, которое хотим продать ставим количество и нажимаем кнопку. Блюдо продано!
Заключение
В ходе выполнения курсовой работы было протестирован набор сущностей данного объекта. Проверены все функции системы. Созданы 3 блюда, 14 продуктов, проведены 3 продажи. Расчёт стоимости и конструктор блюда были проверены на реальной документации кафе, результаты вычислений совпали с документацией. Все функции программы работают корректно и удобны в использовании. Есть возможность добавлять, удалять и редактировать данные, и просматривать их.