Яндекс.Метрика

Последние материалы

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовой работе Решения прикладных задач с реализацией автоматизированной обработки экономической информации по дисциплине «Программирование»

Скачать:  

 

 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе

Решения прикладных задач с реализацией автоматизированной обработки экономической информации

 

по дисциплине «Программирование»

 

 

 

ЗАДАНИЕ

на курсовую работу по дисциплине  «Программирование»

 

 

Студент _________________          Группа ____________          Консультант_________________.

 

 

1.Тема курсовой работы: Решения прикладных задач с реализацией автоматизированной обработки экономической информации. Вариант

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

3. Требования к оформлению

3.1. Пояснительная записка должна быть оформлена в редакторе Microsoft® Word  в соответствии с требованиями  ГОСТ и СТП. 

3.2.В пояснительной записке должны содержаться следующие разделы:

1 Введение.

2 Постановка задачи

   2.1 Условия задачи

   2.2 Конечные цели решения задачи

   2.3 Формы выдачи результатов,  

   2.4 Описание используемых данных

 3 Анализ и исследование задачи:

3.1 Типы решения задачи

              3.2 Технические и программные средства для ее решения

              3.3 Математическая модель

4 Алгоритм решения задачи

4.1 Метод проектирования алгоритма

4.2 Блок-схема алгоритма

               4.3 Метод   тестирования

               4.4 Тесты для проверки работоспособности алгоритма

5 Создание программы

5.1  Дерево функций программы

5.2  Последовательность создания программы

5.3  Сценарий диалога программы

5.4  Описание используемых подпрограмм

6 Результаты тестовых расчетов и их анализ

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

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

8.1 Вызов программы.

8.2 Экранные формы.

8.3 Описание возможных результатов выполнения программы.

 

            Дата выдачи __________________.                            Дата окончания _________________

 

Руководитель ___________________________

Подпись

Оглавление

Аннотация. 4

Введение. 5

Постановка задачи. 6

Условия задачи. 6

Конечные цели решения задачи. 6

Формы выдачи результатов. 6

Описание используемых данных. 6

Задание. 7

Анализ и исследование задачи. 8

Типы решения задачи. 8

Технические и программные средства для её решения. 8

Математическая модель. 8

Алгоритм решения задачи. 11

Метод проектирования алгоритма. 11

Блок-схемы функций. 12

Метод тестирования. 18

Создание программы.. 20

Дерево функций. 20

Последовательность создания программы.. 21

Сценарий диалога программы.. 21

Описание используемых подпрограмм. 22

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

Список используемой литературы. 24

Приложение 1. Описание разработанных функций. 25

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

Приложение 3. Тестирование программы.. 31

 

 

 

Аннотация

Данная курсовая работа посвящена разработке и реализации программы на языке С++ с использованием класса статических массивов структур и текстовой базы данных «WORKER».

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

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

 

 

Постановка задачи.

Условия задачи.

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

1) Просмотр существующей базы данных (чтение данных осуществляется из файла);

2) Редактирование базы данных (с сохранением изменений в файле);

3) Дополнение базы данных новыми записями (с сохранением в файле);

4) Удаление записей из базы данных (с сохранением в файле);

5) Поиск в базе данных (по одному и двум поисковым признакам) с выводом на экране найденных записей или сообщения о неуспешном поиске;

6) Сортировку данных по заданному полю.

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

Конечные цели решения задачи.

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

Формы выдачи результатов.

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

Описание используемых данных.

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

structworker

char fam[l]

char dol[l]

intgod

 

-структура «WORKER»

-фамилия и инициалы сотрудника

-должность сотрудника

-год поступления

 

 

 

Задание

 

 Цель работы:

Описать структуру с именем WORKER, содержащую следующие поля:

 

Фамилия и инициалы сотрудника

Должность сотрудника

Год поступления

 

Написать программу, выполняющую следующие действия:

Описать структуру с именем WORKER, содержащую следующие поля:

□       фамилия и инициалы работника;

□       название занимаемой должности;

□       год поступления на работу.

Написать программу, выполняющую следующие действия:

□       ввод с клавиатуры данных в файл, состоящий из десяти структур типа

WORKER;

□       Загрузка и печать на экране данных из файла

□       Добавление записи

□       Удаление записи

□       Вывод на экран данных и результатов их обработки:

-        упорядоченные записи по алфавиту (по фамилиям);

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

-        поиск сотрудников по фамилиям, начинающимся с определенной буквы.

-        поиска сотрудников по должности.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Анализ и исследование задачи.

Типы решения задачи

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

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

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

(ввод, вывод, сортировка, поиск по определенным полям в таблице структуры)

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

 

Технические и программные средства для её решения

Для реализации технической стороны нашей задачи используется ноутбук ASUSN53JqIntel® Core ® i7-740 QM 1.7Ghz, ОЗУ 8ГБ с операционной системой Windows 7 HomePremium

Также устройства ввода: клавиатура, мышь.

И устройства вывода: дисплей

 

В качестве программных средств используется язык программирования BorlandC++ Builder 6.

 

 

 

 

Математическая модель

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

Сортировка простыми обменами, сортиро́вкапузырько́м (англ. bubblesort) — простой алгоритм сортировки. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Сложность алгоритма: O(n²).

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

Алгоритм состоит из повторяющихся проходов по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются N-1 раз или до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает — массив отсортирован. При каждом проходе алгоритма по внутреннему циклу, очередной наибольший элемент массива ставится на своё место в конце массива рядом с предыдущим наибольшим элементом, а наименьший элемент перемещается на одну позицию к началу массива («всплывает» до нужной позиции как пузырёк в воде, отсюда и название алгоритма).

На входе: массив A[N], состоящий из N элементов, с нумерацией от A[1] до A[N]

ЦИКЛ ДЛЯ J=1 ДО N-1 ШАГ 1

   ЦИКЛДЛЯI=1ДОN-JШАГ1

ЕСЛИ A[I]>A[I+1]ТООБМЕН                                            A[I],A[I+1]

СЛЕДУЮЩЕЕ I                                

 СЛЕДУЮЩЕЕ J                                

 

FOR J=1TO N-1 STEP 1

FOR I=1TO N-J STEP 1

IF A[I]>A[I+1]THEN SWAP A[I],A[I+1] NEXT I

NEXT J

 

Блок-схема 1 - Блок схема алгоритма пузырька

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

 Суть метода заключается в том, что последовательно просматривается массив, пока не будет найден нужный элемент массива. Последовательный поиск в среднем случае выполнит проверку 1/2n элементов. В наилучшем случае она выполнит проверку только одного элемента, а в наихудшем – n элементов. Если объем данных не велик, эта производительность будет приемлемой.

 

 

 

Алгоритм решения задачи.

Метод проектирования алгоритма.

Методы проектирования алгоритмов включают: нисходящее проектирование, модульность, структурное программирование.

 

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

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

  1. 1.    
    Функциональный. Используется для представления линейных алгоритмов. Описывается языком графических символов следующим образом:
  2. 2.    
    Циклический. Используется для представления циклических алгоритмов. Описывается языком графических символов одним из двух способов:
  3. 3.    
    Конструкция принятия двоичного решения. Применяется для представления разветвляющихся алгоритмов. Описывается языком графических символов следующим образом:

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

Блок-схемы функций

 

  1. 1.    

ввод file

 

открытие потока fin

 

Ввод x[n].fam, x[n].dol, x[n].god

 

  n=n+1

 

Ввод удачен?

 

n=n-1

 

возврат

 

закрытие потока fin

 

n=0

 

inputfile ()

 

нет

 

да


Ввод БД из txt файла

 

 

 

 

 

 

 

 

 

  1. 2.     Сохранение текущей БД в txt файл

 

outputfile()

 

ввод file

 

открытие потока fout

 

i=0

 

i<n

 

Выводизпотокаout x[i].fam, x[i]dol, x[i].god

 

i=i+1

 

возврат

 

да

 

нет

 

  1. 3.     Вывод текущей БД на экран

 

i<n

 

возврат

 

FAMILIA INICIALI   |         DOLJNOST        | GOD POSTUPLENIJA

 

i=i+1

 

i=0

 

output ()

 

Вывод

x[i].fam, x[i].dol, x[i].god

 

нет

 

да

 

  1. 4.     Добавление новой строки с данными в БД

 

add()

 

n==N?

 

Ввод x[n].fam, x[n].dol, x[n].god

 

x[n]=t

n++

 

 

возврат

 

output()

 

да

 

нет

 

  1. Удаление строки из БД

 

Номер удаленной строки

 

ввод j

 

j<1 || j>n

 

Нет такой строки

Повторите ввод

 

Удалить(y/n)?

 

Ввод ch

 

ch=y?

 

i=j

 

i<n?

 

x[i-1]=x[i]

n=n-1

 

Возврат

 

deletemarsh()

 

да

 

нет

 

нет

 

да

 

нет

 

да

  1. 6.     Cортировка БД по фамилиям сотрудников

 

sort_p()

 

x[i].fam[z]>

x[j].fam[z]?

 

z=0

 

ii=0..n-1

 

ij=i..n

 

меняем местами записи

 

Возврат

 

нет

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 7.     Информация о сотрудниках по стажу 

                                                 

poisk_ts()

Введите стаж

f=0

Вывод x[i].fam, x[i].dol, x[i].god

f++

2012-x[i].god>st?

возврат

i=0..n

f=0?

Нет таких сотрудников

нет

да

да

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 8.     Поиск сотрудников по первой букве фамилия 

poisk_num()

Введите первую букву фамилии

f=0

Выводзаписи

 

f++

x[i].fam[0]==ts?

возврат

i=0..n

f=0?

Нет такой записи

да

нет

да

нет

 

                                                 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 9.     Поиск сотрудников по должности 

                        

poisk_t()

Введите должность

f=0

Выводзаписи

 

f++

x[i].dol=dolj?

i=0..n

f=0?

Нет такой записи

возврат

нет

да

да

 

нет

Метод тестирования

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

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

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

Структурное тестирование.

Структурное тестирование называют также тестированием по «маршрутам», так как в этомслучае тестовые наборы формируют путем анализа маршрутов, предусмотренных алгоритмом.

Под маршрутами при этом понимают последовательности операторов программы, которыевыполняются при конкретном варианте исходных данных.

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

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

Структурный подход к тестированию имеет ряд недостатков. Так тестовые наборы,построенные по данной стратегии:

  • не обнаруживают пропущенных маршрутов;
  • не обнаруживают ошибок, зависящих от обрабатываемых данных, например, в операторе if (a - b) <eps - пропуск функции абсолютного значения abs проявится только, если а <b;
  • не дают гарантии, что программа правильна, например, если вместо сортировки по убыванию реализована сортировка по возрастанию.

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

Функциональное тестирование.

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

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

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

Мы будем использовать именно этот способ тестирования, так как он менее трудоемкий, чем метод «белого ящика» (структуный анализ).


 

Создание программы

Дерево функций

 

Функции

 

Сервисные

 

Вывод главного меню

 

Вывод

 

Основные

 

Работа с файлами

 

Создание файла

worker.txt

 

Закрытие файла

 

Работа с записями

 

Добавление новой записи

 

Удаление записи из таблицы

 

Сортировка по фамилиям сотрудников

 

Информация о сотрудниках

 

Поиск сотрудников по первой букве фамилии

 

Поиск сотрудников по должности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Последовательность создания программы

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

Сценарий диалога программы

 

 

0

 

1

 

2

 

3

 

4

 

5

 

6

 

7

 

8

 

9

 

10

 

11

 

№ вершины графа

Операция

0

Запуск программы

1

Меню программы

2

Создание файла

3

Вывод таблицы на экран

4

Сохранение таблицы в файл

5

Добавление записи

6

Удаление записи

7

Сортировка по фамилиям сотрудников

8

Информация о сотрудниках

9

Поиск сотрудников по первой букве фамилии

10

Поиск сотрудников по должности

11

Завершение работы программы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание используемых подпрограмм

Описание используемых подпрограмм приведено в приложении 1.

 

 


 

Заключение

 

В данной курсовой работе была разработана программа, позволяющая работать с базой данных «WORKER» в соответствии с поставленными требованиями. Программа включает в себя процедуры, обеспечивающие выполнение всех поставленных задач для работы с базой данных. Главное меню программы позволяет обеспечить доступ к функциям программы  и к сведениям, хранящимся в базе данных «WORKER».

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список используемой литературы.

  1. Б. Страуструп. Язык программирования С++, 3-е издпер. с англ. - М.: "Бином", СПб.: "Невский диалект", 1999. - 991 с., ил.
  2. Т.А. Павловская. Ю.А. Щупак С/C++. Программирование на языке высокого уровня. – СПб.: Питер,2007. – 461 с.: ил.
  3. Прата. Объектно-ориентированное программирование в C++. 2 изд. – ЭКСМО,  2007. -  336 с.: ил.
  4. Т.А. Павловская, Ю.А. Щупак. С/C++. Структурное программирование: Практикум. – СПб.: Питер, 2007. – 239 с.: ил.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение 1. Описание разработанных функций

 

Название функции

Назначение функции

voidoutputfile()

Сохранение текущей БД в txt файл

voidinputfile()

Ввод БД из txt файла

voidadd()

Добавление новой строки с данными в БД

voiddeleteworker()

Удаление строки из БД

voidoutput()

Вывод текущей БД на экран

voidsort_f()

Сортировка по фамилиям

voidpoisk_st()

Информация о сотрудниках постажу

voidpoisk_f()

Поиск сотрудников по первой букве фамилии

voidpoisk_d()

Поиск сотрудников по должности

 

 

Описание глобальных переменных:

structworker

char fam[l]

char dol[l]

int god

 

-структура «WORKER»

-фамилия и инициалы сотрудника

-должность сотрудника

-год поступления

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

#include<iostream.h>

#include<fstream.h>

#include<string.h>

#include<stdlib.h>

#include<conio.h>

#include<iomanip.h>

#include<vcl>

#include <locale.h>

constint l=30;

struct worker

{charfam[l], dol[l]; int god; };

constint N=100;

class work

{private: worker x[N];

public:

int n;

voidoutputfile();

voidinputfile();

void add();

voiddeleteworker();

void output();

voidsort_f();

voidpoisk_st();

voidpoisk_f();

voidpoisk_d();

};

 

int main()

{ work a;

a.n=0;

int j;

while(1)

{ cout<<"1. Zagruzka is faila.n";

cout<<"2. Vivodnaekran.n";

cout<<"3. Sokhranenietablici v fail.n";

cout<<"4. Dobavleniezapisi.n";

cout<<"5. Udaleniezapisi.n";

cout<<"6. Sortirovkapofamiliam.n";

cout<<"7. Vivodsotrudnikov so stajem.n";

cout<<"8. Poisksotrudnikovpofamilii.n";

cout<<"9. Poisksotrudnikovpodoljnosti.n";

cout<<"10. Vixod.nn";

cout<<"Vashvibor (1%10):";

cin>>j;

switch(j)

{ case 1: a.inputfile(); break;

case 2: a.output(); break;

case 3: a.outputfile();break;

case 4: a.add(); break;

case 5: a.deleteworker(); break;

case 6: a.sort_f();break;

case 7: a.poisk_st();break;

case 8: a.poisk_f();break;

case 9: a.poisk_d();break;

case 10: cout<<"Konecprogrammi."; getch(); exit(0);

default:cout<<"Net takogopunkta menu!n"; getch(); break;   }

                     }

}

 

void work::inputfile()

{ifstream fin;

char file[l];

cout<<"File name:"; cin>>file;

fin.open(file);

if(fin==NULL) {cout<<"Doesn't open.n"; getch(); exit(1);}

 n=0;

do{fin>>x[n].fam>>x[n].dol>>x[n].god;

n++;

}while(fin.good());

n--;

cout<<"File was inputted.n"; getch();

fin.close();

output();

}

 

void work::output()

{ inti;

cout<<"n-------------------------------------------------------------------------";

cout<<"n| N |   FAMILIA INICIALI   |         DOLJNOST        | GOD POSTUPLENIJA |n";

cout<<"-------------------------------------------------------------------------n";

for(i=0;i<n;i++)

     {cout<<"|"<<setw(3)<<i+1

<<"|"<<setw(22)<<setiosflags(ios::left)<<x[i].fam

<<"|"<<setw(25)<<setiosflags(ios::left)<<x[i].dol

<<"|"<<setw(18)<<setiosflags(ios::left)<<x[i].god<<"|"<<endl;

     }

cout<<"-------------------------------------------------------------------------n";

 

  }

 

 

void work::add()

{ worker t;

if(n==N) {cout<<"Massivperepolnen.n"; getch(); exit(0);}

cout<<"Familiaiiniciali:"; cin>>x[n].fam;

cout<<"Doljnost:"; cin>>x[n].dol;

cout<<"God postuplenia:"; cin>>x[n].god;

n++;

cout<<"Zapisdobavlena.n";

getch();

output();

}

 

void work::deleteworker()

{charch;

inti,j;

output();

cout<<"Nomerudalennoistroki:";

cin>>j;

if(j<1||j>n) {cout<<"Net takoistroki.n"; getch(); exit(0);}

cout<<setw(20)<<x[j-1].fam<<endl;

cout<<"Udalit?(y/n):"; cin>>ch;

if(ch=='y')

  {for(i=j;i<n;i++)

x[i-1]=x[i];

n--;

   }

cout<<"Zapisudalena.n"; getch();

}

 

void work::outputfile()

{ofstream out;

char file[l];

inti;

cout<<"File name:";

cin>>file;

out.open(file);

if (out==NULL) {cout<<"Ne naiden"; getch(); exit(1);}

for(i=0;i<n;i++)

  {out<<setw(22)<<setiosflags(ios::left)<<x[i].fam

<<setw(25)<<setiosflags(ios::left)<<x[i].dol

<<setw(18)<<setiosflags(ios::left)<<x[i].god<<endl;}

out.close();

cout<<"Fail soxranenn"; getch();

}

 

void work::sort_f()

{intfl,nn;

worker t;

int z=0,i,j;

chara,b;

for (i=0; i<n-1; i++)

{

for (j=i; j<n; j++)

   {

for (z=0; z<5; z++)

{  a=x[i].fam[z]; b=x[j].fam[z];

if (a<b) goto m1;

else if (a>b) { t=x[i]; x[i]=x[j]; x[j]=t; goto m1;}

        }

        m1:;

  }

}

output();

}

 

void work::poisk_st()

{inti;

intstaj;

cout<<"Vveditestajsotrudnika:"; cin>>staj;

int f=0;

for(i=0;i<n;i++)

if((2012-x[i].god)>staj)

{ if(f==0) cout<<"Sotrudniki:"<<endl;

cout<<setiosflags(ios::left)<<setw(22)<<x[i].fam<<setw(25)<<x[i].dol<<setw(10)<<x[i].god<<endl;

f++;

}getch();

if(f==0) {cout<<"Net takixsotrudnikov.n"; getch();}

}

 

void work::poisk_f()

{inti;

charts;

cout<<"Vveditepervujubukvufamiliisotrudnika:"; cin>>ts;

int f=0;

for(i=0;i<n;i++)

if(x[i].fam[0]==ts) {

if(f==0){cout<<"n-------------------------------------------------------------------------";

cout<<"n| N |   FAMILIA INICIALI   |         DOLJNOST        | GOD POSTUPLENIJA |n";

cout<<"-------------------------------------------------------------------------n";}

cout<<"|"<<setw(3)<<i+1

<<"|"<<setw(22)<<setiosflags(ios::left)<<x[i].fam

<<"|"<<setw(25)<<setiosflags(ios::left)<<x[i].dol

<<"|"<<setw(18)<<setiosflags(ios::left)<<x[i].god<<"|"<<endl;

f++;

     }

if(f!=0) cout<<"------------------------------------------------------------------------n";

if(f==0) cout<<"Net takixsotrudnikov.n"; getch();

}

 

 

void work::poisk_d()

{inti;

char d[l];

cout<<"Vveditedoljnost:"; cin>>d;

int f=0;

for(i=0;i<n;i++)

if(strcmp(x[i].dol,d)==0) {

if(f==0){cout<<"n-------------------------------------------------------------------------";

cout<<"n| N |   FAMILIA INICIALI   |         DOLJNOST        | GOD POSTUPLENIJA |n";

cout<<"-------------------------------------------------------------------------n";}

cout<<"|"<<setw(3)<<i+1

<<"|"<&

Добавить комментарий