Разработка программы работы с классом, конструктором и деструктором класса на языке Visual С ++ 6.0
Библиотека как набор взаимосвязанных классов C++ используемые в приложениях. Структура каркаса приложений на базе библиотеки MFC, позволяющей программировать максимально близко к Windows API. Средство для ускорения написания кода MFC Application Wizard.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 09.04.2013 |
Размер файла | 18,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Курсовая работа
по дисциплине "Программирование"
на тему" Разработка программы работы с классом, конструктором и деструктором класса на языке Visual С ++ 6.0"
Николаев 2011
Содержание
1. Краткая характеристика VC++ с использованием MFC
2. Потоковые классы
3. Постановка задачи
4. Код программы с комментариями
Используемая литература
1. Краткая характеристика VC++ с использованием MFC
Одна из причин популярности языка C++ заключается в том, что его можно "расширять" библиотеками классов. Часть таких библиотек поставляется с компиляторами C++, часть продается независимыми фирмами, а какие-то библиотеки создаются программистами, так сказать, для внутреннего потребления. Библиотека классов - это набор взаимосвязанных классов C++, которые можно использовать в приложении. Математическая библиотека классов может выполнять наиболее распространенные математические операции, а библиотека коммуникационных классов - поддерживать обмен данными по последовательному каналу. Язык C++ сегодня является стандартом для разработки серьезных приложений и пользуется мощной поддержкой самых разных компаний.
Чтобы создавать максимально производительные приложения, нужно программировать максимально близко к Windows API. C++ и MFC предоставляют такую возможность, избавляя от написания методов WndProc вручную. "Каркасные" приложения имеют стандартную структуру. Приступая к крупному проекту, нужно выработать структуру кода. Но эта структура у каждого программиста своя, и новому участнику команды трудно приспособиться к ней. Каркас приложений на базе MFC предлагает свою общую структуру, отработанную на многих проектах и опробованную в разных программных средах. Каркас приложений - это надмножество библиотеки классов. Обычная библиотека представляет собой изолированный набор классов, предназначенных для использования в любой программе, а каркас приложений определяет структуру самой программы.
Достоинства "каркасных" приложений - компактность и высокая скорость работы, мы имеем дело с машинным кодом, который сгенерирован оптимизирующим компилятором.
Редакторы ресурсов - MFC Application Wizard и мастера средства -Class View значительно ускоряют написание кода, характерного для конкретного приложения. Например, редактор ресурсов создает заголовочный файл с уже определенными значениями для "define-констант. MFC Application Wizard генерирует "скелет* всего приложения, после чего в окне свойств можно добавлять обработчики сообщений и сопоставлять им сообщения. приложение программирование mfc windows
MFC Application Wizard - генератор кода, создающий рабочую заготовку Windows-приложения с теми компонентами, именами классов и исходными файлами, которые мы задали в его диалоговых окнах. MFC Application Wizard создает минимум - главная функциональность сосредоточена в базовых классах каркаса приложений. Классы библиотеки MFC дают возможность упростить написание программ и предоставляют для этого множество компонентов высокого уровня. Более того, мастера расширяемы, т. е. можно создавать собственные генераторы кода. А если одна команда занята разработкой множества проектов, то можно построить свой мастер для автоматизации работы.
У библиотеки MFC огромное количество разнообразных возможностей. Классы библиотеки MFC версии 6.0 представлены в версии Visual C++ 6.0, поддерживали следующие возможности:
· усовершенствованная поддержка справочной системы на основе HTML в MFC-приложениях;
· поддержка безоконных элементов управления;
· диалоговое окно печати в Windows 2000;
· более жесткий контроль типов в сообщениях;
· поддержка Dynamic HTML, позволяющая MFC-программисту разрабатывать приложения, способные динамически изменять и создавать HTML-страницы;
· технология Active Document Containment, позволяющая приложениям, основанным на MFC, включать активные документы (Active Documents);
· поддержка шаблонов поставщиков и потребителей OLE DB и привязки данных ADO, что очень удобно для разработчика программ доступа к БД, использующего MFC или ATL.
Широкий спектр возможностей MFC вместе с мощью каркаса приложений служит гарантией сохранения высокого спроса на программистов, умеющих работать с MFC.Ведь "стоимость" Windows-программистов на рынке труда выше, чем других, и вряд ли эта ситуация изменится в ближайшее время.
2. Потоковые классы
Программа на C++ представляет ввод и вывод как поток байтов. При вводе она читает байты из потока ввода, при выводе вставляет байты в поток вывода. Понятие потока позволяет абстрагироваться от того, с каким устройством ввода/вывода идет работа. Например, байты потока ввода могут поступать либо с клавиатуры, либо из файла на диске, либо из другой программы. Аналогично, байты потока вывода могут выводиться на экран, в файл на диске, на вход другой программы.
Обычно ввод/вывод осуществляется через буфер - область оперативной памяти, накапливающую какое-то количество байтов, прежде чем они пересылаются по назначению. При обмене, например, с диском это значительно повышает скорость передачи информации. При вводе с клавиатуры буферизация обеспечивает другое удобство для пользователя - возможность исправления ошибок набора символов, пока они не отправлены из буфера в программу.
Программа на C++ обычно очищает буфер ввода при нажатии клавиши Enter. При выводе на экран очистка буфера вывода происходит либо при появлении в выходном потоке символа новой строки '\п', либо при выполнении программой очередной операции ввода с клавиатуры.
Язык C++ предоставляет возможности ввода/вывода как на низком уровне (неформатировагтый ввод/вывод), так и на высоком уровне (форматированный ввод/вывод). В первом случае передача информации осуществляется блоками байтов данных без какого-либо их преобразования. Во втором - байты группируются для представления таких элементов данных, как целые числа, числа с плавающей запятой, строки символов и т. д.
Для поддержки потоков библиотека C++ содержит иерархию классов, построенную на основе двух базовых классов - ios и streambuf. Класс ios содержит базовые средства управления потоками, являясь родительским для других классов ввода/вывода. Класс streambuf обеспечивает общие средства управления буферами потоков и их взаимодействие с физическими устройствами, являясь родительским для других буферных классов. Связь между этими двумя классами следующая: в классе ios есть поле bp, являющееся указателем на streambuf.
3. Постановка задачи
1. Определить класс с именем TRAIN, содержащий следующие поля:
· название пункта назначения;
· номер поезда;
· время отправления.
2. Написать программу, выполняющую следующие действия:
· ввод с клавиатуры данных в массив, состоящий из восьми объектов типа TRAIN; записи должны быть упорядочены по номерам поездов;
· вывод на экран информации о поезде, номер которого введен с клавиатуры;
· если таких поездов нет, выдать на дисплей соответствующее сообщение.
4. Код программы с комментариями
План создания программы:
1. Создаем консольное приложение.
Win32 Console Application ->Finish.
2. Открываем папку Source Files->добавляем файл lab.cpp в котором набираем код программы.
3. Создаем файл train.h в папке Header Files, в котором обьявляем метод класса TRAIN.
/**************************************train.h*******************************/
#ifndef TRAIN_H
#define TRAIN_H
class TRAIN // создание класса TRAIN
{// обьявление данных класса
int TrainDataCount;
int poezdNums[7]; // обьявление переменной - номер поезда
char Citis[7][30]; // обьявление переменной - города прибытия
char VremyaOtpravleniya[7][30]; // обьявление переменной - время отправления
public:
// обьявление методов класса
TRAIN(int Count); // обьявление конструктора
~TRAIN(void); // обьявление диструктора
void Addpoezd(int iNum, char iCity[30],
char iTime[30]);
int Getpoezd(int Index);
void GetCity(int Index);
void GetTime(int Index);
void Sort(int CountP);
};
#endif
/************************************ lab.cpp************************************/
#include <iostream.h>
#include <windows.h>
#include <string.h>
#include <time.h>
#include "train.h"
template <class Stype> void quick(Stype*item,int count,char Citi[7][30],char Time[7][30]);
template <class Stype> void qS(Stype*item,char Citi[7][30],char Time[7][30],int left,int right);
// функцыи для сортировки класса
char result[30];
char iciti[30]; // обьявление переменных строкового типа
TRAIN::TRAIN(int Count)
{
TrainDataCount = 0; // описание конструктора
}
TRAIN::~TRAIN(void) // описание диструктора
{
}
// описание метода добавления поездов
void TRAIN::Addpoezd(int iNum, char iCity[30], char iTime[30])
{
poezdNums[TrainDataCount] = iNum;
strcpy(Citis[TrainDataCount], iCity);
strcpy(VremyaOtpravleniya[TrainDataCount], iTime);
TrainDataCount++;
}
int TRAIN::Getpoezd(int Index)
{
if(Index <= TrainDataCount)
{
return poezdNums[Index];
}
else
{
return -1;
}
}
// описание метода сортировки поездов
void TRAIN::Sort(int CountP)
{
quick(poezdNums, CountP, Citis, VremyaOtpravleniya);
}
void TRAIN::GetCity(int Index)
{
if(Index <= TrainDataCount)
{
strcpy(iciti, Citis[Index]);
}
}
// описание метода время прибытия поездов
void TRAIN::GetTime(int Index)
{
if(Index <= TrainDataCount)
{
strcpy(result, VremyaOtpravleniya[Index]);
}
}
void main() // создаем обьекты для массива
{
char End;
do
{
char S[150];
TRAIN train(7);
for (int i=0;i<3;i++)
{
int n;
char c[50];
char t[50];
// пользовательский ввод данных
CharToOem("Введите номер поезда для записи: ", S);
cout << S;
cin >> n;
CharToOem("Введите пункт назначения: ", S);
cout << S;
cin >> c;
CharToOem("Введите время отправления: ", S);
cout << S;
cin >> t;
train.Addpoezd(n, c, t);
cout << '\n';
}
// вывод обьектов не сортированного класса
CharToOem("Несортированный класс:", S);
cout << S << '\n';
for (i=0;i<3;i++)
{
CharToOem("Номер поезда: ", S);
cout << S;
cout << train.Getpoezd(i) << '\t' << " ";
CharToOem("Пункт назначения: ", S);
cout << S;
train.GetCity(i);
cout << iciti << '\t' << " ";
CharToOem("Время отправления: ", S);
cout << S;
train.GetTime(i);
cout << result;
cout << '\n';
}
cout << '\n';
train.Sort(3);
// вывод обьектов сортированного класса
CharToOem("Отсортированный класс (по номеру поезда):", S);
cout << S << '\n';
for (i=0;i<3;i++)
{
CharToOem("Номер поезда: ", S);
cout << S;
cout << train.Getpoezd(i) << '\t' << " ";
CharToOem("Пункт назначения: ", S);
cout << S;
train.GetCity(i);
cout << iciti << '\t' << " ";
CharToOem("Время отправления: ", S);
cout << S;
train.GetTime(i);
cout << result;
cout << '\n';
}
cout << '\n';
int Poezd;
CharToOem("Введите номер поезда для поиска: ", S);
cout << S;
cin >> Poezd;
int c=0;
// цыкл для поиска номера поизда
for (i=0;i<3;i++)
{
if (Poezd == train.Getpoezd(i))
{
c++;
CharToOem("Пункт назначения: ", S);
cout << S;
train.GetCity(i);
cout << iciti << '\n';
CharToOem("Время отправления: ", S);
cout << S;
train.GetTime(i);
cout << result << '\n';
}
}
if (c == 0)
{
CharToOem ("Таких поездов нет!",S);
cout << S << '\n';
}
cout << '\n';
// запрос на продолжение выполнения роботы
CharToOem ("Продолжить выполнение работы?",S);
cout << S;
cin >> End;
}
while (End == 'Y' || End == 'y');
}
template <class Stype> void quick(Stype*item,int count, char Citi[7][30], char Time[7][30])
{
qS(item, Citi, Time, 0, count-1);
}
// рекурсивные функцыи для сортировки массива
template <class Stype> void qS(Stype*item, char Citi[7][30], char Time[7][30], int left,int right)
{
int i,j;
Stype x,y;
i = left; j = right;
x = item[(left+right/2)];
do
{
while (item[i]<x && i<right) i++;
while (x<item[j] && j>left) j--;
if(i<=j)
{
y = item[i];
item[i] = item[j];
item[j] = y;
char t[30];
strcpy(t, Citi[i]);
strcpy(Citi[i], Citi[j]);
strcpy(Citi[j], t);
strcpy(t, Time[i]);
strcpy(Time[i], Time[j]);
strcpy(Time[j], t);
i++;
j--;
}
}
while (i<=j);
if(left<j) qS(item, Citi, Time,left,j);
if(i<right) qS(item, Citi, Time, i,right);
}
Используемая литература
1. Круглински Д., Уингоу С., Шеферд Дж. "Программирование на Microsoft Visual C++ 6.0" /Пер, с англ. - Питер; М.: Изд.-торг. дом "Русская Редакция", 2004. - 861 с.: ил.
2. Шеферд Джордж "Программирование на Microsoft Visual C++ .NET" /Пер. с англ, - М.: Издательско-торговый дом "Русская Редакция", 2003. - 928 стр.: ил.
3. Т.А. Павловская "С/С++. Программирование на языке высокого уровня". СПб.: Питер, 2007.
4. С.В. Глушаков, А.В. Коваль, С.В. Смирнов "Язык программирования С++" Изд-во Фолио, 2001.
Размещено на Allbest.ru
...Подобные документы
Разработка Windows-приложений с использованием библиотеки MFC. Базовый набор классов, написанных на языке С++ и предназначенных для упрощения процесса программирования под Windows. Фундаментальные идеи объектно-ориентированного программирования.
курсовая работа [348,1 K], добавлен 02.07.2011Теоретические основы написания Windows-приложений с использованием библиотеки MFC. Основы программирования под Windows. Проектирование приложений в среде Microsoft Visual C++. Описание логической структуры приложения, его функциональное назначение.
курсовая работа [1,3 M], добавлен 12.12.2011Теоретические основы разработки Windows-приложений с использованием библиотеки MFC. Создание приложения с помощью Visual C++. Описание логической структуры приложения. Установка и запуск программы. Входные и выходные данные. Преимущество MFC библиотек.
курсовая работа [563,2 K], добавлен 21.06.2011Определение программного модуля. Принципы использования dll-библиотеки. Преимущества и недостатки использования dll-библиотек. Описание коэффициентов моделей. Разработка структуры классов. Реализация библиотеки классов в среде разработки MS Visual Studio.
дипломная работа [676,6 K], добавлен 16.06.2015Порядок составления программы, тестирующей знания пользователя по разделу физики "Электрическое поле", написанной на языке Visual C++ с использование библиотеки MFC. Листинг программы и ее практическое значение, принципы работы, структура и элементы.
курсовая работа [172,5 K], добавлен 22.06.2011Разработка программы, проверяющей уровень знаний по разделу стереометрии и позволяющей выбор один из нескольких вариантов и ввод ответа. Характеристика библиотеки MFC, тела, классов и файлов приложения, цикла сообщений и текстовых запусков программы.
курсовая работа [1,5 M], добавлен 28.06.2011Создание программы для хранения и обработки данных о съеме/сдаче жилья. Написание программы на языке C++ с использованием библиотеки Qt; использование исходного кода для создания приложения под Windows, Linux, Mac OS X без дополнительных изменений кода.
курсовая работа [60,4 K], добавлен 07.03.2013Программирование и структура программы на языке Turbo Pascal и MS Visual C++6.0. Вычисление площади круга. Реализация программы в системе Turbo Pascal и MS VISUAL C++6.0 для Windows. Структура окна ТРW. Сохранение текста программы в файле на диске.
лабораторная работа [3,7 M], добавлен 22.03.2012Методика и основные этапы разработки web-библиотеки, требования к ней, содержание, структура и элементы. Идейное описание системы, направления ее проектирования. Порядок написания кода и тестирование систем, ее важнейшие функции и сферы использования.
курсовая работа [1,2 M], добавлен 08.02.2013Использование в программах, написанных на языке C, Windows application programming interfaces. Роль центрального процессора. Архитектура Фон Неймана. Оперативная память. Графическая плата. Создание интерфейса программы. Разработка машинного кода.
реферат [101,5 K], добавлен 15.05.2014Иерархия основных классов MFC (базовой библиотеки классов). Структура простой MFC программы. Работа с текстом в MFC. Функции вывода текста, установки цветов, режимов отображения, получение метрик. Применение контекста устройства, обработка сообщений.
контрольная работа [27,8 K], добавлен 11.08.2010Принципы написания консольных приложений на языке Java в среде Eclipse. Составление программы завтрака на основе списка продуктов, передаваемых в качестве параметров в командной строке. Создание пакета для классов, интерфейса, базового класса иерархии.
лабораторная работа [1,2 M], добавлен 01.05.2014Сведения об окружности, ее радиус и площадь. Разработка программы для вычисления площади круга и длины окружности по заданному радиусу с использованием Windows.Forms-приложений. Пошаговая инструкция; описание главного окна, код, примеры работы программы.
курсовая работа [818,6 K], добавлен 14.09.2014Особенности разработки и представления проекта программы, представляющей собой аналоговые часы с циферблатом, часовой, минутной и секундной стрелкой. Применение MS Visual Studio 2010, языка С++ для ее написания и компилирования. Специфика библиотеки MFC.
курсовая работа [440,2 K], добавлен 17.03.2014Техника создания графики при помощи API функций, экспортируемых библиотекой GDI32.DLL. Разработка на языке программирования С++ в среде программирования Microsoft Visual C++ программы для отображения часов реального времени в цифровом и аналоговом виде.
курсовая работа [2,8 M], добавлен 27.01.2010Создание программы на языке Visual C++ с использованием библиотеки MFC для тестирования знаний пользователя в области геометрии. Генерирование тестовых заданий, введение ответа, оценка результата; логическая структура приложения; техническое обеспечение.
курсовая работа [2,1 M], добавлен 26.06.2011Разработка приложения Windows "Учет заказов и продаж". Структура базы данных, информационное и программное обеспечение. Описание программы на языке Visual C+ с использованием технологии Microsoft.net, элементы управления и руководство пользователя.
курсовая работа [4,8 M], добавлен 25.06.2011Создание класса wind, характеризующего ветровой режим, и программы, демонстрирующей применение разработанного класса. Программный модуль на языке программирования C++ в среде программирования C++Builder6/0, демонстрирующая работу с классом wind.
курсовая работа [123,5 K], добавлен 24.06.2010Разработка программы, моделирующей работу библиотеки. Функция поиска по базе книг и граждан, записанных в библиотеку. Поиск книги. Добавление или удаление абонента. Текст программы на С#. Просмотр списка должников. Запись книги на абонента в программе.
курсовая работа [426,9 K], добавлен 20.02.2014Обзор технологии OpenStack, область ее применения. Реализация библиотеки классов. Реализация базовых классов и интерфейсов архитектуры. Создание виртуального сервера. Интеграция разработанной библиотеки классов и архитектура проектного решения.
дипломная работа [1,0 M], добавлен 09.08.2016