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

Общая характеристика современных систем управления базами данных; обеспечение целостности и безопасности информации. Разработка модели данных для учета продаж косметической продукции. Разработка интерфейса пользователя, отладка и анализ результатов.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 28.04.2014
Размер файла 598,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

Введение

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

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

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

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

Заключение

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

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

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

Введение

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

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

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

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

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

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

- системы общего назначения;

- специализированные системы.

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

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

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

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

- мощные языки программирования;

- средства реализации меню, экранных форм ввода-вывода данных и генерации отчетов;

- средства генерации приложений (прикладных программ);

- генерацию исполнимых файлов.

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

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

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

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

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

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

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

Номер клиента;

ФИО;

Телефон;

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

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

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

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

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

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

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

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

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

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

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

база данных система управления

В меню Базы Данных находится 4 кнопки, в каждой из которых свое контекстное меню. Нажав на определенную кнопку из контекстного меню, появится интересующая нас вкладка (см. рисунок 3).

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

Вид товара;

Заказы;

Клиенты;

Накладные;

Товары;

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

Для сохранения - нажать «Сохранить». Кнопка «Просмотр» позволяет просматривать таблицы, а именно: «Заказы», «Накладные», «Сезонность спроса». Кнопка «Запросы» предоставляет информацию о заказанных товарах за последние месяцы, о продаже товаров по видам и о средней стоимости заказов клиентов. Запросы параметризованы. С одним и с двумя параметрами(см. Рисунок 4).

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

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

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

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

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

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

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

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

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

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

Заключение

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

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

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

Приложение 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",[ДатаЗаказа]);

Скрипт БД

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);

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);

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,

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).

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

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

On delete cascade,

Вид int not null,

On Update cascade,

On delete cascade).

Приложение 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 = bindingSource s[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();}}}

Размещено на Allbest.ru


Подобные документы

  • Проектирование модели базы данных в соответствии с предметной областью "Торговля". Разработка архитектуры системы безопасности приложения по ведению базы данных. Реализация приложения, обеспечивающего учет продаж и закупок предприятия. Способы его защиты.

    дипломная работа [2,5 M], добавлен 05.02.2017

  • Необходимая документация при учете готовой продукции на складе ООО "Перекрёсток". Проектирование базы данных на основе нормализации. Схема данных и связи между таблицами в проектируемой базе данных. Обеспечение безопасности и целостности базы данных.

    дипломная работа [2,9 M], добавлен 15.01.2012

  • Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.

    курсовая работа [867,9 K], добавлен 16.07.2013

  • Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.

    курсовая работа [1,1 M], добавлен 04.09.2014

  • История создания предприятия и анализ его деятельности. Основные понятия торговли. Этапы разработки модели данных, построение информационно-логической модели. Разработка базы данных для учета товародвижения и документооборота на предприятии в ACCESS.

    дипломная работа [1006,2 K], добавлен 14.01.2012

  • Выделение информационных объектов и их инфологическая модель. Логическая структура реляционной базы данных. Разработка таблиц в системе управления базами данных Access. Создание запросов, форм и отчетов в СУБД Access. Разработка приложения пользователя.

    курсовая работа [2,8 M], добавлен 05.02.2018

  • Разработка базы данных и приложения для автоматизации ведения кадрового учёта предприятия. Формирование таблицы анкетных данных. Разработка графического интерфейса пользователя клиентских приложений. Возможность подключения к удаленной базе данных.

    дипломная работа [47,6 K], добавлен 17.02.2009

  • Разработка приложения, позволяющего автоматизировать документооборот предприятия по списанию основных средств. Мероприятия по защите и обеспечению целостности базы данных. Разработка клиентского приложения. Запросы к базе данных, руководство пользователя.

    курсовая работа [700,0 K], добавлен 14.01.2015

  • Концептуальное и инфологическое проектирование базы данных в системе управления базами данных Microsoft Access. Физическое проектирование базы данных "Магазин спорттоваров". Тестирование и отладка базы данных, составление руководства пользователя.

    курсовая работа [6,7 M], добавлен 22.11.2022

  • Разработка программного приложения WindowsForms для работы с базой данных на языке высокого уровня C# в автономном режиме с использованием ADO.NET. Проектирование реляционной модели базы данных, интерфейса приложения, основных функций и возможностей.

    курсовая работа [4,3 M], добавлен 30.06.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.