75781

Реализация электронного приложения для наиболее быстрого создания телефонного справочника

Курсовая

Информатика, кибернетика и программирование

Для достижения поставленной цели необходимо выполнить следующие задачи: изучить и проанализировать учебно-методическую документацию, учебную литературу и интернет – источники по выбранной теме дисциплины; выбрать наиболее оптимальный способ реализации поставленной цели...

Русский

2015-01-26

453.5 KB

8 чел.

Содержание

[1] Введение

[2]
1. Анализ предметной области

[3] 2. Проектирование

[4] 3. Кодирование и отладка

[5]
4. Тестирование

[6] 6. Сопровождение

[7] 6.1. Руководство пользователя

[8] 6.2. Замечания

[9]
7. Заключение

[10]
Использованная литература

[11] Приложение

Введение

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

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

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

Для достижения поставленной цели необходимо выполнить следующие задачи:

  •  изучить и проанализировать учебно-методическую документацию, учебную литературу и интернет – источники по выбранной теме дисциплины;
  •  выбрать наиболее оптимальный способ реализации поставленной цели;
  •  определить набор функций, необходимых для реализации поставленной цели;
  •  разработать и протестировать приложение «Сортировка списка номеров телефонов»;
  •  разработать методические рекомендации для пользователя.

Конструктивно курсовая работа состоит из 5 разделов.

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

Во втором разделе описаны этапы проектирования телефонного справочника, выбор среды разработки, описана реализация поставленной задачи.

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

В третьем разделе приводится подробный разбор кодирования.

В четвёртом описывается тестирование.

В пятом разделе указаны технические требования, предъявляемые к установке программного продукта, а так же руководство пользователя и замечания.


1. Анализ предметной области

При анализе выбранной предметной области было проанализировано несколько способов решения поставленной задачи.

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

Из существующих решений стоит отметить «Телефонный справочник 2.2». Программа предназначена для ведения базы данных Телефонный справочник.

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

В ходе анализа работы данной программы существенных недостатков не было выявлено.

Внешний вид программы представлен на рис.2.1:

Рис.1.1. Интерфейс программы «Телефонный справочник 2.2»

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

В разрабатываемом приложении пользователю необходимо:

  1.  Ввести записи в телефонный справочник с клавиатуры либо занести готовую базу (созданную в этом же приложении) из текстового файла в программу для дальнейшей обработки;
  2.  Выбрать в интерактивном меню необходимую операцию для обработки телефонного справочника;
  3.  Далее, с телефонным справочником можно производить все предложенные операции, в том числе записывать созданные базы в текстовые файлы формата DOC или TXT.
  4.  Для окончания работы приложения выбрать соответствующий пункт меню.

2. Проектирование

Для выполнения курсового проекта была выбрана свободная интегрированная среда разработки приложений для языков программирования C/C++ —  Dev-C++ 4.9.9.2, поскольку она содержит очень удобный редактор, адаптированный под Windows 7, и стильный, удобный интерфейс на русском языке.

На основе анализа предметной области и, исходя из цели курсового проектирования, был реализован алгоритм, структурная схема которого представлена на рис.3.1:

Рис.2.1: Структурная схема алгоритма программы.

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

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

  1.  Ввод записей в телефонный справочник;
  2.  Добавление записей;
  3.  Вывод справочника на экран;
  4.  Сортировка записей;
  5.  Поиск по записям;
  6.  Запись базы в текстовый файл;
  7.  Чтение базы из текстового файла;
  8.  Удаление данных;

Каждая запись в телефонной книге будет представлять собой структуру, содержащую 2 поля: номер телефона и комментарий к нему.

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

При реализации необходимо предусмотреть проверку на адекватность всех вводимых данных – отрицательный диапазон при вводе размера массива, ввод букв и отрицательных чисел при записывании телефонного номера в базу.

Кроме того, целесообразно осуществить вложенную систему общения с пользователем.

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

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

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

Будет полезным добавить дополнительный пункт в меню – «О программе», прочитав который, пользователь сможет ознакомиться с возможностями программы.

Выход из программы осуществляется с помощью выбора соответствующего пункта меню «Выход».

3. Кодирование и отладка

Для реализации поставленных задач были использованы следующие стандартные библиотеки языка Си:

  •  stdio.h – содержит константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода, таких как:
  •  fopen – открытие файла для определённых типов чтения и записи;
  •  fclose – закрытие файла;
  •  fflush – записывает в файл содержимое буфера, связанного с потоком stream,  если он был открыт на вывод.
  •  printf – используется для вывода в стандартный поток вывода;
  •  fprintf – используется для вывода в файл;
  •  scanf – используется для ввода из стандартного потока ввода;
  •  fscanf – используется для ввода из файла;
  •  conio.h  используется для создания текстового интерфейса пользователя. Объявляет несколько библиотечных функций для работы с «консольным вводом и выводом» программы:
  •  getch – считывает символ напрямую из консоли без использования буфера и echo-вывода.
  •  string.h  содержит функции для работы с нуль-терминированными строками и различными функциями работы с памятью:
  •  strcmp – лексикографическое сравнение строк;
  •  locale.h  используется для задач, связанных с локализацией:
  •  setlocale - устанавливает новую локализацию для операций, связанных с одной из макрос-категорий.
  •  stdlib.h - содержит в себе функции, занимающиеся выделением памяти, контролем процесса выполнения программы, преобразования типов и др.
  •  malloc - обеспечивают   выделение   блока   памяти, определенного размера.
  •  realloc – служит для изменения размера ранее выделенного блока.
  •  free – служит для освобождения блока динамической памяти.

Структура телефонного справочника состоит из двух полей:

  •  номер телефона, имеющий тип double, поскольку формат номера телефона – десятизначный;
  •  комментарий – массив символов типа char.

Листинг А.1. Описание структуры телефонного справочника:

struct book

{

   double nom;

   char com[20];

};

Для достижения поставленной цели был разработан необходимый набор функций:

1) Функция inputrecords предназначена для ввода полей массива структур. Описание функции:

void inputrecords(struct book **p,int size)

Тип возвращаемого значения – void, поскольку функция ничего не возвращает. Формальные параметры: struct book **p – передается указатель на указатель на массив структур,  т.к. в функции производится модификация указателя; int size – количество элементов в телефонном справочнике.

Полная реализация функции представлена в приложении (листинг Б., строки 16-55).

В случае успешного выполнения чтения, глобальной переменной identifier присваивается значение 1, позволяющее производить операции сортировки, поиска и вывода информации.

2) Функция add предназначена для добавления записей в телефонный справочник. Описание функции:

int add(struct book **p,int size,int ad)

Тип возвращаемого значения – int, поскольку с помощью этой функции в главную программу возвращается количество добавленных записей, которое имеет тип int. Формальные параметры: struct book **p - указатель на указатель на массив структур, int size – количество элементов в телефонном справочнике, int ad – количество добавленных записей.

Полная реализация функции представлена в приложении (листинг Б., строки 58-111).

3) Функция outputrecords предназначена для вывода всех записей справочника на экран. Для вывода записей на экран используется параметризованный цикл for. Описание функции:

void outputrecords(struct book e[],int size)

Полная реализация функции представлена в приложении (листинг Б., строки 114-128).

4) Функция sortbynum предназначена для сортировки в порядке возрастания массива структур по ключевому полю – номер телефона. Метод сортировки – сортировка выбором. Описание функции:

void sortbynum(struct book e[],int size) 

Шаги алгоритма сортировки выбором:

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

Полная реализация функции представлена в приложении (листинг Б., строки 131-151).

5) Функция sortbycom предназначена для сортировки в алфавитном порядке по ключевому полю – комментарий к номеру телефона. Метод сортировки  - сортировка выбором. Описание функции:

void sortbycom(struct book e[],int size)

Полная реализация данной функции идентична реализации функции sortbynum и представлена в приложении (листинг Б., строки 154-174).

6) Функция search предназначена для поиска записей в телефонном справочнике. Позволяет осуществлять поиск по одному из ключевых полей: по номерам телефонов или по комментариям к ним.

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

Описание функции:

void search(struct book e[],int size)

Полная реализация функции представлена в приложении (листинг Б., строки 177-243).

7) Функция write предназначена для записи телефонного справочника в текстовый файл.

Формат выходного файла следующий:

N1 S1

N2 S2

где N1, N2, … – номера телефонов, S1, S2, … – текстовые комментарии.

Описание функции:

void write(struct book e[],int size,FILE *fstream,int id)

Тип возвращаемого значения – void, поскольку функция ничего не возвращает. Формальные параметры: struct book e[] – массив структур, int size – количество элементов в телефонном справочнике, FILE *fstream – указатель на переменную файлового типа, int id – переменная-идентификатор, принимает значение равное единице, если в справочнике присутствуют записи.

Полная реализация функции представлена в приложении (листинг Б., строки 246-270).

8) Функция read предназначена для чтения массива структур из текстового файла, имеющего расширение TXT либо DOC.

Описание функции:

int read(struct book **p,int size,FILE *fstream)

Функция производит подсчет количества записей в текстовом файле, поэтому имеет тип возвращаемого значения int. Формальные параметры: struct book **p - указатель на указатель на массив структур, int size - элементов в телефонном справочнике, FILE *fstream – указатель на переменную файлового типа.

Функция возвращает значение size в основную программу, которое в дальнейшем используется для функций: outputrecords, sortbynum, sortbycom, search, write.

Кроме того, в случае успешного выполнения чтения, глобальной переменной identifier присваивается значение 1, позволяющее производить операции сортировки, поиска и вывода информации.

Полная реализация функции представлена в приложении (листинг Б., строки 273-325).

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

struct book array[1000] – массив структур типа book состоящий из 1000 элементов – максимальный размер телефонного справочника;

struct book rezarray[1000] – резервный массив состоящий из 1000 элементов – содержит начальную копию массива array;

int n – количество элементов в телефонном справочнике;

int c – номер операции из меню программы;

int yn,ny,w – переменная выбора, принимает значения 1 или 2;

int identifier – переменная-идентификатор, принимает значения 1 и 0;

int ad – количество добавленных записей;

int od - переменная выбора, принимает значения 1 и 2;

FILE* file – указатель на переменную файлового типа;

Основное меню программы – цикл while, условием выхода из которого является значение переменной c=0.

Другие значения, которые может принимать эта переменная: 1, 2, 3, 4, 5, 6, 7, 8, 9 – соответствуют определенным в результате анализа операциям, производимым над телефонным справочником.

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

Листинг А.2. Организация интерфейса общения с пользователем:

printf(" Точно хотите удалить все записи из телефонной книги? \n\n");

printf("   1 - да; \n");

printf("   2 - нет; \n\n");

printf(" Твой выбор: ");

do

{

    yn=-1;

    fflush(stdin);

    scanf("%d",&yn);

    if (yn<1||yn>2)

    printf(" Неверный ввод. Пожалуйста, повтори : ");

}         

while(yn<1||yn>2);

if (yn==1)

{

     printf(" Все данные успешно удалены! \1 \n");

                    free(array);

                    array==NULL;

                    identifier=0;

              }

              else

              {

                    printf(" Данные не были удалены! ");

                    identifier=1;

              }

              getch();

Переменная-идентификатор identifier показывает наличие записей в телефонном справочнике и принимает значение 1, если телефонный справочник не пустой. Позволяет выдавать соответствующие сообщения пользователю при попытке вывести на экран пустой справочник, сортировать, осуществлять поиск или записывать его в файл. Например, если пользователь ввел записи, то переменной identifier присваивается значение 1, что позволяет пользователю производить дальнейшие операции со справочником:

Листинг А.3. Отрывок программного кода, отвечающий за сортировку телефонного справочника.

if (identifier!=1)

{

printf("\n\n !Данные недоступны!\a\n");

printf(" Сначала введи данные - клавиша '1'. Или прочти данные из файла - клавиша '7'. \n\n");

printf("\n\n Нажми 'Enter' для продолжения... ");

}

else

{

printf(" По какому полю произвести сортировку? \n\n");

printf("   1 - по номерам телефонов; \n");

printf("   2 - по комментариям; \n\n");

printf(" Твой выбор: ");

do

{

   od=-1;

   fflush(stdin);

   scanf("%d",&od);

   if (od<1||od>2)

   printf(" Неверный ввод. Пожалуйста, повтори : ");

}         

while(od<1||od>2);

                  

if (od==1)

sortbynum(array,n);

else

sortbycom(array,n);

                  

printf("\n\n Сортировка успешно завершена! \1\a\n");

printf("\n\n Нажми 'Enter' для продолжения... ");

}

getch();

Значение переменной с=9 дает возможность пользователю прочитать о возможностях программы.

Выход из программы осуществляется выбором пункта меню «0».


4. Тестирование

Для проверки корректности работы программы проведем несколько тестов. Они были проведены на базе Сургутского государственного университета, студенческой группы 12-91. В тестировании программы принимали участие 8 человек.

Сначала компилируем и запускаем программу. Пользователь увидит диалоговое окно (см. рисунок 4.1) следующего содержания:

Рис.4.1: Окно программы в начальный момент запуска.

Тест №1: Проверка ввода номеров телефонов и комментариев.

После запуска программы, выбираем пункт меню «1». Далее осуществляем ввод записей, в формате: «Введите десятизначный номер» - ввод осуществляется без пробелов, дефисов и других знаков препинания; «Введите комментарий» - допускает ввод в произвольном формате (см. рисунок 4.2). При некорректном вводе данных выводится сообщение об ошибке (см. строка 4 рисунка 4.2):

Рис.4.2: Диалоговое окно проверки теста №1.

В результате проведенного теста можно сделать вывод, что ввод записей прошел успешно. Программа работает корректно.

Тест №2: Проверка добавления записей в существующий телефонный справочник.

В интерактивном меню выбираем пункт меню «2» и осуществляем ввод записей (см. рисунок 4.3):

Рис.4.3: Диалоговое окно проверки теста №2.

В предыдущем тесте был произведен ввод 5 записей. Т.к. максимальный размер телефонной книги – 1000000 записей, то добавить можно 999995 записей. Программа работает корректно.

Тест №3: Проверка вывода телефонного справочника на экран.

В  интерактивном меню выбираем пункт меню «3» и выводим телефонный справочник на экран. Пользователь увидит следующий вид окна (см. рисунок 4.4):

Рис.4.4: Диалоговое окно проверки теста №3.

Все введенные записи были выведены на экран. Программа работает корректно.

Тест №4: Проверка сортировки записей – сортировка телефонного справочника по комментариям и номерам телефонов.

В  интерактивном меню выбираем пункт меню «4» (см. рисунок 4.5.1):

Рис.4.5.1: Диалоговое окно сортировки.

Попробуем отсортировать записи по номерам телефонов. Для чего выбираем «1», производится сортировка, затем в основном меню выбираем пункт «3» - выводим записи на экран. В результате имеем следующий вид окна (см. рисунок 4.5.2):

Рис.4.5.2: Телефонный справочник, отсортированный по номерам телефонов.

Для сортировки телефонного справочника в алфавитном порядке, произведем те же операции, только в диалоговом окне (см. рисунок 4.5.1), выберем «2». В результате имеем следующий вид окна (см. рисунок 4.5.3):

Рис.4.5.3: Телефонный справочник, отсортированный по комментариям.

Из представленных рисунков видно, что программа работает корректно.

Тест №5: Проверка поиска по содержимому телефонного справочника.

В  меню программы выбираем пункт «5», затем «2» - чтобы осуществить поиск по комментариям. В результате имеем следующий вид окна (см. рисунок 4.6):

Рис.4.6: Диалоговое окно проверки теста №6.

Из представленного рисунка видно, что программа работает корректно.

Тест №6: Проверка записи телефонного справочника в текстовый файл.

В  меню программы выбираем пункт «6». Попробуем записать телефонный справочник в файл result.doc. Диалоговое окно имеет следующий вид (см. рисунок 4.7.1):

Рис.4.7.1: Диалоговое окно проверки теста №6.

В папке, где находится исполняемый файл программы создается файл, содержимое которого представлено на рисунке 4.7.2:

Рис.4.7.2: Выходной файл.

Программа работает корректно, так как все записи справочника были успешно перенесены в файл.

Тест №7: Проверка чтения телефонного справочника из текстового файла.

Закрываем приложение, выбрав пункт меню «0».

Осуществляем повторный запуск программы и выбираем пункт меню «7».

Вводим имя созданного ранее файла result.doc и в диалоговом окне отображается информация, содержащаяся в файле (см. рисунок 4.8):

Рис.4.8: Результат считывания данных из текстового файла.

Все записи были успешно считаны из файла. Программа работает корректно.

Тест №8:  Проверка удаления телефонного справочника из программы.

В  меню программы выбираем пункт «8», затем «1» - подтверждаем удаление (см. рисунок 4.9.1):

Рис.4.9.1: Диалоговое окно проверки теста №8.

Далее в главном меню выбираем пункт «3» - выводим телефонный справочник на экран (см. рисунок 4.9.2):

Рис.4.9.2: Попытка вывести на экран пустой справочник.

Из рисунка видно, что в программе отсутствуют какие-либо записи. Программа работает корректно.

Проведенные тесты полностью подтверждают корректность работы программы.

6. Сопровождение

Разработанный электронный продукт, выполненный на языке программирования Си, поддерживается на большинстве операционных систем, среди которых Windows XP, Windows Vista, Windows 7, Linux.

Помимо этого, программа корректно работает как на 32-разрядных системах, так и на 64-разрядных системах.

Для положительной работы программы необходимо всего 37,3 Кб свободной памяти на жестком диске компьютера и 1215 Кб оперативной памяти. Исходя расчетных данных, каждый пользователь современного ПК может позволить себе использование разработанного программного продукта «Телефонный справочник».

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

Так как максимальное количество записей телефонного справочника – 1000000, то максимальный размер выходного файла составляет 32,425 Мб.

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

  1.  При запуске программы появляется меню, предоставляющее на выбор пользователю все возможные операции с телефонной книгой;
  2.  Для внесения данных в телефонный справочник необходимо воспользоваться опциями «Ввести данные». Затем ввести количество записей (максимум 100000 записей), и последовательно ввести все номера и комментарии к ним;
  3.  Для того чтобы добавить новые записи в уже существующий справочник, заполненный записями согласно п.2,  необходимо воспользоваться опцией «Добавить еще записи». При вызове этой опции сначала необходимо ввести количество добавляемых записей, а затем осуществить ввод;
  4.  Сортировка записей производится при помощи операции «Сортировать данные». При выборе данной операции сначала выбирается поле, по которому необходимо отсортировать список номеров телефонов, а по окончанию сортировки можно посмотреть отсортированный справочник, выбрав операцию «Вывести данные на экран» в главном меню программы;
  5.  Поиск записей производится при помощи операции «Поиск данных».  Сначала выбирается поле, по которому будет производиться поиск, а затем вводится поисковой критерий. Результаты поиска выводятся в этом же окне;
  6.  Запись данных в текстовый файл производится при помощи операции «Записать в текстовый файл». Сначала вводится имя файла с расширением DOC или TXT, после этого в одной папке с исполняемым файлом создается текстовый документ, содержащий список телефонов и комментарии;
  7.  Чтение телефонного справочника из текстового файла производится при помощи операции «Считать из текстового файла». Сначала вводится имя текстового файла (либо полный путь до файла). Затем, в случае удачного чтения, записи выводятся в том же окне и становятся доступными в основной программе;
  8.  Для удаления телефонного справочника необходимо воспользоваться операцией «Удалить все данные».

6.2. Замечания

  1.  При попытке добавления, вывода, поиска, сортировки, записи или удаления данных без предварительного их введения или считывания из файла выдаются соответствующие предупреждения о невозможности выполнения данных операций;
  2.  Не допускается начальный ввод данных с помощью операции «Добавить еще записи». Эта операция производит только добавление записей в уже существующую базу;
  3.  При повторном выборе операции «Ввести данные» все несохраненные до этого записи будут удалены;
  4.  При повторном считывании данных из файла все несохраненные до этого записи будут удалены;
  5.  Возможно считывание данных из текстового файла формата DOC или TXT, созданного вручную;
  6.  Операция главного меню «О программе» дает возможность пользователю ознакомиться с настоящим программным продуктом.


7. Заключение

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

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

Проектирование позволило сформировать структуру ПО и разработать необходимые программные алгоритмы, разработать интерфейс пользователя, форматы ввода, вывода и визуализации информации.

Исходя из результатов анализа и проектирования, было произведено кодирование и отладка приложения на языке программирования Си.

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

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

Были разработаны методические рекомендации для пользователя, в которых были отмечены некоторые особенности работы программы.

Таким образом, следует считать, что задачи работы полностью выполнены и цель курсового проектирования достигнута.


Использованная литература

  1.  Гришмановский П.В., Даниленко И.Н. Курсовое проектирование. Разработка программного обеспечения. Методические указания к выполнению курсовых проектов для студентов специальностей 210100 «Управление и информатика в технических системах» и 220400 «Программное обеспечение вычислительной техники  и автоматизированных систем».  Сургут: Издательство СурГУ, 2004. – 23с.
  2.  Подбельский В.В., Фомин С.С. Программирование на языке Си: Учеб. пособие. – 2-е доп. изд. – М.: Финансы и статистика, 2004. – 600 с.: ил.
  3.  Поляков К.Ю. Практический курс программирования на Си: свободно-распространяемый интернет – учебник в формате PDF.
  4.  Поляков К.Ю. Презентации по практическому курсу программирования на Си: Хранение и обработка данных — Си, Проектирование программ — Си, Численные методы — Си, Целочисленные алгоритмы — Си, Динамические структуры данных — Си. 2008-2009.
  5.  Электронный каталог КиберФорум [Электронный ресурс]: форум начинающих и профессиональных программистов, системных администраторов, администраторов баз данных. Раздел C/C++. Режим доступа: http://www.cyberforum.ru/cpp/.

Приложение

Листинг А.1. Описание структуры телефонного справочника:

  1.  struct book
  2.  {
  3.      double nom;//номер телефона
  4.      char com[20];//комментарий
  5.  };

Листинг А.2. Организация интерфейса общения с пользователем.

  1.  printf(" Точно хотите удалить все записи из телефонной книги? \n\n");
  2.  printf("   1 - да; \n");
  3.  printf("   2 - нет; \n\n");
  4.  printf(" Твой выбор: ");
  5.  do
  6.  {
  7.       ot=-1;
  8.       fflush(stdin);
  9.       scanf("%d",&ot);
  10.       if (ot<1||ot>2)
  11.       printf(" Неверный ввод. Пожалуйста, повтори : ");
  12.  }         
  13.  while(ot<1||ot>2);
  14.                 
  15.  if (ot==1)
  16.  {
  17.       sleep(1500);
  18.       printf(" Все данные успешно удалены! \1 \n");
  19.       free(array);
  20.       array=NULL;;
  21.       identifier=0;
  22.  }
  23.  else
  24.  {
  25.       printf(" Данные не были удалены! ");
  26.       identifier=1;
  27.  }

Листинг А.3. Отрывок программного кода, отвечающий за сортировку телефонного справочника:

  1.  if (identifier!=1)
  2.  {
  3.       printf("\n\n !Данные недоступны!\a\n");
  4.       printf(" Сначала введи данные - клавиша '1'. Или прочти данные из файла - клавиша '7'. \n\n");
  5.       printf("\n\n Нажми 'Enter' для продолжения... ");
  6.  }
  7.  else
  8.  {
  9.       printf(" По какому полю произвести сортировку? \n\n");
  10.       printf("   1 - по номерам телефонов; \n");
  11.       printf("   2 - по комментариям; \n\n");
  12.       printf(" Твой выбор: ");
  13.       do
  14.       {
  15.           od=-1;
  16.           fflush(stdin);
  17.           scanf("%d",&od);
  18.           if (od<1||od>2)
  19.           printf(" Неверный ввод. Пожалуйста, повтори : ");
  20.       }         
  21.       while(od<1||od>2);
  22.                     
  23.       if (od==1)
  24.       sortbynum(array,n);
  25.       else
  26.       sortbycom(array,n);
  27.                     
  28.       printf("\n\n Сортировка успешно завершена! \1\a\n");
  29.       printf("\n\n Нажми 'Enter' для продолжения... ");
  30.  }

Листинг Б. Исходный код программного продукта «Телефонный справочник»:

  1.  #include <stdio.h>
  2.  #include <conio.h>
  3.  #include <string.h>
  4.  #include <stdlib.h>
  5.  #include <locale.h>
  6.  
  7.  
  8.  
  9.  struct book
  10.  {
  11.      double nom;//номер телефона
  12.      char com[20];//комментарий
  13.  };
  14.      
  15.        
  16.  void inputrecords(struct book **p,int size)//ввод записей
  17.  {
  18.    int i;
  19.    struct book *e;
  20.       
  21.    if (*p)
  22.    {
  23.    free(*p);
  24.    *p=NULL;
  25.    }
  26.       *p=malloc(size*sizeof(struct book));
  27.       if (!(*p))
  28.       {
  29.           printf("\n Недостаточно памяти. Попробуйте ввести меньшее колличество записей!");
  30.           size=0;
  31.           getch();
  32.       }
  33.       else
  34.       {
  35.           e=*p;   
  36.       
  37.           for (i=0; i<size; i++)
  38.           {
  39.               printf(" %d запись: \n",i+1);
  40.               printf(" Введи десятизначный номер: ");
  41.               do
  42.               {
  43.                    e[i].nom=-1;
  44.                    fflush(stdin);
  45.                    scanf("%lf",&e[i].nom);
  46.                    if (e[i].nom<1000000000.0||e[i].nom>9999999999.0)
  47.                    printf(" Неверный ввод. Пожалуйста, повтори: ");
  48.               }      
  49.               while(e[i].nom<1000000000.0||e[i].nom>9999999999.0);
  50.               printf(" Введи комментарий (максимум 20 символов, 1 слово): ");
  51.               scanf("%s",&e[i].com);
  52.               printf("\n");
  53.           }
  54.       }
  55.  }
  56.  
  57.  
  58.  int add(struct book **p,int size,int ad)//добавление записей
  59.  {
  60.       int i,temp;
  61.       struct book *e;
  62.       
  63.       if (size==1000000)
  64.       printf("\n Телефонная книга заолнена. Невозможно добавить. ");
  65.       else
  66.       {
  67.       temp=1000000-size;
  68.       printf("\n Вы можете добавить %d записей. \n",temp);
  69.       printf("\n Сколько записей вы хотите добавить? : ");
  70.       do
  71.       {
  72.           ad=-1;
  73.           fflush(stdin);
  74.           scanf("%d",&ad);
  75.           if (ad<1||ad>(1000000-size))
  76.           printf(" Неверный ввод. Пожалуйста, повтори : ");
  77.       }
  78.       while(ad<1||ad>(1000000-size));
  79.       
  80.       e = (struct book *)realloc(*p,(size+ad)*sizeof(struct book));
  81.       if (!e)
  82.       {
  83.              printf("\n Недостаточно памяти! Попробуйте добавить меньше записей! ");
  84.              ad=0;
  85.       }
  86.       else
  87.       {
  88.              *p=e;
  89.       
  90.              for (i=size; i<(size+ad); i++)
  91.              {
  92.                   printf(" %d запись: \n",i-size+1);
  93.                   printf(" Введи десятизначный номер: ");
  94.                   do
  95.                   {
  96.                       e[i].nom=-1;
  97.                       fflush(stdin);
  98.                       scanf("%lf",&e[i].nom);
  99.                       if (e[i].nom<1000000000.0||e[i].nom>9999999999.0)
  100.                       printf(" Неверный ввод. Пожалуйста, повтори : ");
  101.                   }         
  102.                   while(e[i].nom<1000000000.0||e[i].nom>9999999999.0);
  103.           
  104.                   printf(" Введи комментарий (максимум 20 символов, 1 слово): ");
  105.                   scanf("%s",&e[i].com);
  106.                   printf("\n");
  107.              }
  108.       }
  109.       }
  110.       return ad;
  111.  }
  112.        
  113.        
  114.  void outputrecords(struct book e[],int size)//вывод записей на экран
  115.  {
  116.        int i;
  117.       
  118.        printf("\n\n 'Телефонная книга' : \n");
  119.        printf("---------------------------------------------------");
  120.        printf("\n|  # |   Тел. номер          |        Комментарии |\n");
  121.        printf("---------------------------------------------------");
  122.        for(i=0; i<size; i++)
  123.        {
  124.                 printf("\n");
  125.                 printf("| %2d.|   %.f          |%20s|",i+1,e[i].nom,e[i].com);
  126.        }
  127.        printf("\n---------------------------------------------------");
  128.  }   
  129.  
  130.  
  131.  void sortbynum(struct book e[],int size)//сортировка записей по номерам телефонов
  132.  {
  133.       struct book temp;
  134.       int i,j, min_i;
  135.       
  136.       for(i=0; i<size-1; ++i)
  137.       {
  138.           min_i=i;
  139.           for(j=i+1; j<size; ++j)
  140.           {
  141.               if(e[j].nom<e[min_i].nom)
  142.               {
  143.               min_i=j;
  144.               }
  145.           }
  146.           
  147.           temp=e[i];
  148.           e[i]=e[min_i];
  149.           e[min_i]=temp;
  150.       }
  151.  }
  152.  
  153.  
  154.  void sortbycom(struct book e[],int size)//сортировка записей по комментариям
  155.  {
  156.       struct book temp;
  157.       int i,j, min_i;
  158.       
  159.       for(i=0; i<size-1; ++i)
  160.       {
  161.           min_i=i;
  162.           for(j=i+1; j<size; ++j)
  163.           {
  164.               if(strcmp(e[j].com,e[min_i].com)<0)
  165.               {
  166.               min_i=j;
  167.               }
  168.           }
  169.           
  170.           temp=e[i];
  171.           e[i]=e[min_i];
  172.           e[min_i]=temp;
  173.       }
  174.  }
  175.       
  176.       
  177.  void search(struct book e[],int size)//поиск по критерию
  178.  {
  179.       double z;
  180.       int i,v;
  181.       char search[20];
  182.       
  183.       printf(" Поиск данных. \n\n");
  184.       printf(" Будем искать: \n");
  185.       printf("   '1' - по номерам телефонов; \n");
  186.       printf("   '2' - по комментариям; \n\n");
  187.       printf("   Твой выбор: ");
  188.       do
  189.       {
  190.          v=-1;        
  191.          fflush(stdin);
  192.          scanf("%d",&v);
  193.          if (v<1||v>2)
  194.          printf(" Повтори : ");
  195.       }
  196.       while (v<1||v>2);
  197.       
  198.       if (v==1)
  199.       {
  200.          printf("\n Введи десятизначный номер: ");
  201.          do
  202.          {
  203.              z=-1;
  204.              fflush(stdin);
  205.              scanf("%lf",&z);
  206.              if (z<1000000000.0||z>9999999999.0)
  207.              printf(" Неверный ввод. Пожалуйста, повтори : ");
  208.          }         
  209.          while(z<1000000000.0||z>9999999999.0);
  210.  
  211.          printf("\n Результаты поиска: \n\n");
  212.          printf("---------------------------------------------------");
  213.          printf("\n|  # |   Тел. номер          |        Комментарии |\n");
  214.          printf("---------------------------------------------------");
  215.          for (i=0; i<size; i++)
  216.          {
  217.              if (e[i].nom==z)
  218.              {
  219.                  printf("\n");
  220.                  printf("| %2d.|   %.f          |%20s|",i+1,e[i].nom,e[i].com);
  221.              }
  222.          }
  223.        }
  224.          
  225.        else
  226.        {
  227.           printf(" Введи комментарий (максимум 20 символов, 1 слово): ");
  228.           scanf("%s",&search);
  229.           printf("\n Результаты поиска: \n\n");
  230.           printf("---------------------------------------------------");
  231.           printf("\n|  # |   Тел. номер          |        Комментарии |\n");
  232.           printf("---------------------------------------------------");
  233.           for (i=0; i<size; i++)
  234.           {
  235.              if (strcmp(e[i].com,search)==0)
  236.              {
  237.                  printf("\n");
  238.                  printf("| %2d.|   %.f          |%20s|",i+1,e[i].nom,e[i].com);
  239.              }
  240.           }
  241.        }
  242.            
  243.  }
  244.  
  245.  
  246.  void write(struct book e[],int size,FILE *fstream,int id)//запись телефонной книги в текстовый файл
  247.  {
  248.       int i;
  249.       char name[20];
  250.       
  251.       if (id!=1)
  252.       {
  253.             printf("\n\n Нет данных для записи!\a\n");
  254.             printf(" Сначала введи данные - клавиша '1'. Или прочти данные из файла - клавиша '7'. \n\n");
  255.       }
  256.       else
  257.       {
  258.             printf("\n Введи имя текстового файла (*.txt) or (*.doc) : ");
  259.             scanf("%s",&name);
  260.             fstream=fopen(name,"wt+");
  261.             
  262.             for(i=0; i<size; i++)
  263.               fprintf(fstream,"%.0lf  %s\n",e[i].nom,e[i].com);
  264.                 
  265.             fclose(fstream);
  266.             sleep(1500);
  267.             printf("\n\n Запись данных в файл прошла успешно! \a\n");
  268.             printf("\n\n Нажми 'Enter' для продолжения... ");  
  269.       }
  270.  }
  271.  
  272.  
  273.  int read(struct book **p,int size,FILE *fstream)//чтение телефонной книги из текстового файла
  274.  {
  275.        int i;
  276.        double x;
  277.        char name[15],y[20];
  278.        struct book *e;
  279.                 
  280.        printf("\n Введи имя текстового файла для открытия (*.txt) or (*.doc) : ");
  281.        scanf("%s",&name);
  282.        fstream=fopen(name,"rt+");      
  283.        if (fstream==NULL)
  284.        {
  285.            printf(" Ошибка! Некорректное имя файла. \n");
  286.        }             
  287.        else
  288.        {
  289.            size=0;
  290.            while(fscanf(fstream,"%lf %s",&x,&y)==2)
  291.               size++;
  292.            printf("\n Всего записей считано: %d ",size);
  293.            printf("\n\n");  
  294.            fclose(fstream);
  295.            
  296.            if (*p)
  297.            {
  298.               free(*p);
  299.               *p=NULL;
  300.            }
  301.                *p=malloc(size*sizeof(struct book));
  302.                if (!(*p))
  303.                {
  304.                          printf("\n В файле слишком много записей. Невозможно выделить память!");
  305.                          size=0;
  306.                }
  307.                else
  308.                e=*p;
  309.                fstream=fopen(name,"rt+");
  310.                
  311.                printf("\n Тел. номер          |         Комментарии\n");
  312.                printf("-------------------------------------------\n");
  313.                for(i=0; i<size; i++)
  314.                {
  315.                   fscanf(fstream,"%lf %s",&e[i].nom,&e[i].com);
  316.                   printf(" %.f          |%20s",e[i].nom,e[i].com);
  317.                   printf("\n");
  318.                }
  319.                 
  320.                fclose(fstream);
  321.                printf("\n Чтение из текстового файла прошло успешно! \a\n");
  322.                printf("\n Нажми 'Enter' для продолжения... ");
  323.        }
  324.        return size;
  325.  }
  326.  
  327.  
  328.  
  329.            
  330.  main()
  331.  {
  332.        struct book *array=NULL;
  333.        struct book rezarray[1000];
  334.        int n,c,yn,ny,w,identifier,ad,od,ot;
  335.        FILE* file;
  336.        
  337.        setlocale(LC_ALL,"rus");
  338.        
  339.        //rezerve(array,rezarray);
  340.  
  341.  do
  342.  {
  343.        
  344.        system("cls");
  345.        printf("\n Курсовое проектирование 'Сортировка списка номеров телефонов' \n");
  346.        printf(" Работа была выполнена: Кургузов В.В., группа 12-91, 2011 год \n\n");
  347.        printf("\n Выберите действие:\n");
  348.        printf(" ----------------------------------------\n");
  349.        printf(" | Ввести записи               ---- '1' |\n");
  350.        printf(" | Добавить еще записи         ---- '2' |\n");
  351.        printf(" | Вывести данные на экран     ---- '3' |\n");
  352.        printf(" | Сортировать данные          ---- '4' |\n");
  353.        printf(" | Поиск данных                ---- '5' |\n");
  354.        printf(" | Записать в текстовый файл   ---- '6' |\n");
  355.        printf(" | Считать из текстового файла ---- '7' |\n");
  356.        printf(" | Удалить все данные          ---- '8' |\n");
  357.        printf(" | О программе                 ---- '9' |\n");
  358.        printf(" | Выход                       ---- '0' |\n");
  359.        printf(" ----------------------------------------\n");
  360.        printf(" Твой выбор : ");
  361.        do
  362.        {
  363.             c=-1;
  364.             fflush(stdin);
  365.             scanf("%d",&c);
  366.             if (c<0||c>9)
  367.             printf(" Выбери заново : ");
  368.        }         
  369.        while(c<0||c>9);
  370.        
  371.        if (c==1)
  372.        {
  373.                 system("cls");
  374.                 printf("\n Точно хотите ввести записи? Все несоханенные до этого записи будут удалены. \n");
  375.                 printf("\n   1 - да; \n");
  376.                 printf("   2 - нет; \n\n");
  377.                 printf(" Твой выбор: ");
  378.                 do
  379.                       {
  380.                           ny=-1;
  381.                           fflush(stdin);
  382.                           scanf("%d",&ny);
  383.                           if (ny<1||ny>2)
  384.                           printf(" Неверный ввод. Пожалуйста, повтори : ");
  385.                       }         
  386.                       while(ny<1||ny>2);
  387.                 
  388.                 if (ny==1)
  389.                 {
  390.                 printf("\n Введи колличество записей в телефонной книге <1000000 : ");//number of records
  391.                 do
  392.                 {
  393.                       n=-1;        
  394.                       fflush(stdin);
  395.                       scanf("%d",&n);
  396.                       if (n>1000000||n<1)
  397.                       printf(" Неверный ввод. Пожалуйста, повтори: : ");
  398.                 }
  399.                 while (n>1000000||n<1);
  400.                 if (n>20)
  401.                 {
  402.                       printf("\n Точно хотите ввести такое колличество записей? \n\n");
  403.                       printf("   1 - да; \n");
  404.                       printf("   2 - нет; \n\n");
  405.                       printf(" Выбор: ");
  406.                       do
  407.                       {
  408.                           yn=-1;
  409.                           fflush(stdin);
  410.                           scanf("%d",&yn);
  411.                           if (yn<1||yn>2)
  412.                           printf(" Неверный ввод. Пожалуйста, повтори : ");
  413.                       }         
  414.                       while(yn<1||yn>2);
  415.                       
  416.                       if (yn==1)
  417.                       {
  418.                       printf("\n");
  419.                       inputrecords(&array,n);
  420.                       }
  421.                 }
  422.                 else
  423.                 inputrecords(&array,n);  
  424.                 identifier=1;
  425.                 }
  426.                           
  427.        }
  428.        
  429.        if (c==2)
  430.        {
  431.                 system("cls");
  432.                 if (identifier!=1)
  433.                 {
  434.                     printf("\n Сначала введи данные - клавиша '1'. Или прочти данные из файла - клавиша '7'. \n\n");
  435.                     printf("\n\n Нажми 'Enter' для продолжения... ");
  436.                 }
  437.                 else
  438.                 {
  439.                     ad=add(&array,n,ad);
  440.                     n=n+ad;
  441.                 }
  442.                 getch();
  443.        }
  444.        
  445.        if (c==3)
  446.        {
  447.                 system("cls");
  448.                 if (identifier!=1)
  449.                 {
  450.                     printf("\n\n !Данные недоступны!\a\n");
  451.                     printf(" Сначала введи данные - клавиша '1'. Или прочти данные из файла - клавиша '7'. \n\n");
  452.                 }
  453.                 else
  454.                 {
  455.                     outputrecords(array,n);
  456.                     printf("\n\n Нажми 'Enter' для продолжения... ");
  457.                 }
  458.                 getch();
  459.        }
  460.        
  461.        if (c==4)
  462.        {
  463.                 system("cls");
  464.                 if (identifier!=1)
  465.                 {
  466.                     printf("\n\n !Данные недоступны!\a\n");
  467.                     printf(" Сначала введи данные - клавиша '1'. Или прочти данные из файла - клавиша '7'. \n\n");
  468.                     printf("\n\n Нажми 'Enter' для продолжения... ");
  469.                 }
  470.                 else
  471.                 {
  472.                     printf(" По какому полю произвести сортировку? \n\n");
  473.                     printf("   1 - по номерам телефонов; \n");
  474.                     printf("   2 - по комментариям; \n\n");
  475.                     printf(" Твой выбор: ");
  476.                     do
  477.                     {
  478.                        od=-1;
  479.                        fflush(stdin);
  480.                        scanf("%d",&od);
  481.                        if (od<1||od>2)
  482.                        printf(" Неверный ввод. Пожалуйста, повтори : ");
  483.                     }         
  484.                     while(od<1||od>2);
  485.                     
  486.                     if (od==1)
  487.                     sortbynum(array,n);
  488.                     else
  489.                     sortbycom(array,n);
  490.                     
  491.                     printf("\n\n Сортировка успешно завершена! \1\a\n");
  492.                     printf("\n\n Нажми 'Enter' для продолжения... ");
  493.                 }
  494.                 getch();
  495.        }   
  496.        
  497.        if (c==5)
  498.        {
  499.                 system("cls");
  500.                 if (identifier!=1)
  501.                          {
  502.                               printf("\n\n !Данные недоступны!\a\n");
  503.                               printf(" Сначала введи данные - клавиша '1'. Или прочти данные из файла - клавиша '7'. \n\n");
  504.                               printf("\n\n Нажми 'Enter' для продолжения... ");
  505.                          }
  506.                          else
  507.                          search(array,n);
  508.                 getch();
  509.        }
  510.        
  511.        if (c==6)
  512.        {
  513.                 system("cls");
  514.                 write(array,n,file,identifier);
  515.                 getch();
  516.        }
  517.        
  518.        if (c==7)
  519.        {
  520.                 system("cls");
  521.                 printf("\n Точно хотите считать записи? Все несоханенные до этого записи будут удалены. \n");
  522.                 printf("\n   1 - да; \n");
  523.                 printf("   2 - нет; \n\n");
  524.                 printf(" Твой выбор: ");
  525.                 do
  526.                       {
  527.                           w=-1;
  528.                           fflush(stdin);
  529.                           scanf("%d",&w);
  530.                           if (w<1||w>2)
  531.                           printf(" Неверный ввод. Пожалуйста, повтори : ");
  532.                       }         
  533.                       while(w<1||w>2);
  534.                 if (w==1)
  535.                 {      
  536.                     n=read(&array,n,file);
  537.                     if (n>0)
  538.                     identifier=1;
  539.                 };
  540.                 getch();
  541.        }
  542.        
  543.        if (c==8)
  544.        {
  545.                 system("cls");
  546.                 
  547.                 if (identifier!=1)
  548.                 printf("\n Нечего удалять! ");
  549.                 else
  550.                 {
  551.                     printf(" Точно хотите удалить все записи из телефонной книги? \n\n");
  552.                     printf("   1 - да; \n");
  553.                     printf("   2 - нет; \n\n");
  554.                     printf(" Твой выбор: ");
  555.                     do
  556.                     {
  557.                           ot=-1;
  558.                           fflush(stdin);
  559.                           scanf("%d",&ot);
  560.                           if (ot<1||ot>2)
  561.                           printf(" Неверный ввод. Пожалуйста, повтори : ");
  562.                     }         
  563.                     while(ot<1||ot>2);
  564.                 
  565.                     if (ot==1)
  566.                     {
  567.                           sleep(1500);
  568.                           printf(" Все данные успешно удалены! \1 \n");
  569.                           free(array);
  570.                           array=NULL;;
  571.                           identifier=0;
  572.                     }
  573.                     else
  574.                     {
  575.                           printf(" Данные не были удалены! ");
  576.                           identifier=1;
  577.                     }
  578.                 }
  579.                 getch();
  580.        }
  581.        
  582.        if (c==9)
  583.        {
  584.                 system("cls");
  585.                 printf("\n О ПРОГРАММЕ : \n\n\n");
  586.                 printf(" С помощью этой программы вы можете: \n\n");
  587.                 printf(" 1) Создавать базу данных 'Телефонная книга'; \n");
  588.                 printf(" 2) При необходимости добавлять новые данные; \n");
  589.                 printf(" 3) Выводить телефонный справочник на экран; \n");
  590.                 printf(" 4) Сортировать телефонный справочник по номерам; \n");
  591.                 printf(" 5) Осуществлять поиск по уже существующим данным; \n");
  592.                 printf(" 6) Записывать телефонный справочник в текстовый файл формата txt или doc; \n");
  593.                 printf(" 7) Считывать телефонный справочник из текстового файла; \n");
  594.                 printf(" 8) Удалять все текущие данные из телефонного справочника.");
  595.                 printf("\n\n\n Большое спасибо за чтение и использование! \1");
  596.                 printf("\n\n\n Нажми 'Enter' для продолжения... ");
  597.                 getch();
  598.        }
  599.                 
  600.                   
  601.  }               
  602.  while(c!=0);    
  603.  }         

PAGE   \* MERGEFORMAT 8


 

А также другие работы, которые могут Вас заинтересовать

65464. МАСООБМІННІ ПРОЦЕСИ В АНОДНО-МЕМБРАННОМУ БЛОЦІ ПАЛИВНОГО ЕЛЕМЕНТА 839 KB
  Мета дисертаційної роботи встановити вплив масообмінних процесів на швидкість електроокиснення водню в анодномембранному блоці АМБ паливного елемента. Для досягнення поставленої мети необхідно вирішити наступні завдання...
65465. Методика навчання інформаційних систем і технологій майбутніх учителів економіки 219.5 KB
  Особливо важливим є вирішення питання якісної професійної підготовки студентів економічних спеціальностей педагогічних університетів які повинні володіти не тільки сучасними інформаційними системами і технологіями ІСіТ в економіці а й методикою їх навчання...
65466. ЕКОЛОГІЧНІ ОСОБЛИВОСТІ ФУНКЦІОНУВАННЯ АГРОЦЕНОЗУ ПШЕНИЦІ ОЗИМОЇ В УМОВАХ ПОЛІССЯ 1.36 MB
  Відповідно до мети було сформульовано наступні завдання: проаналізувати в умовах Полісся стан основних компонентів агроценозу пшениці озимої ґрунту мікробного ценозу фітоценозу за різних строків сівби культури та внесених норм мінеральних добрив...
65467. ПОЛЕЗАХИСНА ЕФЕКТИВНІСТЬ СИСТЕМИ ЛІСОВИХ СМУГ В УМОВАХ ПРАВОБЕРЕЖНОГО ЛІСОСТЕПУ 1.05 MB
  Зазначена кількість створених лісових насаджень є не тільки недостатньою але й в більшості випадків не відповідає сучасним науковим підходам і баченням даної проблеми в цілому.
65468. Вплив холодної деформації волочінням на властивості тонких термопарних дротів 917 KB
  Найбільш поширеним безвідходним способом обробки циліндричних металевих заготовок тиском є холодне волочіння яке дозволяє звести до мінімуму або повністю виключити необхідність обробки деталей різанням. Подальший розвиток методів холодного волочіння та ширше...
65469. ІНТЕЛЕКТУАЛІЗАЦІЯ ПРАЦІ У СТРАТЕГІЇ ІННОВАЦІЙНОГО РОЗВИТКУ ЕКОНОМІКИ УКРАЇНИ 201 KB
  Інтелектуалізація праці завжди була тією рушійною силою, яка надавала певного змісту господарській діяльності людини, визначала характер економічного зростання і ступінь розвитку економіки. Поступове підвищення ролі переважно інтелектуальної, творчої, складної компоненти змісту праці...
65470. ІНФОРМАЦІЙНА ТЕХНОЛОГІЯ ФРАКТАЛЬНОГО КОДУВАННЯ В ТЕЛЕКОМУНІКАЦІЙНИХ МЕРЕЖАХ ВІДЕОСПОСТЕРЕЖЕННЯ 181.5 KB
  Не завжди вирішують завдання і методи кодування відеопотоків які використовуються в сучасних системах: в одних методах наприклад ДКП ступінь стискування виявляється недостатньою в інших наприклад фрактальних на заваді стає неприпустимо великий час кодування.
65471. Наукові і технологічні основи створення та керованого функціонування епоксидних композитів з різним ступенем наповнення 298 KB
  Епоксидні композиційні матеріали ЕКМ та покриття на їх основі набули широкого застосування у світовій практиці для захисту технологічного устаткування деталей машин і механізмів від зношування корозії перепадів температур в умовах сухого фрикційного контакту або впливу гідроабразивних середовищ.
65472. КЕРУВАННЯ ПРОЦЕСОМ ПЕРЕНЕСЕННЯ ЕЛЕКТРОДНОГО МЕТАЛУ ЗАСТОСУВАННЯМ ІМПУЛЬСНИХ ЕЛЕКТРОМАГНІТНИХ ДІЙ ПРИ ДУГОВОМУ ЗВАРЮВАННІ 6.2 MB
  Дугове зварювання плавким електродом характеризується підвищеною продуктивністю та відносно легкою автоматизацією процесу чим пояснюється його широке використання у промисловості. При застосуванні даного способу зварювання існують проблеми підвищення якості зварних з’єднань...