Файл: Разработка базы данных и прикладного программного обеспечения для учета музейных ценностей.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.11.2023
Просмотров: 69
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1. Описание предметной области
2. Проектирование логической схемы базы данных компьютерного салона
3. Проектирование физической схемы базы данных компьютерного салона
4.1. Описание информационных потребностей пользователей и выбор способов их реализации
Рисунок 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
ПРИЛОЖЕНИЕ А
-
Контроллер авторов;
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);
}
}
}
-
Контроллер выставки;
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);
}
}
}
-
Контроллер картин;
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);
}
}
}
-
Контроллер участий в выставках.
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);
}
}
}