Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка.doc
Скачиваний:
2
Добавлен:
15.12.2018
Размер:
160.26 Кб
Скачать

28

СОДЕРЖАНИЕ

ВВЕДЕНИЕ 6

1. Теоретические сведения 7

2.Описание программы 15

2.1. Описание данных 15

2.1. Словесное описание алгоритмов 18

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

Заключение 24

Литература 26

Приложение 1. Листинг программы. 27

Введение

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

  • ввод информации и выбор действий пользователем производятся с консоли;

  • возможно добавление, удаление и изменение данных;

  • производится поиск по заданным критериям, результаты выдаются в виде списка на экране;

  • предусмотрена сортировка данных по различным аспектам;

  • возможно создание новой или загрузка существующей базы данных;

  • присутствует возможность просмотра информации в виде подробного списка и в виде таблицы

Работа выполнена на языке C++ в среде разработки MS Visual Studio 2008. Язык С++ в основном является языком Си со специальными синтаксическими расширениями для определения и управления объектами.

Язык программирования С++ задумывался как язык, который будет:

   - лучше языка С;

   - поддерживать абстракцию данных;

   - поддерживать объектно-ориентированное программирование

В нем был учтен ряд недостатков языка Си: теперь ведется проверка типов аргументов функций, можно производить макроподстановку функций. Также в него включены некоторые средства проекта стандарта ANSI C [5].

1. Теоретические сведения

Рассмотрим правила применения оператора if-else.

Общая форма оператора if следующая:

if (выражение) оператор;

else оператор;

Здесь оператор может быть только одним оператором, блоком операторов или отсутствовать (пустой оператор). Фраза else может вообще отсутствовать.

Если выражение истинно (т.е. принимает любое значение, отличное от нуля), то выполняется оператор или блок операторов, следующий за if. В противном случае выполняется оператор (или блок операторов), следующий за else (если эта фраза присутствует). Необходимо помнить, что выполняется или оператор, связанный с if, или с else, но оба — никогда!

Пример использования оператора if:

int a=1;

if(a==2)

{

cout<<”false”;

}

else cout<<”true”;

Условное выражение, входящее в if, должно иметь скалярный результат. Это значит, что результатом должно быть целое число, символ, указатель или число с плавающей точкой, но им не может быть массив или структура [1].

В программах часто используется конструкция, которую называют лестницей if-else-if. Общая форма лестницы имеет вид:

If (выражение) оператор;

else

If (выражение) оператор;

else

If (выражение) оператор;

.

.

.

else оператор;

Комбинируя серии операторов if-else, программы могут проверять несколько условий. Но в тех случаях, когда программам необходимо осуществить проверку определенных значений, следует использовать оператор C++ switch.

Рассмотрим использование оператора switch.

Если используется оператор switch, нужно указать условие и затем один или несколько вариантов (case), которые программа попытается сопоставить с условием. Пример записи оператора switch [2]:

int а =1 ; switch (а)

{ case 1: cout << "1" << endl; break; case 2: cout << "2" << endl; break; case 3: cout << "3" << endl; break; case 4: cout << "4" << endl; break; default: cout << "0" << endl; break; }

Оператор switch состоит из двух частей. Первая часть оператора switch представляет собой условие, которое появляется после ключевого слова switch. Вторая часть представляет собой возможные варианты соответствия. Когда программа встречает оператор switch, она сначала исследует условие, а затем пытается найти среди возможных вариантов тот, который соответствует условию. Если программа находит соответствие, выполняются указанные операторы. В предыдущем примере выбор варианта 'В' соответствует условию. Таким образом, программа выводит сообщение В. Если же ни один из указанных вариантов не соответствует условию, то выполняется вариант default.

Рассмотрим использование оператора цикла for.

Общая форма оператора for следующая:

for (инициализация; условие; приращение) оператор;

Цикл for может иметь большое количество вариаций. В наиболее общем виде принцип его работы следующий. Инициализация — это присваивание начального значения переменной, которая называется параметром цикла.

Условие представляет собой условное выражение, определяющее, следует ли выполнять оператор цикла (часто его называют телом цикла) в очередной раз. Оператор приращение осуществляет изменение параметра цикла при каждой итерации. Эти три оператора (они называются также секциями оператора for) обязательно разделяются точкой с запятой. Цикл for выполняется, если выражение условие принимает значение истина. Если оно хотя бы один раз примет значение ЛОЖЬ, то программа выходит из цикла и выполняется оператор, следующий за телом цикла for [3].

Рассмотрим использование функций.

По мере увеличения программ использование функций становится их неотъемлемой частью. Так как программа становится более читабельной.

В общем виде функция выглядит следующим образом:

возвр-тип имя-функции(список параметров)

{

тело функции

}

Возвращаемый-тип определяет тип данного, возвращаемого функцией. Функция может возвращать любой тип данных, за исключением массивов. Список параметров — это список, элементы которого отделяются друг от друга запятыми. Каждый такой элемент состоит из имени переменной и ее типа данных.

f(int i, int k, int j)

При вызове функции параметры принимают значения аргументов. Функция может быть и без параметров, тогда их список будет пустым. Такой пустой список можно указать в явном виде, поместив для этого внутри скобок ключевое слово void[2].

Следующий пример использует функцию _cout для вывода сообщения на экран:

#include <iostream.h>

void _cout (void)

{

  cout << " void" << endl;

}

void main (void)

{   cout << "вызов функции" << endl;

_cout ();

cout << "выход из функции" << endl;

}

Слово void, содержащееся внутри круглых скобок, указывает (компилятору C++ и программистам, читающим код), что функция не использует параметры [2].

Функция представляет собой набор связанных операторов, которые выполняют определенную задачу.

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

function();

Если программа передает информацию (параметры) в функцию, она размещает эту информацию внутри круглых скобок, разделяя ее запятыми:

payroll(employee_name, employee_id, salary);

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

Рассмотрим использование оператора вывода printf.

Вот прототип функции printf():

int printf(const char *управляющая_строка, ...);

Функция printf() возвращает число выведенных символов или отрицательное значение в случае ошибки [5].

Управляющая_строка состоит из элементов двух видов. Первый из них — это символы, которые предстоит вывести на экран; второй — это спецификаторы преобразования, которые определяют способ вывода стоящих за ними аргументов. Каждый такой спецификатор начинается со знака процента, за которым следует код формата. Аргументов должно быть ровно столько, сколько и спецификаторов, причем спецификаторы преобразования и аргументы должны попарно соответствовать друг другу в направлении слева направо. Например, в результате такого вызова printf()

printf("Мне нравится язык %c %s", 'C', "и к тому же очень сильно!");

Будет выведено:

Мне нравится язык C и к тому же очень сильно!

В этом примере первому спецификатору преобразования (%c), соответствует символ 'C', а второму (%s), — строка "и к тому же очень сильно!"[1].

Рассмотрим использование файлов в С++.

Файловая система языка С предназначена для работы с самыми разными устройствами, в том числе терминалами, дисководами и накопителями на магнитной ленте.

Обобщенное устройство ввода или вывода называется потоком. Бывают два вида: текстовые и двоичные.

Текстовый поток — это последовательность символов.

Файловая система языка С состоит из нескольких взаимосвязанных функций.

fopen – открывает файл

fclose – закрывает файл

fscanf – читает из файла

fprintf – записывает в файл

fgets – записывает в файл

Указатель файла — это указатель на структуру типа FILE.

FILE *fp;

Функция fopen() открывает поток и связывает с этим потоком определенный файл. Затем она возвращает указатель этого файла. Чаще всего (а также в оставшейся части этой главы) под файлом подразумевается дисковый файл. Прототип функции fopen() такой:

FILE *fopen(const char *имя_файла, const char *режим);

где имя_файла — это указатель на строку символов, представляющую собой допустимое имя файла, в которое также может входить спецификация пути к этому файлу. Строка, на которую указывает режим, определяет, каким образом файл будет открыт.

Fgets них читает строки символов из файла на диске, а fputs записывает строки такого же типа в файл, тоже находящийся на диске. Эти функции работают почти как putc() и getc(), но читают и записывают не один символ, а целую строку. Прототипы функций fgets() и fputs() следующие:

int fputs(const char *cmp, FILE *уф);

char *fgets(char *cmp, int длина, FILE *уф);

Функция ferror() определяет, произошла ли ошибка во время выполнения операции с файлом. Прототип этой функции следующий:

int ferror(FILE *уф);

где уф — допустимый указатель файла. Она возвращает значение true (истина), если при последней операции с файлом произошла ошибка; в противном же случае она возвращает false (ложь).

Функция remove() стирает указанный файл. Вот ее прототип:

int remove(const char *имя_файла);

В случае успешного выполнения эта функция возвращает нуль, а в противном случае — ненулевое значение.

Для чтения и записи данных, тип которых может занимать более 1 байта, в файловой системе языка С имеется две функции: fread() и fwrite(). Эти функции позволяют читать и записывать блоки данных любого типа. Их прототипы следующие:

size_t fread(void *буфер, size_t колич_байт, size_t счетчик, FILE *уф);

size_t fwrite(const void *буфер, size_t колич_байт, size_t счетчик, FILE *уф);

Для fread() буфер — это указатель на область памяти, в которую будут прочитаны данные из файла. А для fwrite() буфер — это указатель на данные, которые будут записаны в файл[2].

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

C++ позволяет хранить в массиве связанную информацию одного и того же типа. Группировка связанных значений в массив очень удобна. В большинстве случаев программам необходимо группировать связанную информацию разного типа. Например, предположим, что программа работает с информацией о служащих. Она должна отслеживать данные о фамилии, возрасте, окладе, адресе, номере служащего и т. д. Для хранения этой информации программе потребуются переменные типа char, int, float, а также символьные строки.

Если программе требуется хранить связанную информацию разных типов, она может использовать структуру. Структура представляет собой переменную, группирующую связанные части информации, называемые элементами, типы которых могут различаться. Группируя данные в одну переменную подобным образом, упрощаются программы, снижая количество переменных, которыми необходимо управлять, передавать в функции и т. д [2].

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

struct name

{    int member_name_l; // Объявления элементов структуры    float member_name_2;

} variable; //Объявление переменной

Ключевое слово struct является обязательным при программировании на С, так что некоторые программисты могут включать его по привычке. Однако в C++ использовать ключевое слово struct необязательно.

Структура позволяет программам группировать информацию, называемую элементами, в одной переменной. Чтобы присвоить значение элементу или обратиться к значению элемента, используется оператор C++ точка (.). Например, следующие операторы присваивают значения различным элементам переменной с именем worker типа employee;

worker.employee_id = 12345;

worker.salary = 25000.00;

worker.оffice_number = 102;

Для обращения к элементу структуры указывается имя переменной, за которым следует точка и имя элемента[2].