Файл: Применение объектно-ориентированного подхода при проектировании информационной системы (ЭТАПЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО)).pdf

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

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

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

Добавлен: 22.04.2023

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

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

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

В проектной части КР было спроектировано и разработано программное средство для моделирования работы лифта, а также проведен эксперимент с его использованием. Написано руководство пользователя.

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

Тема КР является актуальной. Моделирование работы лифта позволяет определить множество параметров для наладки оптимальной работы подъемников в различных строениях. К примеру, разработанная программа позволяет рассчитать пассажирооборот за нужный промежуток времени, а при проектировании зданий – определить, имеется ли необходимость в дополнительном лифте, настроить оптимальную скорость лифта и т.п. Программа позволяет исключить дополнительные расходы, связанные с переналадками лифтового оборудования. У данного программного средства есть множество способов для улучшения, например, добавление различных параметров, в частности, добавление возможности регулировать очереди пассажиров, увеличение числа лифтов, масштабирование в облачный ресурс для быстрого доступа к программе через интернет и другие способы.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Харви Д. Как программировать на C++ [Текст] / Харви Д, Пол Д – М.: ООО «Бином-Пресс», 2008. - 1456 с.
  2. Труб И. Объектно-ориентированное моделирование на C++ [Текст] –СПБ: Питер, 2006. - 411 с.
  3. Ларман К. Применение UML 2.0 и шаблонов проектирования. [Текст] — М.: ООО “И.Д. Вильямс”, 2013. — 736 с.
  4. Лешек А. Анализ и проектирование информационны
  5. х систем с помощью UML 2.0 [Текст] — М: ООО “И.Д. Вильямс”, 2008. — 816 с.
  6. Вирт Н. Алгоритмы и структуры данных [Текст] – М.: ДМК Пресс, 2010. – 272 с.
  7. Фаулер M. UML. Основы [Текст] – СПб.: Символ-Плюс, 2004. – 192 с.
  8. Гома Х. UML. Проектирование систем реального времени, параллельных и распределительных приложений. [Текст] – М.: ДМК Пресс, 2011. – 704 с.
  9. Арлоу Д.UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование. [Текст] – СПб.: Символ-Плюс, 2007. – 624 с.
  10. Страуструп Б. Программирование: принципы и практика с использованием С++. [Текст]- М.: ООО "И.Д. Вильяме", 2016. - 1328 с.
  11. Зиборов В. MS Visual C++ 2010 в среде .NET. Библиотека программиста. [Текст] — СПб.: Питер, 2012. — 320 с.
  12. Лафоре Р. Объектно-ориентированное программирование в С++. [Текст] - СПБ.: Питер, 2006. - 924 с.
  13. Прата C. Язык программирования C++. Лекции и упражнения. [Текст] — М.: ООО "И.Д. Вильяме", 2012. - 1248 с.
  14. Назаров С.В. Архитектура и проектирование программных систем [Текст] – М.: НИЦ Инфра-М, 2013. – 351 с.
  15. Брукс Ф. Проектирование процесса проектирования. Записки компьютерного эксперта [Текст] - М.: Вильямс, 2013. – 464 с.
  16. Культин Н. C/C++ в задачах и примерах [Текст] - СПБ.: БХВ-Петербург, 2009. — 351 с.
  17. Кёнинг Э. Эффективное программирование С++ [Текст] - М.: Издательский дом «Вильямс», 2002. – 386 с.
  18. Сидорина Т. Самоучитель Microsoft Visual Studio C++ и MFC [Текст] - СПБ.: БХВ-Петербург, 2009. — 848 с.
  19. Макконнелл С. Совершенный код. [Текст] - М.: Русская редакция, 2005. – 889 с.
  20. Стенли Л. Язык программирования С++ [Текст] - М.: Издательский дом «Вильямс», 2007. – 890 с.
  21. Годштейн С. Оптимизация приложений на платформе .NET [Текст] – М.: ДМК Пресс, 2014. – 524 с.
  22. Тепляков С. Паттерны проектирования на платформе .NET [Текст] - М.: Издательский дом «Вильямс», 2016. – 320 с.
  23. Вайсфельд М. Объектно-ориентированное мышление [Текст] –СПБ: Питер, 2014. - 304 с.
  24. Генри С. Алгоритмические трюки для программистов [Текст] - М.: Издательский дом «Вильямс», 2016. – 512 с.
  25. Клейнберг Дж. Алгоритмы: разработка и применение. [Текст] –СПБ: Питер, 2016. - 800 с.
  26. Колдаев В. Основы алгоритмизации и программирования [Текст] – М: ИД «ФОРУМ», 2006. - 416с.
  27. Шилд Г. Полный справочник по C++ [Текст] - М.: Издательский дом «Вильямс», 2006. – 791 с.
  28. Мейерс С. Эффективный и современный С++ [Текст] - М.: Издательский дом «Вильямс», 2016. – 306 с.
  29. Хортон А. Visual C++ 2010 Полный Курс. [Текст] — М.: Издательский дом «Вильямс», 2011. - 1216 с.
  30. Потопахин В. Современное программирование с нуля [Текст] – М.: ДМК Пресс, 2010. – 242 с.
  31. Вернон В. Реализация методов предметно-ориентированного проектирования. [Текст] — М.: Издательский дом «Вильямс», 2015. - 688 с.
  32. Эспозито Д. Microsoft .NET. Архитектура корпоративных приложений. [Текст] — М.: Издательский дом «Вильямс», 2015. - 432 с.
  33. Джейсон С. Элементарные шаблоны проектирования. [Текст] — М.: Издательский дом «Вильямс», 2013. - 533 с.
  34. Гради Б. Объектно-ориентированный анализ и проектирование с примерами приложений. [Текст] — М.: Издательский дом «Вильямс», 2008. - 721 с.
  35. Бабич А.В. Введение в UML [Текст] — М.: НОУ ИНТУИТ, 2016. - 209 c.
  36. Мацяшек Л.А. Анализ и проектирование информационных систем с помощью UML 2.0 [Текст] — М.: Издательский дом «Вильямс», 2008. - 816 с.
  37. Новиков Ф.А. Моделирование на UML: теория, практика [Текст] — СПб.: Профессиональная литература, 2010. — 640 с.
  38. Леоненков А. Объектно-ориентированный анализ и проектирование с использованием UML и IBM Rational Rose [Текст] — М.: НОУ ИНТУИТ, 2006. - 209 c.
  39. Йордон Э. Объектно-ориентированный анализ и проектирование систем [Текст] — М.: Лори, 2014. - 264 c.
  40. Кормен Т. Алгоритмы. Построение и анализ [Текст] — М.: Издательский дом «Вильямс», 2015. - 1368 с.
  41. Скиена С. Алгоритмы. Руководство по разработке [Текст] - СПБ.: БХВ-Петербург, 2011. — 720 с.

ПРИЛОЖЕНИЕ А

Листинг класса button.

#pragma once

// подключение заголовочных файлов

#include <windows.h>

#include <iostream>

using namespace std; //объявление пространства имен std

// класс button

class button {

public:

bool status; // нажата ли кнопка

button(bool p) { status = p; } // конструктор класса

void showstatus(int fl) {

// функция для отображения состояния кнопки в лифте

if (status == true) {// если кнопка нажата

cout << " Кнопка " << fl << " этажа включена" << endl; // вывод результата в консоли

}

else {// если не нажата

cout << " Кнопка " << fl << " этажа выключена" << endl;// вывод результата в консоли

}

}

void setstatus(bool p, int fl) {

// функция для задания состояния кнопки в лифте

status = p; // установка статуса кнопки

showstatus(fl); // вывод положение кнопки

}

void showstatusfloor(int fl) {

// функция для отображения состояния кнопки на этаже

if (status == true) { // если кнопка нажата

cout << " Кнопка вызова лифта включена на " << fl << " этаже" << endl;// вывод результата в консоли

}

else { // если кнопка не нажата

cout << " Кнопка вызова лифта выключена на " << fl << " этаже" << endl;// вывод результата в консоли

}

}

void setstatusfloor(bool p, int fl) {

// функция для задания состояния кнопки на этаже

status = p; // установка статуса кнопки

showstatusfloor(fl); // вывод положение кнопки

}

};

ПРИЛОЖЕНИЕ Б

Листинг класса man.

#pragma once

// подключение заголовочных файлов

#include <windows.h>

#include <iostream>

using namespace std; //объявление пространства имен std

// класс man

class man {

public:

int pos; // этаж пассажира

bool enter;// позиция пассажиры

// man() { }

man(int p) { pos = p; }// конструктор класса

void print() {

// функция для отображения информации о положении пассажира

cout << " Человек на " << pos << " этаже" << endl; // вывод результата в консоли

}

void pressButton() {

// функция для отображения информации о нажатии кнопки лифта

cout << " Пассажир нажал на кнопку" << endl; // вывод результата в консоли

}

void enterToElevator() {

// функция для отображения информации о входе пассажира в лифт

cout << " Человек входит в лифт " << endl;// вывод результата в консоли

enter = true; // пассажир внутри лифта

}

void exitToElevator() {

// функция для отображения информации о выходе пассажира из лифта

cout << " Человек выходит из лифта " << endl;// вывод результата в консоли

enter = false; // пассажир вышел лифта

}

};

ПРИЛОЖЕНИЕ В

Листинг класса elevator.

#pragma once

// подключение заголовочных файлов


#include <windows.h>

#include <iostream>

#include "button.h"

#include <string>

//#include "Toform.h"

using namespace std; //объявление пространства имен std

// класс elevator

class elevator {

public:

button bt; // переменная класса button

int door, floor; // переменная состояния дверей лифта, переменная положения лифта

elevator(int p, int p1, bool p3) :bt(p3) { door = p; floor = p1; } //конструктор класса

void up() {

// функция для поднятия лифта

floor++;// прибавляем этаж

cout << "\n Лифт поднимается на " << floor << " этаж" << endl; // вывод информации в консоли

}

void down() {

// функция для спуска лифта

floor--;//отнимаем этаж

cout << "\n Лифт спускается на " << floor << " этаж" << endl; // вывод информации в консоли

}

void Opendoor() {

// функция для открытия дверей лифта

door++; // открываем дверь

cout << "\n Лифт открывает двери" << endl;// вывод информации в консоли

}

void Closedoor() {

// функция для закрытия дверей лифта

door--; // закрываем дверь

cout << "\n Лифт закрывает двери" << endl; // вывод информации в консоли

}

void setButtonElevator(int p, bool set) {

/// функция для задания состояния кнопки в лифте

bt.setstatus(set, p);

}

void elevatorcall(int tofloor) {

// функция для вызова лифта к пассажиру

if (tofloor == floor) {

// Если нужный этаж равен этажу с лифтом

Opendoor(); // открываем двери

}

else if (tofloor > floor) {// если нужный этаж выше этажа с лифтом

while (tofloor != floor) { // поднимаем лифт, пока этажи не будут равными

up();

}

Opendoor();// открываем двери

}

else if (tofloor < floor)

{// если нужный этаж ниже этажа с лифтом

while (tofloor != floor) {// опускаем лифт, пока этажи не будут равными

down();

}

Opendoor();// открываем двери

}

}

void enterfloorButton(int p) {

// функция для передвижения лифта к заданному этажу пассажиром

if (p == floor) { // если пассажир и лифт на одном этаже

setButtonElevator(p, true);// включение кнопки

Sleep(3000); // пауза на 3 секунды

setButtonElevator(p, false);//выключение кнопки

}

else if (p < floor) { // если пассажир ниже лифта

setButtonElevator(p, true); // включение кнопки

Closedoor(); // закрытие дверей

while (p != floor) { /// опускаем лифт, пока этажи не будут равными

down();

}

Opendoor(); // открытие двери

setButtonElevator(p, false); //выключение двери

}

else if (p > floor) { // если пассажир выше лифта

setButtonElevator(p, true); // включение кнопки

Closedoor(); // закрытие дверей

while (p != floor) {// поднимаем лифт, пока этажи не будут равными

up();

}

Opendoor();// открытие дверей

setButtonElevator(p, false); // выключение кнопки

}

}

void showstatus(int fl) { bt.showstatus(fl); } // функция для отображения состояния кнопки в лифте

void setstatus(bool p, int fl) { bt.setstatus(p, fl); } // функция для задания состояния кнопки в лифте


};

ПРИЛОЖЕНИЕ Г

Листинг класса MyForm.

#pragma once

// подключение заголовочных файлов

#include <windows.h>

#include <iostream>

#include <string>

#include <time.h>

#include "button.h"

#include "elevator.h"

#include "man.h"

using namespace std; //объявление пространства имен std

// пространство имен lift

namespace Lift {

// объявление пространства имен

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

/// <summary>

/// Сводка для MyForm

/// </summary>

// класс формы Myform

public ref class MyForm : public System::Windows::Forms::Form

{

public: // объявление видимых переменных в классе

int MainNumberFloor, MainNumberPassenger;

int PassengerTime, ButtonTime, LiftTime, DoorTime;

public:

// конструктор класса

MyForm(void)

{

InitializeComponent(); // инициализирует все компоненты, расположенные на форме

this->SetStyle(ControlStyles::SupportsTransparentBackColor, true);

}

protected:

/// <summary>

/// Освободить все используемые ресурсы.

/// </summary>

//деструктор класса

~MyForm()

{//удаление компонентов, если они есть

if (components)

{

delete components;

}

}

// объявление компонентов формы

private: System::Windows::Forms::PictureBox^ pictureBox14;

private: System::Windows::Forms::PictureBox^ pictureBox15;

private: System::Windows::Forms::Label^ label6;

private: System::Windows::Forms::Label^ label7;

private: System::Windows::Forms::GroupBox^ groupBox1;

private: System::Windows::Forms::TextBox^ textBox6;

private: System::Windows::Forms::Label^ label11;

private: System::Windows::Forms::TextBox^ textBox5;

private: System::Windows::Forms::Label^ label10;

private: System::Windows::Forms::TextBox^ textBox4;

private: System::Windows::Forms::Label^ label9;

private: System::Windows::Forms::TextBox^ textBox3;

private: System::Windows::Forms::Label^ label8;

private: System::Windows::Forms::PictureBox^ pictureBox13;

private: System::Windows::Forms::Button^ button1;

private: System::ComponentModel::BackgroundWorker^ backgroundWorker1;

private: System::Windows::Forms::PictureBox^ pictureBox1;

private: System::Windows::Forms::PictureBox^ pictureBox2;

private: System::Windows::Forms::PictureBox^ pictureBox3;

private: System::Windows::Forms::Label^ label1;

private: System::Windows::Forms::Label^ label2;

private: System::Windows::Forms::TextBox^ textBox1;

private: System::Windows::Forms::Label^ label3;

private: System::Windows::Forms::PictureBox^ pictureBox4;

private: System::Windows::Forms::PictureBox^ pictureBox5;

private: System::Windows::Forms::PictureBox^ pictureBox6;

private: System::Windows::Forms::PictureBox^ pictureBox7;

private: System::Windows::Forms::PictureBox^ pictureBox8;

private: System::Windows::Forms::Label^ label4;

private: System::Windows::Forms::PictureBox^ pictureBox9;

private: System::Windows::Forms::PictureBox^ pictureBox10;

private: System::Windows::Forms::PictureBox^ pictureBox11;

private: System::Windows::Forms::PictureBox^ pictureBox12;

private: System::Windows::Forms::Label^ label5;

private: System::Windows::Forms::TextBox^ textBox2;

protected:

private:

/// <summary>

/// Обязательная переменная конструктора.

/// </summary>

System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code

/// <summary>


/// Требуемый метод для поддержки конструктора — не изменяйте

/// содержимое этого метода с помощью редактора кода.

/// </summary>

// метод инциализации компонентов

void InitializeComponent(void)

{

System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(MyForm::typeid));

this->button1 = (gcnew System::Windows::Forms::Button());

this->backgroundWorker1 = (gcnew System::ComponentModel::BackgroundWorker());

this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox());

this->pictureBox2 = (gcnew System::Windows::Forms::PictureBox());

this->pictureBox3 = (gcnew System::Windows::Forms::PictureBox());

this->label1 = (gcnew System::Windows::Forms::Label());

this->label2 = (gcnew System::Windows::Forms::Label());

this->textBox1 = (gcnew System::Windows::Forms::TextBox());

this->label3 = (gcnew System::Windows::Forms::Label());

this->pictureBox4 = (gcnew System::Windows::Forms::PictureBox());

this->pictureBox5 = (gcnew System::Windows::Forms::PictureBox());

this->pictureBox6 = (gcnew System::Windows::Forms::PictureBox());

this->pictureBox7 = (gcnew System::Windows::Forms::PictureBox());

this->pictureBox8 = (gcnew System::Windows::Forms::PictureBox());

this->label4 = (gcnew System::Windows::Forms::Label());

this->pictureBox9 = (gcnew System::Windows::Forms::PictureBox());

this->pictureBox10 = (gcnew System::Windows::Forms::PictureBox());

this->pictureBox11 = (gcnew System::Windows::Forms::PictureBox());

this->pictureBox12 = (gcnew System::Windows::Forms::PictureBox());

this->label5 = (gcnew System::Windows::Forms::Label());

this->textBox2 = (gcnew System::Windows::Forms::TextBox());

this->pictureBox13 = (gcnew System::Windows::Forms::PictureBox());

this->pictureBox14 = (gcnew System::Windows::Forms::PictureBox());

this->pictureBox15 = (gcnew System::Windows::Forms::PictureBox());

this->label6 = (gcnew System::Windows::Forms::Label());

this->label7 = (gcnew System::Windows::Forms::Label());

this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());

this->textBox6 = (gcnew System::Windows::Forms::TextBox());

this->label11 = (gcnew System::Windows::Forms::Label());

this->textBox5 = (gcnew System::Windows::Forms::TextBox());

this->label10 = (gcnew System::Windows::Forms::Label());

this->textBox4 = (gcnew System::Windows::Forms::TextBox());

this->label9 = (gcnew System::Windows::Forms::Label());

this->textBox3 = (gcnew System::Windows::Forms::TextBox());

this->label8 = (gcnew System::Windows::Forms::Label());

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox1))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox2))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox3))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox4))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox5))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox6))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox7))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox8))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox9))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox10))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox11))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox12))->BeginInit();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->pictureBox13))->BeginInit();