Логика работы программы. Схема алгоритма функции 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()

Рис. Схема алгоритма функции int main()

Рис. Схема алгоритма функции void NullWork(Worker [],Worker * [], const int)

Рис. Схема алгоритма функции int EnterMenu(const int)

Рис. Схема алгоритма функции bool ExtMm(Worker [],Worker [],const int)

схема алгоритма void mainmenu(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)

Рис. Схема алгоритма 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)

Похожие статьи




Логика работы программы. Схема алгоритма функции main() - Разработка консольного приложения на языке С++

Предыдущая | Следующая