Информационная система для учёта электронных подписей

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

Информационная система для учёта электронных подписей

Содержание


Введение

1. Анализ требований к системе

1.1 Анализ предметной области

.2 Use case-диаграмма

2. Обзор средств разработки

3. Оценка трудоёмкости и сроков разработки проекта с использованием языка python по методикам cetin и cocomo-ii

3.1 Расчёт по методике COCOMO-II

.2 Расчёт по методике CETIN

4. Проектирование информационной системы

5. Разработка приложения с использованием django

5.1 Создание приложения Django

.2 Создание моделей

.3 Создание представлений

.4 Создание шаблонов

6. Тестирование приложения

Заключение

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

Приложения

Введение


В большинстве информационных систем используется электронная подпись. Электронная подпись (ЭП) - это последовательность символов, полученная в результате криптографического преобразования определенного объема информации по математическому алгоритму с использованием ключей, каждый символ которой имеет неизменяемое соотношение с данным объемом информации.

Электронная подпись выполняет следующие функции:

-       Идентифицирует автора;

-       Позволяет определить неизменность документа с момента подписания;

-       Защищает документ от подделки.

В России используется три вида электронной подписи:

-       Простая;

-       Неквалифицированная;

-       Квалифицированная.

На сегодняшний день самые распространенные сферы использования электронной подписи:

-       Электронный документооборот. В этой сфере ЭП используется в качестве средства визирования документов;

-       Электронная отчетность. ЭП придает отчетности юридическую значимость;

-       Работа на Портале госуслуг. [7]

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

python информационный приложение django

1. Анализ требований к системе

 

.1 Анализ предметной области


Процедура получения электронной подписи происходит в следующем порядке:

.        Организация направляет заявку в удостоверяющий центр. В заявке содержится список работников, которым необходимо выдать электронные подписи, а также данные об этих работниках;

.        Заключается контракт между удостоверяющим центром и организацией;

.        Удостоверяющий центр выдает сертификаты работникам. Сертификат электронной подписи представляет собой документ, который подтверждает принадлежность электронной подписи её владельцу;

.        Факт выдачи ЭП работнику регистрируется в журнале (реестре).

Реестр содержит следующие обязательные сведения о сертификатах ключей проверки электронных подписей уполномоченных сотрудников Администрации города Вологды, наделенных правом электронной подписи от имени Администрации города Вологды включающие:

.        Фамилию, имя и отчество сотрудника;

.        Название органа Администрации города Вологды, сотрудник которого наделен правом ЭП;

.        Реквизиты постановления Администрации города Вологды, в соответствии с которым сотрудник наделен правом электронной подписи;

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

.        Дату выдачи сертификата ключа проверки электронной подписи;

.        Дату начала и окончания срока действия сертификата ключа проверки электронной подписи;

.        Носитель ключевой информации (Токен), на который производилась запись ключа электронной подписи, с указанием серийного номера носителя;

.        Отметку о получении Уполномоченным сотрудником сертификата ключа проверки электронной подписи;

.        Дату досрочного прекращения действия сертификата ключа проверки электронной подписи;

.        Отметку об уничтожении ключа электронной подписи. [8]

1.2 Use case-диаграмма

Выделим двух акторов системы:

.        Лицо, ответственное за закупочную деятельность

.        Лицо, ответственное за ведение реестра

Use case диаграмма представлена на рисунке 1.1

Рисунок 1.1 - use case-диаграмма системы

2. Обзор средств разработки


В качестве средств разработки заказчиком были рекомендованы Python, Django, PostgreSQL. Выбор обусловлен необходимостью интеграции разрабатываемой системы в уже существующую на предприятии.

Рассмотрим плюсы Django, отличающие его от других Content Management Frameworks.

Первое и, пожалуй, самое главное отличие - язык программирования, на котором выполнена CMF. В данном случае это Python. Этот язык программирования появился относительно недавно (в 1990 году), но это нисколько не помешало ему стать одним из самых популярных и востребованных на сегодняшний день. Python использует Yandex и даже такой гигант, как Google. Причин для этого несколько.

Во-первых, на выбор в пользу Python влияет лицензия, которая регламентирует использование и распространение этого языка. Она позволяет использовать модули, написанные на Python, в коммерческих приложениях.

Второе, чем привлекает Python - простота разработки. Исследования показывают, что написание программ на данном языке отнимает в четыре раза меньше времени, чем написание аналогичных программ на других языках программирования.

Третье достоинство этого языка программирования - совместимость с большинством существующих платформ.[2]выступает языком программирования для нескольких Фреймворков (Фреймворк - программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта). Одним из них и является Django.

Кроме уже отмеченного удобного языка программирования, этот Фреймворк обладает ещё целым рядом преимуществ.

Одним из них является бесплатность. Для начинающего разработчика это немаловажно.

Второй плюс заключается в том, что Django располагает программными интерфейсами (API) для доступа к базам данных, что, естественно, значительно облегчает разработку web-проектов.

Третьим достоинством по счёту, но не по значимости является то, что архитектура Django согласно модели «MVC: Model-View-Controller» разделяет приложение на три составляющих:

1.      Model - это программный модуль в составе приложения, который является своего рода посредником между базой данных и модулями проекта.

Модель выполняет следующие функции:

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

-       Представляет данные, считанные из базы данных, в терминологии используемого языка программирования;

-       Реализует механизмы выборки, сортировки и фильтрации данных, содержащихся в базе данных;

-       Реализует механизмы редактирования, удаления и добавления данных в базу;

-       Проверяет корректность введенных данных (соответствие типов, длины строки и т.д.) [1]

2.      View - часть, которая определяет какие данные получать и как их отображать, обрабатывается представлениями и шаблонами.

3.      Controller - часть, которая выбирает представление в зависимости от пользовательского ввода, обрабатывается самой средой разработки, следуя созданной вами схемой URL, и вызывает соответствующую функцию Python для указанного URL. [4]

Рисунок 2.1 - архитектура приложения Django

Также Django имеет удобный интерфейс администратора, благодаря которому можно интуитивно управлять разработанным web-приложенем и его содержимым. Действия по управлению контентом может совершать даже человек, не знакомый близко с программированием.

Кроме всего перечисленного, фреймворк поддерживает большое количество языков, что позволяет создавать web-приложения для аудитории разных стран мира.

Все перечисленные преимущества в конце концов выливаются в одно неоспоримое достоинство: разработка и поддержка web-приложений, написанных на языке Python и использованием Django, происходит гораздо проще и быстрее, чем на других платформах.

Благодаря этому создание web-приложений, написанных на языке Python с использованием Django, и их поддержка, становится гораздо проще и осуществляется быстрее, чем разработка аналогичных проектов на других платформах.является олицетворением языка, который он использует: интуитивно понятный, позволяющий быстро и качественно создать код, более распространён в глобальной сети (используется в том числе Google). Плюс ко всему в комплекте с Django идёт очень хорошая и подробная документация, в которой можно найти ответ на любой интересующий вопрос. [3]- свободная объектно-реляционная система управления базами данных. Сильными сторонами PostgreSQL считаются:

высокопроизводительные и надёжные механизмы транзакций и репликации;

расширяемая система встроенных языков программирования;

наследование;

легкая расширяемость.

3. Оценка трудоёмкости и сроков разработки проекта с использованием языка Python по методикам CETIN и COCOMO-II

 

.1 Расчёт по методике COCOMO-II


Примем наиболее вероятное количество строк на одну невыровненную ФТ для языка Python за 60.

Размер проекта:

*34=2040 строк

Факторы масштаба

В методике используются пять факторов масштаба SFi, которые определяются следующими характеристиками проекта:

.PREC - прецедентность, наличие у разработчика опыта аналогичных разработок

.FLEX - гибкость процесса разработки продукта

.RESL - архитектура и разрешение рисков

.TEAM - сработанность команды

.PMAT - зрелость процессов

Значения фактора масштаба в зависимости от оценки его уровня, приведены в Таблице 1

Таблица 1 - факторы масштаба

Фактор масштаба

Оценка уровня фактора


Very Low

Low

Nominal

High

Very High

Extra High

PREC

6.20

4.96

3.72

2.48

1.24

0.00

FLEX

5.07

4.05

3.04

2.03

1.01

0.00

RESL

7.07

5.65

4.24

2.83

1.41

0.00

TEAM

5.48

4.38

3.29

2.19

1.10

0.00

PMAT

7.80

6.24

4.68

3.12

1.56

0.00


SF=6.2+1.01+4.24+2.19+1.56=15.2 - факторы масштаба

E=0.91+0.01*15.2=0.14 - Множители трудоемкости

.PERS - квалификация персонала

.RCPX - надежность и сложность продукта

.RUSE - разработка для повторного использования

.PDIF - сложность платформы разработки

.PREX - опыт персонала

.FCIL - оборудование

.SCED - сжатие расписания

Таблица 2 - Множители трудоемкости


Оценка уровня множителя трудоемкости


Extra Low

Very Low

Low

Nominal

High

Very High

Extra High

PERS

2.12

1.62

1.26

1.00

0.83

0.63

0.5

RCPX

0.49

0.60

0.83

1.00

1.33

1.91

2.72

RUSE

n/a

n/a

0.95

1.00

1.07

1.15

1.24

PDIF

n/a

n/a

0.87

1.00

1.29

1.81

2.61

PREX

1.59

1.33

1.22

1.00

0.87

0.74

0.62

FCIL

1.43

1.30

1.10

1.0

0.87

0.73

0.62

SCED

n/a

1.43

1.14

1.00

1.00

1.00

n/a


Уравнения СОСОМО II для оценки номинальных значений трудоемкости имеют следующий вид:


где •SIZE - размер продукта в KSLOC или в количестве функциональных точек без включения поправочных коэффициентов (UFP), определенном по методике 1FPUG, с последующим преобразованием в количество строк кода.

•EMi - (effort multiplier) множители трудоемкости

•SFj - (scale factor) факторы масштаба

•n=7 - для предварительной оценки

•n=17 - для детальной оценки

Калибровочные переменные А, В, С и D в модели СОСОМО II принимают следующие значения:

А = 2.94,

В = 0.91,

С= 3.67, = 0.28.

Множитель трудоемкости рассчитываются по формуле:

Em = 1.26*0.6*0.95*0.87*1.59*1.3*1 = 1.29

Номинальное значение трудоемкости:

PM = 2,94*20.14*1.29 = 4.18 чел/мес

Время реализации проекта:

= 3,67*4,180,28+0,2*0,01*15,2 =3,67*1,55 = 5,7 мес

3.2 Расчёт по методике CETIN


этап. Оценка функционального размера разрабатываемой ИС

количество вариантов использования - C;

количество типов объектов - E;

количество свойств типов объектов - Т;

количество взаимодействий между типами объектов - I;

количество типов узлов - N.

SIZE={C, E, T, I ,N}

Исходные данные:

Количество акторов системы = 3

Количество вариантов использования (Case) - C = 5

Количество типов объектов (бизнес объектов) (Entity) - Е = 16

Количество свойств типов объектов (Tool) - Т = 50;

Количество взаимодействий между типами объектов (Interaction) - I = 64;

Количество типов узлов (Node) - N = 1.

Функциональный размер:

{5,16,50,64,1}

этап. Оценка базовой трудоемкости разработки ППО

Sj=1/165·[C*Sj(C)+E*Sj(E)+T*Sj(T)+I*Sj(I)+N*Sj(N)],

где: Sj - трудоемкость процесса разработки с номером j в [человеко-месяц];

j - номер процесса разработки (значения от 1 до 6);

Sj(C) - норматив трудоемкости реализации одного варианта использования в процессе разработки с номером j=1,2,…,6, {[человеко-час]/[вариант использования]};=1/165·[5*32,12+16*28,33+50*0+64*14,15+1*0] = 1/165 х [32.12+28.33+0+14.15+0] = 9.2=1/165·[5*58,03+16*28,04+50*0+64*20,32+1*0] =

= 1/165 х [58.03+28.04+0+20.32+0] = 12.35921=1/165·[5*45,42+16*61,75+50*31,35+64*37,52+1*24,02] =

= 1/165 х [227,42+988+1567,5+2401,28+24,04] = 31.56=1/165·[5*31,57+16*81,51+50*50,72+64*36,11+1*0] =

= 1/165 х [157.85+1304.16+2536+2311.04]= 38.24=1/165·[5*88,96+16*0+50*0+64*0+1*0] = 1/165 х [444.8+ 0 + 0 + 0 + 0] = 2.7=1/165·[5*8,69+16*0+50*0+64*0+1*23,74] = 1/165 х [43.45+ 0 + 0 + 0 + 23.74] = 0.4б = 94.47

Режим эксплуатации ИС К1=1,05 обработка данных в режиме реального времени

Масштаб ИС К2=1 средние ИС (от 11 до 100 пользователей с длительным ЖЦ с возможностью роста до крупных систем)

Стабильность ИС К3=1 дискретное внесение изменений

Защита от несанкционированного доступа К4=1 средняя

Защита программ и данных (на уровне операционной системы, на уровне сетевого программного обеспечения, на уровне СУБД) К5 = 1 средняя

Контрольный след операций К6=1,08 выборочное отслеживание

Отказоустойчивость К7=1 средняя

Восстанавливаемость К8= 1 средняя

Длительность обработки (время отклика) К9=1

Исходный язык разработки ИС К10=1 объектно-ориентированный (Си++ или эквивалентный)

Класс пользователя К11=1,07 средний

Требования к центральному обрабатывающему устройству (процессору) К12= 1 средняя

Требования к оперативной (основной) памяти К13=1,04 малая

Требования к внешней памяти К14=1,01 малая

Требования к локальной вычислительной сети К15 = 1,02 средние требования

Критичность ИС К16=1 организационная безопасность

Готовность К17 = 1,11 заказное (методика заказчика специфическая)

Представление данных К18=1 реляционный

этап. Определение значений поправочных коэффициентов

КП1=К11·К16·К17 = 1,07*1*1,11 = 1,19

КП2=К1·К2·К4·К5·К6·К7·К8·К9·К16·К17·К18=1,05*1*1*1*1,08*1*1*1*1,11*1=1,26

КП3=К1·К2·К4·К5·К6·К7·К8·К9·К11·К12·К13·К14·К15·К16·К17·К18 = 1,05*1,08*1,07*1,04*1,01*1,02*1,11=1,44

КП4 = К1*К2*К4*К5*К6*К7*К8*К9*К10*К12*К13*К14*К15*К16* *К17*К18=1,05*1*1*1*1,08*1*1*1*1,04*1,01*1,02*1,11 = 1,35

КП5=К1*К2*К4*К5*К6*К7*К8*К9*К10*К11*К12*К13*К14*К15*К16*К17*К18 = 1,44

КП6 = К1*К2*К11*К16*К18=1,05*1,07*1 = 1,12

Sj(E) - норматив трудоемкости реализации одного типа объектов в процессе разработки с номером j=1,2,...,6. {[человеко-час]/[тип объектов]};

Sj(T) - норматив трудоемкости реализации одного свойства типа объекта в процессе разработки с номером j=1,2,...,6. {[человеко-час]/[свойство типа объектов]};

Sj(I) - норматив трудоемкости реализации одного взаимодействия между типами объектов в процессе разработки с номером j=1,2,...,6. {[человеко-час]/[взаимодействие между типами объектов]};

Sj(N) - норматив трудоемкости реализации одного типа узла в процессе разработки с номером j=1,2,...,6. {[человеко-час]/[узел]};

165 - количество человеко-часов в одном человеко-месяце

этап. Расчет трудоемкости с учетом поправочных коэффициентов

S1= 9.2х1,19 = 10.95= 12.4х1,26 = 15.62= 31.56х1,44 = 45.4= 38.24х1,35 = 51.62= 2.7х1,44 = 3.89= 0.4х1,12 = 0.45= 127.98

5 этап. Оценка срока разработки ППО

срок разработки 4-14 мес., средний 8 мес.

С учетом расчета трудоемкости был построен детальный график разработки продукта (диаграмма Ганта). Диаграмма представлена в приложении.

4. Проектирование информационной системы

База данных будет состоять из следующих таблиц:

1       Department - содержит список отделов

-       ID - автоинкременное поле, первичный ключ;

-       Name_dep - название отдела;

-       Organization - организация, к которой относится отдел.

2       Worker - содержит информацию о работниках

-       ID - автоинкременное поле, первичный ключ;

-       FIO - ФИО работника;

-       Short_position - краткое название должности;

-       Position - должность;

-       Ser_pass - серия паспорта;

-       Num_pass - номер паспорта;

-       Cod_podr - код подразделения, где выдан паспорт;

-       Name_podr - название подразделения;

-       SNILS - номер страхового свидетельства;

-       Id_dep - внешний ключ к таблице Department.

3       Sertificate - содержит информацию о выданных сертификатах;

-       ID - автоинкременное поле, первичный ключ;

-       Id_worker - внешний ключ к таблице Worker;

-       Start_date - дата начала действия сертификата;

-       End_date - дата окончания действия сертификата;

-       Serial_number - номер сертификата.

4       MPA - содержит информацию о муниципальных правовых актах, наделяющих сотрудника правами на получение электронной подписи;

-       ID - автоинкременное поле, первичный ключ;

-       Name_MPA - название муниципального правового акта;

-       Type_MPA - тип муниципального правового акта;

-       Date_MPA - дата утверждения муниципального правового акта;

-       Num_MPA - номер муниципального правового акта;

5       OID - объектный идентификатор ключа

-       ID - автоинкременное поле, первичный ключ;

-       Name_OID - название объектного идентификатора;

-       Comment - примечание.

6       SertificateCategory - содержит информацию о категориях сертификатов

-       ID - автоинкременное поле, первичный ключ;

-       Name_category - название категории.

7       Token-содержит информацию о выданных носителях электронных подписей

-       ID - автоинкременное поле, первичный ключ;

-       Type - тип носителя;

-       Reg_num - регистрационный номер носителя.

8       VerificationCenter - содержит информацию об удостоверяющих центрах

-       ID - автоинкременное поле, первичный ключ;

-       Name - название;

-       Comment - примечание.

9       ContractType - содержит типы контрактов (таблица-справочник)

-       ID - автоинкременное поле, первичный ключ;

-       Name - тип контракта.

         Contract - содержит информацию о контрактах

-       ID - автоинкременное поле, первичный ключ;

-       Reg_num - регистрационный номер;

-       Start_date - дата начала контракта;

-       End_date - дата окончания контракта;

-       Comment - примечание.

         ContractLine - содержит информацию о стоимости конракта и количестве выданных сертификатов (таблица-справочник)

-       ID - автоинкременное поле, первичный ключ;

-       Price - стоимость;

-       Количество подписей в контракте.

         Application - заявка в удостоверяющий центр на выдачу сертификатов

-       ID_center;

-       ID_category.

         SertificateDelivery - журнал выдачи сертификатов

-       ID - автоинкременное поле, первичный ключ;

-       Start_date - дата выдачи;

-       Early_stop_date - дата досрочного прекращения действия сертификата;

-       Destruction_date - отметка об уничтожении (дата)

Физическая схема базы данных представлена на рисунке 4.1.

Рисунок 4.1 - физическая схема базы данных

5. Разработка приложения с использованием Django

 

.1 Создание приложения Django


Для того чтобы создать приложение Django, необходимо запустить командную строку и выполнить следующую команду:

Django-admin.py startproject <имя проекта>

После выполнения этой команды автоматически сгенерируются все основные модули проекта.

Запуск отладочного веб-сервера производится командой

Manage.py runserver

Для останова отладочного веб-сервера необходимо нажать комбинацию клавиш «CTRL» + «Break»

5.2 Настройка проекта Django

Созданный проект содержит в себе модуль Settings.py. Для настройки проекта необходимо внести сведения об используемой базе данных в этот модуль. По умолчанию модуль содержит настройки для SQLite[1]. Так как в текущем проекте будет использоваться PostgreSQL, в Settings.py внесем настройки, представленные на рисунке 5.1

Рисунок 5.1 - настойки базы данных

Для настройки локализации необходимо указать язык и временную зону:

LANGUAGE_CODE = 'RU-ru'_ZONE = 'UTC'

 

5.3 Создание моделей


В автоматически созданном модуле Models.py необходимо описать классы для каждой сущности схемы базы данных. На рисунке 5.2 показана структура модели на примере класса «Работник»

Рисунок 5.2 - модель «Работник»

Полный листинг модуля Models.py представлен в приложении

 

5.4 Создание представлений


Представления необходимы для обработки данных, содержащихся в моделях.

Представление - это функция Python. Эта функция принимает параметр - объект класса HttpRequest:

-       GET - список параметров, полученных по методу GET;

-       POST - список параметров, полученных по методу POST;

-       REQUEST - список параметров, полученных по методам GET и POST;

-       Method - содержит строку «GET» или «POST» в зависимости от метода

-       Path - строка, хранящая интернет-адрес страницы

На рисунке 5.3 показано представление, которое обрабатывает данные модели «Работник»

Рисунок 5.3 - представление для обработки данных модели «Работник»

5.5 Создание шаблонов


Для настройки отображения формы «Работник» в Django используются шаблоны, которые представляют собой обычный html-код со специализированными командами шаблонизатора. Пример шаблона «Работник» представлен на рисунке 5.4.

Рисунок 5.4 - шаблон для отображения формы «Работник»

Структура приложения представлена на рисунке 5.5

Рисунок 5.5 - структура приложения Django

Автоматический интерфейс администратора является частью библиотеки кода, называемой django.contrib - часть кода Django, включающего различные полезные дополнения к ядру Django.

Для того чтобы подключить к проекту интерфейс администратора, необходимо выполнить следующие действия:

.        Добавить 'django.contrib.admin' в настройку INSTALLED_APPS.

.        Добавить четыре зависимости в список INSTALLED_APPS - django.contrib.auth,django.contrib.contenttypes, django.contrib.messages and django.contrib.sessions

.        Добавить django.contrib.auth.context_processors.auth и django.contrib.messages.context_processors.messages в опцию 'context_processors' модуля DjangoTemplates` из настройки TEMPLATES, и django.contrib.auth.middleware.AuthenticationMiddleware с MessageMiddleware в MIDDLEWARE_CLASSES.

4.      Определить, какие модели будут редактироваться через интерфейс администратора.

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

.        Создать экземпляр AdminSite и добавьте в него созданные модели с соответствующими классами ModelAdmin.

.        Добавить AdminSite в URLconf.

Модуль Admin.py представлен на рисунке 5.6

Рисунок 5.6 - модуль Admin.py

После проделанных действий можно открыть интерфейс администратора Django посетив URL /admin/

Интерфейс приложения администратора представлен на рисунке 5.7

Рисунок 5.7 - интерфейс администрирования Django

6. Тестирование приложения


Первый этап работы с приложением - внесение информации о сотруднике. Форма для внесения данных представлена на рисунке 6.1.

Рисунок 6.1 - форма «Работник»

На втором этапе работы с приложением вносятся данные о муниципальном правовом акте, наделяющем сотрудника правами на получение электронной подписи. Вкладка «Муниципальный правовой акт» представлена на рисунке 6.2.

Рисунок 6.2 - форма «Муниципальный правовой акт»

На третьем этапе добавляется заявка в удостоверяющий центр, что показано на рисунке 6.3.

Рисунок 6.3 - форма «Заявка»

На четвертом этапе работы вносятся данные о заключенном контракте (рисунок 6.4)

Рисунок 6.4 - форма «Контракт»

На пятом этапе добавляется сертификат для каждого работника (рисунок 6.5)

Рисунок 6.5 - форма «Сертификат»

Затем заполняется форма «ОИД». Форма представлена на рисунке 6.6.

Рисунок 6.6 - форма «ОИД»

Факт выдачи электронной подписи сотруднику регистрируется в журнале выдачи. Форма представлена на рисунке 6.7.

Рисунок 6.7 - форма «Журнал выдачи»

Заключение


В ходе выпускной квалификационной работы была создана информационная система для учета электронных подписей.

Для достижения поставленной цели были решены следующие задачи:

-       Проведен анализ предметной области;

-       Рассчитана трудоемкость разработки по двум методикам;

-       Разработана система для учёта электронных подписей.

 


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


1.      Дронов В.А. Django: практика создания WеЬ-сайтов на Python. - СПб.:БХВ-Петербург, 2016. - 528 с.: ил. - (Профессиональное программирование)

.        Головатый А., Каплан-Мосс Дж. Django. Подробное руководство, 2-е издание. - Пер. с англ. - СПб.: СимволПлюс, 2010. - 560 с., ил.

.        Документация Django на русском языке [электронный ресурс] - Pежим доступа: https://djbook.ru/

4.      Django documentation [электронный ресурс] - Режим доступа: https://docs.djangoproject.com/en/1.11/

.        Руководство Django Girls [электронный ресурс] - Режим доступа: https://tutorial.djangogirls.org/ru/

.        Тритенко А.Н. Методические рекомендации по оформлению выпускных квалификационных работ, курсовых проектов/работ для студентов очной, очнозаочной (вечерней) и заочной форм обучения. - Вологда: , 2016. - 95 с.

.        Журнал о системах электронного документооборота (СЭД) [электронный ресурс] - Режим доступа: #"896609.files/image020.jpg">

Рисунок п.1 - диаграмма Ганта

Приложение 3


(рекомендуемое).pyos_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))_KEY = '6%*(6juha1^jufve(+%^bahm527h&cb89%d-!00!6(97yva6r^'= True_HOSTS = []_APPS = [

'ecp.apps.EcpConfig',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'django.contrib.admin',

'bootstrap3',

'menu'

]_CLASSES = [

'django.middleware.security.SecurityMiddleware',

'django.contrib.sessions.middleware.SessionMiddleware',

'django.middleware.common.CommonMiddleware',

'django.middleware.csrf.CsrfViewMiddleware',

'django.contrib.auth.middleware.AuthenticationMiddleware',

'django.contrib.auth.middleware.SessionAuthenticationMiddleware',

'django.contrib.messages.middleware.MessageMiddleware',

'django.middleware.clickjacking.XFrameOptionsMiddleware',

]_URLCONF = 'mybase.urls'= [

{

'BACKEND': 'django.template.backends.django.DjangoTemplates',

'DIRS': [],

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'django.template.context_processors.debug',

'django.template.context_processors.request',

'django.contrib.auth.context_processors.auth',

'django.contrib.messages.context_processors.messages',

],

},

},

]_APPLICATION = 'mybase.wsgi.application'= {

'default': {

'ENGINE': 'django.db.backends.postgresql', # 'django.db.backends.sqlite3',

'NAME': 'postgres', # 'mydatabase',

'USER': 'student',

'PASSWORD': 'student',

'HOST': 'localhost',

'PORT': '5432',

}

}_PASSWORD_VALIDATORS = [

{

'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',

},

{

'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',

},

{

'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',

},

{

'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',

},

]_CODE = 'RU-ru'_ZONE = 'UTC'_I18N = True_L10N = True_TZ = True_URL = '/static/'

ПРИЛОЖЕНИЕ 4

(рекомендуемое)

Модуль Models.py

# -*- coding: utf-8 -*-

from __future__ import unicode_literalsdjango.db import modelsdjango import formsDepartment (models.Model):

name_dep = models.CharField(u"орган (подразделение)", max_length=100)

organization = models.CharField(

u"организация", max_length=200, default=u"Администрация города Вологды"

)

def __unicode__(self):

return u"%s (%s)" % (self.name_dep, self.organization)

class Meta:

verbose_name = u"отдел"

verbose_name_plural = u"отделы"Worker(models.Model):

department = models.ForeignKey (

Department, on_delete=models.CASCADE,verbose_name = u"отдел"

)

fio = models.CharField(u"ФИО", max_length=200)

short_position = models.CharField(u"краткое название должности", max_length=50)

position = models.CharField(u"полное название должности", max_length=300)

ser_pass = models.CharField(u"серия паспорта", max_length=4)

num_pass = models.CharField(u"номер паспорта", max_length=6)

cod_podr = models.CharField(u"код подразделения", max_length=50)

name_podr = models.CharField(u"название подразделения", max_length=50)

snils = models.CharField(u"СНИЛС", max_length=30, default="")

birth_date = models.DateField(u"дата рождения")

phone = models.CharField(u"телефон", max_length=30)

def __unicode__(self):

return self.fio

class Meta:

verbose_name = u"работник"

verbose_name_plural = u"работники"Sertificate(models.Model):

worker = models.ForeignKey(

Worker,on_delete=models.CASCADE,verbose_name = u"работник"

) start_date = models.DateTimeField(u"дата начала сертификата")

end_date = models.DateTimeField(u"дата конца сертификата")

serial_number = models.CharField(u"серийный номер", max_length=50)

def __unicode__(self):

return self.serial_number

class Meta:

verbose_name = u"сертификат"

verbose_name_plural = u"сертификаты"WorkerMPA(models.Model):

worker = models.ForeignKey(Worker,on_delete=models.CASCADE)

mpa = models.ForeignKey("MPA", on_delete=models.CASCADE)MPA(models.Model):

name_mpa = models.CharField(u"название МПА", max_length=100)

type_mpa = models.CharField(u"тип МПА", max_length=100)

date_mpa = models.DateField(u"дата МПА")

num_mpa = models.CharField(u"номер МПА", max_length=100)

def __unicode__(self):

return self.name_mpa

class Meta:

verbose_name = u"муниципальный правовой акт"

verbose_name_plural = u"муниципальные правовые акты"

class OID(models.Model):

name_oid = models.CharField(u"название ОИД", max_length=100)

cod_oid = models.CharField(u"код ОИД", max_length=100)

comment = models.TextField(u"примечание",

null=True,blank=True)

def __unicode__(self):

return self.name_oid

class Meta:

verbose_name = u"ОИД"OIDSertCategory(models.Model):

oid = models.ForeignKey(OID,on_delete=models.CASCADE)

sertificatecategory = models.ForeignKey(

"SertificateCategory",on_delete=models.CASCADE

)SertificateCategory(models.Model):

name_category = models.CharField(u"название категории", max_length=100)

def __unicode__(self):

return self.name_category

class Meta:

verbose_name = u"категория сертификата"

verbose_name_plural = u"категории сертификатов"SertCategoryWorkerMPA(models.Model):

workermpa = models.ForeignKey(WorkerMPA,on_delete=models.CASCADE)

sertificatecategory = models.ForeignKey(

SertificateCategory,on_delete=models.CASCADE

)Token(models.Model):

ETOKEN = u'eToken'

RUTOKEN = u'ruToken'

TOKEN_CHOICES = (

(ETOKEN, u'eToken'),

(RUTOKEN, u'ruToken'),

)

type_token = models.CharField(u"тип", max_length=20, choices=TOKEN_CHOICES)

reg_num = models.CharField(u"регистрационный номер", max_length=20)

def __unicode__(self):

return self.type_token

class Meta:

verbose_name = u"token"

verbose_name_plural = u"token'ы"VerificationCenter (models.Model):

name = models.CharField(u"название", max_length=20)

comment = models.TextField(u"примечание", null=True,

blank=True)

def __unicode__(self):

return self.name

class Meta:

verbose_name = u"удостоверяющий центр"

verbose_name_plural = u"удостоверяющие центры"

class ContractType (models.Model):

name = models.CharField(u"тип контракта", max_length=100)

def __unicode__(self):

return self.name

class Meta:

verbose_name = u"тип контракта"

verbose_name_plural = u"типы контрактов"Contract (models.Model):

verificationcenter = models.ForeignKey (

VerificationCenter, on_delete=models.CASCADE,

verbose_name = u"удостоверяющий центр", null=True

)

contracttype = models.ForeignKey (ContractType, on_delete=models.CASCADE,

verbose_name = u"тип контракта")

reg_num = models.CharField(u"регистрационный номер", max_length=20)

start_date = models.DateField(u"дата начала контракта")

end_date = models.DateField(u"дата окончания контракта")

comment = models.TextField(u"примечание", null=True,blank=True)

def __unicode__(self):

return self.reg_num

class Meta:

verbose_name = u"контракт"

verbose_name_plural = u"контракты"ContractLine (models.Model):

contract = models.ForeignKey ("Contract", on_delete=models.CASCADE)

price = models.FloatField ("Цена")

count_sert = models.PositiveSmallIntegerField("количество")Application (models.Model):

worker = models.ForeignKey ("Worker", on_delete=models.CASCADE,verbose_name = u"работник")

sertificatecategory = models.ForeignKey ("Sertificatecategory",

on_delete=models.CASCADE,verbose_name = u"категория сертификата")

verificationcenter = models.ForeignKey ("Verificationcenter", on_delete=models.CASCADE,

verbose_name = u"удостоверяющий центр")

date = models.DateField(u"дата")

class Meta:

verbose_name = u"заявка"

verbose_name_plural = u"заявки"SertificateDelivery (models.Model):

worker = models.ForeignKey ("Worker", on_delete=models.CASCADE,verbose_name = u"работник")

delivery_date = models.DateField(u"дата выдачи сертификата")

early_stop_date = models.DateField(u"дата досрочного прекращения")

destruction_date = models.DateField(u"отметка об уничтожении")

token = models.ForeignKey ("Token", on_delete=models.CASCADE)

contract= models.ForeignKey ("Contract", on_delete=models.CASCADE,verbose_name = u"контракт")

def delivery_d(self):

return self.delivery_date

class Meta:

verbose_name = u"выдача сертификатов"

verbose_name_plural = u"выдача сертификатов"

Похожие работы на - Информационная система для учёта электронных подписей

 

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