Логика работы программы. Схема алгоритма функции main() - Разработка консольного приложения на языке С++
Исходя из того, что в программе необходимо предусмотреть запись базы в файл, вытекает следующее:
- - у пользователя должна быть возможность изначально выбрать один из двух вариантов: либо работать с базой, записанной в файл, либо создать новую базу и работать с ней; - меню для работы с базой, собственно как и все действия над ней, должно быть одинаковым вне зависимости от того, работает пользователь с вновь созданной базой, или же с базой из файла.
Исходя из этого, следует, что нам необходимо минимум 2 меню:
№1 - выбор варианта работы с базой;
№2 - выбор действия над базой.
Меню №1 можно оформить в функции "main()".Второе меню логичнее оформить в виде отдельной функции, т. к. его вызов происходит как минимум из двух точек программы.
Схема меню №1:
--------------------------------
МЕНЮ
- -------------------------------- 1: Создать новую базу сотрудников; 2: Открыть существующую базу; 3: Выход из программы --------------------------------
Данное меню организовано в функции "main()". В начале программы объявляются массивы структур и указателей. Далее вызывается следующая функция:
Void NullWork(Worker work [],Worker *loc_number [],const int n).
Данная функция присваивает нулевые значения полям структур, массив которых создается в начале программы, а также связывает массив указателей и массив структур. В качестве параметров принимает массив структур, массив указателей на структуры и целое число, которое является размером массива.
Далее пользователю предлагается выбрать один из 3-х пунктов меню №1. Корректность ввода пользователя проверяет следующая функция:
Int EnterMenu(const int size_menu).
Принимает целое число - соответствующее последнему пункту меню, из которого вызывается. Возвращает целое число - соответствующее пункту меню, или 0 в случае некорректного ввода.
В случае выбора пункта №3 меню №1происходит выход из программы.
В случае выбора пункта №2 меню №1вначале происходит вызов функции:
Bool ExtMm(Worker work [],Worker *loc_number [],const int n).
Данная функция запрашивает пользователя ввести имя файла, в котором сохранена база. Далее ведется поиск файла. В случае успеха, функция копирует содержимое файла в массив структур, созданный в начале программы, и сортирует массив указателей в соответствии с фамилиями сотрудников. Возвращаемое значение - true. В случае неудачного поиска возвращаемое значение - false. В качестве параметров принимает массив структур, массив указателей на структуры и целое число, которое является размером массива.
В случае выбора пункта №1 или пункта №2 меню №1 управление в конечном итоге передается функции:
Void MainMenu(Worker [],Worker * [],const int).
Данная функция выводит на экран и обрабатывает меню №2. В качестве параметров принимает массив структур, массив указателей на структуры и целое число, которое является размером массива. Из этой функции происходит вызов функций, соответствующих определенным пунктам меню. В конце этой функции происходит "обнуление" полей массива структур, чтобы можно было использовать его для создания новой базы.
Рис. Схема алгоритма функции int main()
Рис. Схема алгоритма функции void NullWork(Worker [],Worker * [], const int)
Рис. Схема алгоритма функции int EnterMenu(const int)
Рис. Схема алгоритма функции bool ExtMm(Worker [],Worker [],const int)
Рис. Схема алгоритма void MainMenu(Worker [],Worker * [],const int)
Схема меню №2:
------------------------------
ОСНОВНОЕ МЕНЮ
- ------------------------------ 1: Добавить сотрудника в базу; 2: Удалить сотрудника из базы; 3: Информация о сотрудниках; 4: Сохранить базу сотрудников; 5: Назад; ------------------------------ 1: Добавить сотрудника в базу - вызов функции:
Void AddMm(Worker work [],Worker *loc_number [],const int n).
Принимаемые параметры: массив структур, массив указателей на структуры и целое число, которое является размером массива. Функция ищет свободное место в массиве структур. В случае удачного поиска, функция запрашивает ввод фамилии и зарплаты сотрудника, после чего записывает данные в соответствующие поля свободной структуры. Если же поиск положительного результата не дал, то выводится соответствующее сообщение, после чего функция заканчивает свою работу. После записи функция производит сортировку массива указателей. Для этого вызывается дополнительная функция:
Bool SortWork(char str1 [],char str2 []).
В качестве параметров - две строки (фамилии сотрудников) которые необходимо сравнить. Возвращает "true", если str1 []> str2 [],или "false", если str1 []<= str2 [].
2: Удалить сотрудника из базы - вызов функции:
Void DelMm(Worker *loc_number [],const int n).
Принимаемые параметры: массив указателей на структуры и целое число, которое является размером массива. Функция предлагает пользователю ввести фамилию сотрудника, которого он хочет удалить из базы, и ищет его в массиве структур. В случае удачного поиска, функция удаляет информацию из соответствующих полей структуры, а полю "bе" присваивает значение "false". Если же поиск положительного результата не дал, то выводится соответствующее сообщение, после чего функция заканчивает свою работу.
4: Сохранить базу сотрудников - вызов функции:
Void SaveMm(Worker work [],const int n).
Принимаемые параметры: массив структур и целое число, которое является размером массива. Функция запрашивает пользователя ввести имя файла, после чего записывает в него массив структур. Если файл существует, он переписывается, если не существует - создается.
5: Назад - вызов функции:
Bool ExitMm(bool save).
Суть данной функции в том, чтобы убедиться: сохранял ли пользователь базу в файл, или нет. Таким образом, можно предупредить потерю данных. Дополнительная переменная "bool save" принимает значение "true" лишь в том случае, когда непосредственно перед выходом из меню №2 был выбран пункт меню "4: Сохранить базу сотрудников". В противном случае ее значение "false". В зависимости от того, какое значение имеет переменная "bool save", происходит либо выход из меню, либо вывод сообщения о том, что база не сохранена и предложение либо "назад" в меню, либо" выход" из меню: программа алгоритм функция листинг
- ------------------ 1: Назад; 2: Выход; ------------------ 3: Информация о сотрудниках - вызов функции:
Void InformMm(Worker *loc_number [],const int n).
Данная функция выводит на экран и обрабатывает следующее меню:
-----------------------------------
МЕНЮ
- ----------------------------------- 1: Вывод сотрудников на экран; 2: Суммарный заработок сотрудников; 3: Сотрудник с наибольшей зарплатой; 4: Назад; -----------------------------------
Возможности этой функции таковы:
- - вывод отсортированного по фамилиям списка сотрудников с их зарплатами на экран; - вывод на экран суммарного заработка сотрудников; - вывод на экран сотрудника с наибольшей зарплатой.
Рис. Схема алгоритма void AddMm(Worker [],Worker * [],const int)
Рис. Схема алгоритма bool SortWork(char str1 [],char str2 [])
Рис. Схема алгоритма void DelMm(Worker * [],const int)
Рис. Схема алгоритма void SaveMm(Worker [],const int)
Рис. Схема алгоритма bool ExitMm(bool save)
Рис. Схема алгоритма void InformMm(Worker * [],const int)
Похожие статьи
-
Описание разработанной структуры Описание структуры данных, используемой в программе, имеет вид: Struct Worker{ Char surname [20]; //фамилия Double...
-
Введение, Теоретические основы - Разработка консольного приложения на языке С++
Данная работа посвящена созданию своего рода базы данных на языке программирования С++. База данных содержит информацию о сотрудниках этого предприятия,...
-
Цель Работы - изучить основные способы работы с пользовательским типом данных "класс", его объектами, методами и способы доступа к ним. - Теоретические...
-
В данном разделе была разработана функциональная схема работы программного комплекса, которая в общем виде описывает состав комплекса, характер и виды...
-
Для того, чтобы строить диаграммы в соответствии с рисунком 2.7, необходимо реализовать алгоритм соединения двух объектов линией. Для отображения линии...
-
Разработка концептуальной схемы БД Концептуальная схема базы данных формируется путем перехода в Erwin с логического уровня на физический. Все отношения...
-
Работа программы представлена на рисунке 2.3 Рис. 2.3 Кодирование и тестирование программы Программа кодировалась на языке Си++, используя библотеку Qt5x...
-
Для запуска кластеризации пользователю нужно ввести 4 параметра: А) Название ODBC драйвера с созданным подключением. Как создать Такое подключение,...
-
В связи с увеличением числа сотрудников, работающих в компании, а также с расширением рабочего проекта, возникла проблема, связанная с версионностью...
-
Выполнение функции добавление человека в базу данных По нажатию на кнопку "Добавить" или сочетанием клавиш Ctrl+A произойдет добавление человека в базу...
-
Цель Работы - изучить одну из базовых концепций ООП, наследование классов в С++, заключающуюся в построении цепочек классов, связанных иерархически,...
-
Структура комплекса представлена на рисунке 3. Комплекс состоит из следующих модулей: - пользовательский интерфейс; - математическая модель; - библиотека...
-
Цель Работы - научиться использовать операции динамического выделения и освобождения памяти на примере работы с одномерными и двумерными массивами, а...
-
Для дальнейшей работы необходимо построить следующие алгоритмы: алгоритм работы программы в целом, и алгоритм обучения нейросети. Обобщенная схема...
-
В данном разделе выпускной квалификационной работы описывается процесс разработки программы извлечения КП текста, а также производится оценка качества ее...
-
В - Разработка программы на языке C++, реализующей игру "Морской бой"
ИСХОДНЫЙ КОД ЛИСТИНГА В данной программе четко прослеживаются группы функций, которые из-за выполняемых ними операций стоит объединить в классы....
-
ВВЕДЕНИЕ - Разработка программы на языке C++, реализующей игру "Морской бой"
Данная курсовая работа направлена на изучение принципов объектно-ориентированного программирования. Разработать программу на языке C++, реализующую игру...
-
В данной главе будут рассмотрены особенности работы приложения, описание классов и базы данных, а так же описаны возможности расширения приложения с...
-
Схема работы системы - Система автоматизированного разделения кода прикладных программ
Система представляет из себя 2 модифицированные копии одной первоначально программы, расположенные на разных серверах. Вызовы методов, перенесенных на...
-
ФУНКЦИИ И ПРОЦЕДУРЫ, Модуль Graph, Координаты, окна, страницы - Работа с языком Турбо Паскаль
Модуль Graph Модуль Graph Турбо Паскаля содержит около пятидесяти различных процедур и функции, предназначенных для работы с графическим экраном. В этом...
-
Постановка задачи на разработку программного обеспечения Для того чтобы предлагаемая схема была интегрирована в САПР, который не имеет функции интеграции...
-
Основная программа Построение интерполяционного многочлена Нахождение максимума функции методом дихотомии Вычисление значения заданной функции Создание и...
-
Вычислить приближенное значение определенного интеграла с подынтегральной функцией f(x) заданным методом и проверить точность вычислений по формуле...
-
С целью более удобного проектирования, настройки, и разделения отдельных исполняемых операций, программа построена на классах, которые взаимодействуют...
-
Тестирование, Анализ работы - Разработка программы на языке C++, реализующей игру "Морской бой"
Чтобы проверить корректность работы программы нужно провести тестирование. Бой с противником продолжается до полной победы, т. е. пока не будут...
-
СХЕМА АЛГОРИТМА РАБОТЫ ПРОГРАММЫ, ЗАКЛЮЧЕНИЕ - Основы программирования в операционной системе Unix
Блок-схема главной функции программы (main) изображена на рисунке 4. Рисунок 4 - блок-схема main. cpp Блок-схема модуля (Math. cpp) изображена на рисунке...
-
Наш интернет-магазин реализуем с использованием языка гипертекстовой разметки html, языка программирования php и СУБД MySQL. Главная часть...
-
ОСОБЕННОСТИ РЕАЛИЗАЦИИ АЛГОРИТМОВ - Структуры и алгоритмы обработки данных
В ходе выполнения курсовой работы, помимо основных алгоритмов, потребовалось реализовать также несколько вспомогательных, необходимых для корректной...
-
"WWWSQLDesigner" позиционируется как абсолютно бесплатный, доступный для пользователей, универсальный веб-редактор, значительно упрощающий процесс...
-
Разработаем алгоритм одного из основных методов, используемого в данной программе. Private void pictureBox1_MouseDown(objects sender, MouseEventArgs e)...
-
Алгоритм работы. В результате работы АИС генерируются три xml документа - два со структурой сравниваемых баз данных и один с результатами сравнения. В...
-
ОПИСАНИЕ ПРОГРАММЫ, ОСНОВНЫЕ ПЕРЕМЕННЫЕ И СТРУКТУРЫ - Структуры и алгоритмы обработки данных
ОСНОВНЫЕ ПЕРЕМЕННЫЕ И СТРУКТУРЫ Struct BD { char FIO[32]; // фоpмат <Фамилия>_<Имя>_<Отчество> int numberO; char dolzhnost[32]; char dateB[8]; }...
-
Технические требования Конфигурация компьютера, на котором разрабатывалось программное приложение: - процессор Athlon64 X2 3800+ 2000MHz; -...
-
Требования к приложению Результатом дипломного проекта "Калькулятор коммунальных услуг" должно служить достижение и решение поставленных задач: -...
-
Цель Работы - изучить приемы создания и использования шаблонов классов. - Теоретические сведения Достаточно часто встречаются классы, объекты которых...
-
Рис. 9 Пример B+ дерева, связывающего ключи 1-7 с данными d1-d7. Связи (выделены красным) позволяют быстро обходить дерево в порядке возрастания ключей....
-
Связь программ и программных модулей АС "Учета рождаемости" имеет модульную структуру. В начале работы запускается главное меню "Библиотека". Из этой...
-
Для перехода к описанию выбора средств разработки, необходимо выделить этапы работы программы. Алгоритм работы программы представлен ниже: Пользователь...
-
Служебная программа tty Позволяет узнать имя пользовательского терминала. Более точно, она выдает на стандартный вывод имя терминала, открытого в...
-
Для участков контура, которые задаются линейной функцией, используем метод линейной интерполяции по ЦДА. А для участков, которые описываются функцией для...
Логика работы программы. Схема алгоритма функции main() - Разработка консольного приложения на языке С++