Разработка программы для системы управления базами данных

  • Вид работы:
    Контрольная работа
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    9,29 Кб
  • Опубликовано:
    2017-06-08
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программы для системы управления базами данных

Введение

Операционная компания - компания, которой на праве собственности или ином вещном праве принадлежат активы, обеспечивающие производство, передачу, распределение или сбыт продукции. ОАО «МРСК Урала» - единая операционная компания, осуществляющая транспорт электроэнергии по электрическим сетям напряжением 0,4-220 кВ и технологическое присоединение потребителей к электросетям на территории Свердловской, Челябинской областей, а также Пермского края. На территории Свердловской области ОАО "МРСК Урала" представляет филиал "Свердловэнерго". Филиал ОАО "МРСК Урала" - "Свердловэнерго" осуществляет передачу электрической энергии по распределительным сетям 0,4-110 кВ. Основной задачей является обеспечение надежного функционирования и развития распределительного электросетевого комплекса региона, а также подключение новых потребителей к распределительным электрическим сетям компании. Всего в эксплуатации филиала "Свердловэнерго" находится 375 подстанций 35-220 кВ суммарной мощностью 7279 МВА, 7823 шт трансформаторных подстанций 10/0,4 кВ и 36 654 км воздушных и кабельных линий электропередачи классом напряжения 0,4-110 кВ. Общая численность персонала филиала "Свердловэнерго" - более 5 тысяч человек. Филиал "Свердловэнерго" осуществляет электроснабжение промышленных предприятий и населения на территории общей площадью 195 тыс. км2 с населением 4,4 млн человек. Средний радиус обслуживания в производственном отделении составляет 32 км. Для облегчения работы персонала с документацией хранимой в электроном виде, а также для размещения шаблонов для заполнения документов требуется создать ресурс с удобным интерфейсом пользователя. В него входит:

-Создание, редактирование, удаление документов и шаблонов

-Просмотр информации

-Поиск по ключевым словам или используя фильтры

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


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

Разработать сетевой ресурс для предприятия ОАО «МРСК Урала».

Ресурс содержит:

-База данных «Пользователи»

-База данных «Документы»

-Редактирование баз данных

-Поиск по базе данных

-О программе

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

2. Формулировка и анализ требований

Множество лиц, действующих в предметной области

-Сотрудник

-Ответственный за документацию

-Администратор

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

-Просмотр документа

-Создание, редактирование, удаления документа

-Поиск документа в базе данных

Множество объектов и процессов, подлежащих описанию в БД.

-Данные пользователя

-Описание документа

-Добавление, редактирование

-Удаление информации о документе.

3. Выбор СУБД

- это библиотека написанная на языке C, которая предоставляет легковесную, находящуюся на диске базу данных, которой не требуется отдельный серверный процесс и которая позволяет получать доступ используя не стандартные диалекты языка SQL.Некоторые приложения могут использовать SQLite для внутреннего хранения данных. Также возможно сделать прототип приложения используя SQLite и затем перенести код для больших баз данных, таких как PostgreSQL или Oracle.была написана Gerhard Häring и предоставляет SQL интерфейс совместимый с DB-API 2.0 спецификациями описанными в PEP 249.

Значительные отличия между SQLite и другими базами данных находятся в самом движке. В отличие от других БД в SQLite нет привязки к типам; все данные сохраняются как строки оканчивающиеся символом NULL, что лучше, чем двоичное представление данных в столбцах специального типа. По причине совместимости SQLite поддерживает тип спецификации в конструкциях CREATE TABLE, например, такой как INT, CHAR, FLOAT, TEXT и тому подобные, но реально их не использует. Внутри БД, SQLite только делает различие между строковыми и целочисленными данными во время сортировки. Поэтому, если вы не собираетесь сортировать данные, вы можете обойтись без указания специального типа полей при создании таблиц в SQLite.

"Безтиповая природа" SQLite делает сортировку и сопоставление данных в некотором роде медленнее, так как каждый раз SQLite будет вынуждена определять тип данных и применять либо строковый механизм сортировки/сравнения либо числовой. SQL таблицы часто требуют автоматически присваиваемый ключ для быстрого доступа к ячейкам, подразумевая возврат ссылки на последнюю добавленную ячейку. Для SQLite этот синтаксис, мягко говоря, бесполезен. Чтобы создать такую таблицу, вам понадобится объявить поле как INTEGER PRIMARY KEY, что более удобно, чем указание специализированного типа или присваивание дополнительных свойств, которые указывают на то, что поле является автоинкрементным. сетевой интерфейс документ шаблон

4. Логическая структура данных

Описание документа




Данные пользователя


5. Физическая структура данных

Таблица 1. Описание документа

ПолеНазваниеТипРазмерПояснение1id_podrazdForeignKey-Подразделение2id_formCharField100Форма3id_typedocForeignKey-Тип документа4nameCharField254Название5n_docCharField50Номер документа6vid_khraneniyaIntegerField1Вид хранения7date_docDateField-Дата создания документа

Таблица 2 - Данные пользователя

ПолеНазваниеТипРазмерПояснение1name_userCharField150Имя пользователя2nameCharField40Имя3familyCharField40Фамилия4mail_adressCharField60Адрес электронной почты5Id_podrazdForeignKey-Подразделение

6. Руководство программиста

В проект входят следующие файлы:

-db.sqlite3

-manage.py

-settings.py

-urls.py

-admin.py

-apps.py

-forms.py

-models.py

-urls.py

-views.py

Работа с административной панелью Django

Для входа в систему администрирования введите в адресной строке https://albom-form.se.mrsk-urala.local/admin/ и введите выданные логин и пароль

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

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

Для того чтобы создать новую страницу необходимо объявить операцию в файле views.py, также создать html документ и прописать адрес данной страницы в файл urls.py

Инструкция пользователя

Для входа необходимо в адресной строке браузера написать адрес https://albom-form.se.mrsk-urala.local/, после чего перед вами откроется страница авторизации пользователя.

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

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

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

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

В правой верхней части страницы расположена кнопка «новая запись», которая открывает пустой шаблон для заполнения.

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

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

models.pydjango.db import modelsdjango.contrib.auth.models import Userdjango.core.urlresolvers import reversedjango.utils import timezone

# Create your models here.Otdel(models.Model):= models.CharField(max_length=12, unique=True)= models.CharField(max_length=100)= models.TextField()__str__(self):str(self.name)Res(models.Model):= models.CharField(max_length=10, unique=True)= models.CharField(max_length=150)__str__(self):str(self.name)TypeDoc(models.Model):= models.CharField(max_length=30, unique=True)= models.CharField(max_length=100)= models.TextField()__str__(self):str(self.name)PublishedManager(models.Manager):get_queryset(self):super(PublishedManager, self).get_queryset().filter(status='published')Albom(models.Model):= (

(1, "Бумажное"),

(2, "Электронное"),

(3, "Комбинированное")

)_podrazd = models.ForeignKey(Otdel, verbose_name = "Подразделение")_form = models.CharField(max_length=100, verbose_name = "Идент. формы")_typedoc = models.ForeignKey(TypeDoc, verbose_name = "Тип документа")= models.SlugField(max_length=250, unique_for_date='created_at')= models.ForeignKey(User, related_name='+', verbose_name = "Автор")= models.CharField(max_length=254, verbose_name = "Имя формы")_doc = models.CharField(max_length=50, verbose_name = "№ документа")_doc = models.DateField(default=timezone.now, verbose_name = "Дата документа")_user = models.CharField(max_length=100, blank=True, verbose_name = "ответсвенный")_khraneniya = models.IntegerField(choices=CATEGORIES, default=1, verbose_name = "Вид хранения")_doc_otm = models.CharField(max_length=50, blank=True, verbose_name = "№ документа отмены")_doc_otm = models.DateField(blank=True, null=True, verbose_name = "Дата документы отмены")= models.TextField(max_length=254, blank=True, verbose_name = "Примечание")_file = models.FileField(upload_to='uploads/%Y/%m/%d/', verbose_name=u'Прикрепить документ', max_length = 1000, blank=True)= models.BooleanField(verbose_name = "Действующая")_at = models.DateTimeField(auto_now_add = True)_at = models.DateTimeField(auto_now = True)= models.Manager() # The default manager.= PublishedManager() # The Dahl-specific manager.Meta:= ('-id_form',)get_formatted_datetime(self):str(self.created_at.day) + "." + str(self.created_at.month) + "." + str(self.created_at.year) + " " + str(self.created_at.hour) + ":" + str(self.created_at.minute) + ":" + str(self.created_at.second)_formatted_datetime.short_description = "Опубликовано"get_absolute_url(self):reverse('albom-update', kwargs={'pk': self.pk}).pydjango.http import HttpResponsedjango.shortcuts import render, render_to_response, get_object_or_404, redirectdjango.core.paginator import Paginator, EmptyPage, PageNotAnIntegerdjango.views.generic.base import ContextMixin, TemplateViewdjango.views.generic.edit import CreateView, UpdateView, DeleteView, ProcessFormViewdjango.core.urlresolvers import reverse_lazy, reversedjango.contrib.messages.views import SuccessMessageMixintaggit.models import Tagjson.models import Otdel.models import TypeDoc.models import Albom.models import Res

# Create your views here.index(request, tag_slug=None):= Otdel.objects.all().order_by("name")= TypeDoc.objects.all().order_by("name")_forms = Albom.objects.all()= Res.objects.all().order_by("name")= Nonetag_slug:= get_object_or_404(Tag, slug=tag_slug)_list = albom_forms.filter(tags__in=[tag])_albom_form = '{"iTotalRecord":'+str(albom_forms.count())+', "iTotalDisplayRecords": 10, "sEcho":10, "aaData": []}'= Paginator(albom_forms, 20, orphans = 1):= request.GET.get('page')KeyError:= 1:= paginator.page(page)PageNotAnInteger:

# If page is not an integer, deliver first page.= paginator.page(1)EmptyPage:

# If page is out of range (e.g. 9999), deliver last page of results.= paginator.page(paginator.num_pages)= {

'otdels': otdels,

'typedocs': typedocs,

'albomforms': albomforms,

'ress': ress,

'json_albom_form': json_albom_form,

'tag': tag,

'pn': page,

}

#print(request.user.get_all_permissions())render(request, 'index.html', context)AlbomListMixin(ContextMixin):get_context_data(self, **kwargs):= super(AlbomListMixin, self).get_context_data(**kwargs)contextAlbomEditMixin(AlbomListMixin):get_context_data(self, **kwargs):= super(AlbomEditMixin, self).get_context_data(**kwargs):["pn"] = self.request.GET["page"]KeyError:["pn"] = "1"contextAlbomEditView(ProcessFormView):post(self, request, *args, **kwargs)::= request.GET["page"]KeyError:= "1".success_url = self.success_url + "?page=" + pnsuper(AlbomEditView, self).post(request, *args, **kwargs)AlbomCreate(CreateView, AlbomEditMixin):= Albom_name = "albomform_add.html"= ['id_podrazd', 'id_form', 'id_typedoc', 'name', 'n_doc', 'date_doc', 'otv_user', 'vid_khraneniya',

'n_doc_otm', 'date_doc_otm', 'description', 'path_file', 'active']get(self, request, *args, **kwargs):request.user.is_authenticated():request.user.has_perm("albom_form.add_albom")::_stock = request.session["in_stock"]:_stock = True:redirect("/login/?next=" + request.path):redirect("/login/?next=" + request.path)super(AlbomCreate, self).get(request, *args, **kwargs)post(self, request, *args, **kwargs):super(AlbomCreate, self).post(request, *args, **kwargs)get_context_data(self, **kwargs):= super(AlbomCreate, self).get_context_data(**kwargs)contextAlbomUpdate(SuccessMessageMixin, UpdateView, AlbomEditMixin, AlbomEditView):_name = "albomform.html"= Albom= ['id_podrazd', 'id_form', 'id_typedoc', 'name', 'n_doc', 'date_doc', 'otv_user', 'vid_khraneniya',

'n_doc_otm', 'date_doc_otm', 'description', 'path_file', 'active']_url_kwarg = "pk"get(self, request, *args, **kwargs):request.user.is_authenticated():request.user.has_perm("albom_form.change_albom")::_stock = request.session["in_stock"]:_stock = True:redirect("/login/?next=" + request.path):redirect("/login/?next=" + request.path)super(AlbomUpdate, self).get(request, *args, **kwargs)post(self, request, *args, **kwargs):.success_url = reverse("index")super(AlbomUpdate, self).post(request, *args, **kwargs)_message = "Форма успешно обновлена в альбоме форм"

class AlbomDelete(DeleteView):= Albom_url = reverse_lazy('index')AboutView(TemplateView):_name = "about.html"get_search(request):'q' in request.GET and request.GET['q']:= request.GET['q']= Albom.objects.filter(name__icontains=q)render_to_response('search.html'),{'forms' : forms, 'query' : q}:.pydjango.contrib import admin.models import Otdel.models import Res.models import Albom.models import TypeDoc

# Register your models here.OtdelAdmin(admin.ModelAdmin):_display = ("name", "fullname")ResAdmin(admin.ModelAdmin):_display = ("name", "fullname")TypeDocAdmin(admin.ModelAdmin):_display = ("name", "fullname")AlbomAdmin(admin.ModelAdmin):_display = ("get_formatted_datetime", "id_form", "name", "otv_user", "author")_filter = ("id_podrazd", "id_typedoc", "author")_fields = ("id_form", "name")_hierarchy = ("date_doc")= ['id_form', 'name'].site.register(Otdel, OtdelAdmin).site.register(Res, ResAdmin).site.register(TypeDoc, TypeDocAdmin).site.register(Albom, AlbomAdmin).pydjango.conf.urls import urldjango.views.generic.base import TemplateViewalbomform.apps.albom_form import viewsdjango.conf import settingsdjango.conf.urls.static import staticalbomform.apps.albom_form.views import AlbomCreate, AlbomUpdate, AlbomDeletedjango.contrib.auth.decorators import login_required= [(r'^$', login_required(views.index), name="index"),(r'albom/add/$', login_required(AlbomCreate.as_view()), name='albom-add'),(r'albom/(?P<pk>\d+)/$', login_required(AlbomUpdate.as_view()), name='albom-update'),(r'albom/(?P<pk>\d+)/delete/$', login_required(AlbomDelete.as_view()), name='albom-delete'),(r'about/$', login_required(TemplateView.as_view(template_name="about.html")), name="about"),

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


Заключение

По дипломному заданию необходимо было разработать сетевой ресурс для предприятия ОАО «МРСК Урала»

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


Список использованных источников

1.Django: практика создания сайтов на Python (Дронов В.А.)

2.Изучаем Python: программирование игр, визуализация данных, веб-приложения (Эрик Мэтиз)

.Простой Python Современный стиль программирования (Билл Любанович)

.Python 3 &PyQt: Разработка приложений (Николай Прохоренок)

.Язык программирования Python (Сузи Роман Авриевич)

Похожие работы на - Разработка программы для системы управления базами данных

 

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