Диплом: Автоматизация управления взаимоотношениями с клиентами на примере ООО "Витамилк"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
101
Name.BackColor = System.Drawing.Color.Khaki;
SetLocation(Name, constlistboxX, constlistboxX);
Name.Size = new System.Drawing.Size(570, 20);
form.Controls.Add(Name);
}
//размещения элемента счетчика для количества
public void AddNumericUpDownConter()
{
Counter = new NumericUpDown();
Counter.Value = (decimal)(ElemCart.Amount??0);
SetLocation(Counter, constnumericX, constnumericY);
Counter.Size = new System.Drawing.Size(40, 20);
form.Controls.Add(Counter);
Counter.ValueChanged += new System.EventHandler(
this.numeric_ValueChanged);
}
//размещения текстового элемента для цены
public void AddLabelPrice()
{
Price = new Label();
Price.Text = ElemCart.Product.Price.ToString() + "руб.";
SetLocation(Price, constlabelX, constlabelY);
Price.Size = new System.Drawing.Size(50, 20);
form.Controls.Add(Price);
}
//размещения элемента Кнопки для удаления
public void AddDeleteButton()
{
DeleteButton = new Button();
DeleteButton.Text = "Удалить";
DeleteButton.BackColor = System.Drawing.Color.OliveDrab;
DeleteButton.ForeColor = System.Drawing.Color.White;
SetLocation(DeleteButton, constbuttonX, constbuttonY);
DeleteButton.Size = new System.Drawing.Size(190, 25);
form.Controls.Add(DeleteButton);
DeleteButton.Click += new System.EventHandler(this.button_Click);
}
//метод настройки размещения элемента
public void SetLocation(Control control, int x, int y)
{
control.Location = new System.Drawing.Point(x,
(y + 75 * Index + 25 * Index));
}
//метод для очистки формы от элементов
public void DeleteAllControls()
{
form.Controls.Remove(Name);
form.Controls.Remove(Counter);
form.Controls.Remove(Price);
form.Controls.Remove(DeleteButton);
}
//события при нажатии на кнопку Удалить
private void button_Click(object sender, EventArgs e)
{
using (WholeSale db = new WholeSale())
{
Cart clientcart = db.Clients.Find(User.Id).Carts.ElementAt(Index);
db.Clients.Find(User.Id).Carts.Remove(clientcart);
db.SaveChanges();
}
ActionAfterDeleteButton();
}
//события при нажатии на измения значения счетчика количества
private void numeric_ValueChanged(object sender, EventArgs e)
102
{
using (WholeSale db = new WholeSale())
{
db.Clients.Find(User.Id).Carts.ElementAt(Index).Amount =
int.Parse(Counter.Value.ToString());
db.SaveChanges();
}
ActionAfterNumeric();
}
}
}
Программный код формы корзины
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DBForms
{
public partial class ClientCart : Form
{
ClientCartElement[] cartsElements;
Label SumBox;
Button Button;
public ClientCart()
{
InitializeComponent();
MyRefresh();
}
//метод для удаления всех элементов
private void oClick()
{
using (WholeSale db = new WholeSale())
{
for (int i = 0; i < cartsElements.Length; i++)
{
cartsElements[i].DeleteAllControls();
}
this.MyRefresh();
}
}
//метод размещения элементов на форму
public void MyRefresh()
{
using (WholeSale db = new WholeSale())
{
var products = db.Clients.Find(User.Id).Carts;
cartsElements = new
ClientCartElement[db.Clients.Find(User.Id).Carts.Count];
for (int i = 0; i < cartsElements.Length; i++)
{
cartsElements[i] = new ClientCartElement(this,
i, products.ElementAt(i), oClick, MyRefresh);
}
103
GetAllSum();
GetButton();
}
}
//метод подсчета суммы
public void GetAllSum()
{
this.Controls.Remove(SumBox);
SumBox = new Label();
if (cartsElements.Length != 0)
{
SumBox.Text = "Сумма: " +
new MainController().GetSumClientCart().ToString() + "руб.";
SumBox.BackColor = System.Drawing.Color.Khaki;
SumBox.Location =
new System.Drawing.Point(300, cartsElements.Length * 90 + 25);
SumBox.Size = new System.Drawing.Size(120, 20);
this.Controls.Add(SumBox);
}
else this.Text = "Корзина пуста";
}
//метод размещения кнопки заказа
public void GetButton()
{
this.Controls.Remove(Button);
if (cartsElements.Length != 0)
{
Button = new Button();
Button.Text = "Заказать";
Button.BackColor = System.Drawing.Color.OliveDrab;
Button.ForeColor = System.Drawing.Color.White;
Button.Location =
new System.Drawing.Point(300, cartsElements.Length * 90 + 55);
Button.Size = new System.Drawing.Size(190, 25);
this.Controls.Add(Button);
MakingOrder f = new MakingOrder();
Button.Click += (o, e) => f.Show();
Button.Click += (o, e) => this.Close();
}
}
}
}
Программный код формы просмотра продукции
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DBForms
{
public partial class Products : Form
{
private Category SelectedCategory { get; set; }
private Product SelectedProduct { get; set; }
private int IndexProduct { get; set; }
WholeSale db;
104
public Products()
{
InitializeComponent();
db = new WholeSale();
listBox1.DataSource = db.Categories.ToList();
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "CategoryId";
listBox1_Click(this, new EventArgs());
NotOrder();
// pictureBox3.ImageLocation = @"..\..\Images\2.png";
}
//выбор категории на listbox1
private void listBox1_Click(object sender, EventArgs e)
{
SelectNewCategory();
if (SelectedCategory.Products.Count > 0)
{
SelectNewProduct();
}
else ClearProduct();
}
//пред. элемент продукт
private void button2_Click(object sender, EventArgs e)
{
if (IndexProduct != 0)
{
IndexProduct--;
SelectNewProduct();
}
}
//следующий элемент продукт
private void button1_Click(object sender, EventArgs e)
{
if (IndexProduct + 1 != SelectedCategory.Products.Count)
{
IndexProduct++;
SelectNewProduct();
}
}
//выбор новой категории
private void SelectNewCategory()
{
SelectedCategory = db.Categories.Find(listBox1.SelectedValue);
IndexProduct = 0;
}
//выбор нового продукта
private void SelectNewProduct()
{
ClearProduct();
SelectedProduct = SelectedCategory.Products.ElementAt(IndexProduct);
labelName.Text = SelectedProduct.Name;
richTextBox1.Text= SelectedProduct.Composition;
label1.Text = "Вес: " + SelectedProduct.Weight+"г";
label4.Text = "Жиры,г: "+SelectedProduct.Fats;
label5.Text = "Белки,г: "+SelectedProduct.Corbohydrotes;
label6.Text = "Углеводы,г: "+SelectedProduct.Squirrels;
label7.Text = "Срок годности и условия хранения:
"+SelectedProduct.Shelf_life;
105
label8.Text = "Прочее: "+SelectedProduct.Other;
}
//метод очистки данных
private void ClearProduct()
{
labelName.Text = "";
richTextBox1.Text ="";
label1.Text = "Вес: ";
label4.Text = "Жиры,г: ";
label5.Text = "Белки,г: ";
label6.Text = "Углеводы,г: ";
label7.Text = "Срок годности и условия хранения: ";
label8.Text = "Прочее: ";
}
//заказ
private void button3_Click(object sender, EventArgs e)
{
if (db.Carts.Where(c => c.ClientId == User.Id)
.Where(p => p.ProductId == SelectedProduct.
ProductId).Count() == 0)
{
Cart cart = new Cart
{
ClientId = User.Id,
Product = SelectedProduct,
Amount = int.Parse(numericUpDown1.Value.ToString())
};
db.Carts.Add(cart);
db.SaveChanges();
}
}
//ограничение для менеджеров
public void NotOrder()
{
if (User.Type == UserType.Admin)
{
numericUpDown1.Visible = false;
button3.Visible = false;
}
}
}
}
Программный код формы авторизации.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DBForms
{
public partial class FirstForm : Form
{
106
public FirstForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text=="" || textBox2.Text=="")
{
MessageBox.Show("Введите данные");
return;
}
if (new MainController().LogInAdmin(
textBox1.Text, textBox2.Text)!=-1)
{
User.Id = new MainController().LogInAdmin(
textBox1.Text, textBox2.Text);
User.Type = UserType.Admin;
new AdminForm().Show();
return;
}
if (new MainController().LogInClient(
textBox1.Text, textBox2.Text) != -1)
{
User.Id = new MainController().LogInClient(
textBox1.Text, textBox2.Text);
User.Type = UserType.Client;
new ClientHistory().Show();
return;
}
MessageBox.Show("Такого пользователя не существует");
}
private void регистрацияToolStripMenuItem_Click(object sender, EventArgs e)
{
new Regist().Show();
}
}
}
107
Программный код формы авторизации.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DBForms
{
public partial class Regist : Form
{
public Regist()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == ""
|| textBox4.Text == "" || textBox5.Text == "" || textBox6.Text == "")
{
MessageBox.Show("Введите все данные");
}
else
{
using (WholeSale db = new WholeSale())
{
Client newClient = new Client();
newClient.Name = textBox1.Text;
newClient.SecondName = textBox2.Text;
newClient.Phone = textBox3.Text;
newClient.Email = textBox4.Text;
newClient.Adress = textBox5.Text;
newClient.Password = textBox6.Text;
db.Clients.Add(newClient);
db.SaveChanges();
MessageBox.Show("Регистрация произошла успешно!");
this.Close();
}
}
}
}
}
108
Приложение 3. Скрипт создание БД
Ниже приведен скрипт создания таблицы администраторов:
CREATE TABLE Admins(
AdminId integer IDENTITY (1,1) ,
Name nvarchar(20) NOT NULL ,
Phone varchar(20) NOT NULL ,
Password varchar(20) NOT NULL ,
CONSTRAINT XPKAdmins PRIMARY KEY CLUSTERED (AdminId ASC))
Ниже приведен скрипт создания таблицы корзины клиента:
CREATE TABLE Carts(
ClientId integer NOT NULL ,
ProductId integer NOT NULL ,
Amount integer NOT NULL ,
CHECK(Amount>=0),
CONSTRAINT XPKCarts PRIMARY KEY CLUSTERED (ClientId ASC,ProductId
ASC))
Ниже приведен скрипт создания таблицы категорий:
CREATE TABLE Categories(
CategoryId integer IDENTITY (1,1) ,
Name nvarchar(40) NOT NULL ,
Description text NULL ,
CONSTRAINT XPKCategories PRIMARY KEY CLUSTERED (CategoryId ASC))
Ниже приведен скрипт создания таблицы клиентов:
CREATE TABLE Clients(
ClientId integer IDENTITY (1,1) ,
Name nvarchar(20) NOT NULL ,
SecondName nvarchar(20) NOT NULL ,
Phone varchar(20) NOT NULL ,
Password nchar(18) NOT NULL ,
Adress nvarchar(120) NOT NULL ,
CONSTRAINT XPKClients PRIMARY KEY CLUSTERED (ClientId ASC))
Ниже приведен скрипт создания таблицы заказов:
CREATE TABLE Orders(
OrderId integer IDENTITY (1,1) ,
Date datetime NOT NULL ,
109
ClientId integer NOT NULL ,
Sum decimal NOT NULL ,
Adress nvarchar(120) NOT NULL ,
StatusOrderId integer NULL ,
AdminId integer NULL ,
CHECK(SUM>=0)
CONSTRAINT XPKOrders PRIMARY KEY CLUSTERED (OrderId ASC))
Ниже приведен скрипт создания таблицы продукции:
CREATE TABLE Products(
ProductId integer IDENTITY (1,1) ,
Name nvarchar(255) NOT NULL ,
Price decimal NOT NULL ,
Company nvarchar(55) NOT NULL ,
Amount integer NOT NULL ,
Composition text NOT NULL ,
Weight integer NOT NULL ,
Shelf_life nvarchar(20) NULL ,
Fats integer NULL ,
Squirrels integer NULL ,
Corbohydrotes integer NULL ,
Other nvarchar(20) NULL ,
CategoryId integer NULL ,
Image nvarchar(150) NULL ,
CHECK(PRICE>=0),
CHECK(Amount>=0),
CONSTRAINT XPKProducts PRIMARY KEY CLUSTERED (ProductId ASC))
Ниже приведен скрипт создания таблицы состава заказов:
CREATE TABLE Purchases(
OrderId integer NOT NULL ,
ProductId integer NOT NULL ,
Amount integer NOT NULL ,
Price decimal NOT NULL ,
CHECK(PRICE>=0),
CHECK(Amount>=0),
110
CONSTRAINT XPKPurchases PRIMARY KEY CLUSTERED (OrderId
ASC,ProductId ASC))
Ниже приведен скрипт создания таблицы администраторов:
CREATE TABLE StatusOrders(
StatusOrderId integer IDENTITY (1,1) ,
Name nvarchar(20) NULL ,
CONSTRAINT XPKStatusOrders PRIMARY KEY CLUSTERED (StatusOrderId ASC))
Ниже приведено создание связей между таблицами корзины клиента,
клиента и продукции.
ALTER TABLE Carts
ADD CONSTRAINT R_5 FOREIGN KEY (ClientId) REFERENCES Cli-
ents(ClientId)
ON DELETE CASCADE
ON UPDATE CASCADE
ALTER TABLE Carts
ADD CONSTRAINT R_11 FOREIGN KEY (ProductId) REFERENCES Prod-
ucts(ProductId)
ON DELETE CASCADE
ON UPDATE CASCADE
Ниже приведено создание связей между таблицами заказами, статусами
заказов, администраторов и клиентов
ALTER TABLE Orders
ADD CONSTRAINT R_2 FOREIGN KEY (StatusOrderId) REFERENCES Sta-
tusOrders(StatusOrderId)
ON DELETE NO ACTION
ON UPDATE NO ACTION
ALTER TABLE Orders
ADD CONSTRAINT R_6 FOREIGN KEY (AdminId) REFERENCES Ad-
mins(AdminId)
ON DELETE CASCADE
ON UPDATE CASCADE
ALTER TABLE Orders
ADD CONSTRAINT R_7 FOREIGN KEY (ClientId) REFERENCES Cli-
ents(ClientId)

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)