99608

Разработка БД и программного приложения для учета продаж продукции фирмы avom

Курсовая

Информатика, кибернетика и программирование

учет продаж продукции фирмы AVON. Существуют поставщики и производители продукции. Продукция поставляется в магазины и делится на типы (тушь, помада, блеск для губ, тональная основа и т.д.), а также может изготавливаться из различных продуктов и материалов. Клиенты покупают изделия в магазинах.

Русский

2016-09-26

3.81 MB

0 чел.

4

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

Новокузнецкий институт (филиал)

федерального государственного бюджетного образовательного учреждения

высшего профессионального образования

«Кемеровский государственный университет»

Факультет информационных технологий

Кафедра систем автоматизации управления

РАЗРАБОТКА БД И ПРОГРАММНОГО ПРИЛОЖЕНИЯ ДЛЯ УЧЕТА ПРОДАЖ ПРОДУКЦИИ ФИРМЫ AVON

Курсовая работа

по дисциплине «Базы данных»

Студенты гр. А-09 Захарова Наталья Анатольевна   

                                      Черенёва Алина Сергеевна        

         подпись

Работа сдана для проверки «______» __________ 20__ г.

Работа защищена «_____» ________ 20____ г с оценкой ____________

Руководитель курсовой работы

Доцент         В.Е. Шехтман

      подпись

Новокузнецк, 2012


Министерство образования и науки

Российской Федерации

Новокузнецкий институт (филиал)

федерального государственного бюджетного образовательного учреждения

высшего профессионального образования

«Кемеровский государственный университет»

Факультет информационных технологий

Кафедра систем автоматизации управления

ЗАДАНИЕ

на курсовую работу по дисциплине

«Базы данных»

Тема курсовой работы:

Разработка БД и программного приложения для учета продаж продукции фирмы AVON

Содержание разделов основной части пояснительной записки:

Анализ предметной области, разработка модели данных, отладка, анализ результатов

Перечень графического материала:
ER-диаграмма базы данных
Даталогическая модель базы данных
Окно приложения
диалоговые окна «Добавить новую запись в таблицу», отчеты
Параметры запросов

Срок сдачи курсовой работы «_____» __________20___г.

Руководитель В.Е. Шехтман   ___________________________________

Дата, подпись

Студенты гр. А-09 Захарова Наталья Анатольевна   

                                      Черенёва Алина Сергеевна        

подпись
Реферат

Пояснительная записка к курсовой работе:  31 страница, 11 рисунков, 2 приложения, 7 литературных источников, диск.

БАЗА ДАННЫХ, АТРИБУТ, КЛЮЧ, ФОРМА, СВЯЗЬ, ПРОГРАММА, SQL-ЗАПРОС, ИНТЕРФЕЙС

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


Содержание

Введение 1

Анализ предметной области 3

1. Разработка модели данных 4

2. Разработка интерфейса пользователя 6

3. Отладка, анализ результатов 10

Заключение 11

Список использованных источников 12

Приложение 1 Запросы, Скрипт БД 13

Приложение 2 Листинг программы 15

  1.  Введение

В современном мире ни одно предприятие не обходится без использования баз данных. Они являются удобным средством хранения информации о видах продукции, клиентах, поставщиках, работниках и т. д.

В связи с этим, в области разработки программного обеспечения выделяют отдельное направление — проектирование баз данных.

На ранних этапах развития этого направления вся ответственность за целостность хранимых данных, защиту от несанкционированного доступа к ним, добавление новых данных или обновления существующих возлагалась на программиста. Однако впоследствии стали создаваться специальные программные комплексы, способные решать эти задачи самостоятельно.

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

СУБД предназначена для централизованного управления базой данных в интересах всех работающих в этой системе.

По степени универсальности различают два класса СУБД:

  1.  системы общего назначения;
  2.  специализированные системы.

Специализированные СУБД создаются в редких случаях при невозможности или нецелесообразности использования СУБД общего назначения.[2]


СУБД общего назначения — это сложные программные комплексы, предназначенные для выполнения всей совокупности функций, связанных с созданием и эксплуатацией базы данных информационной системы. [4]

Используемые в настоящее время СУБД обладают средствами обеспечения целостности данных и надежной безопасности, что дает возможность разработчикам гарантировать большую безопасность данных при меньших затратах сил на низкоуровневое программирование. Продукты, функционирующие в среде WINDOWS, выгодно отличаются удобство пользовательского интерфейса и встроенными средствами повышения производительности.[4]

СУБД, ориентированные на разработчиков, обладают развитыми средствами для создания  приложений. К элементам инструментария разработки приложений можно отнести:

  1.  мощные языки программирования;
  2.  средства реализации меню, экранных форм ввода-вывода данных и генерации отчетов;
  3.  средства генерации приложений (прикладных программ);
  4.  генерацию исполнимых файлов.

Функциональные возможности моделей данных доступны пользователю СУБД благодаря ее языковым средствам.[2]

Реализация языковых средств интерфейсов может быть осуществлена различными способами. Для высококвалифицированных пользователей (разработчиков сложных прикладных систем) языковые средства чаще всего представляются в их явной синтаксической форме. В других случаях функции языков могут быть доступны косвенным образом, когда они реализуются в форме различного рода меню, диалоговых сценариев или заполняемых пользователем таблиц. По таким входным данным интерфейсные средства формируют адекватные синтаксические конструкции языка интерфейса и передают их на исполнение или включают в генерируемый программный код приложения. Интерфейсы с неявным использованием языка широко используются в СУБД для персональных ЭВМ.[4]

  1.  Анализ предметной области

Рассмотрим следующую предметную область: учет продаж продукции фирмы AVON. Существуют поставщики и производители продукции. Продукция поставляется в магазины и делится на типы (тушь, помада, блеск для губ, тональная основа и т.д.), а также может изготавливаться из различных продуктов и материалов. Клиенты покупают изделия в магазинах.


Разработка модели данных

В предыдущем пункте была проанализирована предметная область и выделены сущности для проектирования базы данных. Теперь рассмотрим структуру таблиц, описывающих эти сущности, и разработаем модель данных «сущность-связь».

В таблице «Клиенты» должны содержаться поля:

  1.  Номер клиента;
  2.  ФИО;
  3.  Телефон;

По номеру клиента можно будет узнать заказы. Поэтому таблица будет иметь один внешний ключ.

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

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

Рассмотрим таблицу «Товары». В ней будут поля, такие как: «НомерТовара», «КодВида», «Название», «Цвет», «Консистенция», «Объем», «Цена». Ключ таблицы – это поле «НомерТовара». В таблицу должен входить внешний ключ из таблицы «Накладная».

В таблице «ВидТовара» будут поля: «КодВида», «Вид». Ключом будет являться поле «КодВида». В таблицу должен входить внешний ключ из таблицы «Товары».


После определения типов данных ER-диаграмма и Даталогическая модель базы данных будут выглядеть следующим образом:

Рисунок 1 -  ER-диаграмма базы данных

Рисунок 2 -  Даталогическая модель базы данных 
Разработка интерфейса пользователя

Интерфейс пользователя разработан на языке С#. Работа с пользователем происходит следующим образом. Пользователь загружает приложение и на экран выводится окно программного приложения для учета продаж продукции фирмы AVON (см. рисунок 3).

Рисунок 3 – Окно приложения

В меню Базы Данных находится 4 кнопки, в каждой из которых свое контекстное меню.

Нажав на определенную кнопку из контекстного меню, появится интересующая нас вкладка (см. рисунок 3).

Кнопка «Редактирование» позволяет редактировать таблицы:

  1.  Вид товара;
  2.  Заказы;
  3.  Клиенты;
  4.  Накладные;
  5.  Товары;

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

При редактировании достаточно просто кликнуть мышью в самой таблице.

При добавлении записи для каждой таблицы появляется новое диалоговое окно (см. рисунок 4).

а - вид товара

б - заказы

в - клиенты

г – накладные


д – Товары

Рисунок 4 (а, б, в, г, д) – диалоговые окна «Добавить новую запись в таблицу»

Для удаления данных достаточно просто выделить определенную строку из таблицы и нажать кнопку «Удалить», либо на клавиатуре нажать Delete.

Для сохранения – нажать «Сохранить».

Кнопка «Просмотр» позволяет просматривать таблицы, а именно: «Заказы», «Накладные», «Сезонность спроса».

Кнопка «Запросы» предоставляет информацию о заказанных товарах за последние месяцы, о продаже товаров по видам и о средней стоимости заказов клиентов. Запросы параметризованы. С одним и с двумя параметрами(см. Рисунок 5).

Рисунок 5 – Параметры запросов

При нажатии на кнопку «Печать отчета» можно распечатать интересующий вас отчет («Вид товара», «Клиенты»). (см. Рисунок 6 а,б)


а – Отчет «Вид товара»

б – Отчет «Клиенты»

Рисунок 6(а,б) - Отчеты


  1.  Отладка, анализ результатов

В ходе данной работы возникало множество проблем с приведением типов, что отобразилось на скорости выполнения работы.

Все эти факторы повлияли на результат выполнения работы и на ее качество.

Данная программа разработана с опорой на платформу .NET, в среде Microsoft Visual Studio, на языке программирования C#. Работа осуществлялась на основе ООП. Все это позволяет наилучшим образом оптимизировать программу и ее работу в операционной системе Windows.

Для повышения универсальности программы возможна ее дальнейшая модернизация.   


Заключение

В результате проделанной работы получилась реляционная база данных, поддерживаемая СУБД MS Access, в которой содержится 5 таблиц. В этих таблицах содержатся сведения о сущностях предметной области «учет продаж продукции фирмы AVON». В каждой из этих таблиц содержится некоторое количество записей, необходимых для проверки работоспособности приложения, разработанного на С# специально для администрирования созданной базы данных.

Целью данной работы  является изучить технологии проектирования баз данных и разработки приложений для управления их содержимым.

На текущий момент эта цель достигнута, поэтому выполнение данной работы завершено.


Список использованных источников

  1.  Агуров П.В. С#. Разработка компонентов в MS Visual Studio 2005/2008,-СПб.: БХВ-Петербург, 2008.-480с.: ил.
  2.  Астахова И. Ф. SQL в примерах и задачах: Учеб. Пособие / И.Ф. Астахова, А.П. Толстобров, В.М. Мельников. — Мн.: Новое знание, 2002. — 176 с.
  3.  Ватсон Карли. С# Wrox Press Ltd. Arden House, 1102 Warwick Road, Acocks Green, Birmingham, B27 6 BH, UK 2001.-879c.:ил.
  4.  Моисеенко С.И. SQL. Задачи и решения.-СПб.: Питер, 2006.-256сю:ил.
  5.  Павловская Т.А. C#.Программирование на я зыке высокого уровня. Учебник для вузов.-СПб.: Питер, 2007-432с.:ил
  6.  Диго С.М. Базы данных: проектирование и использование: Учебник. – М.: Финансы и статистика, 2005. – 592 с.
  7.  Шехтман В.Е. Базы данных, SQL и все такое: курс лекций; НФИ КемГУ. – Новокузнецк, 2006. – 239 с.


  1. Приложение 1 

Запросы

Заказанные товары за последние месяцы
SELECT Товары.Название, ВидТовара.Вид, Sum([Накладные].КоличествоТовара) AS КоличествоТовара

FROM (ВидТовара INNER JOIN Товары ON ВидТовара.КодВида=Товары.КодВида) INNER JOIN (Заказы INNER JOIN Накладные ON Заказы.НомерЗаказа=[Накладные].НомерЗаказа) ON Товары.НомерТовара=[Накладные].НомерТовара

WHERE (((Month(Date())-Month([Заказы]![ДатаЗаказа]))<[Введите_число_месяцев]))

GROUP BY Товары.Название, ВидТовара.Вид;

Продажа товаров по видам
SELECT ВидТовара.КодВида, ВидТовара.Вид, Sum([Накладные].Стоимость) AS [Sum-Стоимость]

FROM (ВидТовара INNER JOIN Товары ON ВидТовара.КодВида=Товары.КодВида) INNER JOIN (Заказы INNER JOIN Накладные ON Заказы.НомерЗаказа=[Накладные].НомерЗаказа) ON Товары.НомерТовара=[Накладные].НомерТовара

WHERE (((Year(Заказы!ДатаЗаказа))>=[введите_год_с_которого_вести_расчет]) And ((Month(Заказы!ДатаЗаказа))>=[Введите_месяц_с_которого_вести_расчет]))

GROUP BY ВидТовара.КодВида, ВидТовара.Вид

ORDER BY Sum([Накладные].Стоимость) DESC;

Сезонность спроса
SELECT "Месяц " & DatePart("m",[ДатаЗаказа]) AS Месяц, Count(Заказы.НомерЗаказа) AS [Количество заказов]

FROM Заказы

GROUP BY "Месяц " & DatePart("m",[ДатаЗаказа]);

Средняя стоимость заказов клиентов

SELECT Клиенты.НомерКлиента, Клиенты.ФИО, Avg(Заказы.СтоимостьЗаказа) AS Средняя_стоимость

FROM Клиенты INNER JOIN Заказы ON Клиенты.НомерКлиента=Заказы.НомерКлиента

WHERE (((Year(Заказы!ДатаЗаказа))>=[Введите_год_с_которого_вести_рассчет]) And ((Month(Заказы!ДатаЗаказа))>=[Введите_месяц_с_которого_вести_рассчет]))

GROUP BY Клиенты.НомерКлиента, Клиенты.ФИО

ORDER BY Avg(Заказы.СтоимостьЗаказа) DESC;

Промежуточная стоимость заказов по месяцам
TRANSFORM Sum([Накладные].Стоимость) AS [Sum-Стоимость]
SELECT Товары.Название, ВидТовара.Вид, Sum([Накладные].Стоимость) AS ОбщаяСтоимость

FROM (ВидТовара INNER JOIN Товары ON ВидТовара.КодВида=Товары.КодВида) INNER JOIN (Заказы INNER JOIN Накладные ON Заказы.НомерЗаказа=[Накладные].НомерЗаказа) ON Товары.НомерТовара=[Накладные].НомерТовара

GROUP BY Товары.Название, ВидТовара.Вид

ORDER BY ВидТовара.Вид, "Месяц " & DatePart("m",[ДатаЗаказа])

PIVOT "Месяц " & DatePart("m",[ДатаЗаказа]);SELECT Товары.Название, ВидТовара.Вид, Sum([Накладные].Стоимость) AS ОбщаяСтоимость

FROM (ВидТовара INNER JOIN Товары ON ВидТовара.КодВида=Товары.КодВида) INNER JOIN (Заказы INNER JOIN Накладные ON Заказы.НомерЗаказа=[Накладные].НомерЗаказа) ON Товары.НомерТовара=[Накладные].НомерТовара

GROUP BY Товары.Название, ВидТовара.Вид

ORDER BY ВидТовара.Вид, "Месяц " & DatePart("m",[ДатаЗаказа])

PIVOT "Месяц " & DatePart("m",[ДатаЗаказа]);

Скрипт БД

  1.  Create table Клиенты(

Номер клиента int not null, primary key,

ON DELETE cascade,

ФИО varchar(100) not null,

ON UPDATE cascade,

ON DELETE cascade,

Телефон varchar(50) null,

ON UPDATE cascade,

ON DELETE cascade);

  1.  Create table Заказы(

Номер заказа int not null, primary key,

ON DELETE cascade,

Foreign key (номер клиента) references,

клиенты(номер клиента),

Дата заказа date not null,

ON DELETE cascade,

Стоимость заказа money not null,

ON DELETE cascade,

ON UPDATE cascade);

  1.  Create table Накладные(

Номер накладной int not null, primary key,

ON DELETE cascade,

Foreign key(номер заказа) references заказы(номер заказа),

Foreign key(номер товара) references товары (номер товара),

On update cascade,

Количество товара int not null,

On delete cascade,

On Update cascade,

Стоимость money not null,

On update cascade,

On delete cascade,

  1.  Create table Товары(

Номер товара int not null, primary key,

On delete cascade,

Foreign  key (код вида) reference Вид товара(Код вида),

On delete cascade,

Название varchar(250) not null,

On delete cascade,

On update cascade,

Цвет varchar(30) null,

On delete cascade,

On Update cascade,

Консистенция  varchar(50) null,

On delete cascade,

OnUpdate cascade,

Объем float null,

On delete cascade,

On Update cascade,

Цена money not null,

On delete cascade).

  1.  Create table Вид товара (

Код вида int not null? Primary key,

On delete cascade,

Вид int not null,

On Update cascade,

On delete cascade).

  1.  Приложение 2 Листинг программы

Form1.cs

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.OleDb;

using MsAccess = Microsoft.Office.Interop.Access;

using System.Data.Common;

namespace AvonSells

{

   public partial class Form1 : Form

   {

       private static OleDbConnection connect;

       public static string catBD = "Avon.accdb";

       public static string conBD = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + catBD;

       private SortedDictionary<string, OleDbDataAdapter> dataAdapters;

       private SortedDictionary<string, DataTable> dataTables;

       private SortedDictionary<string, BindingSource> bindingSources;

       private OleDbCommandBuilder builder;

       public Form1()

       {

           dataAdapters = new SortedDictionary<string, OleDbDataAdapter>();

           bindingSources = new SortedDictionary<string, BindingSource>();

           dataTables = new SortedDictionary<string, DataTable>();

           try

           {

               connect = new OleDbConnection(conBD);

           }

           catch (Exception ex)

           {

               MessageBox.Show(ex.Message);

           }

           InitializeComponent();

           bindingNavigator1.Parent = this;

           bindingNavigator1.Enabled = true;

       }

       private void WriteButtonsVisible(bool redaction)

       {

           bindingNavigatorAddNewItem.Enabled = redaction;

           bindingNavigatorDeleteItem.Enabled = redaction;

           сохранитьToolStripButton.Enabled = redaction;

       }

       private bool OpenTable(string name, string caption, bool addCummands = true)

       {

           if (!tabControl1.TabPages.ContainsKey(caption))

           {

               if (dataTables.ContainsKey(name))

               {

                   dataTables[name].Clear();

               }

               OleDbCommand command = new OleDbCommand(name, connect);

               command.CommandType = CommandType.TableDirect;

               if (connect.State == ConnectionState.Closed)

               {

                   connect.Open();

               }

               if (!dataAdapters.ContainsKey(command.CommandText))

               {

                   OleDbDataAdapter adapter = new OleDbDataAdapter(command);

                   if (addCummands)

                   {

                       OleDbCommandBuilder comBuilder = new OleDbCommandBuilder();

                       comBuilder.QuotePrefix = "[";

                       comBuilder.QuoteSuffix = "]";

                       comBuilder.ConflictOption = ConflictOption.CompareAllSearchableValues;

                       comBuilder.SetAllValues = false;

                       comBuilder.DataAdapter = adapter;

                       adapter.DeleteCommand = comBuilder.GetDeleteCommand(true);

                       adapter.InsertCommand = comBuilder.GetInsertCommand(true);

                       adapter.UpdateCommand = comBuilder.GetUpdateCommand(true);

                       builder = comBuilder;

                   }

                   dataAdapters.Add(name, adapter);

               }

               if (!dataTables.ContainsKey(name))

               {

                   dataTables.Add(name, new DataTable(name));

               }

               if (!bindingSources.ContainsKey(name))

               {

                   BindingSource bs = new BindingSource();

                   bs.DataSource = dataTables[name];

                   bindingSources.Add(name, bs);

               }

               dataAdapters[name].Fill(dataTables[name]);

               tabControl1.TabPages.Add(caption, caption);

               DataGridView dataGrid = new DataGridView();

               if (!addCummands)

               {

                   dataGrid.ReadOnly = true;

                   dataGrid.AllowUserToDeleteRows = false;

                   dataGrid.AllowUserToAddRows = false;

               }

               dataGrid.MultiSelect = true;

               dataGrid.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

               dataGrid.DataSource = dataTables[name];

               dataGrid.Dock = DockStyle.Fill;

               tabControl1.TabPages[tabControl1.TabPages.Count - 1].Controls.Add(dataGrid);

               tabControl1.TabPages[caption].Show();

               tabControl1.SelectedIndex = tabControl1.TabPages.IndexOfKey(caption);

               return true;

           }

           else

           {

               tabControl1.TabPages.RemoveByKey(caption);

               return false;

           }

       }

       private void видТовараToolStripMenuItem_Click(object sender, EventArgs e)

       {

           видТовараToolStripMenuItem.Checked = OpenTable("ВидТовара","Вид товара");

           WriteButtonsVisible(true);

       }

       private void заказыToolStripMenuItem_Click(object sender, EventArgs e)

       {

           заказыToolStripMenuItem.Checked = OpenTable("Заказы","Заказы");

           WriteButtonsVisible(true);

       }

       private void клиентыToolStripMenuItem1_Click(object sender, EventArgs e)

       {

           клиентыToolStripMenuItem1.Checked = OpenTable("Клиенты","Клиенты");

           WriteButtonsVisible(true);

       }

             

       private void товарыToolStripMenuItem_Click(object sender, EventArgs e)

       {

           товарыToolStripMenuItem.Checked = OpenTable("Товары","Товары");

           WriteButtonsVisible(true);

       }

      

       private void заказанныеТоварыЗаПоследниеМесяцыToolStripMenuItem_Click(object sender, EventArgs e)

       {

           //

           string requestName = "Заказанные товары за последние месяцы";

           if (!tabControl1.TabPages.ContainsKey(requestName))

           {

               //

               сохранитьToolStripButton.Enabled = false;

               Form2 parameters = new Form2("Введите число месяцев");

               parameters.ShowDialog(this);

               if (!parameters.paramsAccepted)

               {

                   return;

               }

               if (dataTables.ContainsKey("Заказанные_товары_за_последние_месяцы"))

               {

                   dataTables["Заказанные_товары_за_последние_месяцы"].Clear();

               }

               OleDbCommand command = new OleDbCommand("Заказанные_товары_за_последние_месяцы", connect);

               command.CommandType = CommandType.StoredProcedure;

               OleDbParameter parameter = new OleDbParameter("Введите_число_месяцев", OleDbType.Integer);

               parameter.Value = Convert.ToInt32(parameters.parameter1);

               command.Parameters.Add(parameter);

               if (connect.State == ConnectionState.Closed)

               {

                   connect.Open();

               }

               int count = command.ExecuteNonQuery();

               if (!dataAdapters.ContainsKey(command.CommandText))

               {

                   OleDbDataAdapter adapter = new OleDbDataAdapter(command);

                   dataAdapters.Add(command.CommandText, adapter);

               }

               if (!dataTables.ContainsKey(command.CommandText))

               {

                   dataTables.Add(command.CommandText, new DataTable(command.CommandText));

               }

               dataAdapters[command.CommandText].Fill(dataTables[command.CommandText]);

               //

               tabControl1.TabPages.Add(requestName, requestName);

               DataGridView dataGrid = new DataGridView();

               dataGrid.DataSource = dataTables[command.CommandText];

               dataGrid.Dock = DockStyle.Fill;

               dataGrid.ReadOnly = true;

               dataGrid.AllowUserToDeleteRows = false;

               dataGrid.AllowUserToAddRows = false;

               tabControl1.TabPages[tabControl1.TabPages.Count - 1].Controls.Add(dataGrid);

               tabControl1.TabPages[requestName].Show();

               tabControl1.SelectedIndex = tabControl1.TabPages.IndexOfKey(requestName);

               заказанныеТоварыЗаПоследниеМесяцыToolStripMenuItem.Checked = true;

           }

           else

           {

               tabControl1.TabPages.RemoveByKey(requestName);

               заказанныеТоварыЗаПоследниеМесяцыToolStripMenuItem.Checked = false;

           }

           WriteButtonsVisible(false);

       }

       private void продажаТоваровПоВидамToolStripMenuItem_Click(object sender, EventArgs e)

       {

           string requestName = "Продажа товаров по видам";

           if (!tabControl1.TabPages.ContainsKey(requestName))

           {

               сохранитьToolStripButton.Enabled = false;

           Form2 parameters = new Form2("Введите год, с которого вести расчет",

                                       "Введите месяц, с которого вести расчет");

           parameters.ShowDialog(this);

           if (!parameters.paramsAccepted)

           {

               return;

           }

           if (dataTables.ContainsKey("Продажа_товаров_по_видам"))

           {

               dataTables["Продажа_товаров_по_видам"].Clear();

           }

           OleDbCommand command = new OleDbCommand("Продажа_товаров_по_видам", connect);

           command.CommandType = CommandType.StoredProcedure;

           OleDbParameter parameter1 = new OleDbParameter("Введите_год_с_которого_вести_расчет", OleDbType.Integer);

           parameter1.Value = Convert.ToInt32(parameters.parameter1);

           command.Parameters.Add(parameter1);

           OleDbParameter parameter2 = new OleDbParameter("Введите_месяц_с_которого_вести_расчет", OleDbType.Integer);

           parameter2.Value = Convert.ToInt32(parameters.parameter2);

           command.Parameters.Add(parameter2);

           if (connect.State == ConnectionState.Closed)

           {

               connect.Open();

           }

           int count = command.ExecuteNonQuery();

           if (!dataAdapters.ContainsKey(command.CommandText))

           {

               OleDbDataAdapter adapter = new OleDbDataAdapter(command);

               dataAdapters.Add(command.CommandText, adapter);

           }

           if (!dataTables.ContainsKey(command.CommandText))

           {

               dataTables.Add(command.CommandText, new DataTable(command.CommandText));

           }

               dataAdapters[command.CommandText].Fill(dataTables[command.CommandText]);

               tabControl1.TabPages.Add(requestName, requestName);

               DataGridView dataGrid = new DataGridView();

               dataGrid.DataSource = dataTables[command.CommandText];

               dataGrid.Dock = DockStyle.Fill;

               dataGrid.ReadOnly = true;

               dataGrid.AllowUserToDeleteRows = false;

               dataGrid.AllowUserToAddRows = false;

               tabControl1.TabPages[tabControl1.TabPages.Count - 1].Controls.Add(dataGrid);

               tabControl1.TabPages[requestName].Show();

               tabControl1.SelectedIndex = tabControl1.TabPages.IndexOfKey(requestName);

               продажаТоваровПоВидамToolStripMenuItem.Checked = true;

           }

           else

           {

               tabControl1.TabPages.RemoveByKey(requestName);

               продажаТоваровПоВидамToolStripMenuItem.Checked = false;

           }

           WriteButtonsVisible(false);

       }

       private void средняяСтоимостьЗаказовКлиентовToolStripMenuItem_Click(object sender, EventArgs e)

       {

           string requestName = "Средняя стоимость заказов клиентов";

           if (!tabControl1.TabPages.ContainsKey(requestName))

           {

               сохранитьToolStripButton.Enabled = false;

               Form2 parameters = new Form2("Введите год, с которого вести расчет",

                                         "Введите месяц, с которого вести расчет");

               parameters.ShowDialog(this);

               if (!parameters.paramsAccepted)

               {

                   return;

               }

               if (dataTables.ContainsKey("Средняя_стоимость_заказов_клиентов"))

               {

                   dataTables["Средняя_стоимость_заказов_клиентов"].Clear();

               }

               OleDbCommand command = new OleDbCommand("Средняя_стоимость_заказов_клиентов", connect);

               command.CommandType = CommandType.StoredProcedure;

               OleDbParameter parameter1 = new OleDbParameter("Введите_год_с_которого_вести_расчет", OleDbType.Integer);

               parameter1.Value = Convert.ToInt32(parameters.parameter1);

               command.Parameters.Add(parameter1);

               OleDbParameter parameter2 = new OleDbParameter("Введите_месяц_с_которого_вести_расчет", OleDbType.Integer);

               parameter2.Value = Convert.ToInt32(parameters.parameter2);

               command.Parameters.Add(parameter2);

               if (connect.State == ConnectionState.Closed)

               {

                   connect.Open();

               }

               int count = command.ExecuteNonQuery();

               if (!dataAdapters.ContainsKey(command.CommandText))

               {

                   OleDbDataAdapter adapter = new OleDbDataAdapter(command);

                   dataAdapters.Add(command.CommandText, adapter);

               }

               if (!dataTables.ContainsKey(command.CommandText))

               {

                   dataTables.Add(command.CommandText, new DataTable(command.CommandText));

               }

               dataAdapters[command.CommandText].Fill(dataTables[command.CommandText]);

               //        dataGridView1.DataSource = dataTables[command.CommandText];

               tabControl1.TabPages.Add(requestName, requestName);

               DataGridView dataGrid = new DataGridView();

               dataGrid.DataSource = dataTables[command.CommandText];

               dataGrid.Dock = DockStyle.Fill;

               dataGrid.ReadOnly = true;

               dataGrid.AllowUserToDeleteRows = false;

               dataGrid.AllowUserToAddRows = false;

               tabControl1.TabPages[tabControl1.TabPages.Count - 1].Controls.Add(dataGrid);

               tabControl1.TabPages[requestName].Show();

               tabControl1.SelectedIndex = tabControl1.TabPages.IndexOfKey(requestName);

               средняяСтоимостьЗаказовКлиентовToolStripMenuItem.Checked = true;

           }

           else

           {

               tabControl1.TabPages.RemoveByKey(requestName);

               средняяСтоимостьЗаказовКлиентовToolStripMenuItem.Checked = false;

           }

           WriteButtonsVisible(false);

       }

       private void видТовараToolStripMenuItem1_Click(object sender, EventArgs e)

       {

           connect.Close();

           

           // create an application object.

           string report = "ВидТовара";

           MsAccess.Application app = new MsAccess.Application();

           

           /*

           // open the access database file.

           app.OpenCurrentDatabase(catBD, false, "");

           app.Visible = false;

           // open the report

           app.DoCmd.OpenReport(report, Microsoft.Office.Interop.Access.AcView.acViewPreview,

               Type.Missing, Type.Missing, MsAccess.AcWindowMode.acWindowNormal, Type.Missing);

           // export the report to an HTML file

           app.DoCmd.OutputTo(MsAccess.AcOutputObjectType.acOutputReport,

               report, "HTML (*.html)", report, Type.Missing, Type.Missing, Type.Missing);

           // cleanup

           app.CloseCurrentDatabase();

           app = null;

           connect.Open();

            */

           // open the access database file.

           connect.Close();

           app.OpenCurrentDatabase(catBD);

           app.Visible = false;

           // open the report

           app.DoCmd.OpenReport(report,

               Microsoft.Office.Interop.Access.AcView.acViewPreview, Type.Missing,

               Type.Missing, MsAccess.AcWindowMode.acWindowNormal, Type.Missing);

           // print the report to the default printer.

           app.DoCmd.PrintOut(MsAccess.AcPrintRange.acPrintAll, Type.Missing,

               Type.Missing, MsAccess.AcPrintQuality.acHigh, Type.Missing, Type.Missing);

           // cleanup

           app.CloseCurrentDatabase();

           app = null;

           connect.Open();

       }

       private void отчетыToolStripMenuItem_Click(object sender, EventArgs e)

       {

       }

       private void заказыToolStripMenuItem1_Click(object sender, EventArgs e)

       {

           заказыToolStripMenuItem1.Checked = OpenTable("Заказы_представление","Заказы(просмотр)", false);

           WriteButtonsVisible(false);

       }

       private void сезонностьСпросаToolStripMenuItem_Click_1(object sender, EventArgs e)

       {

           сезонностьСпросаToolStripMenuItem.Checked = OpenTable("Сезонность спроса","Сезонность спроса", false);

           WriteButtonsVisible(false);

       }

       private void накладныеПToolStripMenuItem_Click(object sender, EventArgs e)

       {

           накладныеПToolStripMenuItem.Checked = OpenTable("Накладные","Накладные(просмотр)", false);

           WriteButtonsVisible(false);

       }

       private void накладныеToolStripMenuItem1_Click_1(object sender, EventArgs e)

       {

           накладныеToolStripMenuItem1.Checked = OpenTable("Накладные","Накладные");

           WriteButtonsVisible(true);

       }

       private void bindingNavigatorDeleteItem_Click_1(object sender, EventArgs e)

       {

           try

           {

               DataTable currentTable = (tabControl1.SelectedTab.Controls[0] as DataGridView).DataSource as DataTable;

               DataGridView currentDataGrid = tabControl1.SelectedTab.Controls[0] as DataGridView;

               foreach (DataGridViewRow row in currentDataGrid.SelectedRows)

               {

                   currentTable.Rows[row.Index].Delete();

               }

               dataAdapters[currentTable.TableName].Update(currentTable);

           }

           catch (Exception ex)

           {

               MessageBox.Show(ex.Message);

           }

       }

       private void tabControl1_Selected(object sender, TabControlEventArgs e)

       {

           /*if (tabControl1.TabCount != 0)

           {

               DataTable currentTable = (tabControl1.SelectedTab.Controls[0] as DataGridView).DataSource as DataTable;

               //bindingNavigator1.BindingSource = bindingSources[currentTable.TableName];

               bindingNavigator1.BindingSource = bindingSources[currentTable.TableName];

               bindingNavigator1.AddNewItem.PerformClick();

           }*/

       }

       private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)

       {

           try

           {

               DataTable currentTable = (tabControl1.SelectedTab.Controls[0] as DataGridView).DataSource as DataTable;

               DataGridView currentDataGrid = tabControl1.SelectedTab.Controls[0] as DataGridView;

               OleDbDataAdapter currentAdapter = dataAdapters[currentTable.TableName];

               Form3 valuesForRow = new Form3(currentTable.NewRow());

               valuesForRow.ShowDialog(this);

               if (!valuesForRow.makeNewRow)

               {

                   valuesForRow.Dispose();

                   return;

               }

               DataRow newRow = valuesForRow.rowResult;

               valuesForRow.Dispose();

               newRow.ItemArray = valuesForRow.rowResult.ItemArray;

               newRow.SetField(currentTable.Columns[0].Caption, currentDataGrid.NewRowIndex + 1);

               currentTable.Rows.Add(newRow);

               dataAdapters[currentTable.TableName].Update(currentTable);

           }

           catch (Exception ex)

           {

               MessageBox.Show(ex.Message);

           }

       }


       private void сохранитьToolStripButton_Click(object sender, EventArgs e)

       {

           try

           {

               DataTable currentTable = (tabControl1.SelectedTab.Controls[0] as DataGridView).DataSource as DataTable;

               dataAdapters[currentTable.TableName].Update(currentTable);

           }

           catch (Exception ex)

           {

               MessageBox.Show(ex.Message);

           }

       }

   }

}


Form2.cs


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;

namespace AvonSells

{

   public partial class Form2 : Form

   {

       public string parameter1;

       public string parameter2;

       public bool paramsAccepted;

       private int countParams;

       public Form2(string param1Name, string param2Name)

       {

           InitializeComponent();

           countParams = 2;

           label1.Text = param1Name;

           label2.Text = param2Name;

       }

       public Form2(string param1Name)

       {

           InitializeComponent();

           countParams = 1;

           label2.Enabled = false;

           textBox2.Enabled = false;

           label1.Text = param1Name;

       }

       private void button1_Click(object sender, EventArgs e)

       {

           parameter1 = textBox1.Text;

           if (countParams == 2)

           {

               parameter2 = textBox2.Text;

           }

           paramsAccepted = true;

           Close();

       }

       private void button2_Click(object sender, EventArgs e)

       {

           Close();

       }                

   }  }

Form3.cs

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;

namespace AvonSells

{

   public partial class Form3 : Form

   {

       public DataRow rowResult;

       public bool makeNewRow;

       private const int itemsPadding = 20;

       private const int itemsLength = 100;

       public Form3()

       {

           InitializeComponent();

       }

       public Form3(DataRow row)

       {

           InitializeComponent();

           makeNewRow = false;

           rowResult = row;

           int left = itemsPadding;

           int index = 0;

           int maximumButtonsTop = 0;

           DataColumnCollection parentColumns = row.Table.Columns;

           foreach (object item in row.ItemArray)

           {

               if (index == 0)

               {

                   index++;

                   continue;

               }

               Label caption = new Label();

               TextBox textBox = new TextBox();

               Controls.Add(textBox);

               Controls.Add(caption);

               caption.Top = itemsPadding;

               caption.Text = parentColumns[index].Caption;

               caption.AutoSize = true;

               caption.Refresh();

               caption.Left = left;

               textBox.Width = itemsLength;

               textBox.Top = caption.Bottom + itemsPadding / 4;

               textBox.Left = left;

               textBox.Show();

               caption.Show();

               maximumButtonsTop = Math.Max(maximumButtonsTop, textBox.Bottom + itemsPadding);

               left += textBox.Width + itemsPadding;

               index++;

           }

           Width = Math.Max(left, button1.Width + button2.Width + itemsPadding * 2);

           button1.Left = Width / 2 - button1.Width - itemsPadding / 2;

           button2.Left = Width / 2 + itemsPadding / 2;

           button1.Top = button2.Top = maximumButtonsTop;

           

       }

       private void button2_Click(object sender, EventArgs e)

       {

           try

           {

               DataColumnCollection parentColumns = rowResult.Table.Columns;

               int index = 1;

               foreach (Control control in Controls)

               {

                   if (control is TextBox)

                   {

                       rowResult.SetField(parentColumns[index].Caption, (control as TextBox).Text);

                       index++;

                   }

               }

           }

           catch(Exception ex)

           {

               MessageBox.Show(ex.Message);

           }

           makeNewRow = true;

           Close();

       }

       private void button1_Click(object sender, EventArgs e)

       {

           Close();

       }

   }

}


 

А также другие работы, которые могут Вас заинтересовать

36558. Система программирования TURBO PASCAL 7.0 28 KB
  Важнейшим компонентом системы программирования Турбо Паскаль, обеспечивающим взаимодействие с пользователем, является интегрированная среда разработки (IDE) - одна из лучших интегрированных сред систем программирования MS DOS
36559. Понятие о языках программирования 31.5 KB
  Мы все несомненно имеем некоторое представление о языке как средстве общения. Русский английский или японский язык это естественные языки общения людей созданные в процессе длительной эволюции. Однако наряду с естественными языками современная цивилизация широко использует так называемые искусственные или формальные языки.
36560. Аппаратное и программное обеспечение компьютера 32 KB
  Программное обеспечение включает в себя прежде всего операционную систему такую как MS DOS Windows 3.1 или Windows 95. Одной из первых систем графического интерфейса была Windows 3. Так в системе Windows вы можете одновременно выводить информацию на принтер и редактировать какойлибо файл информации.
36561. Программы, управляемые событиями 28.5 KB
  Для реакции такой программы на внешние события например сигналы таймера ошибки в устройствах компьютера и др. аппаратные переключения с выполнения исходной программы на специальную программу обработки прерывания. Средства прерывания широко применяли в рамках концепции последовательной программы при организации многозадачных режимов и эффективного использования процессора компьютера. Однако концепция последовательной программы несмотря на свою универсальность оказывается неэффективной для современного персонального компьютера имеющего...
36562. Принцип программного управления 45 KB
  Всё что способен делать компьютер это выполнять программы. Процессор â€движущая сила†исполнитель точно выполняющий команды программы. а также операции копирования перемещения информации из одних ячеек памяти в другие ввода данных в оперативную память например символов набранных на клавиатуре вывода информации например на экран дисплея или на диск окончания программы и другие.  Процессор выполняет команды начиная с первой команды программы.
36563. Структурный тип запись 45 KB
  Например анкета служащего содержит такие данные как фамилия имя отчество строковый тип год рождения целый тип разряд целый тип и многие другие данные. Объединение таких данных общий структурный типанкета затруднительно сделать в рамках массива или множества. Естественным средством структурирования в этом и подобных случаях является структурный тип Запись.
36564. Структурный тип множество 41.5 KB
  Понятие о типе Множество в Турбо Паскале. Множество является ещё одним структурным типом Турбо Паскаля служащим для объединения однородных однотипных элементов. Однако форма объединения в Множество существенно отличается от типа Массив.
36565. Особенности разработки программы с подпрограммой 35.5 KB
  Практически все используемые прикладные программы это программы с подпрограммами процедурами и функциями. Подпрограммы как уже указывалось позволяют преодолевать сложность обеспечивая декомпозицию программы на более простые составные части. Разработка программ на ТурбоПаскале с подпрограммами имеет ряд отличий от той методики которая изложена выше применительно с простым программам.
36566. Область действия имен в программе 29 KB
  В программах не использующих подпрограммы имена описанные в разделе описаний действуют во всей программе не вызывая какихлибо проблем. В подпрограммах могут использоваться свои локальные внутренние имена и кроме того она может также использовать глобальные внешние для неё имена из других подпрограмм или основной программы. Локальными именами подпрограммы называются те имена которые описаны в этой подпрограмме в её разделе описаний. Все остальные используемые в подпрограмме имена являются глобальными именами данной...