Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


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




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

 

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

 

Модель

Таблица Фильмы

namespace Filmion.Models

{

[Bind(Exclude = "FilmId")]

public class Film

{

[ScaffoldColumn(false)]

public int FilmId { get; set; }

 

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

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

[StringLength(200)]

public string FilmName { get; set; }

 

[DisplayName("Год выхода")]

public int Year { get; set; }

 

[DisplayName("Возрастной ценз")]

public int AgeCens { get; set; }

 

[DisplayName("Продолжительность")]

public int Time { get; set; }

 

[DisplayName("Рейтинг")]

public decimal Reiting { get; set; }

 

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

[StringLength(200)]

public string FilmNameEn { get; set; }

 

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

[StringLength(2000)]

public string Description { get; set; }

 

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

[StringLength(1024)]

public string PicUrl { get; set; }

 

public List<GenreFilm> GenreFilm { get; set; }

public List<ActorFilm> ActorFilm { get; set; }

public List<ProduserFilm> ProduserFilm { get; set; }

public List<CountryFilm> CountryFilm { get; set; }

public List<TagFilm> TagFilm { get; set; }

public virtual List<Mark> Mark { get; set; }

}

}

 

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

namespace Filmion.Models

{

[Bind(Exclude = "GenreId")]

public class Genre

{

[ScaffoldColumn(false)]

public int GenreId { get; set; }

 

[DisplayName("Жанр")]

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

[StringLength(50)]

public string GenreName { get; set; }

 

public List<GenreFilm> GenreFilm { get; set; }

}

}

 

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

namespace Filmion.Models

{

[Bind(Exclude = "GenreFilmId")]

public class GenreFilm

{

[ScaffoldColumn(false)]

public int GenreFilmId { get; set; }

 

[DisplayName("Фильм")]

public int FilmId { get; set; }

 

[DisplayName("Жанр")]

public int GenreId { get; set; }

 

public virtual Film Film { get; set; }

public virtual Genre Genre { get; set; }

}

}

 

Таблица Оценок

namespace Filmion.Models

{

[Bind(Exclude = "MarkId")]

public class Mark

{

[ScaffoldColumn(false)]

public int MarkId { get; set; }

 

[DisplayName("Пользователь")]

public int UserId { get; set; }

 

[DisplayName("Фильм")]

public int FilmId { get; set; }

 

[DisplayName("Качество изображения")]

public int QualIm { get; set; }

 

[DisplayName("Качество звука")]

public int QualSo { get; set; }

 

[DisplayName("Ваша оценка фильму")]

public int YourMark { get; set; }

 

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

[StringLength(3)]

public string CoolView { get; set; }

 

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

[StringLength(3)]

public string CoolTrack { get; set; }

 

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

[StringLength(30)]

public string Book { get; set; }

 

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

[StringLength(2000)]

public string Comment { get; set; }

 

public virtual Film Film { get; set; }

public virtual User User { get; set; }

}

}

 

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

namespace Filmion.Models

{

[Bind(Exclude = "UserId")]

public class User

{

[ScaffoldColumn(false)]

public int UserId { get; set; }

 

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

[StringLength(100)]

public string UserName { get; set; }

 

[DisplayName("Возраст")]

public int Age { get; set; }

 

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

[StringLength(200)]

public string GenreLike { get; set; }

 

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

[StringLength(1000)]

public string Filmlike { get; set; }

 

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

[StringLength(1000)]

public string ActorLike { get; set; }

 

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

[StringLength(1000)]

public string AboutMe { get; set; }

 

public List<Mark> Mark { get; set; }

}

}

 

Класс целостности

using System.Data.Entity;

 

namespace Filmion.Models

{

public class FilmionEntities : DbContext

{

 

public DbSet<Genre> Genre { get; set; }

public DbSet<Country> Country { get; set; }

public DbSet<Actor> Actor { get; set; }

public DbSet<Produser> Produser { get; set; }

public DbSet<GenreFilm> GenreFilm { get; set; }

public DbSet<CountryFilm> CountryFilm { get; set; }

public DbSet<ActorFilm> ActorFilm { get; set; }

public DbSet<ProduserFilm> ProduserFilm { get; set; }

public DbSet<TagFilm> TagFilm { get; set; }

public DbSet<Film> Film { get; set; }

public DbSet<Tag> Tag { get; set; }

public DbSet<Category> Category { get; set; }

public DbSet<User> User { get; set; }

public DbSet<Mark> Mark { get; set; }

}

}

 

Контроллеры

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

namespace Filmion.Controllers

{

public class RandomFilmController : Controller

{

FilmionEntities DB = new FilmionEntities();

 

public ActionResult Index()

{

DbSet<Film> films = DB.Film;

int[] array = (from film in films select film.FilmId).ToArray();

Random rand=new Random();

int random=rand.Next(0,array.Length);

var randomfilm = DB.Film.Find(array[random]);

return View(randomfilm);

}

 

}

}

 

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

namespace Filmion.Controllers

{

public class GenreManagerController : Controller

{

private FilmionEntities db = new FilmionEntities();

 

 

public ViewResult Index()

{

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

}

 

 

public ViewResult Details(int id)

{

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

return View(genre);

}

 

 

public ActionResult Create()

{

return View();

}

 

[HttpPost]

public ActionResult Create(Genre genre)

{

if (ModelState.IsValid)

{

db.Genre.Add(genre);

db.SaveChanges();

return RedirectToAction("Index");

}

 

return View(genre);

}

 

 

public ActionResult Edit(int id)

{

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

return View(genre);

}

 

 

[HttpPost]

public ActionResult Edit(Genre genre)

{

if (ModelState.IsValid)

{

db.Entry(genre).State = EntityState.Modified;

db.SaveChanges();

return RedirectToAction("Index");

}

return View(genre);

}

 

 

public ActionResult Delete(int id)

{

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

return View(genre);

}

 

 

[HttpPost, ActionName("Delete")]

public ActionResult DeleteConfirmed(int id)

{

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

db.Genre.Remove(genre);

db.SaveChanges();

return RedirectToAction("Index");

}

 

protected override void Dispose(bool disposing)

{

db.Dispose();

base.Dispose(disposing);

}

}

}

 

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

namespace Filmion.Controllers

{

public class GenreFilmManagerController : Controller

{

private FilmionEntities db = new FilmionEntities();

 

public ActionResult Index(int id)

{

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

return PartialView(genrefilm);

}

 

 

public ActionResult Create()

{

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

ViewBag.GenreId = new SelectList(db.Genre, "GenreId", "GenreName");

return View();

}

 

 

[HttpPost]

public ActionResult Create(GenreFilm genrefilm)

{

if (ModelState.IsValid)

{

db.GenreFilm.Add(genrefilm);

db.SaveChanges();

return RedirectToAction("Index", "FilmManager");

}

ViewBag.FilmId = new SelectList(db.Film, "FilmId", "FilmName", genrefilm.FilmId);

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

return View(genrefilm);

}

 

 

public ActionResult Edit(int id)

{

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

 

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

return View(genrefilm);

}

 

 

[HttpPost]

public ActionResult Edit(GenreFilm genrefilm)

{

if (ModelState.IsValid)

{

db.Entry(genrefilm).State = EntityState.Modified;

db.SaveChanges();

return RedirectToAction("Index", "FilmManager");

}

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

return View(genrefilm);

}

 

public ActionResult Delete(int id)

{

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

return View(genrefilm);

}

 

[HttpPost, ActionName("Delete")]

public ActionResult DeleteConfirmed(int id)

{

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

db.GenreFilm.Remove(genrefilm);

db.SaveChanges();

return RedirectToAction("Index", "FilmManager");

}

 

protected override void Dispose(bool disposing)

{

db.Dispose();

base.Dispose(disposing);

}

}

}

 

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

namespace Filmion.Controllers

{

public class FilmManagerController : Controller

{

private FilmionEntities db = new FilmionEntities();

 

//

// GET: /FilmManager/

 

public ViewResult Index()

{

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

}

 

public ActionResult Create()

{

return View();

}

 

 

[HttpPost]

public ActionResult Create(Film film)

{

if (ModelState.IsValid)

{

db.Film.Add(film);

db.SaveChanges();

return RedirectToAction("Index");

}

 

return View(film);

}

 

 

public ActionResult Edit(int id)

{

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

return View(film);

}

 

 

[HttpPost]

public ActionResult Edit(Film film)

{

if (ModelState.IsValid)

{

db.Entry(film).State = EntityState.Modified;

db.SaveChanges();

return RedirectToAction("Index");

}

return View(film);

}

 

 

public ActionResult Delete(int id)

{

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

return View(film);

}

 

 

[HttpPost, ActionName("Delete")]

public ActionResult DeleteConfirmed(int id)

{

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

db.Film.Remove(film);

db.SaveChanges();

return RedirectToAction("Index");

}

 

protected override void Dispose(bool disposing)

{

db.Dispose();

base.Dispose(disposing);

}

}

}

 

Контроллер оценок

namespace Filmion.Controllers

{

public class MarkController : Controller

{

private FilmionEntities db = new FilmionEntities();

 

public ViewResult Index()

{

var mark = db.Mark.Include(m => m.Film).Include(m => m.User);

return View(mark.ToList());

}

 

 

public ActionResult MarkFilm(int id)

{

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

return PartialView(marks);

}

 

 

public ViewResult MarkUser()

{

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

return View(marks);

}

 

public ViewResult Details(int id)

{

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

return View(mark);

}

 

 

public ActionResult Create()

{

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

return View();

}

 

 

[HttpPost]

public ActionResult Create(Mark mark)

{

 

var user = db.User.Single(a => a.UserName == User.Identity.Name);

mark.UserId = user.UserId;

if (ModelState.IsValid)

{

db.Mark.Add(mark);

db.SaveChanges();

return RedirectToAction("MarkUser");

}

 

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

return View(mark);

}

 

 

public ActionResult Edit(int id)

{

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

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

return View(mark);

}

 

 

[HttpPost]

public ActionResult Edit(Mark mark)

{

if (ModelState.IsValid)

{

db.Entry(mark).State = EntityState.Modified;

db.SaveChanges();

return RedirectToAction("MarkUser");

}

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

return View(mark);

}

 

public ActionResult Delete(int id)

{

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

return View(mark);

}

 

[HttpPost, ActionName("Delete")]

public ActionResult DeleteConfirmed(int id)

{

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

db.Mark.Remove(mark);

db.SaveChanges();

return RedirectToAction("MarkUser");

}

 

protected override void Dispose(bool disposing)

{

db.Dispose();

base.Dispose(disposing);

}

}

}

 

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

namespace Filmion.Controllers

{

public class UserController : Controller

{

private FilmionEntities db = new FilmionEntities();

 

 

public ViewResult Index()

{

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

}

 

 

public ViewResult Details(int id)

{

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

return View(user);

}

 

 

public ActionResult Create()

{

return View();

}

 

 

[HttpPost]

public ActionResult Create(User user)

{

user.UserName = User.Identity.Name;

 

if (ModelState.IsValid)

{

db.User.Add(user);

db.SaveChanges();

return RedirectToAction("Index");

}

 

return View(user);

}

 

 

public ActionResult Edit(int id)

{

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

return View(user);

}

 

 

[HttpPost]

public ActionResult Edit(User user)

{

user.UserName = User.Identity.Name;

if (ModelState.IsValid)

{

db.Entry(user).State = EntityState.Modified;

db.SaveChanges();

return RedirectToAction("Index");

}

return View(user);

}

 

protected override void Dispose(bool disposing)

{

db.Dispose();

base.Dispose(disposing);

}

}

}

 

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

namespace Filmion.Controllers

{

public class FilmsController : Controller

{

FilmionEntities DB = new FilmionEntities();

 

public ActionResult Index()

{

var film = DB.Film.ToList();

 

return View(film);

}

 

public ActionResult GenreList()

{

var genres = DB.Genre.ToList();

 

return PartialView(genres);

}

 

public ActionResult Views(int id)

{

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

 

return View(genreFilm);

}

 

public ActionResult Mores(int Id)

{

 

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

return View(film);

}

 

 

}

}

 

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

namespace Filmion.Controllers

{

public class ListController : Controller

{

 

private FilmionEntities db = new FilmionEntities();

 

public ActionResult CountryList(int id)

{

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

return PartialView(countryfilm);

}

 

public ActionResult ActorList(int id)

{

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

return PartialView(actorfilm);

}

 

public ActionResult GenreList(int id)

{

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

return PartialView(genrefilm);

}

 

public ActionResult ProduserList(int id)

{

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

return PartialView(produserfilm);

}

 

public ActionResult TagList(int id)

{

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

return PartialView(tagfilm);

}

 

}

}

 


Заключение

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

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

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

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

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



Поделиться:

Дата добавления: 2015-01-19; просмотров: 111; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты