Разработка приложения для оценивания фильмов

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    614,22 Кб
  • Опубликовано:
    2014-07-23
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка приложения для оценивания фильмов















Курсовая работа

по дисциплине: Технологии программирования

Разработка приложения для оценивания фильмов

Содержание

1. Постановка задачи

.1 Характеристика объекта

.2 Потенциал внедрения

.3 Краткое техническое задание

. Проектирование системы

.1 Моделирование системы

.2 Проектирование БД

.3 Проектирование интерфейса

. Разработка системы

.1 Средства реализации

.2 Этапы реализации

.3 Код приложения

Заключение

Список литературы

Приложение

1. Постановка задачи

Целью данной курсовой работы является создание многоуровневого приложения с Web-интерфейсом. В связи с чем, мной были поставлены следующие задачи:

Создание базы данных и её связь с приложением

Разграничение доступа к данным

Создание понятного и удобного интерфейса для пользователей

Создание удобного интерфейса для администратора

.1 Характеристика объекта

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

.2 Потенциал внедрения

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

Целевая аудитория - люди, которые не могут самостоятельно определиться с выбором, хотели бы найти что-то подходящее им по атмосфере или настроению или другим тэгам.

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

1.3 Краткое техническое задание

Разрабатываемое приложение должно выполнять следующие функции:

Регистрация пользователей;

Удобный интерфейс для просмотра мнений и оценивания фильмов;

Предоставление пользователям возможности оценить фильм по различным категориям;

2. Проектирование системы

2.1 Моделирование системы

IDEF0



.2 Проектирование БД

ER-диаграмма

Основные сущности в базе данных: пользователь, фильм.


Инфологическое проектирование

Получаем следующую схему таблиц и связи между ними:

Users


Marks


Films


GenreFilm


Genre

UserId UserName Age GenreLike Filmlike ActorLike AboutMe 


idMark UserId FilmId YourMark CoolView CoolTrack QualIm QualSo Book Com


FilmId FilmName Year AgeCens Time Reiting FilmNameEn PicUrl


id FilmId genreId


genreId genreName


Полная схема связей между таблицами БД в приложении 1.

2.3 Проектирование интерфейса

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

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

Страница регистрации. Эта страница предназначена для регистрации пользователя. Она содержит форму регистрации с полями, необходимыми для создания учетной записи. Если регистрация прошла успешно, пользователь перенаправляется на страницу, которая сообщает ему об успешной регистрации. После этого, а также когда пользователь заходит в приложение под своим логином, в верхнем правом углу видно его логин и ссылку для смены пароля.

Основное содержание страницы меняется в зависимости от местонахождения пользователя.

Главная страница. Эта страница отображается при первом входе на сайт, ее оформление и содержание рассказывает пользователю о приложении.

На странице фильмов присутствует выбор фильма, при нажатии показывается подробная информация о фильме со всеми оценками к этому фильму.

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

На странице данных пользователя, доступной для всех зарегистрированных пользователей есть возможность изменить свои данные.

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

3. Разработка системы


В качестве средства проектирования базы данных был выбран Microsoft SQL Server.

Приложение разработано в среде Microsoft Visual Studio 2010, на технологии ASP .NET MVC, на языке программирования C#. При разработке была использована стратегия Code First. Для связи с базой используется EntityFramework. Клиентская часть приложения использует HTML5. Приложение является многопользовательским и для этого используются объекты Membership.

.2 Этапы реализации

Сначала была выбрана тема курсовой работы и функции, которые должно выполнять приложение. На основе этого была спроектирована и заполнена база данных. Следующим этапом был спроектирован общий вид интерфейса. Далее, были программно реализованы страницы для пользователей, не зарегистрированных посетителей и администратора. Далее приложение было протестировано и откорректировано на ошибки. Интерфейс был дополнен из соображений удобства.

.3 Код приложения

Модель

Таблица ФильмыFilmion.Models

{

[Bind(Exclude = "FilmId")]class Film

{

[ScaffoldColumn(false)]int FilmId { get; set; }

[DisplayName("Название")]

[Required(ErrorMessage = "Введите название фильма")]

[StringLength(200)]string FilmName { get; set; }

[DisplayName("Год выхода")]int Year { get; set; }

[DisplayName("Возрастной ценз")]int AgeCens { get; set; }

[DisplayName("Продолжительность")]int Time { get; set; }

[DisplayName("Рейтинг")]decimal Reiting { get; set; }

[DisplayName("Оригинальное название")]

[StringLength(200)]string FilmNameEn { get; set; }

[DisplayName("Описание фильма")]

[StringLength(2000)]string Description { get; set; }

[DisplayName("URL постера")]

[StringLength(1024)]string PicUrl { get; set; }List<GenreFilm> GenreFilm { get; set; }List<ActorFilm> ActorFilm { get; set; }List<ProduserFilm> ProduserFilm { get; set; }List<CountryFilm> CountryFilm { get; set; }List<TagFilm> TagFilm { get; set; }virtual List<Mark> Mark { get; set; }

}

}

Таблица Жанры (модели таблиц Актеры, Продюсеры, Тэги и Страны выглядят таким же образом)

namespace Filmion.Models

{

[Bind(Exclude = "GenreId")]class Genre

{

[ScaffoldColumn(false)]int GenreId { get; set; }

[DisplayName("Жанр")]

[Required(ErrorMessage = "Введите название жанра")]

[StringLength(50)]string GenreName { get; set; }List<GenreFilm> GenreFilm { get; set; }

}

}

Связь жанров с фильмамиFilmion.Models

{

[Bind(Exclude = "GenreFilmId")]class GenreFilm

{

[ScaffoldColumn(false)]int GenreFilmId { get; set; }

[DisplayName("Фильм")]int FilmId { get; set; }

[DisplayName("Жанр")]int GenreId { get; set; }virtual Film Film { get; set; }virtual Genre Genre { get; set; }

}

}

Таблица ОценокFilmion.Models

{

[Bind(Exclude = "MarkId")]class Mark

{

[ScaffoldColumn(false)]int MarkId { get; set; }

[DisplayName("Пользователь")]int UserId { get; set; }

[DisplayName("Фильм")]int FilmId { get; set; }

[DisplayName("Качество изображения")]int QualIm { get; set; }

[DisplayName("Качество звука")]int QualSo { get; set; }

[DisplayName("Ваша оценка фильму")]int YourMark { get; set; }

[DisplayName("Красивые виды")]

[StringLength(3)]string CoolView { get; set; }

[DisplayName("Крутой саундтрек")]

[StringLength(3)]string CoolTrack { get; set; }

[DisplayName("По мотивам книги")]

[StringLength(30)]string Book { get; set; }

[DisplayName("Комментарий")]

[StringLength(2000)]string Comment { get; set; }virtual Film Film { get; set; }virtual User User { get; set; }

}

}

Таблица ПользователяFilmion.Models

{

[Bind(Exclude = "UserId")]class User

{

[DisplayName("Имя пользователя")]

[StringLength(100)]string UserName { get; set; }

[DisplayName("Возраст")]int Age { get; set; }

[DisplayName("Любимые жанры")]

[StringLength(200)]string GenreLike { get; set; }

[DisplayName("Любимые фильмы")]

[StringLength(1000)]string Filmlike { get; set; }

[DisplayName("Любимые актеры")]

[StringLength(1000)]string ActorLike { get; set; }

[DisplayName("О себе")]

[StringLength(1000)]string AboutMe { get; set; }List<Mark> Mark { get; set; }

}

}

Класс целостностиSystem.Data.Entity;Filmion.Models

{class FilmionEntities : DbContext

{DbSet<Genre> Genre { get; set; }DbSet<Country> Country { get; set; }DbSet<Actor> Actor { get; set; }DbSet<Produser> Produser { get; set; }DbSet<GenreFilm> GenreFilm { get; set; }DbSet<CountryFilm> CountryFilm { get; set; }DbSet<ActorFilm> ActorFilm { get; set; }DbSet<ProduserFilm> ProduserFilm { get; set; }DbSet<TagFilm> TagFilm { get; set; }DbSet<Film> Film { get; set; }DbSet<Tag> Tag { get; set; }DbSet<Category> Category { get; set; }DbSet<User> User { get; set; }DbSet<Mark> Mark { get; set; }

}

}

Контроллеры

Случайный фильмFilmion.Controllers

{class RandomFilmController : Controller

{DB = new FilmionEntities();ActionResult Index()

{<Film> films = DB.Film;[] array = (from film in films select film.FilmId).ToArray(); rand=new Random();random=rand.Next(0,array.Length);randomfilm = DB.Film.Find(array[random]);

return View(randomfilm);

}

}

}

Создание, изменение, удаление жанров

namespace Filmion.Controllers

{ class GenreManagerController : Controller

{FilmionEntities db = new FilmionEntities();ViewResult Index()

{View(db.Genre.ToList());

}ViewResult Details(int id)

{genre = db.Genre.Find(id);View(genre);

}ActionResult Create()

{View();

}

[HttpPost]ActionResult Create(Genre genre)

{(ModelState.IsValid)

{.Genre.Add(genre);.SaveChanges();RedirectToAction("Index");

}View(genre);

}ActionResult Edit(int id)

{genre = db.Genre.Find(id);View(genre);

}

[HttpPost]ActionResult Edit(Genre genre)

{(ModelState.IsValid)

{.Entry(genre).State = EntityState.Modified;.SaveChanges();RedirectToAction("Index");

}View(genre);

}ActionResult Delete(int id)

{genre = db.Genre.Find(id);View(genre);

}

[HttpPost, ActionName("Delete")]ActionResult DeleteConfirmed(int id)

{ genre = db.Genre.Find(id);.Genre.Remove(genre);.SaveChanges();RedirectToAction("Index");

}override void Dispose(bool disposing)

{.Dispose();.Dispose(disposing);

}

}

}

Добавление связи жанра с фильмомFilmion.Controllers

{ class GenreFilmManagerController : Controller

{FilmionEntities db = new FilmionEntities();ActionResult Index(int id)

{genrefilm = db.GenreFilm.Where(a => a.FilmId == id).ToList();PartialView(genrefilm);

}ActionResult Create()

{.FilmId = new SelectList(db.Film, "FilmId", "FilmName");.GenreId = new SelectList(db.Genre, "GenreId", "GenreName");View();

}

[HttpPost]ActionResult Create(GenreFilm genrefilm)

{(ModelState.IsValid)

{.GenreFilm.Add(genrefilm);.SaveChanges();RedirectToAction("Index", "FilmManager");

}.FilmId = new SelectList(db.Film, "FilmId", "FilmName", genrefilm.FilmId);.GenreId = new SelectList(db.Genre, "GenreId", "GenreName", genrefilm.GenreId);View(genrefilm);

}

{genrefilm = db.GenreFilm.Find(id);.GenreId = new SelectList(db.Genre, "GenreId", "GenreName", genrefilm.GenreId);View(genrefilm);

}

[HttpPost]ActionResult Edit(GenreFilm genrefilm)

{(ModelState.IsValid)

{.Entry(genrefilm).State = EntityState.Modified;.SaveChanges();RedirectToAction("Index", "FilmManager");

}.GenreId = new SelectList(db.Genre, "GenreId", "GenreName", genrefilm.GenreId);View(genrefilm);

}ActionResult Delete(int id)

{genrefilm = db.GenreFilm.Find(id);View(genrefilm);

}

[HttpPost, ActionName("Delete")]ActionResult DeleteConfirmed(int id)

{ genrefilm = db.GenreFilm.Find(id);.GenreFilm.Remove(genrefilm);.SaveChanges();RedirectToAction("Index", "FilmManager");

}override void Dispose(bool disposing)

{.Dispose();.Dispose(disposing);

}

}

}

Создание, изменение редактирование фильмаFilmion.Controllers

{ class FilmManagerController : Controller

{FilmionEntities db = new FilmionEntities();

//

// GET: /FilmManager/

ViewResult Index()

{View(db.Film.ToList());

}ActionResult Create()

{View();

}

[HttpPost]ActionResult Create(Film film)

{(ModelState.IsValid)

{.Film.Add(film);.SaveChanges();RedirectToAction("Index");

}View(film);

}

public ActionResult Edit(int id)

{film = db.Film.Find(id);View(film);

}

[HttpPost]ActionResult Edit(Film film)

{(ModelState.IsValid)

{.Entry(film).State = EntityState.Modified;.SaveChanges();RedirectToAction("Index");

}View(film);

}ActionResult Delete(int id)

{film = db.Film.Find(id);View(film);

}

[HttpPost, ActionName("Delete")]ActionResult DeleteConfirmed(int id)

{ film = db.Film.Find(id);.Film.Remove(film);.SaveChanges();RedirectToAction("Index");

}override void Dispose(bool disposing)

{.Dispose();.Dispose(disposing);

}

}

}

Контроллер оценокFilmion.Controllers

{ class MarkController : Controller

{FilmionEntities db = new FilmionEntities();ViewResult Index()

{mark = db.Mark.Include(m => m.Film).Include(m => m.User);View(mark.ToList());

}ActionResult MarkFilm(int id)

{marks = db.Mark.Where(a => a.FilmId == id).ToList();PartialView(marks);

}ViewResult MarkUser()

{marks = db.Mark.Where(a => a.User.UserName == User.Identity.Name).ToList();View(marks);

}ViewResult Details(int id)

{mark = db.Mark.Find(id);View(mark);

}ActionResult Create()

{.FilmId = new SelectList(db.Film, "FilmId", "FilmName");View();

}

[HttpPost]ActionResult Create(Mark mark)

{user = db.User.Single(a => a.UserName == User.Identity.Name);.UserId = user.UserId;(ModelState.IsValid)

{.Mark.Add(mark);.SaveChanges();RedirectToAction("MarkUser");

}.FilmId = new SelectList(db.Film, "FilmId", "FilmName", mark.FilmId);View(mark);

}

public ActionResult Edit(int id)

{mark = db.Mark.Find(id);.FilmId = new SelectList(db.Film, "FilmId", "FilmName", mark.FilmId);View(mark);

}

[HttpPost]ActionResult Edit(Mark mark)

{.Entry(mark).State = EntityState.Modified;.SaveChanges();RedirectToAction("MarkUser");

}.FilmId = new SelectList(db.Film, "FilmId", "FilmName", mark.FilmId);View(mark);

}ActionResult Delete(int id)

{mark = db.Mark.Find(id);View(mark);

}

[HttpPost, ActionName("Delete")]ActionResult DeleteConfirmed(int id)

{ mark = db.Mark.Find(id);.Mark.Remove(mark);.SaveChanges();RedirectToAction("MarkUser");

}override void Dispose(bool disposing)

{.Dispose();.Dispose(disposing);

}

}

}

Контроллер пользователяFilmion.Controllers

{ class UserController : Controller

{FilmionEntities db = new FilmionEntities();ViewResult Index()

{View(db.User.First(d=>d.UserName == User.Identity.Name));

}ViewResult Details(int id)

{user = db.User.Find(id);View(user);

}ActionResult Create()

{View();

}

[HttpPost]ActionResult Create(User user)

{.UserName = User.Identity.Name;(ModelState.IsValid)

{.User.Add(user);.SaveChanges();RedirectToAction("Index");

}View(user);

}

public ActionResult Edit(int id)

{user = db.User.Find(id);View(user);

}

[HttpPost]ActionResult Edit(User user)

{.UserName = User.Identity.Name;(ModelState.IsValid)

{.Entry(user).State = EntityState.Modified;.SaveChanges();RedirectToAction("Index");

}View(user);

}override void Dispose(bool disposing)

{.Dispose();.Dispose(disposing);

}

}

}

Контроллер просмотра информации о фильмахFilmion.Controllers

{class FilmsController : Controller

{DB = new FilmionEntities();ActionResult Index()

{film = DB.Film.ToList();View(film);

}ActionResult GenreList()

{genres = DB.Genre.ToList();PartialView(genres);

}ActionResult Views(int id)

{genreFilm = DB.GenreFilm.Where(a => a.GenreId == id).ToList();View(genreFilm);

}ActionResult Mores(int Id)

{film = DB.Film.Find(Id);

return View(film);

}

}

}

Контроллер для выведения списков жанров, актеров и др. для конкретного фильма

namespace Filmion.Controllers

{class ListController : Controller

{FilmionEntities db = new FilmionEntities();ActionResult CountryList(int id)

{countryfilm = db.CountryFilm.Where(a => a.FilmId == id).ToList();PartialView(countryfilm);

}

ActionResult ActorList(int id)

{actorfilm = db.ActorFilm.Where(a => a.FilmId == id).ToList();PartialView(actorfilm);

}ActionResult GenreList(int id)

{genrefilm = db.GenreFilm.Where(a => a.FilmId == id).ToList();PartialView(genrefilm);

}ActionResult ProduserList(int id)

{produserfilm = db.ProduserFilm.Where(a => a.FilmId == id).ToList();PartialView(produserfilm);

}ActionResult TagList(int id)

{tagfilm = db.TagFilm.Where(a => a.FilmId == id).ToList();

return PartialView(tagfilm);

}

}

}


В данной курсовой работе были выполнены поставленные задачи, а именно:

Была создана база данных на MicrosoftSQLServer 2008;

Было разработано многопользовательское веб-приложение на ASP.NET MVC 3 с разграничением доступа к данным;

Был разработан простой в понимании интерфейс;

Приложение выполняет все функции прописанные в техническом задании.

приложение интерфейс фильм

Cписок литературы

1.Алекс Макки - Введение в .NET 4.0 и VisualStudio 2010 для профессионалов

.Эндрю Троелсен- Язык программирования C# 2010 и платформа .NET 4

.#"784492.files/image005.gif">


Похожие работы на - Разработка приложения для оценивания фильмов

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!