Добавлен: 24.05.2023
Просмотров: 155
Скачиваний: 5
Рисунок 8 - Физическая модели базы данных
Пройдемся по сущностям.
Сущность "Pokypkas" предназначена для хранения результатов оформления заявак.
Состоит из:
Id - Уникальный номер таблицы.
Kol - общая цена текущего заказа .
Сущность "Razdels" предназначена для хранения названий разделов. Состоит из:
Id - Уникальный номер таблицы.
RazdelName - Название раздела.
Сущность "Texts" предназначена для хранения описания услуг. Состоит из:
Id - Уникальный номер таблицы.
Id_tovar - Вторичный ключ для связи с таблицей "Tovars" .
TextOp - Описание определенной услуги.
Сущность "Tovars" предназначена для хранения услуг.
Состоит из:
Id - Уникальный номер таблицы.
N - Номер раздела.
TName - Название услуги.
Zena - Цена услуги.
Id_Razdel - Вторичный ключ для связи с таблицей "Razdels" .
Сущность "Users" предназначена для хранения информации о пользователях.
Состоит из:
Id - Уникальный номер таблицы.
UserName - Логин пользователя.
Password - Пароль пользователя.
Email - Электронный адрес.
CreateDate - Дата регистрации.
FirstName - Имя пользователя.
LastName - Фамилия пользователя.
MiddleName - Отчество пользователя.
Status - Статус пользователя(покупатель, менеджер, директор).
В БД пять таблиц и две связи. Основная цель связей на основании выбранного товара получить описания данного товара и раздел, к которому принадлежит товар.
Созданная БД полностью замкнутая и обеспечивает полное функционирования данного приложения.
2 Тестирование
На этом этапе представим доказательства того, что спроектированное ПС работает в соответствии с требованиями. Тест кейсы представим в таблице 2.
Таблица 2 - Таблица тестов программы
ID |
Summary |
Steps |
Expected Result |
Да/ Fail |
|||||
1 |
Загрузка категорий |
1. Запуск программы |
Категории сайта |
Да |
|||||
2 |
Проверка наличия услуг |
1. Запуск программы 2. Выбор категории |
Наблюдение услуг |
Да |
|||||
3 |
Регистрация |
1. Запуск программы 2. Главная 3. Выход 4 Зарегистрироваться 5 Ввод данных |
Успешное сообщение |
Да |
|||||
4 |
Проверка корректности ввода данных при регистрации(на пустоту) |
1. Запуск программы 2. Главная 3. Выход 4 Зарегистрироваться 5 Ввод данных 6 Не заполнить поля |
Сообщение ошибке |
Да |
|||||
5 |
Проверка корректности ввода данных при регистрации(дублирование пароля и Email) |
1. Запуск программы 2. Главная 3. Выход 4 Зарегистрироваться 5 Ввод данных 6 Заполнить поля пароль и Email неверно. |
Сообщение ошибке |
Да |
|||||
6 |
Вход нового пользователя |
1. Запуск программы 2. Главная 3. Выход 4. Ввод логина и пароля 5. Вход |
Вход |
Да |
|||||
7 |
Просмотр результатов |
1. Запуск программы 2. Директор 3. Результаты работы |
Просмотр результатов работы |
Да |
|||||
8 |
Создание менеджера |
1. Запуск программы 2. Директор 3. Создать менеджера 4. Заполнения данных |
Созданный менеджер |
Да |
|||||
9 |
Удаление менеджера |
1. Запуск программы 2. Директор 3. Удаление менеджера |
Удаление менеджера |
Да |
|||||
10 |
Создание категории |
1. Запуск программы 2. Менеджер 3. Создание категории 4. Заполнения данных 5. Создать |
Новая категория |
Да |
|||||
11 |
Удалить категорию |
1. Запуск программы 2. Менеджер 3. Удаление |
Удаление категории |
Да |
|||||
12 |
Добавление услуги |
1. Запуск программы 2. Менеджер 3. Добавить 4. Добавить услугу 5. Заполнить данные 6. Создать |
Новая услуга |
Да |
|||||
13 |
Оформление услуги |
1. Запуск программы 2. Покупатель 3. Выбор категории 4. Выбор услуги 5. Купить |
Покупка услуги |
Да |
3. Инструкция по эксплуатации
Запускаем. Главная страница представим на рисунке 9.
Рисунок 9 - Главная страничка
Описание услуг во вкладке "Описания". Смотрите рисунок 10.
Рисунок 10 - Описание услуг
Проведение авторизации. Путь "Главная - выход". Смотрите рисунок 11.
Рисунок 11 - Авторизация
Далее возможно регистрация. Смотрите рисунок 12.
Рисунок 12 - Регистрация
Если перейти по пути "Пользователь - выбор раздела " можно заказать услуги. Смотрите рисунок 13.
Рисунок 13 - Заказ услуг
Далее рассмотрим страничку "Менеджер". Смотрите рисунок 14.
Рисунок 14 - Страничка менеджера
Далее есть возможность создать раздел услуг, добавить услугу или удалить и то и другое. Смотрите рисунки 15 и 16.
Рисунок 15 - Создание раздела
Рисунок 16 - Добавление услуги
Далее рассмотрим страничку "Директора". Смотрите рисунок 17.
Рисунок 17 - Страничка директора
На этой страничке директор может создать менеджера, удалите менеджера или просмотреть результат своего магазина. Смотрите рисунок 18.
Рисунок 18 - Создание менеджера
Также меню позволяет посетить странички "Новости", "О компании" и Контактная информация. Смотрите рисунки 19, 20 и 21.
Рисунок 19 - Новости
Рисунок 20 - О компании
Рисунок 19 - Контактная информация
Заключение
В процессе выполнения курсовой работы были выполнены все основные задачи курса «Разработка серверных приложений для WEB». В качестве доказательства, будет представлен проект «Сайт страховой компании». Настоящая работа посвящена разработке через тестирование «Сайта страховой компании» на технологии ASP.NET MVC 3 с использованием движка визуализации Razor появившегося в ASP.NET MVC 3.
В данном проекте достигнуты все поставленные задачи и цели, а именно было разработано программное обеспечение с продуманным и простым интерфейсом, реализующее основные функции «Сайта страховой компании».
В ходе выполнения работы была изучена технология ASP.NET MVC 3, усовершенствованы навыки Web – разработки, работы с ORM Entity Framework, а так же были приобретены навыки разработки программного обеспечения через тестирование, для управления разработкой использовалась централизованная система контроля версий SVN и клиент для неё Tortoise SVN.
Учитывая простату данного программного комплекса можно сделать вывод, он будет очень перспективен, прост и удобен в поддержке.
Программное средство, может совершенствоваться в течении всего времени его пользования. Разработанное программное средство просто и удобно в использовании, имеет простой и интуитивно-понятный интерфейс.
Список литературы
- Фримен, A. ASP.NET МVС 3 для профессионалов /А. Фримен, С. Сандерсон. – Москва: Вильямс, 2012. – 680 с.: ил.
- Троелсен, Э. Язык программирования C# 5.0 и платформа.NET 4.5 /Э. Троелсен – Москва: Вильямс, 2013–1312 с.: ил.
- Либерти, Д. Программирование на C# /Д. Либерти. – СПб.: Питер, 2009. – 688 с.:ил.
- Микелсен, К. Язык программирования C# /К. Микелсен. – ДиаСофт, 2002. – 656 с.:ил.
- Информационные системы и технологии. Методические указания по выполнению дипломного проекта для студентов специальностей 1–40 01 02 «Информационные системы и технологии» / сост.: О.И. Наранович. – Барановичи: РИО БарГУ, 2009. – 39 с.
- Петзольд, Ч. Программирование для Microsoft Windows на С# /Ч. Петзольд. – М.: Русская редакция, 2010. – 880 с.:ил.
- Рихтер, Д. Программирование на платформе Microsoft.NET Framework / Д. Рихтер. – СПб.: Русская редакция, 2012. – 836 с.:ил.
- Оформление раздела «Охрана труда» в дипломных проектах: методические указания по выполнению дипломных работ и проектов для студентов специальности 1–27 01 01 Экономика и организация производства; 1–40 01 02 Информационные системы и технологии / сост. Ю.И. Шадид. – Барановичи: РИО БарГУ, 2009. – 12 с.
- Троелсен, Э. Язык программирования C# 4.0 и платформа.NET 4.0 /Э. Троелсен – Москва: Вильямс, 2011–1214 с.: ил.
using System.Data.Entity; //Прямое подключение к БД
namespace PK.Models
{
public class EFDbcontext : DbContext
{
public EFDbcontext(string connectionString)
{
Database.Connection.ConnectionString = connectionString;
}
public DbSet<User> Users { get; set; }
public DbSet<Razdel> Razdels { get; set; }
public DbSet<Tovar> Tovars { get; set; }
public DbSet<Pokypka> Pokypkas { get; set; }
}
}
using System; //Модуль работы с БД
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web.Security;
using System.Data;
namespace PK.Models
{
public class EFUsersRepository
{
private EFDbcontext context;
public EFUsersRepository()
{
context = new EFDbcontext(ConfigurationManager.ConnectionStrings[0].ConnectionString);
}
public IEnumerable<User> GetUsers()//Все данные С БД
{
return context.Users;
}
public User GetUserById(int id) //Выборка данных по ID
{
return context.Users.FirstOrDefault(x => x.Id == id);
}
public User GetUserByStatus(int status) //Выборка данных по роли
{
return context.Users.FirstOrDefault(x => x.Status == status);
}
public User GetUserByName(string userName) //Выборка данных по имени
{
return context.Users.FirstOrDefault(x => x.UserName == userName);
}
public User UserDelete(int id) //Удаление данных по ID
{
User user = context.Users.FirstOrDefault(x => x.Id==id);
context.Entry(user).State = EntityState.Deleted;
context.SaveChanges();
return null;
}
public MembershipUser GetMembershipUserByName(string userName)//Проверка пользователя
{
User user = context.Users.FirstOrDefault(x => x.UserName == userName);
if (user != null)
{
return new MembershipUser(
"CustomMembershipProvider",
user.UserName,
user.Id,
user.Email,
"",
null,
true,
false,
user.CreateDate,
DateTime.Now,
DateTime.Now,
DateTime.Now,
DateTime.Now
);
}
return null;
}
public string GetUserNameByEmail(string email) //Выборка данных по имени и адресу
{
User user = context.Users.FirstOrDefault(x => x.Email == email);
return user != null ? user.UserName : "";
}
public void CreateUser(string userName, string password, string email, string firstName, string lastName, string middleName,int status) //Создать данные
{
var user = new User
{
UserName = userName,
Email = email,
Password = password,
CreateDate = DateTime.Now,
FirstName = firstName,
LastName = lastName,
MiddleName = middleName,
Status=status
};
SaveUser(user);
}
public bool ValidateUser(string userName, string password)//Существование данных
{
User user = context.Users.FirstOrDefault(x => x.UserName == userName);
if (user != null && user.Password == password)
return true;
return false;
}
public void SaveUser(User user) //Сохранить данные
{
if (user.Id == 0)
context.Users.Add(user);
else
context.Entry(user).State = EntityState.Modified;
context.SaveChanges();
}
}
}
Исходный текст модуля моделей данных.
using System;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using System.Collections.Generic;
namespace PK.Models
{
public class User //модель пользователя
{
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public DateTime CreateDate { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string MiddleName { get; set; }
public int Status { get; set; }
}
public class LoginViewModel//модель авторизации пользователя
{
[Required(ErrorMessage="*")]
public string UserName { get; set;}
[Required(ErrorMessage = "*")]
[DataType(DataType.Password)]
public string Password { get; set; }
}
public class RegisterViewModel//модель регистрации пользователя
{
[Required(ErrorMessage = "*")]
public string UserName { get; set; }
[Required(ErrorMessage = "*")]
[DataType(DataType.Password)]
public string Password { get; set; }
[Required(ErrorMessage = "*")]
[DataType(DataType.Password)]
[Compare("Password", ErrorMessage = "Пароль подтвержден неверно")]
public string ConfirmPassword { get; set; }
[Required(ErrorMessage = "*")]
[RegularExpression(@"^[a-zA-Z0-9.-]{1,20}@[a-zA-Z0-9]{1,20}\.[A-Za-z]{2,4}",
ErrorMessage = "Неверный формат Email")]
public string Email { get; set; }
[Required(ErrorMessage = "*")]
[RegularExpression(@"^[a-zA-Z0-9.-]{1,20}@[a-zA-Z0-9]{1,20}\.[A-Za-z]{2,4}",
ErrorMessage = "Неверный формат Email")]
[Compare("Email", ErrorMessage = "Email подтвержден неверно")]
public string ConfirmEmail { get; set; }
[Required(ErrorMessage = "*")]
public string FirstName { get; set; }
[Required(ErrorMessage = "*")]
public string LastName { get; set; }
[Required(ErrorMessage = "*")]
public string MiddleName { get; set; }
}
public class menViewModel//модель создания менеджера пользователя
{
[Required(ErrorMessage = "*")]
public string UserName { get; set; }
[Required(ErrorMessage = "*")]
[DataType(DataType.Password)]
public string Password { get; set; }
[Required(ErrorMessage = "*")]
[RegularExpression(@"^[a-zA-Z0-9.-]{1,20}@[a-zA-Z0-9]{1,20}\.[A-Za-z]{2,4}",
ErrorMessage = "Неверный формат Email")]
public string Email { get; set; }
[Required(ErrorMessage = "*")]
public string FirstName { get; set; }
[Required(ErrorMessage = "*")]
public string LastName { get; set; }
[Required(ErrorMessage = "*")]
public string MiddleName { get; set; }
[Required(ErrorMessage = "*")]
public int Status { get; set; }
}
public class Razdel//модель раздела техники
{
public int Id { get; set; }
public string RazdelName { get; set; }
}
public class ViewRazdel//модель создания нового раздела
{
[Required(ErrorMessage = "*")]
public string RazdelName { get; set; }
}
public class Tovar//модель товара техники
{
public int Id { get; set; }
public int IdRazd { get; set; }
public int N { get; set; }
public string TName { get; set; }
public int Zena { get; set; }
}
public class ViewTovar//модель создания нового товара
{
[Required(ErrorMessage = "*")]
public int IdRazd { get; set; }
[Required(ErrorMessage = "*")]
public int N { get; set; }
[Required(ErrorMessage = "*")]
public string TName { get; set; }
[Required(ErrorMessage = "*")]
public int Zena { get; set; }
}
public class ViewPakypka
{
}
public class Pokypka
{
public int Id { get; set; }
public int Kol { get; set; }
}
}
Исходный текст модуля обработки запросов клиента на сервере.
using System.Linq;
using System.Web.Mvc;
using System.Web.Security;
using PK.Models;
namespace PK.Controllers
{
public class HomeController : Controller
{
private DataManager data;
public ActionResult Index()
{
ViewBag.Title = "Мой первый магазин!!!";
EFRazdelRepository razd = new EFRazdelRepository();
ViewBag.dan = razd.GetRazdel();
return View();
}
[HttpGet]
public ActionResult next(int id)
{
EFTovarRepository tovar = new EFTovarRepository();
ViewBag.dann = tovar.GetTovar().Where(x => x.IdRazd == id);
return View();
}
[Authorize(Users = "tank")]
public ActionResult direct_admin()