Создание веб-приложения "Интернет-магазин" с использованием языка программирования C# и интерфейса доступа к базам данным Entity Framework Code First
Описание структуры базы данных, язык и среда программирования, разработка программного продукта. Основные функции веб-приложения, вывод названия категорий на всех станицах. Валидация при авторизации и при добавлении нового товара, инструкция пользователю.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 18.03.2015 |
Размер файла | 988,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ
ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ ЮЖНОГО ФЕДЕРАЛЬНОГО УНИВЕРСИТЕТА в г. Таганроге
Факультет автоматики и вычислительной техники
Кафедра «Математического обеспечения и применения ЭВМ»
КУРСОВАЯ РАБОТА
По дисциплине «Программирование в БД»
На тему: «Создание веб-приложения «Интернет-магазин» с использованием языка программирования C# и интерфейса доступа к базам данным Entity Framework Code First»
Выполнил: студент группы А-101
Наранов А. A.
Проверил: преподаватель кафедры МОП ЭВМ
Лутай В. Н.
Таганрог 2014
Аннотация
В данной курсовой работе рассмотрена разработка Интернет - магазина, предназначенного для продажи товаров для любого предприятия.Данное приложение предназначено для лиц, распространяющих товар в Интернет. Оно представляет собой веб-сайт, работа с которым осуществляется через веб-браузер с возможностью удаленного доступа. Программный продукт построен на платформе .Net Framework, которая обеспечивает его доступность из различных операционных систем и различных браузеров.
Оглавление
- Аннотация
- Введение
- 1. Описание структуры БД
- 1.1 Отношения
- 1.2 Диаграмма БД
- 2. Разработка программного продукта
- 2.1 Язык и среда программирования
- 2.2 Основные функции веб-приложения. Вывод названия категорий на всех страницах
- 2.3 Просмотр отдельной категории товаров
- 2.4 Детальный просмотр товара
- 2.5 Добавление товара в корзину
- 2.6 Просмотр содержимого корзины
- 2.7 Функция добавления нового товара
- 2.8 Валидация при авторизации
- 2.9 Валидация при добавлении нового товара
- 2.10 Аутентификация в приложении
- 3. Описание разработанного веб-сайта
- 3.1 Внешний вид
- 3.2 Инструкция пользователю
- Заключение
- Библиографический список
Введение
Целью данной курсовой работы, является разработка веб-сайта, а так же его реализация с помощью средств .NET Framework и метода создания моделей баз данных ADO.NET Entity Framework.
В качестве предметной области можно взять интернет магазин подарков различных видов. В связи с облегчением покупок товаров в сети данная тема является актуальной.
Существует несколько технологий для доступа к данным в .Net Framework: LINQ, ADO.NET Enitity Framework и ADO.NET Data Services
Ниже приведены наиболее полные преимущества использования компонента Entity Framework Code Fist:
1. Фреймворк автоматически создает БД по коду.
2. Проверка синтаксических ошибок и безопасности типов во время компиляции.
3. Полная поддержка атрибутов из пространства имен System.ComponentModel.DataAnnotations.
Опираясь на выше сказанное, для курсового проекта была выбрана именно эта технология.
Постановка задачи
Необходимо спроектировать и реализовать веб-приложение, представляющее собой интернет-магазин. Данная система должна отражать информацию о продуктах - выводить на всех страницах типы игрушек, позволять производить изменения информации, позволять зарегистрированным пользователям входить в систему. Для администратора сайта должны быть доступны дополнительные функции, позволяющие добавлять новые продукты в базу данных. Веб-приложение должно иметь корзину, для управления продуктами, которыми пользователи заинтересовались.
Требования по реализации
Приложение реализовано на языке C# с иcпользованием WEB Forms в среде MS Visual Studio 2013.
1. Описание структуры БД
В данном курсовом проекте необходимо хранить информацию. Для этой цели у нас есть база данных, над которой производятся все необходимые для работы приложения операции. Перейдем к рассмотрению таблиц, используемых в базе данных.
1.1 Отношения
База данных включает в себя три таблицы: таблица товаров и таблица категорий товаров и таблица корзины. Таблица товаров (Product) нужна для хранения информации о продуктах имеющихся на складе. Таблица категорий (Category) хранит в себе все виды товаров и описание. Таблица корзины(CartItem) сожержит инфомацию, которая будет определять каждый продукт пользователя добавившего товар.
Таблица 1. Таблица “ Категорий ” (Category)
Имя столбца |
Тип поля |
Разрешить Null? |
Описание поля |
|
CategoryID |
Int |
NO |
Уникальный идентификатор |
|
CategoryName |
String |
NO |
Название категории |
|
Description |
String |
NO |
Описание категории |
Таблица 2. Таблица “Продуктов” (Product)
Имя столбца |
Тип поля |
Разрешить Null? |
Описание поля |
|
ProductID |
Int |
NO |
Уникальный идентификатор |
|
ProductName |
String |
NO |
Название продукта |
|
Description |
String |
NO |
Описание продукта |
|
ImagePath |
String |
NO |
Путь к изображению |
|
UnitPrice |
Double |
NO |
Цена продукта |
Таблица 3. Таблица “Корзина” (CartItem)
Имя столбца |
Тип поля |
Разрешить Null? |
Описание поля |
|
ItemID |
Int |
NO |
Уникальный идентификатор |
|
CartID |
Int |
NO |
ID пользователя |
|
Quantity |
Int |
NO |
Количество продуктов |
|
DataCreated |
DateTime |
NO |
Время создания |
|
ProductID |
Int |
NO |
ID продукта |
1.2 Диаграмма БД
Диаграмма базы данных изображена на рисунке 1.
Рисунок 1 - диаграмма базы данных
2. Разработка программного продукта
2.1 Язык и среда программирования
Данный программный продукт был реализован при помощи языка программирования С#. Данный язык был выбран потому, что программы, написанные на нем, являются кроссплатформенными из-за наличия установленного компонента .Net Framework. В качестве среды разработки была выбрана Microsoft Visual Studio 2013.
2.2 Основные функции веб-приложения. Вывод названия категорий на всех страницах
Вывод всех категорий товар осуществляется с помощью страницы Site.Master. Site.Master позволяет определить внешний вид и стандартное поведение, которое вы хотите для всех страниц. Вывод осуществляется с помощью метода GetGategories().
Рисунок 2 - категории товаров
2.3 Просмотр отдельной категории товаров
Для того чтобы просмотреть отдельную категорию необходимо перейти по ссылке названия категории, представленной на всех страницах. Вывод информации по категории осуществляет метод GetProducts(int? categoryId, string categoryName)
Рисунок 3 - просмотр отдельной категории
2.4 Детальный просмотр товара
Данный модуль предназначен для вывода всей информации о товаре. Для детального просмотра необходимо перейти по ссылке названия товара, расположенным по аватаром товара на странице просмотра отдельной категории. Осуществление детального просмотра реализуется с помощью метода GetProduct(int? productId, string productName). Внешний вид на рисунке 4.
Рисунок 4 - детальный просмотр
2.5 Добавление товара в корзину
Добавление товара в корзину происходит по нажатию ссылки «Добавить в корзину» на страницах просмотра категории и детального просмотра товара. При нажатии по добавления приложение переходит на страницу обработки AddtoCart.aspx.
Рисунок 5 - добавления в корзину
2.6 Просмотр содержимого корзины
Для просмотра содержимого корзины необходимо перейти по ссылке указанной в навигации сайта. Внешний вид рисунок 6. На данной странице можно увидеть товары добавленные в корзину, а также общую сумму покупки. Функционал страницы позволяет обновлять содержимое корзины с помощью кнопки «Обновить». Для обновления корзины используется метод protected void UpdateBtn_Click(object sender, EventArgs e). Подсчет общей суммы с использованием метода GetTotal() класса ShopingCartAction.cs
Рисунок 6 - переход для просмотра корзины
Рисунок 7 -просмотр корзины
2.7 Функция добавления нового товара
Необходима для добавления нового товара. Внешний вид на рисунке 8.
Рисунок 8 -добавления нового товара
Изначально форма невидна и появляется как только администратор авторизуется.
После заполнения всех полей необходимо нажать на кнопку «Добавить продукт», далее сработает метод:
protected void AddProductButton_Click(object sender, EventArgs e)
2.8 Валидация при авторизации
Если при входе в веб-приложение были допущены ошибки, или введены неккоректные данные, приложение выдаст сообщение: Логин или парольне верны. Внешний вид на рисунке 9.
Рисунок 9 - ошибка при авторизации
язык программирование продукт приложение
2.9 Валидация при добавлении нового товара
Так же проверяется корректность введенных данных при добавлении нового товара. Внешний вид на рисунке 10.
Рисунок 10 - некорректно введенные данные
2.10 Аутентификация в приложении
Пользователь может войти как гость, как зарегистрированный пользователь и как пользователь-администратор. Функции пользователей различаются. Например, для администратора доступны некоторые функции, скрытые от обычных пользователей. Внешний вид на рисунке 11.
Рисунок 11 - скрытые функции администратора
3. Описание разработанного веб-сайта
3.1 Внешний вид
Курсовая работа была реализована в среде Microsoft Visual Studio 2013. Операционная система, установленная на ПК - Windows 8.1. Использовался .NET Framework 4.5.
Запущенное веб-приложение состоит из нескольких страниц. При запуске веб-приложения, можно наблюдать приятный интерфейс, изображенный на рисунке 12.
Рисунок 12 - интерфейс веб-сайта
3.2 Инструкция пользователю
Установка необходимого ПО
Для того, чтобы веб-приложение функционировало на пользовательском компьютере, необходимо установить .NET Framework 4.5, а так-же должен присутствовать хотя бы один веб-браузер.
Управление веб-сайтом
При переходе на главную страницу, пользователь видит несколько элементов управления. Обычному неавторизованному пользователю и авторизованному доступы следующие функции:
- Просмотр товаров
- Добавление в корзину.
Для администраторов доступно еще одна функция - добавление товаров. Рисунок 13.
Рисунок 13 - добавление товара
Заключение
В рамках курсовой работы было разработано веб-приложение Интерне-магазин с добавлением товаров корзину. Для удобства пользователя все управляющие блоки в веб-приложении выделены в отдельные объекты навигации.
Для эффективного управления сайтом были разработаны дополнительная функциональная возможность, доступные только администратору. В частности, созданы функции добавления новых товаров.
В данной работе использовалось довольно много средств современной веб-разработки. Присутствуют следующие технологии интернет программирования: C#, WebForms, html, css.
Что касается разработанного продукта, более подробно, результатом стали следующие пункты:
1. В полном объеме реализована поставленная задача.
2. Был разработан дружественный интерфейс.
3. Добавление товаров в корзину.
4. Реализовано разделение прав пользователей.
5. Реализован доступ к базе данных посредством технологии доступа к базе данных Entity Framework code first.
В конечном итоге, результатом курсовой работы является веб-приложение, выполняющее поставленную задачу.
Библиографический список
1. Приступая к работе ASP.NET 4.5 Web Forms и Visual Studio 2014. URL: http://www.asp.net/web-froms/tutorial/aspnet-45.
2. Онлайн-книга «Изучаем C#» URL: http://metanit.com/sharp/index.php (Дата обращения: 12.03.2014).
Приложение
1. Код модуля реализующего главную страницы веб-сайта, содержащегося в файле «Default.aspx»
<%@ Page Title="Добро пожаловать" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WingtipToys._Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<h1><%: Title %>.</h1>
<h2>Наш магазин поможет Вам найти лучшей подарок.</h2>
<p class="lead">В нашем магазине содержаться все транспортные игрушки. Вы можете закать уже сегодня. Каждая игрушка содержит информацию, которая поможет Вам правильно выбрать подарок.</p>
</asp:Content>
2. Код модуля реализующего функции веб-сайта, содержащихся в файле “Default.aspx.cs”
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WingtipToys
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
private void Page_Error(object sender, EventArgs e)
{
Exception exc = Server.GetLastError();
if (exc is InvalidOperationException)
{
Server.Transfer("ErrorPage.aspx?handler=Page_Error%20-%20Default.aspx",
true);
}
}
}
}
3. Код модуля реализующего просмотр всех товаров страницы веб-сайта, содержащегося в файле «ProductList.aspx»
<%@ Page Title="Товары" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="ProductList.aspx.cs" Inherits="WingtipToys.ProductList" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<section>
<div>
<hgroup>
<h2><%: Page.Title %></h2>
</hgroup>
<asp:ListView ID="productList" runat="server"
DataKeyNames="ProductID" GroupItemCount="4"
ItemType="WingtipToys.Models.Product" SelectMethod="GetProducts">
<EmptyDataTemplate>
<table >
<tr>
<td>Данные не были возвращены.</td>
</tr>
</table>
</EmptyDataTemplate>
<EmptyItemTemplate>
<td/>
</EmptyItemTemplate>
<GroupTemplate>
<tr id="itemPlaceholderContainer" runat="server">
<td id="itemPlaceholder" runat="server"></td>
</tr>
</GroupTemplate>
<ItemTemplate>
<td runat="server">
<table>
<tr>
<td>
<a href="<%#: GetRouteUrl("ProductByNameRoute", new {productName = Item.ProductName}) %>">
<image src='/Catalog/Images/Thumbs/<%#:Item.ImagePath%>'
width="100" height="75" border="1" />
</a>
</td>
</tr>
<tr>
<td>
<a href="<%#: GetRouteUrl("ProductByNameRoute", new {productName = Item.ProductName}) %>">
<%#:Item.ProductName%>
</a>
<br />
<span>
<b>Price: </b><%#:String.Format("{0:c}", Item.UnitPrice)%>
</span>
<br />
<a href="/AddToCart.aspx?productID=<%#:Item.ProductID %>">
<span class="ProductListItem">
<b>Добавить в корзину<b>
</span>
</a>
</td>
</tr>
<tr>
<td> </td>
</tr>
</table>
</p>
</td>
</ItemTemplate>
<LayoutTemplate>
<table style="width:100%;">
<tbody>
<tr>
<td>
<table id="groupPlaceholderContainer" runat="server" style="width:100%">
<tr id="groupPlaceholder"></tr>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr></tr>
</tbody>
</table>
</LayoutTemplate>
</asp:ListView>
</div>
</section>
</asp:Content>
4. Код модуля реализующего функции веб-сайта, содержащихся в файле «ProductList.aspx.cs»
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WingtipToys.Models;
using System.Web.ModelBinding;
using System.Web.Routing;
namespace WingtipToys
{
public partial class ProductList : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public IQueryable<Product> GetProducts(
[QueryString("id")] int? categoryId,
[RouteData] string categoryName)
{
var _db = new WingtipToys.Models.ProductContext();
IQueryable<Product> query = _db.Products;
if (categoryId > 0)
{
query = query.Where(p => p.CategoryID == categoryId);
}
if (!String.IsNullOrEmpty(categoryName))
{
query = query.Where(p =>
String.Compare(p.Category.CategoryName,
categoryName) == 0);
}
return query;
}
}
}
5. Код модуля реализующего детального просмотра товара страницы веб-сайта, содержащегося в файле «ProductDetails.aspx»
<%@ Page Title="Product Details" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="ProductDetails.aspx.cs" Inherits="WingtipToys.ProductDetails" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<asp:FormView ID="productDetail" runat="server" ItemType="WingtipToys.Models.Product" SelectMethod ="GetProduct" RenderOuterTable="false">
<ItemTemplate>
<div>
<h1><%#:Item.ProductName %></h1>
</div>
<br />
<table>
<tr>
<td>
<img src="/Catalog/Images/<%#:Item.ImagePath %>" style="border:solid; height:300px" alt="<%#:Item.ProductName %>"/>
</td>
<td> </td>
<td style="vertical-align: top; text-align:left;">
<b>Описание:</b><br /><%#:Item.Description %>
<br />
<span><b>Цена:</b> <%#: String.Format("{0:c}", Item.UnitPrice) %></span>
<br />
<span><b>Номер продукта(ID):</b> <%#:Item.ProductID %></span>
<br />
</td>
</tr>
</table>
</ItemTemplate>
</asp:FormView>
</asp:Content>
6. Код модуля реализующего функции веб-сайта, содержащихся в файле «ProductDetails.aspx.cs»
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WingtipToys.Models;
using System.Web.ModelBinding;
namespace WingtipToys
{
public partial class ProductDetails : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public IQueryable<Product> GetProduct(
[QueryString("ProductID")] int? productId,
[RouteData] string productName)
{
var _db = new WingtipToys.Models.ProductContext();
IQueryable<Product> query = _db.Products;
if ( productId > 0)
{
query = query.Where(p => p.ProductID == productId);
}
else if (!String.IsNullOrEmpty(productName))
{
query = query.Where(p =>
String.Compare(p.ProductName, productName) == 0);
}
else
{
query = null;
}
return query;
}
}
}
7. Код модуля реализующего просмотр содержимого корзины пользователя страницы веб-сайта, содержащегося в файле «ShoppingCart.aspx»
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="ShoppingCart.aspx.cs" Inherits="WingtipToys.ShoppingCart" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<div id="ShoppingCartTitle" runat="server" class="ContentHead"><h1>Корзина</h1></div>
<asp:GridView ID="CartList" runat="server" AutoGenerateColumns="False" ShowFooter="True" GridLines="Vertical" CellPadding="4"
ItemType="WingtipToys.Models.CartItem" SelectMethod="GetShoppingCartItems"
CssClass="table table-striped table-bordered" >
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="ID" SortExpression="ProductID" />
<asp:BoundField DataField="Product.ProductName" HeaderText="Низвание" />
<asp:BoundField DataField="Product.UnitPrice" HeaderText="Цена" DataFormatString="{0:c}"/>
<asp:TemplateField HeaderText="Количество">
<ItemTemplate>
<asp:TextBox ID="PurchaseQuantity" Width="40" runat="server" Text="<%#: Item.Quantity %>"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Общая цена">
<ItemTemplate>
<%#: String.Format("{0:c}", ((Convert.ToDouble(Item.Quantity)) * Convert.ToDouble(Item.Product.UnitPrice)))%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Удалить товар">
<ItemTemplate>
<asp:CheckBox id="Remove" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<div>
<p></p>
<strong>
<asp:Label ID="LabelTotalText" runat="server" Text="Общая стоймость: "></asp:Label>
<asp:Label ID="lblTotal" runat="server" EnableViewState="false"></asp:Label>
</strong>
</div>
<br />
<table>
<tr>
<td>
<asp:Button ID="UpdateBtn" runat="server" Text="Обновить" OnClick="UpdateBtn_Click" />
</td>
<td>
<%--<asp:ImageButton ID="CheckoutImageBtn" runat="server"
ImageUrl="https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif"
Width="145" AlternateText="Check out with PayPal"
OnClick="CheckoutBtn_Click"
BackColor="Transparent" BorderWidth="0" />--%>
</td>
</tr>
</table>
</asp:Content>
8. Код модуля реализующего функции веб-сайта, содержащихся в файле «ShoppingCart.aspx»
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WingtipToys.Models;
using WingtipToys.Logic;
using System.Collections.Specialized;
using System.Collections;
using System.Web.ModelBinding;
namespace WingtipToys
{
public partial class ShoppingCart : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
using (ShoppingCartActions usersShoppingCart = new ShoppingCartActions())
{
decimal cartTotal = 0;
cartTotal = usersShoppingCart.GetTotal();
if (cartTotal > 0)
{
// Display Total.
lblTotal.Text = String.Format("{0:c}", cartTotal);
}
else
{
LabelTotalText.Text = "";
lblTotal.Text = "";
ShoppingCartTitle.InnerText = "Корзина пуста";
UpdateBtn.Visible = false;
//CheckoutImageBtn.Visible = false;
}
}
}
public List<CartItem> GetShoppingCartItems()
{
ShoppingCartActions actions = new ShoppingCartActions();
return actions.GetCartItems();
}
public List<CartItem> UpdateCartItems()
{
using (ShoppingCartActions usersShoppingCart = new ShoppingCartActions())
{
String cartId = usersShoppingCart.GetCartId();
ShoppingCartActions.ShoppingCartUpdates[] cartUpdates = new ShoppingCartActions.ShoppingCartUpdates[CartList.Rows.Count];
for (int i = 0; i < CartList.Rows.Count; i++)
{
IOrderedDictionary rowValues = new OrderedDictionary();
rowValues = GetValues(CartList.Rows[i]);
cartUpdates[i].ProductId = Convert.ToInt32(rowValues["ProductID"]);
CheckBox cbRemove = new CheckBox();
cbRemove = (CheckBox)CartList.Rows[i].FindControl("Remove");
cartUpdates[i].RemoveItem = cbRemove.Checked;
TextBox quantityTextBox = new TextBox();
quantityTextBox = (TextBox)CartList.Rows[i].FindControl("PurchaseQuantity");
cartUpdates[i].PurchaseQuantity = Convert.ToInt16(quantityTextBox.Text.ToString());
}
usersShoppingCart.UpdateShoppingCartDatabase(cartId, cartUpdates);
CartList.DataBind();
lblTotal.Text = String.Format("{0:c}", usersShoppingCart.GetTotal());
return usersShoppingCart.GetCartItems();
}
}
public static IOrderedDictionary GetValues(GridViewRow row)
{
IOrderedDictionary values = new OrderedDictionary();
foreach (DataControlFieldCell cell in row.Cells)
{
if (cell.Visible)
{
// Extract values from the cell.
cell.ContainingField.ExtractValuesFromCell(values, cell, row.RowState, true);
}
}
return values;
}
protected void UpdateBtn_Click(object sender, EventArgs e)
{
UpdateCartItems();
}
protected void CheckoutBtn_Click(object sender, ImageClickEventArgs e)
{
Response.Redirect("ShoppingCart.aspx");
}
}
}
9. Код модуля реализующего добавления в корзину страницы веб-сайта, содержащегося в файле «AddToCart.aspx»
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AddToCart.aspx.cs" Inherits="WingtipToys.AddToCart" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
10. Код модуля реализующего функции веб-сайта, содержащихся в файле «ShoppingCart.aspx»
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
using WingtipToys.Logic;
namespace WingtipToys
{
public partial class AddToCart : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string rawId = Request.QueryString["ProductID"];
int productId;
if (!String.IsNullOrEmpty(rawId) && int.TryParse(rawId, out productId))
{
using (ShoppingCartActions usersShoppingCart = new ShoppingCartActions())
{
usersShoppingCart.AddToCart(Convert.ToInt16(rawId));
}
}
else
{
Debug.Fail("ERROR.");
throw new Exception("ERROR .");
}
Response.Redirect("ShoppingCart.aspx");
}
}
}
11. Код модуля реализующего основной функционал работы страниц веб-сайта, содержащегося в файле «ShoppingCartAction.cs»
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WingtipToys.Models;
namespace WingtipToys.Logic
{
public class ShoppingCartActions : IDisposable
{
public string ShoppingCartId { get; set; }
private ProductContext _db = new ProductContext();
public const string CartSessionKey = "CartId";
public void AddToCart(int id)
{
// Retrieve the product from the database.
ShoppingCartId = GetCartId();
var cartItem = _db.ShoppingCartItems.SingleOrDefault(
c => c.CartId == ShoppingCartId && c.ProductId == id);
if (cartItem == null)
{
// Create a new cart item if no cart item exists.
cartItem = new CartItem
{
ItemId = Guid.NewGuid().ToString(),
ProductId = id,
CartId = ShoppingCartId,
Product = _db.Products.SingleOrDefault(
p => p.ProductID == id),
Quantity = 1,
DateCreated = DateTime.Now
};
_db.ShoppingCartItems.Add(cartItem);
}
else
{
// If the item does exist in the cart,
// then add one to the quantity.
cartItem.Quantity++;
}
_db.SaveChanges();
}
public void Dispose()
{
if (_db != null)
{
_db.Dispose();
_db = null;
}
}
public string GetCartId()
{
if (HttpContext.Current.Session[CartSessionKey] == null)
{
if (!string.IsNullOrWhiteSpace(HttpContext.Current.User.Identity.Name))
{
HttpContext.Current.Session[CartSessionKey] = HttpContext.Current.User.Identity.Name;
}
else
{
// Generate a new random GUID using System.Guid class.
Guid tempCartId = Guid.NewGuid();
HttpContext.Current.Session[CartSessionKey] = tempCartId.ToString();
}
}
return HttpContext.Current.Session[CartSessionKey].ToString();
}
public List<CartItem> GetCartItems()
{
ShoppingCartId = GetCartId();
return _db.ShoppingCartItems.Where(
c => c.CartId == ShoppingCartId).ToList();
}
public decimal GetTotal()
{
ShoppingCartId = GetCartId();
// Multiply product price by quantity of that product to get
// the current price for each of those products in the cart.
// Sum all product price totals to get the cart total.
decimal? total = decimal.Zero;
total = (decimal?)(from cartItems in _db.ShoppingCartItems
where cartItems.CartId == ShoppingCartId
select (int?)cartItems.Quantity *
cartItems.Product.UnitPrice).Sum();
return total ?? decimal.Zero;
}
public ShoppingCartActions GetCart(HttpContext context)
{
using (var cart = new ShoppingCartActions())
{
cart.ShoppingCartId = cart.GetCartId();
return cart;
}
}
public void UpdateShoppingCartDatabase(String cartId, ShoppingCartUpdates[] CartItemUpdates)
{
using (var db = new WingtipToys.Models.ProductContext())
{
try
{
int CartItemCount = CartItemUpdates.Count();
List<CartItem> myCart = GetCartItems();
foreach (var cartItem in myCart)
{
// Iterate through all rows within shopping cart list
for (int i = 0; i < CartItemCount; i++)
{
if (cartItem.Product.ProductID == CartItemUpdates[i].ProductId)
{
if (CartItemUpdates[i].PurchaseQuantity < 1 || CartItemUpdates[i].RemoveItem == true)
{
RemoveItem(cartId, cartItem.ProductId);
}
else
{
UpdateItem(cartId, cartItem.ProductId, CartItemUpdates[i].PurchaseQuantity);
}
}
}
}
}
catch (Exception exp)
{
throw new Exception("ERROR: Unable to Update Cart Database - " + exp.Message.ToString(), exp);
}
}
}
public void RemoveItem(string removeCartID, int removeProductID)
{
using (var _db = new WingtipToys.Models.ProductContext())
{
try
{
var myItem = (from c in _db.ShoppingCartItems where c.CartId == removeCartID && c.Product.ProductID == removeProductID select c).FirstOrDefault();
if (myItem != null)
{
// Remove Item.
_db.ShoppingCartItems.Remove(myItem);
_db.SaveChanges();
}
}
catch (Exception exp)
{
throw new Exception("ERROR: Unable to Remove Cart Item - " + exp.Message.ToString(), exp);
}
}
}
public void UpdateItem(string updateCartID, int updateProductID, int quantity)
{
using (var _db = new WingtipToys.Models.ProductContext())
{
try
{
var myItem = (from c in _db.ShoppingCartItems where c.CartId == updateCartID && c.Product.ProductID == updateProductID select c).FirstOrDefault();
if (myItem != null)
{
myItem.Quantity = quantity;
_db.SaveChanges();
}
}
catch (Exception exp)
{
throw new Exception("ERROR: Unable to Update Cart Item - " + exp.Message.ToString(), exp);
}
}
}
public void EmptyCart()
{
ShoppingCartId = GetCartId();
var cartItems = _db.ShoppingCartItems.Where(
c => c.CartId == ShoppingCartId);
foreach (var cartItem in cartItems)
{
_db.ShoppingCartItems.Remove(cartItem);
}
// Save changes.
_db.SaveChanges();
}
public int GetCount()
{
ShoppingCartId = GetCartId();
// Get the count of each item in the cart and sum them up
int? count = (from cartItems in _db.ShoppingCartItems
where cartItems.CartId == ShoppingCartId
select (int?)cartItems.Quantity).Sum();
// Return 0 if all entries are null
return count ?? 0;
}
public struct ShoppingCartUpdates
{
public int ProductId;
public int PurchaseQuantity;
public bool RemoveItem;
}
public void MigrateCart(string cartId, string userName)
{
var shoppingCart = _db.ShoppingCartItems.Where(c => c.CartId == cartId);
foreach (CartItem item in shoppingCart)
{
item.CartId = userName;
}
HttpContext.Current.Session[CartSessionKey] = userName;
_db.SaveChanges();
}
}
}
Размещено на Allbest.ru
...Подобные документы
Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.
курсовая работа [2,3 M], добавлен 31.01.2016Факторы, влияющие на пропускную способность в беспроводных сетях. Использование скриптового языка программирования PHP для разработки базы данных интернет-магазина, его основные преимущества. Современные методы и средства тестирования web-приложений.
дипломная работа [3,5 M], добавлен 10.07.2015Этапы развития, особенности и возможности языка программирования Java; происхождение названия. Приложения Sun Microsystems: идеи, примитивные типы. Python - высокоуровневый язык программирования общего назначения: структуры данных, синтаксис и семантика.
реферат [79,0 K], добавлен 23.06.2012Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.
курсовая работа [1,1 M], добавлен 04.09.2014Формирование входных и выходных данных, SQL–скрипт генерации таблиц базы данных. Создание интерфейса программного приложения и проектирование форм базы данных. Требования к аппаратно–программному обеспечению. Инструкции по установке и эксплуатации.
курсовая работа [1,6 M], добавлен 08.02.2013Характеристика системы программирования. Главные составные части Delphi. Интерфейс программного приложения. Результаты работы программы. Руководство системного программиста и оператора. Язык программирования Delphi, среда компилятора Borland 7.0.
курсовая работа [1,6 M], добавлен 29.05.2013Разработка программного приложения по автоматизированному учету поступающего довольствия. Описание среды программирования. Тестирование и отладка приложения. Анализ результатов решения. Инструкция пользователю. Требования к техническому обеспечению.
дипломная работа [946,0 K], добавлен 18.07.2014Описание языков программирования высокого уровня. Стандартные структуры данных, обзор принципов структурного программирования. Построение математической модели и выбор структуры данных для решения задачи. Тестирование и отладка программного кода.
курсовая работа [1,3 M], добавлен 05.12.2020Анализ возможных подходов к созданию web-приложения с использованием программирования Java и CGI. Разработка структуры базы данных и реализация полученной модели в рамках СУБД. Обеспечение диалога CGI-программы с пользователем, используя браузер.
курсовая работа [310,9 K], добавлен 07.08.2011Разработка клиент-серверного приложения, позволяющего взаимодействовать друг с другом с использованием доступа к базам данных. Проектирование связи сервера с базой данных с помощью технологии ODBC. Разработка интерфейса программы, ее тестирование.
курсовая работа [352,0 K], добавлен 24.08.2016Описание истории развития информационных технологий. Исследование предпочтений по использованию программного обеспечения пользователя персонального компьютера начального уровня и разработка интерфейсного приложения в среде программирования Delphi.
дипломная работа [2,0 M], добавлен 14.01.2012Исследование возможностей и областей использования языка программирования JavaScript. Сравнительный анализ языков программирования JavaScript и PHP. Разработка интерактивного Web-приложения на примере теста по теме "Программирование на языке Delphi".
практическая работа [26,0 K], добавлен 04.02.2015Основы Web-программирования. Сервер баз данных MySQL. Язык сценариев PHP. Язык гипертекстовой разметки HTML. Назначение и цели разработки сайта. Форма входа и регистрации, обратная связь интернет–магазина. Требования к структуре сайта, описание контента.
курсовая работа [754,5 K], добавлен 02.06.2014Создание программного приложения для осуществления основных функций по заказу мебели, регистрации клиентов, сотрудничеству с поставщиками. Разработка интерфейса прикладной программы. Логическое проектирование базы данных и SQL-скрипт генерации таблиц.
курсовая работа [2,4 M], добавлен 11.02.2013- Создание базы данных автомобилестроительного предприятия в виде настольного приложения на языке Java
Разработка логической схемы базы данных автомобилестроительного предприятия. Инфологическое моделирование системы. Создание графического интерфейса пользователя для базы данных средствами языка программирования Java. Тестирование программных средств.
курсовая работа [2,3 M], добавлен 16.12.2013 Основные инструменты построения Web-приложения. Язык сценариев PHP. Системный анализ предметной области базы данных. Коды SQL запросов на создание таблиц. Разработка Web-приложения. Описание функциональности модулей. Система управления содержимым статей.
курсовая работа [4,8 M], добавлен 28.04.2014Отличительные особенности языков программирования PHP и CSS. Возможности компактного многопоточного сервера баз данных MySQL. Системный анализ предметной области, проектирование ее инфологической модели. Создание базы данных и web-страниц сайта магазина.
курсовая работа [1,0 M], добавлен 15.01.2013Назначение и возможности разработанного приложения для контроля активности сетевых и периферийных устройств предприятия. Язык программирования Java. Распределенные многоуровневые приложения. Структура базы данных, интерфейс разработанного приложения.
курсовая работа [1,0 M], добавлен 16.12.2012Использование хеширования для поиска данных. Хеширование и хеш-таблицы. Способы разрешения конфликтов. Использование средств языка программирования в работе с хеш-таблицами. Описание разработанного приложения. Структура программы. Инструкция пользователя.
курсовая работа [1,1 M], добавлен 19.08.2016Общая характеристика интерфейса языка программирования Delphi. Рассмотрение окна редактора кода, конструктора формы, инспектора объектов и расширения файлов. Ознакомление с основными этапами создания и сохранения простого приложения; проверка его работы.
презентация [184,3 K], добавлен 18.03.2014