КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Этапы реализации ⇐ ПредыдущаяСтр 3 из 3 Сначала была выбрана тема курсовой работы и функции, которые должно выполнять приложение. На основе этого была спроектирована и заполнена база данных. Следующим этапом был спроектирован общий вид интерфейса. Далее, были программно реализованы страницы для пользователей, не зарегистрированных посетителей и администратора. Далее приложение было протестировано и откорректировано на ошибки. Интерфейс был дополнен из соображений удобства.
Код приложения
Модель Таблица Фильмы 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 с разграничением доступа к данным; · Был разработан простой в понимании интерфейс; · Приложение выполняет все функции прописанные в техническом задании.
|