Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / ЭТМО / 08_проекты.doc
Скачиваний:
33
Добавлен:
16.04.2013
Размер:
116.22 Кб
Скачать

Создание проекта.

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

При организации проекта в проект включаются все .cpp файлы, тогда как .h –файлы включаются непосредственно с использованием include.

Рассмотрим пример программы, описывающей домашнюю библиотеку из N книг (задаётся с клавиатуры), и выводящую на экран все книги нужного автора.

Разобьём программу на следующие модули:

Main.cpp – основная программа, интерфейс пользователя.

Const.h – заголовочный файл с описаниями типов и констант.

Func.h – заголовочный файл с объявлением функций.

Func.cpp заголовочный файл с описанием функций.

//main.cpp----------------------------------------------------------------------------------------------

void main()

{

int N;

int K;

char auth[50];

cout<<”Input a book’s quantity >”;

cin>>N;

book* bibl=InputBibl(N);

cout<<”Input an author name >”;

cin.get(auth,50);

cout<<”For author “<<auth<<” finding books:”<<endl;

K=printAuthor(bibl,N,auth);

cout<<”Counts - “<<K<<endl;

}

//const.h----------------------------------------------------------------------------------------------

struct book

{

char header[50];

char author[50];

};

//func.h----------------------------------------------------------------------------------------------

book* InputBibl(int N);

int printAuthor(book* B, int N, char auth[50]);

//func.cpp----------------------------------------------------------------------------------------------

book* InputBibl(int N)

{

book* B=new book[N];

for(int i=0;i<N;i++)

{

cout<<”Input Header and Author for “<<i<<” book >”;

cin.get(B[i].header,50);

cin.get(B[i].author,50);

}

return B;

}

int printAuthor(book* B, int N, char auth[50])

{

int k=0;

for(int i=0;i<N;i++)

if(strcmp(B[i].author,auth)==0)

{

k++;

cout<<”Book – “<<k<<” - “<<B[i].header<<endl;

}

return k;

}

Примечание:

оператор new динамически выделяет память для массива и возвращает указатель на выделенную область. Принимает тип элемента и количество элементов, если количество не указано – выделяется память для одного элемента.

Создание группового проекта.

Главное правило ведения группового проекта – чётко обозначенный интерфейс (заголовки всех используемых в модуле функций) модуля каждого программиста. При разработке на первом этапе оговаривается конечный интерфейс разрабатываемых модулей. Далее каждый из программистов разрабатывает свой модуль основываясь только на интерфейсе модулей других программистов. На заключительном этапе разработки модули объединяются и компилируется единая программа.

Пример задания:

Написать программу сортировки и поиска книги в магазине по автору или по названию.

Задание разбивается на следующие модули:

  • Модуль ввода/вывода (интерфейс пользователя) – основной модуль программы. Интерфейс модуля (заголовки функций): book* InputBibl(int N);//ввод книг в библиотеку int printAuthor(book* B, int N, char auth[50]);//вывод на экран содержимого библиотеки

  • Модуль, содержащий функции сортировки. Интерфейс модуля: void SortABibl(book* B, int N);//сортировка книг по автору void SortHBibl(book* B, int N);//сортировка книг по названию

  • Модуль, содержащий функции поиска; Интерфейс модуля: void SearchABibl(book* B, int N, char* A);//поиск книг по автору. Результат выводится на экран void SearchHBibl(book* B, int N, char* H);//поиск книг по названию. Результат выводится на экран void SearchAHBibl(book* B, int N, char* A, char* H)//поиск определённой книги.

Изначально создаётся общий заголовочный файл, включающий константы и типы данных. Общий заголовочный файл подключается в каждый модуль программы. В нашем случае он содержит описание структуры.

//const.h------------------------------------------------------------------------------------

#ifndef __CONST_H__

#define __CONST_H__

struct book

{

char header[50];

char author[50];

};

#endif

Заголовочные файлы для модулей:

//sort.h------------------------------------------------------------------------------------

#include “const.h”

void SortABibl(book* B, int N);

void SortHBibl(book* B, int N);

//search.h------------------------------------------------------------------------------------

#include “const.h”

void SearchABibl(book* B, int N, char* A);

void SearchHBibl(book* B, int N, char* H);

void SearchAHBibl(book* B, int N, char* A, char* H);

Соседние файлы в папке ЭТМО