Платежная ведомость предприятия
Рефераты >> Программирование и компьютеры >> Платежная ведомость предприятия

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

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

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

Фактические параметры – это те конкретные данные, которые передаются функции при каждом ее вызове.

Переменные, объявленные внутри функции, называются локальными. Под эти переменные (если только они не имеют описателя static – см. далее) память выделяется при каждом вызове функции и освобождается при ее завершении.

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

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

тип_функции имя_функции (спецификация_формальных_па­ра­метров);

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

Примеры:

void f( ); // функция не имеет параметров и не возвращает значение

extern double sqrt( double ); // внешняя функция с параметром и возвращаемым значением типа double

char* strcpy( char *to, const char *from); // функция имеет два параметра и возвращает указатель на char.

2. Решение экономической задачи

«Платежная ведомость предприятия»

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

Цель курсового проекта – разработка программы на языке Си++ для решения экономической задачи «Платежная ведомость предприятия». Реализована эта задача должна быть двумя путями: с использованием файлов и на базе динамических структур (односвязного списка). Программа должна обеспечивать:

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

2. Длительное хранение и корректировку этих данных (нужно создать файл для хранения исходных данных и предусмотреть возможность дополнения, изменения, удаления записей и их вывода на экран монитора или принтер).

3. Создание динамической структуры заданного типа (односвязный список), при этом данные должны вводиться в процессе диалога с клавиатуры.

4. Добавление новых элементов в созданную динамическую структуру или исключение существующих; корректировку элементов списка; вывод элементов динамической структуры на экран монитора или принтер в заданном порядке; сохранение структуры в файле и ее воссоздание.

Формула расчета и вид выходного документа указаны в таблице 2.1

Таблица 2.1

Фамилия

Зарплата, грн

Удержано, грн

Выдано, грн

1

2

.

F

Z

P

S=Z-P

 

Итого

S1

S2

S3

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

2.2 Разработка алгоритма решения задачи

Разрабатывать программу мы будем в среде программирования Borland C++ версии 5.2.

Так как программа у нас будет объемная и в наши задачи входит обучение модульному программированию мы разобьем программу на модули. Обязательно должен быть головной модуль и заголовочный. В головном модуле будет выводится шапка программы и основное меню. Заголовочный модуль будет содержать работу с файлами и односвязными списками. Но так как это тоже будет большой объем, мы разобьем заголовочный модуль на два модуля: один - работа с файлами, другой - работа со списком.

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

- cursovoi.cpp,

и двух заголовочных:

- f1.h,

- s1.h.

Теперь определимся с данными:

Исходными данными у нас являются :

-Фамилии работников (строковый тип),

-Заработная плата (вещественный тип),

-Удержано из заработной платы (целый тип),

и расчетные данные:

-Выдано заработной платы (вещественный тип).

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

Структура predpr и переменная ved типа predpr будут объявлены как глобальные переменные.

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

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

В С++ используются два типа файлов: текстовые и двоичные (бинарные). По умолчанию файлы открываются в текстовом режиме. Это означает, что при вводе из текстового файла последовательность символов "возврат каретки / перевод строки " преобразуется в символ '\n' ; при выводе - наоборот. В процессе ввода - вывода производятся, как и в Паскале, преобразования данных из внутреннего (машинного) представления в символьное и наоборот.

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


Страница: