Операционные системы

Автор работы: Пользователь скрыл имя, 26 Мая 2013 в 18:08, курсовая работа

Описание работы

Создать приложение, используя библиотеку объектов OWL, позволяющее:
выводить тригонометрические функции (синус, косинус, тангенс) в рабочее поле приложения
выбирать требуемый график из меню приложения
задавать необходимый масштаб
запрашивать информации о программе
стирать выбранные функции
использовать горячие клавиши для построения графиков, для выхода из программы и для вывода информационного табло

Содержание работы

1.Техническое задание. 3
2. Краткие теоретические сведения 3
2.1. Структура OWL-программы 3
2.2. Вызов функций в Windows 4
2.3. Программирование на С++ 4
2.4. Общие положения программирования в среде Windows 4
2.5. Win16 и Win32 5
2.6. Графический интерфейс устройства 5
2.7. Цикл сообщений 5
2.8. Особенности Borland C++ 6
2.9. Функция Run() 7
3. Файлы, используемые при создании проекта. 8
4. Стандартные классы OWL. 8
4.1. Взаимодействие классов. 8
5. Стандартные функции классов OWL. 8
6. Пользовательские функции 8
7. Иерархия классов приложения. 9
8. Системные требования. 9
9. Размер файла. 9
10. Руководство пользователя. 10
11. Список использованной литературы: 14
12. Листинг программ. 15

Файлы: 1 файл

kursach_po_OS_gotovyy.docx

— 1.23 Мб (Скачать файл)

2.8. Особенности Borland C++

В этой версии Borland C++ обращают на себя новый класс строк, динамическая организация типов(Run-Time Type Identification(RTTI)), классы шаблонов, новая библиотека STL(Standard Template Library(библиотека стандартных шаблонов)) и средства обработки исключительных ситуаций. Всеобъемлющая реализация языка в сочетании с современной 32-разрядной интегральной средой разработки и встроенным набором инструментов для работы с ресурсами(Resource Workshop) создали впечатляющее целое – Borland C++ 5.0

Для разработки приложений Windows широко используется среда IDE Borland C++ 5.0, в основном предназначенная для разработки 32-разрядных приложений, хотя можно создавать и 16-разрядные приложения.

Borland C++ поддерживает основные принципы объектно-ориентированного программирования: инкапсуляцию, полиморфизм и множественное наследование.

Инкапсуляция – совмещение данных и методов их обработки  в одном объекте.

Полиморфизм – выполнение одного и того же метода по-разному  для различных объектов.

Наследование – методы и данные одного класса могут передаваться другим классам, т.е. объекты могут  наследовать свойства друг друга.

2.9. Функция Run()

Основной задачей  функции Run() можно считать последовательный вызов ряда других функций OWL, принадлежащих как классу TApplication, так и классу TWindow, что в итоге приводит к нормальному функционированию приложения. Последовательность этих вызовов с указанием классов, которым принадлежат вызываемые функции, приведена на рисунке 1 ниже.

Рис. 1 – Ход выполнения функции Run()

Как видно из рисунка 1, функция Run() последовательно вызывает три другие функции того же класса TApplication: InitApplication(), InitInstance() и MessageLoop().

Функция InitApplication(), вызываемая только для первого экземпляра приложения, фактически является функцией-заглушкой: сама по себе она не выполняет никакой полезной работы, однако ее можно заместить прикладной функцией с тем же именем и использовать, например, для запрещения запуска последующих экземпляров данного приложения. Основы такой методики будут рассмотрены ниже.

Функция InitInstance() вызывается как для первого, так и для всех остальных экземпляров приложения и выполняет целый ряд весьма важных действий. Прежде всего она вызывает функцию InitMainWindow(), которая создает объект класса TFrameWindow, определяющий характеристики главного окна, и вызывает функцию SetMainWindow(), которая объявляет новое окно главным. Именно на этом этапе можно изменить, например, расположение, размеры или стиль окна.

После создания объекта класса TFrameWindow, характеризующего новое окно, можно обращаться к функциям-членам этого класса. Функция InitInstance() это и делает, вызывая последовательно функции класса TWindowCreate() и ShowWindow(), выполняющие создание и показ нового окна. Эти действия реализуются путем вызова знакомых нам по части II этой книги функций "классического" интерфейса (API) Windows (CreateWindow() и ShowWindow()).

Образовав и выведя на экран  главное окно приложения, функция  Run() вызовом функции MessageLoop() входит в цикл обработки сообщений, в котором приложение и находится до своего завершения.

3. Файлы, используемые при создании проекта.

Файл проекта  kursovay.ide служит для объединения всех файлов, входящих в приложение, в единый комплекс для создания выполняемого файла kursovay.exe.

        Файл  проекта включает следующие файлы:

        При  создании проекта приложения  использовались следующие файлы:

 kursovay.cpp - файл с исходным текстом программы;

 kursovay.rc  - файл ресурсов;

kursovay.h – файл определения курсора и иконки окна;

default.def – файл определения модуля.                    

4. Стандартные классы OWL.

TApplication - класс приложения, содержит основные функции приложения: запуска, организации цикла обработки сообщений, обработку ошибок, сам производный от класса TModule.

TFrameWindow  -  класс окон с обрамлением, производный от TWindow, используется для конструирования главного окна. Окно TFrameWindow может владеть окном-клиентом, которое будет использоваться для визуальных изменений окна.                                                                                         

4.1. Взаимодействие классов.

Одним из преимуществ так  называемого программирования, т.е. программирование с помощью классов  OWL(Object Windows Library), является возможностью использования такого мощного механизма объектно-ориентированного программирования как наследование, которое позволяет создать сколько угодно объектов какого либо класса.                                   

Замещать те методы класса, которые нас не устраивают. Наследование позволяет классу быть производным  не от одного класса, а сразу от нескольких классов, наследуя все их методы и  данные без излишней схожести классов. 

Наследование в сочетании  с огромным количеством классов, содержащих в OWL позволяет более быстро и качественно разрабатывать приложения, в отличие от процедурного, так называемого API-программирования.

5. Стандартные функции классов OWL.               

SetIcon() - устанавливает пиктограмму приложения;

AssignMenu() - подсоединяет меню к окну приложения;                        

MessageBox() - выводит окно сообщения;                                             

Invalidate() - перерисовка главного окна приложения;                            

SetTextColor() - устанавливаем цвет текста;                                         

TextOut() - выводит текст;   

 CloseWindow() - закрывает окно;             

Paint() – предоставляет возможность обрабатывать сообщения WM_PAINT

InitMainWindow() – компонентная функция, создает объект класса TFrameWindow.

6. Пользовательские  функции

CmAbout()- функция вывода информации на экран

CmSin()-функция синуса

CmCos()-функция косинуса

CmTan()-функция тангенса

Cm200()-функция откликов на команды плавающего меню, масштаб 2

Cm100()-функция откликов на команды плавающего меню, масштаб 1

Cm50()-функция откликов на команды плавающего меню, масштаб 0.5

7. Иерархия классов приложения.

 

Рис.2 - Иерархия классов приложения

8. Системные требования.

* 64 MB RAM

* CPU 80486 и выше

* Вся линейка Windows 9x и NT.

* Библиотеки OWL52f.dll, bwcc.dll, bds52f.dll, cw3230.dll

9. Размер  файла.

22 КБ

 

 

10. Руководство пользователя.

  1. Щелкните дважды на иконку программы proj0000.exe, расположенную на вашем рабочем столе. Рис 3

Рис.3 – Отображение иконки программы на рабочем столе.

 

  1. После запуска программы, появится окно с название программы, пунктами меню (файл, графики), вертикальным и горизонтальным скроллом и кнопками закрытия/свертки/развертки. В поле окна изображены подписанные оси координат.Рис.4

Рис.4 – Окно программы построения тригонометрических функций.

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Щелкните один раз на пункт меню «Графики» и выберите интересующую вас тригонометрическую функцию: синус, косинус, тангенс. Так же для вызова функций вы можете использовать горячие клавиши, расположенные на вашей клавиатуре F1, F2, F3 соответственно. Рис. 5

Рис.5 – Выбор тригонометрических функций.

 

Рис.6 – График функции синус.

 

Рис.7 – График функции косинус.

 

Рис.8 – График функции тангенс.

 

 

  1. Для удаления функции снимите галочку (один щелчок на названии функции в меню «Графики»). Рис.9

Рис.9 – Удаление функции.

 

  1. Для ознакомления с информационной составляющей программы или выходом из программы щелкните один раз на меню «Файл» и выберете нужное вам действие. Так же вы можете воспользоваться горячими клавишами Enter-информация, Esc-выход. Рис. 10

Рис.10 – Меню «Файл».

 

  1. При выборе пункта «О программе» появится информационное табло с названием программы и с данными о разработчике. Рис. 11

Рис.11 – «О программе».

 

  1. Для изменения масштаба щелкните правой кнопкой мыши на поле окна, в появившемся плавающем меню выберете необходимое из значений 2, 1, 0.5. Рис 12

Рис.12 – Изменение масштаба.

11. Список использованной литературы:

  1. Финогенов К.Г. Лабораторный практикум «Основы разработки приложений Windows» Книга 1,2. МИФИ, 2003г.

  1. Финогенов К.Г. Win32. Основы программирования.  2006г.
  2. Подбельский В. В. Язык С++. 2004г.
  3. Черкасова Н. И. Пособие к выполнению курсовой работы. 2003г.
  4. Сайт кафедры информационных технологий курганского государственного университета (http://it.kgsu.ru/C_OWL/)
  5. Форум программистов и компьютерщиков(http://www.cyberforum.ru)
  6. Бесплатные исходники программ и помощь программистам(http://www.codeproject.com)

 

12. Листинг программ.

#include <owl\framewin.h>

#include " kursovay.h"

#include <math.h>

#include <owl\applicat.h>

#include <owl\dialog.h>

#include <owl\scroller.h>

#include <owl\edit.h>

#include <owl\dc.h>

#include <owl\validate.h>

#include <stdlib.h>

#include <owl\opensave.h>

struct

{

  char unitsEdit[3];

  char lineEdit[3];

  char hRangeEdit[4];

  char vRangeEdit[4];

} transBuf;

// Структура для сохранения  данных изображения.

struct rec

{

  int color;

  int x;

  int y;

};

/*Класс приложения, производный  от Tappllication*/

class MyApp:public TApplication

{

public:

void  InitMainWindow();//Замещаем функцию InitMainWindow

};

/*Класс главного окна, производный от TframeWindow*/

class MyWindow:public TFrameWindow{

protected:

         rec  recArray[100];

         void Paint(TDC &dc, BOOL, TRect&);

         void CmSetScroll();

         void SetScroller();

double sine[1024],cosine[1024],tan[1024] ;//Массивы данных для 4 графиков

bool sinIs,cosIs,tanIs;//Индикаторы  наличия данных для 4 графиков

int k;//Масштаб по оси  у

TMenu* menu;//Объявляем указатель  на объект основного меню

TPopupMenu popupMenu;//Создаем объект  плавающего меню

virtual void SetupWindow(); //Замещаем функцию TWindow.: SetupWindow ()

virtual void CleanupWindow() ; //Замещаем фукнцию TWindow::CleanupWindow ()

void Paint(TDC&,bool,TRect&);//Переопределяем функцию Paint

void CmAbout();    //Функции

void CmSin();      //откликов

void CmCos();      //на  команды

void CmTan();     //основного  меню Функции

void Cm200();      //откликов

void Cm100();     //на  команды

void Cm50();      //плавающего  меню

void EvRButtonDown(UINT,TPoint&);

public:

//TEditFile * notEdit;

MyWindow(TWindow*parent,const char far* title);//Конструктор

DECLARE_RESPONSE_TABLE(MyWindow);//Объявляем таблицу откликов

};

DEFINE_RESPONSE_TABLE1(MyWindow,TFrameWindow)//Описываем таблицу откликов

EV_COMMAND(100,CmAbout),     //Макросы

EV_COMMAND(201,CmSin),         //для откликов

EV_COMMAND(202,CmCos),         //на пункты

EV_COMMAND(203,CmTan),       //основного меню

EV_COMMAND(CM_200,Cm200),         //Макросы для откликов

EV_COMMAND(CM_100,Cm100),         //на пункты

EV_COMMAND(CM_50,Cm50), //плавающего меню

EV_WM_RBUTTONDOWN,

END_RESPONSE_TABLE;//Завершаем таблицу  откликов /*Конструктор класса MyWindow*/

MyWindow::MyWindow(TWindow *parent,const char far *title)

:TFrameWindow(parent, title)

{

AssignMenu("MainMenu");//Загрузка меню из файла приложения

SetBkgndColor(RGB(255,255,255));

Attr.Style |= WS_VSCROLL | WS_HSCROLL;

      Attr.X = 0;

      Attr.Y = 0;

      Attr.W = 800;

      Attr.H = 600;

Attr.AccelTable = "MainMenu" ;

Scroller = new TScroller (this, 20, 20, 800, 600);

sinIs=false; cosIs=false; tanIs=false;//Начальные значения

//индикаторов

k=100; // Начальное значение масштаба

popupMenu.AppendMenu(MF_STRING,CM_200,"Масштаб=2.0");//Формируем

popupMenu.AppendMenu(MF_STRING,CM_100,"Масштаб=1.0");//плавающее

popupMenu.AppendMenu(MF_STRING,CM_50,"Масштаб=0.5");//меню из 3 пунктов

}

/*3амещенная функция SetupWindow*/ void MyWindow::SetupWindow()

{

TWindow::SetupWindow();//Вызываем замещенную функцию SetupWindow

menu=new TMenu(HWindow);//Образуем объект класса TMenu

}

/*3амещенная функция CleanupWindow()*/ void MyWindow::CleanupWindow()

{

delete menu;//Удаляем созданный  ранее объект меню

TWindow::CleanupWindow();//Вызываем  исходную функцию

}

/*Функции откликов на  сообщения*/

void MyWindow::CmAbout()

{

MessageBox(" Построение графиков  стандартных тригонометрических"

"\nфункций"

"\nНагель Кристина БИ 3-2, 2012 г. ","О программе", MB_ICONINFORMATION| MB_OK);

}

void MyWindow::CmSin()

{

int state=menu->GetMenuState(201,MF_BYCOMMAND);

if(state==MF_UNCHECKED){//Если этот  пункт меню не выбран

for(int i=0;i<1024;i++)//Образовать

sine[i]=sin((double)i/50);//массив данных

sinIs=true;//Установить индикатор  наличия данных

menu->CheckMenuItem(201,MF_CHECKED);//Пометить  команду меню

Invalidate();//Инициировать перерисовку  окна

} else{//Если этот пункт  меню уже выбран

for(int i=0;i<1024;i++)//Очистить

sine[i]=0;//массив данных

sinIs=false;//Сбросить индикатор  наличия данных

menu->CheckMenuItem(201,MF_UNCHECKED);//Снять маркер

Invalidate();//Перерисовать окно (без этого графика)

}

}

void MyWindow::CmCos(){

int state=menu->GetMenuState(202,MF_BYCOMMAND);

if(state==MF_UNCHECKED){//Если этот  пункт меню не выбран

for(int i=0;i<1024;i++)//Образовать

cosine[i]=cos((double)i/50);//массив данных

cosIs=true;//Установить индикатор  наличия данных

menu->CheckMenuItem(202,MF_CHECKED);//Пометить  команду меню

Invalidate();//Инициировать перерисовку  окна

} else{//Если этот пункт  меню уже выбран

for(int i=0;i<1024;i++)//Очистить

cosine[i]=0;//массив данных

Информация о работе Операционные системы