Файл: Разработка сайта компании ООО «Весна». (Продажа бытового инструмента).pdf
Добавлен: 11.03.2024
Просмотров: 53
Скачиваний: 0
СОДЕРЖАНИЕ
1. Техническое задание и выбор средств реализации.
2. Описание модулей серверной части программы и их взаимодействие.
3. Описание структуры базы данных и ее функций.
4. Описание структуры клиентской части.
4.1. Описание интерфейса «Обычный пользователь».
4.2. Описание интерфейса «Администратор»
Оплата Товара за наличный расчет осуществляется:
- в Розничном магазине в момент осуществления Заказа или в момент передачи Товара Покупателю;
- путем передачи денежных средств курьеру Продавца или платежному агенту Продавца.
Оплата Товара по безналичному расчету осуществляется:
- путем оплаты платежной картой в момент оформления Заказа или в момент получения Товара Покупателем;
- путем перечисления безналичных денежных средств на расчетный счет Продавца (при условии указания в платежном поручении номера Интернет-Заказа, по которому производится оплата);
- путем использования электронных средств платежа.
Договоры с отсрочкой платежа или договоры реализации не распространяются на интернет-заказы юридических лиц. Продажа товара юридическому лицу по интернет-заказу осуществляется на основании разового договора по 100% предоплате.
Доставка Товара, заказанного в Интернет-магазине, осуществляется несколькими способами:
- самовывоз из Розничного магазина — бесплатно;
- курьер по городу (в соответствии с установленными Продавцом тарифами, расчет стоимости доставки производится в момент оформления заказа);
- транспортной компанией в регионы (в соответствии с тарифами, установленными данной компанией).
Возможность другого варианта Доставки, не описанного в данном разделе, оговаривается отдельно с заинтересованным Покупателем.
Расходы по Доставке товара, если они предусмотрены, оплачиваются Покупателем. Исключение составляют акции Интернет-магазина, которые предполагают бесплатную доставку.
В случае если Покупатель не получил Товар по своей вине (например, отсутствовал в согласованное время по месту получения Товара), Продавец вправе требовать оплаты услуг по Доставке в полном объеме, если способ Доставки предусматривает оплату. Повторный вызов представителей Продавца в целях Доставки также оплачивается Покупателем.
При Доставке Товара Покупателю служба доставки передает ему все необходимые документы (кассовый и товарный чек (если покупка была за наличный расчет) либо накладная и счет-фактура (в случае безналичной оплаты), гарантийный талон, инструкция по эксплуатации).
При приеме Товара от представителей Продавца Покупателю необходимо проверить комплектацию и внешний вид Товара, распаковать, осмотреть и убедиться в том, что Товар не имеет внешних механических повреждений, соответствует заявленным потребительским свойствам, внешнему виду и комплектации, в наличии товарного и кассового чеков, либо накладной и счет-фактуры, гарантийного талона, инструкции по эксплуатации. При получении Товара Покупателю необходимо изучить условия, указанные в товарном чеке (если покупка была за наличный расчет), где он ставит свою подпись о согласии с правилами возврата и обмена Товара.
Заключение
По итогам разработки проекта, можно отметить, что мы имеем полностью работоспособную систему, которая может выполнять задачи, предусмотренные в техническом задании.
В ходе разработки системы была изучена предметная область, проанализированы требования системы. Большую часть времени заняла разработка базы данных системы и доступа к ней. Не меньше времени было потрачено на разработку серверной и клиентской части системы. При разработке клиентской части системы, был изучен большой объём документации, а так же освоены основные навыки верстки интернет-страниц.
Использование и внедрение разработки позволит выгодно и изящно выделиться владельцу интернет-магазина из числа своих конкурентов.
Реализованные функциональные идеи служат для привлечения большого числа пользователей. Таким образом, система является полностью конкурентоспособной по сравнению с имеющимися аналогами.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- 47 готовых решений для создания Web-сайта (+ DVD-ROM) / А.Г. Богданов и др. - М.: Триумф, 2015. - 272 c.
- Web-дизайн с нуля! (+ CD-ROM) / П.П. Константинов и др. - М.: Лучшие книги, 2015. - 304 c.
- Вандюк, Джон К. CMS Drupal. Руководство по разработке системы управления сайтом / Вандюк, Джон К., Мэтт Вестгейт,. - М.: Вильямс, 2016. - 400 c.
- Гаевский, А.Ю. 100% самоучитель. Создание Web-страниц и Web-сайтов. HTML и JavaScript / А.Ю. Гаевский, В.А. Романовский. - М.: Триумф, 2015. - 464 c.
- Гончаров, А. Web-дизайн / А. Гончаров. - Москва: ИЛ, 2016. - 320 c.
- Дронов, Владимир JavaScript и AJAX в Web-дизайне / Владимир Дронов. - Москва: Высшая школа, 2016. - 736 c.
- Китинг Flash MX. Искусство создания web-сайтов / Китинг, Джоди. - М.: ТИД ДС, 2014. - 848 c.
- Митчелл 5 проектов Web-сайтов от фотоальбома до магазина / Митчелл, Скотт. - М.: НТ Пресс, 2014. - 224 c.
- Консорциум W3C или современные стандарты всемирной паутины. URL: http://www.designonstop.com/webdesign/article/konsorcium-w3c-ili-sovremennye-standarty-vsemirnoj-pautiny.htm/
Приложение
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 Магазин_компьютерной_техники
{
public partial class Form2 : Form
{
public int current, current33, current4;
public Form2()
{
InitializeComponent();
dataGridView2.Visible = panel4.Visible = panel1.Visible = panel2.Visible = panel3.Visible
= panel5.Visible = panel6.Visible = false;
dataGridView3.RowHeadersVisible = dataGridView6.Visible = false;
comboBox1.SelectedIndex = 4;
comboBox2.SelectedIndex = 10;
comboBox1.DropDownWidth = comboBox3.DropDownWidth = 210;
comboBox2.DropDownWidth = comboBox4.DropDownWidth = 210;
}
private void Form2_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "computerShopDataSet.Tovar". При необходимости она может быть перемещена или удалена.
this.tovarTableAdapter.Fill(this.computerShopDataSet.Tovar);
// TODO: данная строка кода позволяет загрузить данные в таблицу "computerShopDataSet.goodProd". При необходимости она может быть перемещена или удалена.
this.goodProdTableAdapter.Fill(this.computerShopDataSet.goodProd);
// TODO: данная строка кода позволяет загрузить данные в таблицу "computerShopDataSet.Prodagi". При необходимости она может быть перемещена или удалена.
this.prodagiTableAdapter.Fill(this.computerShopDataSet.Prodagi);
// TODO: данная строка кода позволяет загрузить данные в таблицу "computerShopDataSet.goodTovar". При необходимости она может быть перемещена или удалена.
this.goodTovarTableAdapter.Fill(this.computerShopDataSet.goodTovar);
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
Bitmap image1 = new Bitmap("img/update1.png");
pictureBox1.Image = image1;
}
private void pictureBox1_MouseLeave(object sender, EventArgs e)
{
Bitmap image1 = new Bitmap("img/update2.png");
pictureBox1.Image = image1;
}
// загрузка таблицы Товары
private void загрузитьТоравToolStripMenuItem_Click(object sender, EventArgs e)
{
panel3.Visible = true;
tabControl1.SelectedTab = tabPage1;// автоматическое открытие вкладки с таблицей Товары
}
//загрузка таблицы Продажи
private void загрузитьПродажиToolStripMenuItem_Click(object sender, EventArgs e)
{
panel4.Visible = true;
tabControl1.SelectedTab = tabPage2;// автоматическое открытие вкладки с таблицей Продажи
}
// добваление товара двойным щелчком
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
int sumProd = 0, idTovar = 0, kolSklad = 0, totalKol = 0;
current = dataGridView1.CurrentRow.Index;
textBox1.Text = Convert.ToString(dataGridView1.Rows[current].Cells[1].Value);
idTovar = Convert.ToInt32(dataGridView1.Rows[current].Cells[0].Value);
for (int i = 0; i < dataGridView2.RowCount; i++)
{
if (Convert.ToInt32(dataGridView2.Rows[i].Cells[6].Value) == idTovar)
{
sumProd += Convert.ToInt32(dataGridView2.Rows[i].Cells[2].Value);
}
else sumProd += 0;
}
kolSklad = Convert.ToInt32(dataGridView6.Rows[current].Cells[3].Value);
totalKol = kolSklad - sumProd;
textBox6.Text = totalKol.ToString();
textBox2.Text = "1";
panel2.Visible = true;
}
// добавление выбранного товара в корзину
private void button1_Click(object sender, EventArgs e)
{
current = dataGridView1.CurrentRow.Index;
dataGridView1.Rows[current].Selected = true;
panel1.Visible = true;
// вставка данных в корзину
int totalPrice = 0;
if( Convert.ToInt32(textBox2.Text) < Convert.ToInt32(textBox6.Text))
{
totalPrice = Convert.ToInt32(textBox2.Text) * Convert.ToInt32(dataGridView1.Rows[current].Cells[2].Value);
dataGridView3.Rows.Add(dataGridView1.Rows[current].Cells[0].Value, textBox1.Text,dataGridView1.Rows[current].Cells[2].Value, textBox2.Text, totalPrice);
// подсчет общей стоимости в корзине
int allTotalPrice = 0;
for (int i = 0; i < dataGridView3.RowCount-1; i++)
{
allTotalPrice += Convert.ToInt32(dataGridView3.Rows[i].Cells[4].Value);
textBox3.Text = allTotalPrice.ToString();
}
}
else
MessageBox.Show("Выбранное количество товара больше,\n чем имеется на складе.\n Введите меньшее число","Внимание");
//dataGridView3.Rows.Add(dataGridView2.RowCount, "1", textBox2.Text, totalPrice, DateTime.Today, "1", dataGridView1.Rows[current].Cells[0].Value);
}
// выделение всей строки в таблице Товары
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
current = dataGridView1.CurrentRow.Index;
dataGridView1.Rows[current].Selected = true;
}
// оформление всей продажи и занесение в таблицу Продажи
private void button2_Click(object sender, EventArgs e)
{
// получение текущего индекса продажи
int kodSell = 0, lastInd = 0, indTable = 0, kodTovar = 0, kolProd = 0, sumTovar = 0;
if (dataGridView2.RowCount != 1)
{
lastInd = dataGridView2.RowCount - 2;
kodSell = Convert.ToInt32(dataGridView2.Rows[lastInd].Cells[0].Value) + 1;
}
else kodSell = 1;
// вставить значения в таблицу продажи
for (int i = 0; i < dataGridView3.RowCount - 1; i++)
{
if (dataGridView2.RowCount != 1)
{
indTable = dataGridView2.RowCount+1;
}
else indTable = 1;
kodTovar = Convert.ToInt32(dataGridView3.Rows[i].Cells[0].Value);
kolProd = Convert.ToInt32(dataGridView3.Rows[i].Cells[3].Value);
sumTovar = Convert.ToInt32(dataGridView3.Rows[i].Cells[4].Value);
prodagiTableAdapter.Insert(indTable, kodSell, kolProd, sumTovar, DateTime.Now, 1, kodTovar);
prodagiTableAdapter.Update(computerShopDataSet);
prodagiTableAdapter.Fill(computerShopDataSet.Prodagi);
}
panel4.Visible = true;
tabControl1.SelectedTab = tabPage2;
goodProdTableAdapter.Fill(computerShopDataSet.goodProd);
dataGridView3.Rows.Clear();
textBox1.Text = textBox6.Text = textBox3.Text = "";
}
// очистка корзины
private void button3_Click(object sender, EventArgs e)
{
dataGridView3.Rows.Clear();
textBox3.Text = "";
}
// пересчитываем сумму оплаты при изменении количества товара
private void dataGridView3_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
int current3, newPrice = 0;
try
{
current3 = dataGridView3.CurrentRow.Index;
newPrice = Convert.ToInt32(dataGridView3.Rows[current3].Cells[2].Value) * Convert.ToInt32(dataGridView3.Rows[current3].Cells[3].Value);
dataGridView3.Rows[current3].Cells[4].Value = newPrice;
// пересчет общей стоимости всей продажи
int allTotalPrice = 0;
for (int i = 0; i < dataGridView3.RowCount - 1; i++)
{
allTotalPrice += Convert.ToInt32(dataGridView3.Rows[i].Cells[4].Value);
textBox3.Text = allTotalPrice.ToString();
}
}
catch
{
label5.Text = "";
}
}
// выделение строки в таблице Продажи
private void dataGridView4_CellClick(object sender, DataGridViewCellEventArgs e)
{
current4 = dataGridView4.CurrentRow.Index;
dataGridView4.Rows[current4].Selected = true;
}
// сортировака данных по полю Код товара
private void textBox11_TextChanged(object sender, EventArgs e)
{
int cr;
if (textBox11.Text != "")
{
cr = Convert.ToInt32(textBox11.Text);
goodTovarBindingSource.Filter = "ID_Tovar = " + cr;
}
else
{
cr = 0;
goodTovarBindingSource.Filter = "ID_Tovar <> " + cr;
}
}
// сортировка данных по полю Наименование
private void textBox12_TextChanged(object sender, EventArgs e)
{
string cr = "";
cr = textBox12.Text;
goodTovarBindingSource.Filter = "naimenovanie LIKE '%" + cr + "%'";
}
// выделение строки в таблице Продажи
private void dataGridView4_CellClick_1(object sender, DataGridViewCellEventArgs e)
{
current4 = dataGridView4.CurrentRow.Index;
dataGridView4.Rows[current4].Selected = true;
}
// сортировка данных по полю Цена за штуку
private void textBox14_TextChanged(object sender, EventArgs e)
{
int from, to;
if (textBox13.Text == "")
{
from = 0;
}
else from = Convert.ToInt32(textBox13.Text);
if (textBox14.Text != "")
{
to = Convert.ToInt32(textBox14.Text);
goodTovarBindingSource.Filter = "cena_shtyka >" + from + " AND cena_shtyka <" + to;
}
else
{
textBox13.Text = "";
goodTovarBindingSource.Filter = "cena_shtyka <> 0";
}
}
// сортировка данных по полю Категория
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
}
// сортировка данных по полю Подкатегория
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox2.SelectedIndex)
{
// подсчет общей стоимости цены всей покупки
private void dataGridView4_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
int currentID, totalPrice = 0;
panel5.Visible = true;
current4 = dataGridView4.CurrentRow.Index;
currentID = Convert.ToInt32(dataGridView4.Rows[current4].Cells[1].Value);
for (int i = 0; i < dataGridView4.RowCount; i++)
{
if (Convert.ToInt32(dataGridView4.Rows[i].Cells[1].Value) == currentID)
{
totalPrice += Convert.ToInt32(dataGridView4.Rows[i].Cells[4].Value);
}
else totalPrice += 0;
}
textBox4.Text = currentID.ToString();
textBox5.Text = totalPrice.ToString();
}