Файл: Проектирование ИС по управленческому учету в проектной организации АО «Промэнергопроект».pdf

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

Категория: Курсовая работа

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

Добавлен: 01.04.2023

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

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

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

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

Разработка всех UML-моделей программного обеспечения и проектирование информационного обеспечения ИС выполнены в среде проектирования Power Designer.

В ходе выполнения данного проекта были решены следующие задачи:

  • анализ предметной области и ее подробное описание, выявление основных функций и требований, описание бизнес-процессов.
  • спроектированы и реализованы ПО и БД ИС «Менеджер Проектов».

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

  1. Бардина Н.В. Диаграмма классов и модель «сущность-связь» как логические модели информационной системы. // Модели, системы, сети в экономике, технике, природе и обществе. 2012., № 2 (3)
  2. Буч Грейди, Рамбо Джеймс, Джекобсон Айвар. Язык UML. Руководство пользователя, Серия “Для программистов”: Перевод с англ. - М.: ДМК, 2000. – 432 с.
  3. Дейт К. Введение в системы баз данных / К. Дейт, К. Дж. Дейт. – 9-е изд. – Киев: Диалектика, 2006. – 1072 с.
  4. Интернет-энциклопедия Wikipedia. Линейная организационная структура. [Электронный ресурс] // [Режим доступа: https://ru.wikipedia.org/wiki/Линейная_организационная_структура] (Дата обращения: 27.03.2020)
  5. Коцюба И.Ю., Чунаков А.В., Шишков А.Н. – Основы проектирования информационных систем. Учебное пособие. – СПб: Университет ИТМО, 2015. – 206 с.
  6. Шаховская О.В., Милаев Д.В. Применение диаграммы классов для проектирования объектно-ориентированных информационных систем. // Современная наука: актуальные проблемы и пути их решения. 2015. № 5(18)
  7. Orientsoft. Software development & Business consulting. Функциональное моделирование на базе IDEF0. Учебный курс – Минск: 2002 – 35с.

Приложение 1. Фрагменты исходного кода ИС на языке программирования VB.Net

Глобальный класс системы

Imports System.IO

''' <summary>

''' Глобальный класс общего назначения

''' </summary>

Public Class PMGlobal

''' <summary>

''' Файл с настройками подключения к БД

''' </summary>

Public Shared CONNECTION_SETTINGS_FILE As String = "server.dat"

''' <summary>

''' Текущий пользователь системы

''' </summary>

Public Shared CurrentUser As Employee = Nothing

''' <summary>

''' Ссылка на главную форму системы

''' </summary>

Public Shared MainWindow As frmMain = Nothing

''' <summary>

''' Структура строки подключения к БД

''' </summary>

Public Structure ConnectionString


Public ServerAddress As String

Public ServerLogin As String

Public ServerPassword As String

Public DataBaseName As String

Public ServerPort As String

Public Connected As Boolean

''' <summary>

''' Установка параметров строки подключения к БД

''' </summary>

''' <param name="__server_name_">Имя (адрес) сервера</param>

''' <param name="__login_">Логин СУБД</param>

''' <param name="__password_">Пароль СУБД</param>

''' <param name="__db_">Имя БД</param>

''' <param name="__port_">Порт</param>

Public Sub SetValues(__server_name_ As String, __login_ As String, __password_ As String, __db_ As String, __port_ As String)

ServerAddress = __server_name_

ServerLogin = __login_

ServerPassword = __password_

DataBaseName = __db_

ServerPort = __port_

End Sub

''' <summary>

''' Сброс флага подключения к БД

''' </summary>

Public Sub ResetConnection()

Connected = False

End Sub

''' <summary>

''' Установка флага подключения к БД

''' </summary>

Public Sub Successfully()

Connected = True

End Sub

End Structure

''' <summary>

''' Параметры строки подключения к БД

''' </summary>

Public Shared DB_CS As ConnectionString

''' <summary>

''' Получение настроек подключения из файла

''' </summary>

''' <param name="__filename_">Файл с настройками</param>

''' <returns>Структура с параметрами плдключения к БД</returns>

Public Shared Function LoadConnectionSettings(__filename_ As String) As ConnectionString

' Новая строка подключения

Dim NewCS As ConnectionString = New ConnectionString()

' Поток чтения данных их файла

Dim FS As FileStream = Nothing

Dim SR As StreamReader = Nothing

' Попытка прочитать данные

Try

FS = New FileStream(__filename_, FileMode.Open)

SR = New StreamReader(FS)

' Чтение данных

NewCS.ServerAddress = SR.ReadLine().Split({"="c}, StringSplitOptions.RemoveEmptyEntries)(1)

NewCS.ServerLogin = SR.ReadLine().Split({"="c}, StringSplitOptions.RemoveEmptyEntries)(1)

NewCS.ServerPassword = SR.ReadLine().Split({"="c}, StringSplitOptions.RemoveEmptyEntries)(1)

NewCS.DataBaseName = SR.ReadLine().Split({"="c}, StringSplitOptions.RemoveEmptyEntries)(1)

NewCS.ServerPort = SR.ReadLine().Split({"="c}, StringSplitOptions.RemoveEmptyEntries)(1)

' Закрыть файл

SR.Close()

FS.Close()

' Возврат значения

Return NewCS

Catch

NewCS.DataBaseName = "failed!"

Return NewCS

End Try

End Function

''' <summary>

''' Сохранение настроек подключения в файл

''' </summary>

Public Shared Sub SaveConnectionSettings(__filename_ As String)

' Поток записи данных в файл

Dim FS As FileStream = Nothing

Dim SW As StreamWriter = Nothing

' Попытка записать данные

Try

FS = New FileStream(__filename_, FileMode.Create)

SW = New StreamWriter(FS)

' Запись данных

SW.WriteLine("adress=" & DB_CS.ServerAddress)

SW.WriteLine("login=" & DB_CS.ServerLogin)

SW.WriteLine("password=" & DB_CS.ServerPassword)

SW.WriteLine("db=" & DB_CS.DataBaseName)

SW.WriteLine("port=" & DB_CS.ServerPort)

' Закрыть файл

SW.Close()

FS.Close()

Catch

End Try

End Sub

''' <summary>

''' Попытка установить подключение к БД

''' </summary>

''' <returns>Результат подключения</returns>

Public Shared Function SetConnectionWithDB() As Boolean

' Попытка подключиться


Try

' Настройка подключения

Dim connString As String = "server=" + DB_CS.ServerAddress +

";uid=" + DB_CS.ServerLogin +

";database=" + DB_CS.DataBaseName +

";charset=utf8" +

";port=" + DB_CS.ServerPort +

";password=" + DB_CS.ServerPassword + ";"

My.Settings.Item("PMDBCS") = connString

' Попытка прочитать данные

Dim TestTA As pmdbDataSetTableAdapters.employeeTableAdapter =

New pmdbDataSetTableAdapters.employeeTableAdapter()

Dim TestTable As pmdbDataSet.employeeDataTable = TestTA.GetData()

' Если данные прочитаны, значит попытка успешна

DB_CS.Successfully()

MainWindow.CurrentDBName = DB_CS.DataBaseName

TestTable.Dispose()

TestTA.Dispose()

Return DB_CS.Connected

Catch ex As Exception

MessageBox.Show("Неправильно указаны параметры подключения к БД!" +

Environment.NewLine + ex.Message, Application.ProductName,

MessageBoxButtons.OK, MessageBoxIcon.Error)

Return False

End Try

End Function

''' <summary>

''' Показать форму настройки подключения к БД

''' </summary>

Public Shared Sub ShowConnectionSettings()

' Сброс активной подсистемы

MainWindow.SubsystemView.Controls.Clear()

' Предварительный сброс флага подключения к БД

DB_CS.ResetConnection()

MainWindow.CurrentDBName = "unknown"

' Очистить данные авторизованного пользователя на форме

MainWindow.CurrentUserName = "Не идентифицирован"

MainWindow.CurrentUserRole = "Не идентифицирована"

' Сброс данных пользователя

CurrentUser = Nothing

' Создание формы подключения к БД

Dim ddbcf As dialogDatabaseConnection = New dialogDatabaseConnection()

' Отображение подсистемы на главной форме

MainWindow.SubsystemView.Controls.Add(ddbcf)

' Развернуть панель на всю клиентскую область

ddbcf.Dock = DockStyle.Fill

End Sub

''' <summary>

''' Показать форму авторизации пользователя

''' </summary>

Public Shared Sub ShowLoginForm()

If DB_CS.Connected Then

' Сброс активной подсистемы

MainWindow.SubsystemView.Controls.Clear()

' Очистить данные авторизованного пользователя на форме

MainWindow.CurrentUserName = "Не идентифицирован"

MainWindow.CurrentUserRole = "Не идентифицирована"

' Сброс данных пользователя

CurrentUser = Nothing

' Создание формы авторизации пользователя

Dim daf As dialogLogin = New dialogLogin()

' Отображение подсистемы на главной форме

MainWindow.SubsystemView.Controls.Add(daf)

' Развернуть панель на всю клиентскую область

daf.Dock = DockStyle.Fill

Else

' Сообщение о необходимости подключения к БД

MessageBox.Show("Установите подключение к базе данных прежде, чем выполнять авторизацию!",

Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)

MainWindow.CurrentDBName = "unknown"

' Показать форму настройки подключения к БД

ShowConnectionSettings()

End If

End Sub

End Class

Пример класса сущности (на примере проекта)

''' <summary>

''' Класс проекта

''' </summary>

Public Class Project

Implements IDBProcess, IUserCommands

REM -----------------------------------------------------------------

REM АТРИБУТЫ

REM -----------------------------------------------------------------

Public ID As String


Public Name As String

Public HisCustomer As Customer

Public HisOwner As Employee

Public CreateDate As Date

Public CompleteDate As Date?

Public Deadline As Date

Public Editable As Boolean

Public OldID As String

REM -----------------------------------------------------------------

''' <summary>

''' Адаптер подключения к БД - таблица проектов

''' </summary>

Private ADAPTER As pmdbDataSetTableAdapters.projectTableAdapter = New pmdbDataSetTableAdapters.projectTableAdapter()

''' <summary>

''' Конструктор

''' </summary>

''' <param name="__id_">Необязательный идентификатор</param>

Public Sub New(Optional __id_ As Object = Nothing)

' Инициализация атрибутов

Identify(__id_)

' По умолчанию - можно редактировать

Editable = True

End Sub

''' <summary>

''' Инициализация объекта

''' </summary>

''' <param name="__id_">Необязательный идентификатор</param>

Public Sub Identify(Optional __id_ As Object = Nothing) Implements IDBProcess.Identify

Try

' Инициализация по идентификатору

If __id_ IsNot Nothing Then

' Получение данных из таблицы

Dim TABLE As pmdbDataSet.projectDataTable = ADAPTER.GetDataByID(__id_)

' Чтение полученных данных

If TABLE.Rows.Count > 0 Then

ID = __id_

HisCustomer = New Customer(Convert.ToInt32(TABLE.Rows(0).ItemArray(1)))

HisOwner = New Employee(Convert.ToInt32(TABLE.Rows(0).ItemArray(2)))

Name = Convert.ToString(TABLE.Rows(0).ItemArray(3))

CreateDate = Convert.ToDateTime(TABLE.Rows(0).ItemArray(4))

If Convert.ToString(TABLE.Rows(0).ItemArray(5)) = String.Empty Then

CompleteDate = Nothing

Else

CompleteDate = Convert.ToDateTime(TABLE.Rows(0).ItemArray(5))

End If

Deadline = Convert.ToDateTime(TABLE.Rows(0).ItemArray(6))

' Освободить таблицу

TABLE.Dispose()

Else

MessageBox.Show("Запись не найдена!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)

End If

Else ' Инициализация по умолчанию

HisCustomer = New Customer()

HisOwner = PMGlobal.CurrentUser

CreateDate = Date.Now.Date

Deadline = CreateDate.AddMonths(1)

CompleteDate = Nothing

Name = ""

End If

Catch ex As Exception

MessageBox.Show("Ошибка при выполнении операции: " + ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try

End Sub

''' <summary>

''' Удаление записи из БД

''' </summary>

''' <returns>Результат операции</returns>

Public Function TryToDelete() As Boolean Implements IDBProcess.TryToDelete

Try

' Выполнение команды через адаптер таблицы

ADAPTER.DeleteQuery(ID)

' Возврат успеха

Return True

Catch ex As Exception

MessageBox.Show("Ошибка при выполнении операции: " + ex.Message, Application.ProductName,

MessageBoxButtons.OK, MessageBoxIcon.Error)

' Возврат неудачи

Return False

End Try

End Function

''' <summary>

''' Вставка записи в БД

''' </summary>

''' <returns>Результат операции</returns>

Public Function TryToInsert() As Boolean Implements IDBProcess.TryToInsert

Try

' Добавление новой записи в БД

ADAPTER.InsertQuery(ID, HisCustomer.ID, PMGlobal.CurrentUser.ID, Name, CreateDate, Deadline)

' Возврат успеха

Return True

Catch ex As Exception

MessageBox.Show("Ошибка при выполнении операции: " + ex.Message, Application.ProductName,

MessageBoxButtons.OK, MessageBoxIcon.Error)

' Возврат неудачи

Return False


End Try

End Function

''' <summary>

''' Обновление записи в БД

''' </summary>

''' <returns>Результат операции</returns>

Public Function TryToUpdate() As Boolean Implements IDBProcess.TryToUpdate

Try

' Выполнение команды через адаптер таблицы

ADAPTER.UpdateQuery(ID, HisCustomer.ID, HisOwner.ID, Name, CreateDate, Deadline, OldID)

' Возврат успеха

Return True

Catch ex As Exception

MessageBox.Show("Ошибка при выполнении операции: " + ex.Message, Application.ProductName,

MessageBoxButtons.OK, MessageBoxIcon.Error)

' Возврат неудачи

Return False

End Try

End Function

''' <summary>

''' Завершить серию проекта

''' </summary>

''' <returns>Результат операции</returns>

Public Function Complete() As Boolean

Try

' Выполнение команды через адаптер таблицы

ADAPTER.Complete(Date.Now.Date, ID)

' Возврат успеха

Return True

Catch ex As Exception

MessageBox.Show("Ошибка при выполнении операции: " + ex.Message, Application.ProductName,

MessageBoxButtons.OK, MessageBoxIcon.Error)

' Возврат неудачи

Return False

End Try

End Function

''' <summary>

''' Диалог ввода данных

''' </summary>

Private Dialog As dialogProject

''' <summary>

''' Команда пользователя - создать новый

''' </summary>

''' <param name="add_id">Дополнительный идентификатор</param>

''' <returns>Результат выполнения команды</returns>

Public Function CreateNew(Optional add_id As Object = 0) As Boolean Implements IUserCommands.CreateNew

Try

' Создание диалога ввода данных

Dialog = New dialogProject(HisCustomer.ID, ID, Editable)

' Наполнение полей диалога актуальными данными

Dialog.ItsCustomerID = HisCustomer.ID

Dialog.CreateDate = CreateDate

Dialog.Deadline = Deadline

Dialog.ProjectName = Name

Dialog.Code = ID

' Организация диалога с пользователем

If Dialog.ShowDialog() = DialogResult.OK Then

' Применение введенных значений

HisCustomer = New Customer(Dialog.ItsCustomerID)

ID = Dialog.Code

Name = Dialog.ProjectName

CreateDate = Dialog.CreateDate

Deadline = Dialog.Deadline

' Выполнить вставку в БД

Return TryToInsert()

Else

' Возврат неудачи - отмена действия пользователем

Return False

End If

Catch ex As Exception

MessageBox.Show("Ошибка при выполнении операции: " + ex.Message, Application.ProductName,

MessageBoxButtons.OK, MessageBoxIcon.Error)

' Возврат неудачи

Return False

End Try

End Function

''' <summary>

''' Команда пользователя - удалить

''' </summary>

''' <returns>Результат выполнения команды</returns>

Public Function Delete() As Boolean Implements IUserCommands.Delete

Try

' Запрос на удаление

If MessageBox.Show("Подтверждаете удаление выбранной записи ?", "Удаление",

MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then

' Удалить из БД

Return TryToDelete()

End If

' Возврат неудачи - отмена действия пользователем

Return False

Catch ex As Exception

MessageBox.Show("Ошибка при выполнении операции: " + ex.Message, Application.ProductName,

MessageBoxButtons.OK, MessageBoxIcon.Error)

' Возврат неудачи

Return False

End Try