Файл: Проектирование ИС по управленческому учету в проектной организации АО «Промэнергопроект».pdf
Добавлен: 01.04.2023
Просмотров: 161
Скачиваний: 3
Проектирование и реализация информационной системы были осуществлены с применением современных методов разработки и дизайна.
Разработка всех UML-моделей программного обеспечения и проектирование информационного обеспечения ИС выполнены в среде проектирования Power Designer.
В ходе выполнения данного проекта были решены следующие задачи:
- анализ предметной области и ее подробное описание, выявление основных функций и требований, описание бизнес-процессов.
- спроектированы и реализованы ПО и БД ИС «Менеджер Проектов».
Список использованных источников
- Бардина Н.В. Диаграмма классов и модель «сущность-связь» как логические модели информационной системы. // Модели, системы, сети в экономике, технике, природе и обществе. 2012., № 2 (3)
- Буч Грейди, Рамбо Джеймс, Джекобсон Айвар. Язык UML. Руководство пользователя, Серия “Для программистов”: Перевод с англ. - М.: ДМК, 2000. – 432 с.
- Дейт К. Введение в системы баз данных / К. Дейт, К. Дж. Дейт. – 9-е изд. – Киев: Диалектика, 2006. – 1072 с.
- Интернет-энциклопедия Wikipedia. Линейная организационная структура. [Электронный ресурс] // [Режим доступа: https://ru.wikipedia.org/wiki/Линейная_организационная_структура] (Дата обращения: 27.03.2020)
- Коцюба И.Ю., Чунаков А.В., Шишков А.Н. – Основы проектирования информационных систем. Учебное пособие. – СПб: Университет ИТМО, 2015. – 206 с.
- Шаховская О.В., Милаев Д.В. Применение диаграммы классов для проектирования объектно-ориентированных информационных систем. // Современная наука: актуальные проблемы и пути их решения. 2015. № 5(18)
- 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