Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Указания по оформлению материалов курсового проекта ⇐ ПредыдущаяСтр 6 из 6
В данном разделе рассмотрены требования к оформлению пояснительной записки и программного продукта. 6.1 Требования к оформлению пояснительной записки Курсовой проект оформляется в соответствии с требованиями нормативных документов по курсовому проектированию Министерства образования и науки Украины. Основным таким документом является ДСТУ 3008-95 «Документация. Отчеты в сфере науки и техники. Структура и правила оформления». Большинство актуальных требований и указаний по оформлению пояснительной записки приводятся в методических указаниях по оформлению студенческих работ [17], которые крайне рекомендуются к использованию студентами. Следует отметить, что существующие стандарты постоянно совершенствуются, и решения всех неоднозначных вопросов утверждаются руководителем. Пояснительная записка должна иметь обложку и мягкий переплет (скоросшиватель). В переплет вшивается стандартно оформленный конверт (файл) со стандартно оформленным носителем (дискета, компакт-диск) программного продукта. 6.2 Требования к оформлению программного продукта Программный продукт размещается на любом подходящем физическом информационном носителе. На носителе должно располагаться следующее содержимое: ‒ полные исходные коды разработанного программного продукта (желательно оформленные в виде решения или проекта используемой среды разработки); ‒ исполняемый файл программного продукта, либо его инсталлятор; ‒ пояснительная записка в MS Word совместимом формате (*.doc, *docx); ‒ руководство пользователя в любом целесообразном формате (*.doc, *.docx, *.hlp, *.chm, *.pdf); ‒ текстовый файл с данными о разработчике, теме курсового проекта и описанием содержимого носителя (readme.txt). Носитель, как и его конверт, также оформляется внешне (подписывается). Перечень ссылок 1. Шлеер С. Объектно-ориентированный анализ: моделирование мира в состояниях / Шлеер С., Меллор С. – К.: Диалектика, 1993. – 240 с. 2. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++ / Гради Буч. – М.: Невский проспект, 2000. – 2-е изд. – 359 с. 3. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений / Гради Буч, Роберт А. Максимчук, Майкл У. Энгл, Бобби Дж. Янг, Джим Коналлен, Келли А. Хьюстон. – М.: Вильямс, 2008. – 3-е изд. – 720 с. 4. Фаулер М. UML. Основы / Фаулер М., Скотт К. – СПб.: Символ-Плюс, 2002. – 2-е изд. – 192 с. 5. Буч Г. Язык UML. Руководство пользователя / Буч Г., Рамбо Дж., А. Якобсон. – 2007. – 2-е изд. – 496 с. 6. Якобсон А. Унифицированный процесс разработки программного обеспечения / Якобсон А., Буч Г., Рамбо Дж. – СПб.: Питер, 2002. – 496 с. 7. Арлоу Д. UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование / Арлоу Д., Нейштадт И. – 2007. – 2-е изд. – 624 с. 8. Кватрани Т. Rational Rose 2000 и UML. Визуальное моделирование / Кватрани Т. – М.: ДМК Пресс, 2001. – 176 с. 9. Мацяшек Л. Анализ требований и проектирование систем. Разработка информационных систем с использованием UML / Лешек А. Мацяшек. – М.: Вильямс, 2002. – 432 с. 10. Леоненков А.В. Самоучитель UML / А.В. Леоненков. – СПб.: БХВ, 2004. – 2-е изд. – 158 с. 11. Леоненков А.В. Язык UML 2 в анализе и проектировании программных систем и бизнес-процессов [Электронный ресурс]. – Режим доступа : http://www.intuit.ru/department/se/uml2/ 12. Страуструп Б. Язык программирования C++. Специальное издание / Бьерн Страуструп. – М.: Бином, 2008. – 3-е изд. – 1054 с. 13. Холзнер С. Учебный курс Visual C++ 6 / Холзнер С. – СПб.: Питер, 2007. – 570 с. 14. Хортон А. Visual C++ 2005: базовый курс / Айвор Хортон. – М.: Вильямс, 2007, – 1152 с. 15. Horton I. Beginning Visual C++ 2008 / Ivor Horton. – Indianapolis: Wiley, 2008. – 1394 p. 16. Пахомов Б.И. C/C++ и MS Visual C++ 2008 для начинающих / Пахомов Б.И. – СПб.: БХВ-Петербург, 2009. – 624 с. 17. Золотухина О.А. Методические указания по оформлению студенческих работ / О.А. Золотухина, Е.А. Маслова, Н.П. Пулинец. – Донецк : ИПИИ «Наука і освіта», 2010. – 48 c.
Приложение Д Пример оформления листа «Содержание»
Приложение Е Пример оформления листа «Перечень обозначений, символов, единиц, сокращений и терминов»
Приложение Ж Пример оформления Технического задания Приложение А ТЕХНИЧЕСКОЕ ЗАДАНИЕ А.1 Общие сведения Тема курсового проекта: «Имитационное моделирование динамических систем и процессов с использованием объектно-ориентированного подхода. <название предметной области>». Система проектируется студентом 2-го курса (назвапние университета) факультета КНТ, группы <название группы, ФИО>. Основанием для разработки ПП является задание, выданное кафедрой ПОИС. Плановый срок начала работы по созданию системы имитационного моделирования: <дата выдачи>, срок окончания: <дата защиты>. Курсовой проект должен выполняться согласно графику, приведенному в таблице А.1. Таблица А.1 – Этапы, результаты и сроки разработки ПП
Продолжение таблицы А.1
А.2 Назначения и цели создания программы Данный программный продукт предназначен для имитации работы динамического объекта реального мира – <объект предметной области> и получение статистических данных <каких? для чего?>. А.3 Характеристика объекта автоматизации <Описание предметной области в соответствии с заданием на КП> А.4 Требования к программному продукту А.4.1 Требования к системе в целом В целом к системе предъявляются следующие требования: а) имитация работы <чего?>; б) вывод статистики: <какой?>; … А.4.2 Требования к задачам и функциям программного продукта В процессе работы необходимо обеспечить выполнение следующих функций: а) ввод начальных параметров для моделирования; б) вывод характеристик объектов на каждом шаге моделирования на экран; в) вывод результатов моделирования на экран и в файл. А.4.3 Требования к техническому обеспечению К техническому обеспечению предъявляются следующие требования: а) процессор – 32-битный x86-совместимый (уровня Pentium и выше); б) объем оперативной памяти – не менее 32Мб; в) свободное дисковое пространство – около 10 Мб. Не менее 5 Мб свободного дискового пространства для временных файлов; г) графический адаптер – VGA-совместимый; д) монитор –VGA-совместимый; е) клавиатура. А.4.4 Требования к программному обеспечению Для стабильной работы к программному обеспечению предъявляется следующее требования: а) обеспечить удобный и понятный пользовательский интерфейс; б) реализовать программу в виде отдельных классов; в) организовать защиту от некорректного ввода начальных параметров; г) обеспечить надежное хранение информации. Программным обеспечением для проектирования программы является CASE-средство [CS Odessa Concept Draw | IBM Rational Rose | Microsoft Visio | <другая>], а для разработки – Microsoft Visual Studio <поставить свою версию 6, 2003, 2005, 2008, Express Edition>. Для запуска программы необходимо наличие операционной системы Windows <поставить свою версию 9x, 2000, NT, XP, Vista, 7>[, и соответствующих библиотек Microsoft Visual C++ Redistributable]. А.4.5 Требования к организационному обеспечению В программную документацию должны входить: а) пояснительная записка; б) приложения: ‒ техническое задание; ‒ руководство пользователя; ‒ экранные формы; ‒ листинг программы. А.4.6 Требования к комплекту поставки ПП Программный продукт поставляется с пояснительной запиской к курсовому проекту в файле ПЗ.doc, руководством пользователя в файле Help.doc, исходными кодами в виде проекта среды разработки в папке SRC, исполнительным файлом программы start.exe и файлом с данными о разработчике readme.txt. Приложение З Пример оформления листинга программы Приложение Г Листинги программных модулей В данном приложении приводятся листинги всех модулей в соответствии с диаграммой модулей (рис. 5.23). Г.1 Листинг модуля ElectricalAppliance.h Модуль содержит протокол класса ElectricalAppliance.
#pragma once // один проход при компиляции
class ElectricalAppliance abstract // класс электроприбор - абстрактный класс { protected: // защищенные члены класса bool state; // состояние
public: // открытые члены класса ElectricalAppliance(); // конструктор по умолчанию ~ElectricalAppliance(); // деструктор bool GetState(); // геттер для состояния void On(); // включить void Off(); // выключить virtual void Imitate() = 0; // имитировать работу в течении еденицы времени // чисто виртуальная функция }; Г.2 Листинг модуля ElectricalAppliance.cpp Модуль содержит реализацию (тело) класса ElectricalAppliance.
#include "ElectricalAppliance.h"
ElectricalAppliance::ElectricalAppliance() { state = false; // по умолчанию прибор выключен }
ElectricalAppliance::~ElectricalAppliance() {}
bool ElectricalAppliance::GetState() { return this->state; }
void ElectricalAppliance::On() { this->state = true; }
void ElectricalAppliance::Off() { this->state = false; } Г.3 Листинг модуля Button.h Модуль содержит протокол класса Button.
#pragma once
#include "ElectricalAppliance.h" // используется класс электроприбор
class Button : // класс кнопка public ElectricalAppliance // наследует электроприбор { public: Button(); ~Button(); void Push(); // нажать void Imitate(); // перегруженный метод имитации работы }; Г.4 Листинг модуля Button.cpp Модуль содержит реализацию (тело) класса Button.
#include "Button.h"
Button::Button() {}
Button::~Button() {}
void Button::Push() { this->On(); // кнопка - электроприбор и при нажатии она включается }
void Button::Imitate() { if (this->GetState()) // кнопка без фиксации this->Off(); // работает мгновенно в момент нажатия } Г.5 Листинг модуля Lamp.h Модуль содержит протокол класса Lamp.
#pragma once
#include "ElectricalAppliance.h"
class Lamp : // класс лампа public ElectricalAppliance // наследует эклетроприбор { public: Lamp(); ~Lamp(); void Imitate(); }; Г.6 Листинг модуля Lamp.cpp Модуль содержит реализацию (тело) класса Lamp.
#include "Lamp.h"
Lamp::Lamp() {}
Lamp::~Lamp() {}
void Lamp::Imitate() {} Г.7 Листинг модуля PowerElement.h Модуль содержит протокол класса PowerElement.
#pragma once
#include "ElectricalAppliance.h"
class PowerElement : // класс силовой элемент public ElectricalAppliance // наследует класс электроприбор { protected: int workTime; // время работы public: PowerElement(); ~PowerElement(); void Imitate(); int GetWorkTime(); // геттер времени работы }; Г.8 Листинг модуля PowerElement.cpp Модуль содержит реализацию (тело) класса PowerElement.
#include "PowerElement.h"
PowerElement::PowerElement() { workTime = 0; // время работы по умолчанию }
PowerElement::~PowerElement() {}
void PowerElement::Imitate() { if (state) // если прибор работает workTime++; // подсчитываем его время }
int PowerElement::GetWorkTime() { return workTime; } Г.9 Листинг модуля Speaker.h Модуль содержит протокол класса Speaker.
#pragma once
#include "ElectricalAppliance.h"
class Speaker : // класс спикер public ElectricalAppliance // наследует электроприбор { protected: int beepTime; // продолжительность звучания public: Speaker(); ~Speaker(); void Beep(); // издавать звуковой сигнал void Imitate(); }; Г.10 Листинг модуля Speaker.cpp Модуль содержит реализацию (тело) класса Speaker.
#include "Speaker.h"
Speaker::Speaker(void) { beepTime = 0; // время звучания по умолчанию }
Speaker::~Speaker(void) {}
void Speaker::Beep() { this->beepTime = 3; // сигнал будет звучать 3 ед. времени this->On(); }
void Speaker::Imitate() { if (GetState()) // если прибор работает { if (beepTime == 0) // время звучания истекло Off(); // выключаем прибор beepTime--; // уменьшаем время звучания } } Г.11 Листинг модуля Timer.h Модуль содержит протокол класса Timer.
#pragma once
#include "ElectricalAppliance.h"
class Timer : // класс таймер public ElectricalAppliance // наследует электроприбор { public: int time; // время отсчета Timer(); ~Timer(); void Imitate(); }; Г.12 Листинг модуля Timer.cpp Модуль содержит реализацию (тело) класса Timer.
#include "Timer.h"
Timer::Timer(void) { time = 0; // время отсчета по умолчанию }
Timer::~Timer(void) {}
void Timer::Imitate() { if (GetState()) // если прибор работает { if (time == 0) // если время истекло Off(); // выключаем прибор time--; // ведем обратный отсчет } } Г.13 Листинг модуля Door.h Модуль содержит перечисление состояний и протокол класса Door.
#pragma once
enum DoorStates // состояние дверцы { Opened, // открыта Closed // закрыта };
class Door // класс дверь { protected: DoorStates state; // текущее состояние двери
public: Door(); ~Door(); DoorStates GetState(); // геттер для состояния void Open(); // открыть дверь void Close(); // закрыть дверь }; Г.14 Листинг модуля Door.cpp Модуль содержит реализацию (тело) класса Door.
#include "Door.h"
Door::Door() { state = Closed; // по умолчанию дверь закрыта }
Door::~Door() {}
DoorStates Door::GetState() { return state; }
void Door::Open() { state = Opened; }
void Door::Close() { state = Closed; } Г.15 Листинг модуля HouseholdAppliance.h Модуль содержит протокол класса HouseholdAppliance.
#pragma once
class HouseholdAppliance // класс кухонный прибор { public: HouseholdAppliance(); ~HouseholdAppliance(); virtual void Imitate() = 0; // имитировать работу в течении еденицы времени // чисто виртуальная функция }; Г.16 Листинг модуля HouseholdAppliance.cpp Модуль содержит реализацию (тело) класса HouseholdAppliance.
#include "HouseholdAppliance.h"
HouseholdAppliance::HouseholdAppliance(void) {}
HouseholdAppliance::~HouseholdAppliance(void) {} Г.17 Листинг модуля MicrowaveOven.h Модуль содержит структуру статистики работы и протокол класса MicrowaveOven.
#pragma once
#include <iostream> // работа с потоками ввода/вывода #include "ElectricalAppliance.h" #include "HouseholdAppliance.h" #include "Button.h" #include "Door.h" #include "Timer.h" #include "Lamp.h" #include "PowerElement.h" #include "Speaker.h"
struct Statistics // статистика работы печи { int powerElementWorkTime, // время работы силового элемента readyCount, // количество готовых блюд interruptCount; // количество прерываний приготовления };
class MicrowaveOven : // класс микроволновая печь public ElectricalAppliance, // наследует электроприбор public HouseholdAppliance // и кухонный прибор { protected: // защищенные члены - невозмодно воздействие извне Timer timer; // таймер Lamp lamp; // лампа PowerElement powerElement; // силовой элемент int interruptCount; int readyCount; void StartCooking(); // начать процесс приготовления void StopCooking(); // процесс приготовления завершен
public: // открытые члены класса Button button; // кнопка Door door; // дверь Speaker speaker; // спикер MicrowaveOven(); ~MicrowaveOven(); void Imitate(); // имитировать работу в течении еденицы времени Statistics GetStatistics(); // получить статистику работы печи // перегруженный оператор вывода экземпляра класса в поток // используется для вывода состояния печи на каждом шаге friend std::ostream& operator << ( // реализовывается как друг возврашает поток вывода std::ostream& s, // поток вывода MicrowaveOven& mo); // экземпляр класса }; Г.18 Листинг модуля MicrowaveOven.cpp Модуль содержит реализацию (тело) класса MicrowaveOven.
#include "MicrowaveOven.h"
MicrowaveOven::MicrowaveOven() { interruptCount = 0; // значения по умолчанию readyCount = 0; }
MicrowaveOven::~MicrowaveOven() {}
void MicrowaveOven::StartCooking() { timer.time = 60; // устанавливаем время приготовления timer.On(); // включается таймер powerElement.On(); // включается силовой элемент lamp.On(); // включается лампа }
void MicrowaveOven::StopCooking() { powerElement.Off(); // выключается силовой элемент lamp.Off(); // выключается лампа speaker.Beep(); // издается звуковой сигнал timer.time = 0; // печь готова к приготовлению следующего блюда }
void MicrowaveOven::Imitate() { if (GetState()) // если печь включена в сеть электропитания { if (door.GetState() == Closed) // если дверь закрыта { if (timer.time == -1) // если время истекло { StopCooking(); // останавливается процесс приготовления readyCount++; // увеличивается число приготовленных блюд } else if (timer.time == 0) // если процесс приготовления пищи еще не начался { lamp.Off(); // лампа выключается if (button.GetState()) // если нажали кнопку StartCooking(); // начать процесс приготовления } else // идет процесс приготовления пищи { if (button.GetState()) // нажали кнопку timer.time += 60; // увеличивается время приготовления на 60 секунд } } else // дверь открыта { if (timer.GetState()) // если таймер ведет отсчет { powerElement.Off(); // выключается силовой элемент timer.time = 0; // сбрасывается таймер timer.Off(); // выключается таймер interruptCount++; // число прерываний приготовления } lamp.On(); // включается лампа }
button.Imitate(); // имитируется работа всех компонентов печи speaker.Imitate(); powerElement.Imitate(); lamp.Imitate(); timer.Imitate(); } }
Statistics MicrowaveOven::GetStatistics() { Statistics stat; // формируем выходную статистику stat.powerElementWorkTime = powerElement.GetWorkTime(); stat.readyCount = readyCount; stat.interruptCount = interruptCount; return stat; }
std::ostream& operator << (std::ostream& s, MicrowaveOven& mo) { if (mo.button.GetState()) s << "button is pushing" << std::endl; if (mo.door.GetState() == Closed) s << "door is closed" << std::endl; else s << "door is opened" << std::endl; if (mo.lamp.GetState()) s << "lamp is on" << std::endl; else s << "lamp is off" << std::endl; if (mo.powerElement.GetState()) s << "power element is on" << std::endl; else s << "power element is off" << std::endl; if (mo.timer.GetState()) s << " and it will work " << mo.timer.time << " seconds" << std::endl; if (mo.speaker.GetState()) s << "food is ready" << std::endl; return s; } Г.19 Листинг модуля Random.h Модуль содержит протокол класса Random.
#pragma once
class Random // класс ГСЧ { public: Random(); ~Random(); static void Initialize(); // инициализация ГСЧ static float Uniform( // равномерный закон float Min, // левая граница отрезка int Max); // правая граница отрезка static float Normal( // нормальный закон float M, // матожидание float D); // дисперсия }; Г.20 Листинг модуля Random.cpp Модуль содержит реализацию (тело) класса Random.
#include "Random.h" #include <stdlib.h> // стандартная библиотека #include <time.h> // работа с временем #include <math.h> // мат. функции
Random::Random() {}
Random::~Random() {}
void Random::Initialize() { srand((unsigned)time(NULL)); // в качестве инициализирующего значения берется текущее значение времени }
float Random::Uniform(float Min, int Max) { // пропорциональное преобразование отрезка return Min + (float)rand() / RAND_MAX * (Max - Min); }
float Random::Normal(float M, float D) { // приближенное моделирование нормального закона по центральной предельной теореме return M + sqrt(D) * (Uniform(-1, 1) + Uniform(-1, 1) + Uniform(-1, 1) + Uniform(-1, 1) + Uniform(-1, 1) + Uniform(-1, 1) + Uniform(-1, 1) + Uniform(-1, 1) + Uniform(-1, 1) + Uniform(-1, 1)) / 10.0; } Г.21 Листинг модуля Man.h Модуль содержит протокол класса Man.
#pragma once
#include "MicrowaveOven.h"
class Man // класс человек { protected: // защищенные члены класса int timeToAction; // время до взаимодействия с печью public: // открытые члены класса Man(); // конструктор ~Man(); // детсруктор void Imitate( // имитировать деятельность в течении еденицы времени MicrowaveOven&); // используется печь }; Г.22 Листинг модуля Man.cpp Модуль содержит реализацию (тело) класса Man.
#include "Man.h" #include "Random.h"
Man::Man(void) { Random::Initialize(); // инициализация ГСЧ timeToAction = (int)Random::Normal( // время до воздействия на печь распределено нормально 60, // с матожиданием 30); // и дисперсией }
Man::~Man(void) {}
void Man::Imitate(MicrowaveOven& mo) { if (timeToAction == 0) // если настало время для взаимодействия { if (Random::Uniform(0, 1) >= 0.5) // кидаем монетку - если орел mo.button.Push(); // нажимаем кнопку else // иначе трогаем дверь { if (mo.door.GetState() == Closed) // если закрыта mo.door.Open(); // открываем else // иначе mo.door.Close(); // закрываем } timeToAction = (int)Random::Normal(60, 30); // время до нового взаимо } else timeToAction--; // ведем отсчет времени } Г.23 Листинг модуля Imitation.cpp Модуль содержит реализацию функции Main.
#include <iostream> // работа с потокам ввода/вывода #include "MicrowaveOven.h" #include "Man.h"
using namespace std; // подключаем стандартное пространство имен
int main(int argc, char* argv[]) { cout << "Start modeling" << endl; MicrowaveOven mo; // микроволновая печь cout << "Microwave Oven \"mo\" created" << endl; Man man; // человек cout << "Man man created" << endl; mo.On(); // включаем печь cout << "\"mo\" turned on" << endl; cout << "Start modeling" << endl; for (int i = 0; i < 600; i++) // моделирование работы системы в течении 10 минут { cout << "second #" << i << endl; man.Imitate(mo); // моделирование работы человека cout << mo; // вывод состояния печи mo.Imitate(); // моделирование работы печи cout << endl; } mo.Off(); // выключаем печь Statistics stat = mo.GetStatistics(); // получаем и выводим статистику cout << "Power element has worked " << stat.powerElementWorkTime << " seconds" << endl; cout << stat.readyCount << " cooking are ready" << endl; cout << stat.interruptCount << " cooking was interrupted" << endl; cout << "\"mo\" turned off" << endl; cout << "Modeling completed" << endl; cin.get(); // задержка return 0; } Приложение И Пример оформления экранных форм Приложение В Экранные формы На рисунке В.1 показано начало имитационного моделирования работы системы, а на рисунке В.2 – вывод состояния объекта на каждом шаге моделирования, окончание моделирования и вывод собранной статистики. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-05-31; просмотров: 250. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |