Реферат по предмету "Информатика, программирование"


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

Министерствообразования Республики Беларусь
Министерствообразования и науки Российской Федерации
Государственное учреждение высшего профессионального образования
«Белорусско–Российскийуниверситет»
Кафедра «Автоматизированныесистемы управления»
Курсоваяработа
по дисциплине«Технологии программирования»
Разработка специализированного программного модуля для решения указаннойзадачи
Могилев, 2010

Содержание
Введение
1. Выбор технологии, языка и среды программирования
2. Анализ и уточнение требований к программному продукту
2.1 Анализ процесса обработки информации и выбор структурданных для ее хранения
2.2 Выбор методов и разработка основных алгоритмов решениязадачи
3. Разработка структурной схемы программного продукта
4. Проектирование интерфейса пользователя
4.1 Построение графа диалога
4.2 Разработка форм ввода-вывода информации
5. Выбор стратегии тестирования и разработка тестов
Заключение
Список литературы
Приложения

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

1. Выбор технологии, языка и средыпрограммирования
В соответствие с заданиемязыком программирования был выбран С++. Для реализации программы использовалосьобъектно-ориентированное программирование.
Объектно-ориентированноепрограммирование (ООП) — это технология, возникшая как реакция на очереднуюфазу кризиса программного обеспечения, когда методы структурногопрограммирования уже не позволяли справляться с растущей сложностью промышленногопрограммного продукта. Следствия — срыв сроков проектов, перерасход бюджета, урезаннаяфункциональность и множество ошибок.
Первым бросающимся вглаза отличием ООП от структурного программирования является использованиеклассов. Класс — это тип, определяемый программистом, в котором объединяются данные и функции ихобработки.
Прообразом класса в C++ являетсяструктура в С. В то же время в C++ структура обрела новые свойства и теперьявляется частным видом класса, все элементы которого по умолчанию являютсяоткрытыми. Со структурой struct в C++ можно делать все, что можно делать склассом. Тем не менее в C++ структуры обычно используют лишь для удобства работыс небольшими наборами данных без какого-либо собственного поведения.
Конкретные переменныетипа данных «класс» называются экземплярами класса, или объектами.Программы, разрабатываемые на основе концепций ООП, реализуют алгоритмы,описывающие взаимодействие между объектами.
Класс содержит константыи переменные, называемые полями, а также выполняемые над ними операции ифункции. Функции класса называются методами. Предполагается, что доступ к полямкласса возможен только через вызов соответствующих методов. Поля и методыявляются элементами, или членами класса. Эффективным механизмом ослаблениясвязанности между компонентами в случае объектно-ориентированной декомпозицииявляется так называемая инкапсуляция. Инкапсуляция — это ограничение доступа к данным иих объединение с методами, обрабатывающими эти данные. Доступ к отдельнымчастям класса регулируется с помощью специальных ключевых слов: public(открытая часть), private (закрытая часть) и protected (защищенная часть). Методы,расположенные в открытой части, формируют интерфейс класса и могут свободновызываться клиентом через соответствующий объект класса. Доступ к закрытойсекции класса возможен только из его собственных методов, а к защищенной — из его собственных методов, а такжеиз методов классов-потомков. С ООП связаны еще два инструмента, грамотноеиспользование которых повышает качество проектов: наследование классов иполиморфизм. Наследование — механизм получения нового класса из существующего.Производный класс создается путем дополнения или изменения существующегокласса. Благодаря этому реализуется концепция повторного использования кода. Спомощью наследования может быть создана иерархия родственных типов, которыесовместно используют код и интерфейсы. Полиморфизм дает возможность создаватьмножественные определения для операций и функций. Какое именно определениебудет использоваться, зависит от контекста программы. Вы уже знакомы с одной изразновидностей полиморфизма в языке C++ — перегрузкой функций. Программированиес классами предоставляет еще две возможности: перегрузку операций ииспользование так называемых виртуальных методов. Перегрузка операций позволяетприменять для собственных классов те же операции, которые используются длявстроенных типов C++. Виртуальные методы обеспечивают возможность выбрать наэтапе выполнения нужный метод среди одноименных методов базового и производногоклассов.

2. Анализ и уточнениетребований к программному продукту
2.1 Анализ процесса обработкиинформации и выбор структур данных для ее хранения
Для хранения информациибыла выбрана структура данных типа стек.
Стек — это частный случай однонаправленногосписка, добавление элементов в который и выборка из которого выполняются содного конца, называемого вершиной стека. Другие операции со стеком неопределены. При выборке элемент исключается из стека. Говорят, что стекреализует принцип обслуживания LIFO (last in — first out, последним пришел — первым ушел).
2.2 Выбор методов и разработка основных алгоритмов решения задачи
В данной курсовой работе необходимо создать шаблон класса «стек»и написать программу, использующую этот шаблон класса для моделированияпроцесса прибытия и отъезда машины со стоянки. Программа формирует начальныйстек. Далее с помощью меню пользователю предоставляется возможность сделатьвыбор – выгрузить стек на дисплей, добавить машину, удалить машину, выйти изпрограммы. Для того чтобы выгрузить стек была создана функция pop(), а для добавления машины функция push(). Удаление машины из стека (гаражная стоянка)осуществляется путем выборки элементов стека (машин и информации о кол-ве выездов)и занесением их в вспомогательный стек temp, до тех пор, пока не будет найденудаляемый элемент (автомобиль). После чего элементы с вспомогательного стеказаносятся обратно в том же порядке в начальный стек, при этом количествовыездов увеличивается на 1. Таким образом, мы удаляем нужный нам автомобиль иведем подсчет количеству раз, которое машина удалялась со стоянки. Если машина,которую мы хотим удалить, не найдена, программа выдаст соответствующеесообщение.
Так же созданная программа предусматривает обработку ошибок. Прине корректном выборе в меню программа выдаст сообщение «Ошибка меню! Сделайте правильныйвыбор».

3. Разработка структурнойсхемы программного продукта
/>
Рисунок 1 — Структурнаясхема программного модуля
Menu – функция меню, выбор пунктаменю. Выгрузить стек – выгружает стек на дисплей. Добавить машину — добавляетмашину в стек. Удалить машину — удаляет машину из стека. Выход — выход изпрограммы.

4. Проектирование интерфейсапользователя
4.1 Построение графа диалога
Дляработы с программой было реализовано меню, состоящее из 4 пунктов. При выборепункта 1 (в программе — нажатие клавиши 0) данные выводятся на экран. Привыборе пункта 2 и 3 (нажатие 1 и 2 соответственно) данные вводятся склавиатуры. При выборе пункта 4 (нажатие 3) мы выходим из программы.
/>
Рисунок 2 – Граф диалога
Ф – menu
Ф1 – выгрузить стек на дисплей
Ф2 – добавить машину
Ф3 – удалить машину
Ф4 – выход из программы
4.2 Разработка формввода-вывода информации
Входной информацией является номеравтомобиля, а выходной номер автомобиля и количество раз, которое машинаудалялась со стоянки.
Название Обозначение в программе Диапазон возможных значений Номер машины mashin.num Строка Количество раз, которое машина удалялась со стоянки mashin.kol Целое положительное число
Вводится информация спомощью оператора cin ( cin>>mashin.num; )
/>
Рисунок 3 – Форма вводавходных данных
Выводится на экран спомощью оператора cout
( cout
/>
Рисунок 4 – Форма выводаданных

5.Выбор стратегии тестирования и разработка тестов
Для того чтобыподтвердить работоспособность системы необходимо провести тестирование.
/>
Рисунок 6 – Результатпрограммы (Первый тест)

/>
Рисунок 7 – Результатпрограммы (Второй тест)
Результаты двух тестов соответствуютдействительности, что подтверждаетработоспособность системы.

Заключение
В результате проведеннойработы была разработана программа, учитывающая все требования, приведенные квыполнению данной работы.
Создан шаблон класса «стек».Прибытие или отъезд автомашины задается командной строкой, которая содержитпризнак прибытия или отъезда и номер машины. Программа выводит сообщение приприбытии или выезде любой машины. При выезде автомашины со стоянки сообщениесодержит число раз, которое машина удалялась со стоянки для обеспечения выездадругих автомобилей.

Списоклитературы
1 Саттер Герб. Стандарты программирования на C++. 101 правило ирекомендация / Андрей Александреску. – М.: Вильямс, 2005.2 Дейтел Харви. Какпрограммировать на С++ / Пол Дейтел – М.: Бином, 2003.3 Шилдт Герберт.Самоучитель С++. – СПб.: БХВ-Петербург, 2003.

Приложение A
Создать шаблон класса «стек».Написать программу, моделирующую процесс прибытия и отъезда машин сиспользованием этого шаблона класса.
Гаражная стоянка имеетодну стояночную полосу, причем въезд и выезд находятся в одном конце полосы.Если владелец автомашины приходит забрать свой автомобиль, который не являетсяближайшим к выходу, то все автомашины, загораживающие проезд, удаляются, машинаданного владельца выводится со стоянки, а другие машины возвращаются на стоянкув исходном порядке.
Прибытие или отъездавтомашины задается командной строкой, которая содержит признак прибытия илиотъезда и номер машины. Программа должна выводить сообщение при прибытии иливыезде любой машины. При выезде автомашины со стоянки сообщение должносодержать число раз, которое машина удалялась со стоянки для обеспечения выездадругих автомобилей.

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

Приложение В
Первый вариант программы
Программный код файлаmy_kurs(stack).cpp
//my_kurs(stack).cpp: определяет точку входа для консольного приложения.
#include
#include
#include
usingnamespace std;
classstack
{
public:
stack(string="",int=0);//Конструктор
stringnum;//Номер машины
int kol;//Кол-вораз которое машина удалялась со стоянки
stack*p;
};
stack*first(string, int);
voidpush(stack **top, string, int);
stackpop(stack **top);
voidmenu();
/////////////////////////////////////////////////////
intmain()
{ setlocale(LC_ALL,«Russian»);
stackmashin;
inti=0,n=0,k;
//Проверка на кол-во авто (n>1)
while(n
{
cout
cin>>n;
}
cout
cin>>mashin.num;
mashin.kol=0;
stack*top = first(mashin.num, mashin.kol); //Начальное формирование стека
for(i=1;i
{
cout
cin>>mashin.num;
mashin.kol=0;
push(&top,mashin.num,mashin.kol);
}
step_menu:
cout
menu();
cin>>k;
cout
switch(k)
{case0: {while (top)
{stacktemp=pop(&top);
cout
}
gotostep_menu;
}
case1:{
cout
cin>>mashin.num;
mashin.kol=0;
push(&top,mashin.num,mashin.kol); goto step_menu;
}
case2:{
cout
stringnumdel;
cin>>numdel;
boolq=true;
step2:
stacktemp=pop(&top);
if((numdel.compare(temp.num)!=0)&&(top==NULL))
{cout
if(numdel.compare(temp.num)==0)
{
cout
cout
gotogo_while;
}
else
{
/*Формирование 1-ого элемента вспомога-
тельногостека(Выполняется один раз!) */
if(q==false) {goto ex;}
elseq=false;
stack*top2 = first(temp.num, (temp.kol)+1 );
gotostep2;
ex:
/*Заносим элементы из гаража
ввспомогательный стек */
push(&top2,temp.num,temp.kol+1);
gotostep2;
go_while:
/* Выгружаемэлементы из вспо-
могательногостека в гараж */
while(top2)
{
stacktemp=pop(&top2);
push(&top,temp.num,temp.kol);
}
gotostep_menu;
}
}
case3: exit(0);
default:
cout>>"
gotostep_menu;
}
return0;
}
Программный код файлаmy_fun.cpp
#include
#include
#include
usingnamespace std;
classstack
{
public:
stack(string="",int=0);//Конструктор
stringnum;//Номер машины
int kol;//Кол-вораз которое машина удалялась со стоянки
stack*p;
};
stack::stack(stringN, int K)
{num=N; kol=K; }
//----------------------------------------
//Начальное формирование стека
stack*first(string num, int kol)
{
stack*pv = new stack;
pv->num= num;
pv->kol= kol;
pv->p= 0;
returnpv;
}
//----------------------------------------
//Занесение в стек
void push(stack**top, string num, int kol)
{
stack*pv = new stack;
pv->num= num;
pv->kol= kol;
pv->p= *top;
*top= pv;
}
//----------------------------------------
//Выборка из стека
stackpop(stack **top)
{
stack*temp = new stack;
stack*pv = *top;
temp->num= pv->num;
temp->kol= pv->kol;
*top= (*top)->p;
deletepv;
return*temp;
}
//----------------------------------------
//Меню
voidmenu()
{
setlocale(LC_ALL,«Russian»);
cout
cout
cout
cout
cout
}
Второй вариант программы
Программный код файлаkurs_with_include_stack.cpp
//kurs_with_include_stack.cpp: определяет точку входа для консольного приложения.
#include
#include
#include
#include
#include
usingnamespace std;
//Меню
voidmenu()
{setlocale(LC_ALL,«Russian»);
cout
cout
cout
cout
cout
intmain()
{setlocale(LC_ALL,«Russian»);
intn=0,i,k,kol;
stringnum, numdel;
stackmystack;// Номер машины
stacktemp;// Дополнительный стек (выгружаем номера)
stackmystack2;// Кол-во раз, которое машины удалялась со стоянки
stacktemp2;// Дополнительный стек (выгружаем кол-во раз)
while(n
{cout>n;}
for(i=0;i
{
cout
cin>>num;mystack.push(num);
kol=0;mystack2.push(kol);
}
step_menu:
cout
menu();
cin>>k;
cout
switch(k)
{case0: {while (!mystack.empty())
{
num =mystack.top();
mystack.pop();
kol =mystack2.top();
mystack2.pop();
cout
}
gotostep_menu;
}
case1:{
cout
cin>>num;
mystack.push(num);
kol=0;
mystack2.push(kol);
gotostep_menu;
}
case2:{
cout
cin>>numdel;
step2:
num =mystack.top();
kol =mystack2.top();
if ( (numdel.compare(num)!=0)&&(mystack.empty()))
{cout
if(numdel.compare(num)==0)
{mystack.pop();
mystack2.pop();
cout
cout
gotogo_while; }
/* Заносимэлементы из гаража
ввспомогательный стек */
temp.push(num);
temp2.push(kol+1);
mystack.pop();
mystack2.pop();
gotostep2;
go_while:
/* Выгружаемэлементы из вспо-
могательногостека в гараж */
while(!temp.empty())
{num= temp.top();
kol =temp2.top();
mystack.push(num);
mystack2.push(kol);
temp.pop();
temp2.pop();
}
gotostep_menu;
}
case3: exit(0);
default:
cout>>"
gotostep_menu;
}
return0;
}


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.