Файл: Особенности алгоритмизации при разработке WEB-приложений (Преимущества и недостатки Интернет - магазинов).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.03.2023

Просмотров: 261

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
  1. таблица пользователей:
  2. код – первичный ключ;
  3. логин;
  4. пароль;
  5. роль (админ, юзер или менеджер)
  6. таблица заказов:
  7. код – первичный ключ;
  8. код товара – внешний ключ;
  9. код пользователя – внешний ключ;
  10. статус заказа;
  11. таблица характеристик ноутбука:
  12. код – первичный ключ;
  13. название;
  14. модель;
  15. кол-во в наличии;
  16. ос;
  17. диагональ экрана;
  18. процессор;
  19. тип графического адаптера;
  20. объём памяти графического адаптера;
  21. объём жесткого (ссд) диска;
  22. объём оперативной памяти;
  23. частота процессора;
  24. графический адаптер;
  25. цена;
  26. макс разрешение экрана;
  27. тurbo-частота процессора;
  28. количество ядер процессора;
  29. изображение.

Реализация базы данных в виде схемы представлена на рисунке 10.

Рисунок 10 – Схема базы данных

5.2 Описание пользовательского интерфейса

Поскольку система предусматривает разграничение функционала для разных типов пользователей, то было принято решение о разработке системы аутентификации. Аутентификация представляет собой ввод данных о пользователе, а именно его логин и пароль, для входа в систему. На рисунке 11 представлена страница входа в систему.


Рисунок 11 – Страница входа в систему

Далее в зависимости от уровня доступа будет предоставлен пользователю различный функционал.

Для регистрации пользователю необходимо нажать на ссылку Регистрация. Далее ему нужно ввести в текстовой поле E-mail свой e-mail и в поле Пароль ввести пароль для своей учётной записи. Затем необходимо нажать на кнопку Подтвердить.

После аутентификации администратор попадает на страницу, изображённую на рисунке 12.

Рисунок 12 – Главная страница администратора

На этой странице администратор имеет возможность изменять описание товара, его цену, добавлять новый товар, просматривать список товаров. Также от может добавить нового пользователя (менеджера по продажам), удалить существующего пользователя (менеджера по продажам), изменить логин и пароль пользователя (менеджера по продажам).

Для добавления нового товара администратору необходимо заполнить текстовые поля и нажать на кнопку Подтвердить. После этого администратор может добавить описание и цену товара. Для этого необходимо ввести в текстовые поля ввести соответствующую информацию о товаре. Для загрузки изображения товара необходимо нажать на кнопку Выбрать файл.


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

Для изменения логина или пароля существующего пользователя (менеджера по продажам) администратору необходимо выбрать редактируемую таблицу и нажать кнопку Подтвердить.

После аутентификации пользователь попадает на страницу, изображённую на рисунке 13.

Рисунок 13 – Главная страница пользователя

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

После аутентификации менеджер по продажам попадает на страницу, изображённую на рисунке 14.

Рисунок 14 – Главная страница менеджера по продажам

На этой странице менеджера по продажам имеет возможность изменять статус заказа пользователя. Для этого ему необходимо в текстовом поле Статус заказа написать обработано или не обработано. Далее менеджер должен указать код заказа пользователя. После этого ему необходимо нажать на кнопку Подтвердить.

6 Руководство пользователя

Для регистрации пользователю необходимо нажать на ссылку Регистрация. Далее ему нужно ввести в текстовой поле E-mail свой e-mail и в поле Пароль ввести пароль для своей учётной записи. Затем необходимо нажать на кнопку Подтвердить. После прохождения аутентификации он может добавлять товары себе в корзину.

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

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

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


7 Руководство программиста

Для запуска приложения на клиентской машине должен быть установлен .NET Fraimwork 4.5, SQL Server Data Tools 14.

Заключение

Цель курсовой работы – разобрать особенности алгоритмизации при разработке WEB-приложений достигнута путём разработки рекламно-информационного портала для on-line продаж.

В курсовой работе были решены следующие задачи:

а) обеспечен доступ покупателя к полному каталогу продаваемой продукции;

б) покупателю предоставлена дополнительная информацию о товарах.

Подводя итоги, можно сказать, что в разработанном интернет-магазине удачно сочетает интерфейс магазина с его функциональными возможностями, и все затраты окупятся за короткий срок.

Список использованной литературы

1 URL: https://ru.wikipedia.org/wiki/Интернет.

2 URL: https://ru.wikibooks.org/wiki/Средство_разработки_веб-приложений_Visual_Studio_на_основе_ASP.NET/Понятие_«Веб-технология».

3 URL: https://www.tstu.ru/book/elib3/mm/2016/rak-platenkin/vvedenie.html.

4 URL: https://www.webmasterwiki.ru/Web-texnologii-ChtoJetoTakoe.

5 URL: https://ru.wikipedia.org/wiki/Веб-приложение.

6 URL: http://galleo.ru/articles/w168.

7 URL: https://studbooks.net/2006801/informatika/teoreticheskie_osnovy_razrabotki_prilozheniy.

8 URL: https://infoshell.ru/blog/razrabotka-veb-prilozhenij/

9 URL: http://www.alppp.ru/law/hozjajstvennaja-dejatelnost/torgovlja/50/statja--sluzhba-dostavki-v-apteke---blazh-ili-neobhodimost.html.

10 URL: http://www.reu.by/images/docs/science/sbornik_nauchnyh_statej_-_reu_-_2015.05.pdf.

11 URL: https://forum.klerk.ru/showthread.php?t=155931

12 URL: https://www.lawmix.ru/bux/67377

13 https://cyberleninka.ru/article/n/organizatsiya-raboty-internet-magazina.

14 URL: http://e-comerce.narod.ru/e_market.html

15 Дино Эспозито. Microsoft ASP.NET 2.0. Базовый курс. — СПб: И. Д. Питер, 2007. — 688 с. — ISBN 978-5-91180-423-7. — ISBN 978-5-7502-0304-8.

16 Платт Д. С. Знакомство с Microsoft .NET. — М.: И. Д. Русская редакция, 2001. — 240 с. — ISBN 5-7502-0186-4.

17 URL: https://ru.wikipedia.org/wiki/ASP.NET.

18 URL: https://docs.microsoft.com/ru-ru/aspnet/overview.

Приложение

using System;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data;

using System.Drawing;

namespace WebApplication1

{

public partial class WebForm2 : Page

{

DataSet ds;

string message;

protected void Page_Load(object sender, EventArgs e)

{

Label3.Text = (string)Page.Session["логин"];

ImageButton1.ImageUrl = "Корзина.jpg";

if (ViewState["ControlAdded"] != null)

{

string request = Page.Session["запрос"].ToString();

DisplayResultOfSearchNotebooks(ref request);

}

}

private void FindNote(CheckBoxList ChBL, string columnName, ref string partRequest)

{

byte count = 0;

byte temp = 0;

for (byte i = 0; i < ChBL.Items.Count; i++)

{

if (ChBL.Items[i].Selected == true)

{

count++;

}

}

if (count != 0)

{


if (partRequest != "")

{

partRequest += " AND (";

}

for (byte i = 0; i < ChBL.Items.Count; i++)

{

if (ChBL.Items[i].Selected == true)

{

if (temp != count - 1)

{

temp++;

partRequest += columnName + " = '" + ChBL.Items[i].Value + "' OR ";

}

else

{

partRequest += columnName + " = '" + ChBL.Items[i].Value + "')";

}

}

}

}

}

private void FindNote(DropDownList DrDwL, DropDownList DrDwL2, string columnName, ref string partRequest)

{

string str1 = DrDwL.SelectedValue;

string str2 = DrDwL2.SelectedValue;

if (partRequest != "")

{

partRequest += " AND (";

}

partRequest += columnName + " BETWEEN '" + str1 + "' AND '" + str2 + "')";

}

private void FindNote(string price1, string price2, string columnName, ref string partRequest)

{

int minPrice, maxPrice;

if (price1 == "")

{

minPrice = 0;

}

else

{

minPrice = Convert.ToInt32(price1);

}

if (price2 == "")

{

maxPrice = 0;

}

else

{

maxPrice = Convert.ToInt32(price2);

}

if (partRequest != "" && minPrice != 0 && maxPrice != 0)

{

partRequest += " AND (";

}

if (minPrice < maxPrice)

{

partRequest += columnName + " BETWEEN " + minPrice + " AND " + maxPrice + ")";

}

}

private void DisplayResultOfSearchNotebooks(ref string request)

{

message = Requests.Request(request, ref ds);

if (message == "")

{

for (byte j = 0; j < 3; j++)

{

Panel1.Controls.Add(new LiteralControl("<br/>"));

}

numberNotebooksInRequest = ds.Tables[0].Rows.Count;

for (int i = 0; i < numberNotebooksInRequest; i++)

{

Label lb1 = new Label();

lb1.ID = string.Format("newLabel{0}", i);

lb1.Text = ds.Tables[0].Rows[i][1] + " " + ds.Tables[0].Rows[i][2];

System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image();

img.ImageUrl = "/Images/" + ds.Tables[0].Rows[i][17].ToString();

img.Width = 100;

img.Height = 60;

Panel1.Controls.Add(img);

Panel1.Controls.Add(new LiteralControl("&nbsp;&nbsp;")); //добавляет пробелы

Panel1.Controls.Add(lb1);

Panel1.Controls.Add(new LiteralControl("<br/>"));

Label lb = new Label();

for (byte k = 4; k < 17; k++)

{

lb.Text += ds.Tables[0].Columns[k].ColumnName + ": " + ds.Tables[0].Rows[i][k] + "; ";

}

Panel1.Controls.Add(lb);

Panel1.Controls.Add(new LiteralControl("<br/>"));

if (Page.Session["логин"] != null)

{

Button bt = new Button();

bt.ID = Convert.ToString(Convert.ToInt32(ds.Tables[0].Rows[i][0]) - 1);

bt.Height = 50;

bt.Width = 80;

bt.BackColor = Color.Green;

bt.Text = "В корзину";

Panel1.Controls.Add(new LiteralControl("<br/>"));

Panel1.Controls.Add(bt);

bt.Click += btn_Click;

ViewState["ControlAdded"] = "true";

}

for (byte j = 0; j < 3; j++)

{

Panel1.Controls.Add(new LiteralControl("<br/>"));

}

}

}

else

{

Response.Write(message);

}

}

int numberNotebooksInRequest = 1000;

string partRequest = "";

protected void Button1_Click(object sender, EventArgs e)

{

FindNote(CheckBoxList2, "[Название]", ref partRequest);

FindNote(CheckBoxList3, "[ОС]", ref partRequest);

FindNote(CheckBoxList6, "[Процессор]", ref partRequest);

FindNote(CheckBoxList7, "[Кол-во ядер процессора]", ref partRequest);

FindNote(CheckBoxList11, "[Тип графического адаптера]", ref partRequest);

FindNote(CheckBoxList12, "[Графический адаптер]", ref partRequest);

FindNote(DropDownList1, DropDownList2, "[Диагональ экрана; дюймов]", ref partRequest);

FindNote(DropDownList3, DropDownList4, "[Макс. разрешение_экрана; точек]", ref partRequest);

FindNote(DropDownList5, DropDownList6, "[Частота процессора; ГГц]", ref partRequest);


FindNote(DropDownList7, DropDownList8, "[Turbo частота процессора; ГГц]", ref partRequest);

FindNote(DropDownList9, DropDownList10, "[Объём оперативной памяти; МБ]", ref partRequest);

FindNote(DropDownList11, DropDownList12, "[Объём памяти графического адаптера; МБ]", ref partRequest);

FindNote(DropDownList13, DropDownList14, "[Объём жёсткого диска; ГБ]", ref partRequest);

FindNote(TextBox1.Text, TextBox2.Text, "[Цена]", ref partRequest);

if (partRequest != "")

{

partRequest = "SELECT * FROM Laptops WHERE (" + partRequest;

Page.Session["запрос"] = partRequest;

DisplayResultOfSearchNotebooks(ref partRequest);

}

}

public void btn_Click(object sender, EventArgs e)

{

Button btn = (Button)sender;

int index = Convert.ToInt32(Page.Session["кол-во товаров в корзине"]);

message = Requests.Request("SELECT * FROM Laptops", ref ds);

if (message == "")

{

int orderAmount = Convert.ToInt32(Page.Session["сумма заказа"]);

int ID = Convert.ToInt32(btn.ID);

int idOrder = Convert.ToInt32(Requests.GetValue("SELECT Max(Код) FROM Orders")) + 1;

int idUser = Convert.ToInt32(Requests.GetValue("SELECT Код FROM Users WHERE Логин = N'" + Page.Session["логин"].ToString() + "'"));

message = Requests.Request("INSERT INTO Orders ([Код], [Код товара], [Код пользователя], [Статус заказа]) VALUES (" + idOrder + ", " + ds.Tables[0].Rows[ID][0] + ", " + idUser + ", N'не обработан')", ref ds);

if (message == "")

{

orderAmount += Convert.ToInt32(Requests.GetValue("SELECT [Цена] FROM Orders WHERE [Код] = '" + idOrder + "'"));

Page.Session["сумма заказа"] = orderAmount;

Label7.Text = "Сумма заказа = " + orderAmount.ToString();

if (Page.Session["код первого выбранного товара"] == null)

{

message = Requests.Request("SELECT Max(Код) From Orders", ref ds);

if (message == "")

{

Page.Session["код первого выбранного товара"] = (int)ds.Tables[0].Rows[0][0];

}

else

{

Response.Write(message);

}

}

}

else

{

Response.Write(message);

}

}

else

{

Response.Write(message);

}

index++;

Page.Session["кол-во товаров в корзине"] = index;

Label6.Text = "Кол-во товаров в корзине: " + index;

}

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

{

int index = Convert.ToInt32(Page.Session["кол-во товаров в корзине"]);

index--;

Page.Session["кол-во товаров в корзине"] = index;

Label6.Text = "Кол-во товаров в корзине: " + index.ToString();

int orderAmount = Convert.ToInt32(Page.Session["сумма заказа"]);

int deleteSumma = Convert.ToInt32(GridView1.Rows[e.RowIndex].Cells[4].Text);

orderAmount -= deleteSumma;

Page.Session["сумма заказа"] = orderAmount;

Label7.Text = "Сумма заказа = " + orderAmount.ToString();

}

protected void Button3_Click(object sender, EventArgs e)

{

SqlDataSource14.SelectCommand = "SELECT * FROM [Orders] WHERE [Код] >= " + Page.Session["код первого выбранного товара"];

GridView1.DataSourceID = "SqlDataSource14";

if (Page.Session["логин"] == null)

{

Response.Write("Пожалуйста авторизируйтесь!");

}

if (GridView1.Rows.Count == 0)

{

Response.Write("Ваша корзина пуста!");

}

if (Page.Session["логин"] != null && GridView1.Rows.Count != 0)

{

GridView1.DataSourceID = "SqlDataSource14";

message = Requests.Request("SELECT [Модель], [Кол-во в наличии] FROM Laptops", ref ds);

if (message == "")

{

for (int i = 0; i < GridView1.Rows.Count; i++)

{

for (int j = 0; j < ds.Tables[0].Rows.Count; j++)