Файл: Разработка базы данных и прикладного программного обеспечения для учета музейных ценностей.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 67

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.




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


Рисунок 4 – Отображение данных таблицы базы данных учета музейных ценностей
В каждой таблице возможен поиск по столбцам, результаты поиска представлены на рисунке 5. При вводе критерия поиска предусмотрены ошибки ввода пользователя, например, ввод символов несоответствующего регистра.



Рисунок 5 – Выполнен поиск по полю «Surname» по критерию «Левитан»

Для введения данных в таблицу используется кнопка «Добавить…». После ее нажатия откроется форма для заполнения таблицы необходимыми данными. После нажатия кнопки «Добавить» новая запись будет добавлена в таблицу (Рис. 6).



Рисунок 6 – Добавление записи в таблицу авторов

Для удаления данных из таблицы используется кнопка «Удалить». После её нажатия откроется окно с подтверждением удаления данной записи (Рис. 7).



Рисунок 7 – Удаление записи
Для редактирования данных в таблице используется кнопка «Редактировать». После ее нажатия откроется окно с полями данной записи и возможностью их изменения. Для сохранения необходимо нажать кнопку «Сохранить» (Рис. 8).



Рисунок 8 – Редактирование записи в таблице

Для просмотра подробной информации о записи используется кнопка «Подробнее». После ее нажатия появиться вся информация о данной записи (Рис. 9).



Рисунок 9 – Подробная информация

Заключение


В результате выполнения курсового проекта (работы) была создана базы данных для автоматизации учета предоставляемых услуг компьютерного салона, а также разработано приложение для работы с этой базой. В приложении были реализованы следующие функции: добавление, редактирование,
удаление данных из таблиц, а также поиск по каждой отдельной таблице. База данных реализована средствами СУБД PostgreSQL, приложение разработано в Microsoft Visual Studio 2022 на языке программирования C#.

Библиографический список


1. Хансен Г. Базы данных. Разработка и управление / Г.Хансен, Дж. Хансен. – М.:Бином, 1999.

2. Дейт К.Дж. Введение в системы баз данных: [пер. с англ.] / К.Дж.Дейт / - 6-е изд. СПб.: Издательский дом Вильямс, 2000.

3. Дорошенко М.С. Базы данных. Разработка приложений в IDE Qt Creator : метод. указания / М.С. Дорошенко, А.Р. Егоров, И.А. Сугоняк. – Омск, 2012. – 52 с.

4. https://www.npgsql.org/ef6/index.html

5. https://marketplace.visualstudio.com/items?itemName=RojanskyS.

NpgsqlPostgreSQLIntegration

ПРИЛОЖЕНИЕ А


  1. Контроллер авторов;

using System;

using System.Collections.Generic;

using System.Data;

using System.Data.Entity;

using System.Linq;

using System.Net;

using System.Web;

using System.Web.Mvc;

using kursach_chela.Models;
namespace kursach_chela.Controllers

{

public class avtorsController : Controller

{

private MuseumEntities1 db = new MuseumEntities1();
// GET: avtors

public ActionResult Index()

{

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

}
// GET: avtors/Details/5

public ActionResult Details(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

avtor avtor = db.avtors.Find(id);

if (avtor == null)

{

return HttpNotFound();

}

return View(avtor);

}
// GET: avtors/Create

public ActionResult Create()

{

return View();

}


[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Create([Bind(Include = "id,avtorname,surname,lastname,phone")] avtor avtor)

{

if (ModelState.IsValid)

{

db.avtors.Add(avtor);

db.SaveChanges();

return RedirectToAction("Index");

}
return View(avtor);

}
// GET: avtors/Edit/5

public ActionResult Edit(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

avtor avtor = db.avtors.Find(id);

if (avtor == null)

{

return HttpNotFound();

}

return View(avtor);

}
[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Edit([Bind(Include = "id,avtorname,surname,lastname,phone")] avtor avtor)

{

if (ModelState.IsValid)

{

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

db.SaveChanges();

return RedirectToAction("Index");

}

return View(avtor);

}
// GET: avtors/Delete/5

public ActionResult Delete(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

avtor avtor = db.avtors.Find(id);

if (avtor == null)

{

return HttpNotFound();

}

return View(avtor);

}
// POST: avtors/Delete/5

[HttpPost, ActionName("Delete")]

[ValidateAntiForgeryToken]

public ActionResult DeleteConfirmed(int id)

{

avtor avtor = db.avtors.Find(id);

db.avtors.Remove(avtor);

db.SaveChanges();

return RedirectToAction("Index");

}
protected override void Dispose(bool disposing)

{

if (disposing)

{

db.Dispose();

}

base.Dispose(disposing);

}
[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Index(string search)

{

var result = db.avtors.Where(a => a.avtorname.ToLower() == (search.ToLower())

a.surname.ToLower() == (search.ToLower())



a.lastname.ToLower() == (search.ToLower()));

return View(result);

}

}

}

  1. Контроллер выставки;

using System;

using System.Collections.Generic;

using System.Data;

using System.Data.Entity;

using System.Linq;

using System.Net;

using System.Web;

using System.Web.Mvc;

using kursach_chela.Models;
namespace kursach_chela.Controllers

{

public class vistavkisController : Controller

{

private MuseumEntities1 db = new MuseumEntities1();
// GET: vistavkis

public ActionResult Index()

{

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

}
// GET: vistavkis/Details/5

public ActionResult Details(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

vistavki vistavki = db.vistavkis.Find(id);

if (vistavki == null)

{

return HttpNotFound();

}

return View(vistavki);

}
// GET: vistavkis/Create

public ActionResult Create()

{

return View();

}
// POST: vistavkis/Create

[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Create([Bind(Include = "id,nazvanie,startdate,enddate")] vistavki vistavki)

{

if (ModelState.IsValid)

{

db.vistavkis.Add(vistavki);

db.SaveChanges();

return RedirectToAction("Index");

}
return View(vistavki);

}
// GET: vistavkis/Edit/5

public ActionResult Edit(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

vistavki vistavki = db.vistavkis.Find(id);

if (vistavki == null)

{

return HttpNotFound();

}

return View(vistavki);

}


[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Edit([Bind(Include = "id,nazvanie,startdate,enddate")] vistavki vistavki)

{

if (ModelState.IsValid)

{

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

db.SaveChanges();

return RedirectToAction("Index");

}

return View(vistavki);

}
// GET: vistavkis/Delete/5

public ActionResult Delete(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

vistavki vistavki = db.vistavkis.Find(id);

if (vistavki == null)

{

return HttpNotFound();

}

return View(vistavki);

}
// POST: vistavkis/Delete/5

[HttpPost, ActionName("Delete")]

[ValidateAntiForgeryToken]

public ActionResult DeleteConfirmed(int id)

{

vistavki vistavki = db.vistavkis.Find(id);

db.vistavkis.Remove(vistavki);

db.SaveChanges();

return RedirectToAction("Index");

}
protected override void Dispose(bool disposing)

{

if (disposing)

{

db.Dispose();

}

base.Dispose(disposing);

}
[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Index(string search)

{

var result = db.vistavkis.Where(a => a.nazvanie.ToLower() == (search.ToLower()));

return View(result);

}

}

}

  1. Контроллер картин;

using System;

using System.Collections.Generic;

using System.Data;

using System.Data.Entity;

using System.Linq;

using System.Net;

using System.Web;

using System.Web.Mvc;

using kursach_chela.Models;
namespace kursach_chela.Controllers

{

public class picturesController : Controller

{

private MuseumEntities1 db = new MuseumEntities1();
// GET: pictures

public ActionResult Index()

{

var pictures = db.pictures.Include(p => p.avtor);

return View(pictures.ToList());

}
// GET: pictures/Details/5

public ActionResult Details(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

picture picture = db.pictures.Find(id);

if (picture == null)

{

return HttpNotFound();

}

return View(picture);

}
// GET: pictures/Create

public ActionResult Create()

{

ViewBag.avtor_id = new SelectList(db.avtors, "id", "avtorname");


return View();

}
// POST: pictures/Create
[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Create([Bind(Include = "id,name,createdate,avtor_id")] picture picture)

{

if (ModelState.IsValid)

{

db.pictures.Add(picture);

db.SaveChanges();

return RedirectToAction("Index");

}
ViewBag.avtor_id = new SelectList(db.avtors, "id", "avtorname", picture.avtor_id);

return View(picture);

}
// GET: pictures/Edit/5

public ActionResult Edit(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

picture picture = db.pictures.Find(id);

if (picture == null)

{

return HttpNotFound();

}

ViewBag.avtor_id = new SelectList(db.avtors, "id", "avtorname", picture.avtor_id);

return View(picture);

}


[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Edit([Bind(Include = "id,name,createdate,avtor_id")] picture picture)

{

if (ModelState.IsValid)

{

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

db.SaveChanges();

return RedirectToAction("Index");

}

ViewBag.avtor_id = new SelectList(db.avtors, "id", "avtorname", picture.avtor_id);

return View(picture);

}
// GET: pictures/Delete/5

public ActionResult Delete(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

picture picture = db.pictures.Find(id);

if (picture == null)

{

return HttpNotFound();

}

return View(picture);

}
// POST: pictures/Delete/5

[HttpPost, ActionName("Delete")]

[ValidateAntiForgeryToken]

public ActionResult DeleteConfirmed(int id)

{

picture picture = db.pictures.Find(id);

db.pictures.Remove(picture);

db.SaveChanges();

return RedirectToAction("Index");

}
protected override void Dispose(bool disposing)

{

if (disposing)

{

db.Dispose();

}

base.Dispose(disposing);

}
[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Index(string search)

{

var result = db.pictures.Include(p => p.avtor)

.Where(p => p.name.ToLower() == (search.ToLower()) ||

p.avtor.surname.ToLower() == (search.ToLower()));

return View(result);

}

}

}

  1. Контроллер участий в выставках.

using System;

using System.Collections.Generic;

using System.Data;

using System.Data.Entity;

using System.Linq;

using System.Net;

using System.Web;

using System.Web.Mvc;

using kursach_chela.Models;
namespace kursach_chela.Controllers

{

public class uchastiesController : Controller

{

private MuseumEntities1 db = new MuseumEntities1();
// GET: uchasties

public ActionResult Index()

{

var uchasties = db.uchasties.Include(u => u.picture).Include(u => u.vistavki);

return View(uchasties.ToList());

}
// GET: uchasties/Details/5

public ActionResult Details(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

uchastie uchastie = db.uchasties.Find(id);

if (uchastie == null)

{

return HttpNotFound();

}

return View(uchastie);

}
// GET: uchasties/Create

public ActionResult Create()

{

ViewBag.pictures_id = new SelectList(db.pictures, "id", "name");

ViewBag.vistavka_id = new SelectList(db.vistavkis, "id", "nazvanie");

return View();

}
[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Create([Bind(Include = "id,vistavka_id,pictures_id,nomerzala")] uchastie uchastie)

{

if (ModelState.IsValid)

{

db.uchasties.Add(uchastie);

db.SaveChanges();

return RedirectToAction("Index");

}
ViewBag.pictures_id = new SelectList(db.pictures, "id", "name", uchastie.pictures_id);

ViewBag.vistavka_id = new SelectList(db.vistavkis, "id", "nazvanie", uchastie.vistavka_id);

return View(uchastie);

}
// GET: uchasties/Edit/5

public ActionResult Edit(int? id)


{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

uchastie uchastie = db.uchasties.Find(id);

if (uchastie == null)

{

return HttpNotFound();

}

ViewBag.pictures_id = new SelectList(db.pictures, "id", "name", uchastie.pictures_id);

ViewBag.vistavka_id = new SelectList(db.vistavkis, "id", "nazvanie", uchastie.vistavka_id);

return View(uchastie);

}
// POST: uchasties/Edit/5

// Чтобы защититься от атак чрезмерной передачи данных, включите определенные свойства, для которых следует установить привязку. Дополнительные

// сведения см. в разделе https://go.microsoft.com/fwlink/?LinkId=317598.

[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Edit([Bind(Include = "id,vistavka_id,pictures_id,nomerzala")] uchastie uchastie)

{

if (ModelState.IsValid)

{

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

db.SaveChanges();

return RedirectToAction("Index");

}

ViewBag.pictures_id = new SelectList(db.pictures, "id", "name", uchastie.pictures_id);

ViewBag.vistavka_id = new SelectList(db.vistavkis, "id", "nazvanie", uchastie.vistavka_id);

return View(uchastie);

}
public ActionResult Delete(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

}

uchastie uchastie = db.uchasties.Find(id);

if (uchastie == null)

{

return HttpNotFound();

}

return View(uchastie);

}
// POST: uchasties/Delete/5

[HttpPost, ActionName("Delete")]

[ValidateAntiForgeryToken]

public ActionResult DeleteConfirmed(int id)

{

uchastie uchastie = db.uchasties.Find(id);

db.uchasties.Remove(uchastie);

db.SaveChanges();

return RedirectToAction("Index");

}
protected override void Dispose(bool disposing)

{

if (disposing)

{

db.Dispose();

}

base.Dispose(disposing);

}
[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Index(string search)

{

var result = db.uchasties.Include(u => u.picture).Include(u => u.vistavki)

.Where(p => p.picture.name.ToLower() == (search.ToLower()) ||

p.vistavki.nazvanie.ToLower() == (search.ToLower()));

return View(result);

}

}

}