Бакалавр
Дипломные и курсовые на заказ

Учёт назначения трудовой пенсии

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Данная программа будет очень полезна и востребована ещё долгое время. Это объясняется гибкостью самой программы и тем, каким образом рассчитывается пенсия. Её долговременное использование обеспечивает сама структура программы, расчёт пенсии происходит в отдельной функции, и если в государственную формулу расчёта трудовой пенсии будут внесены поправки, то эти поправки будет легко внести и в саму… Читать ещё >

Учёт назначения трудовой пенсии (реферат, курсовая, диплом, контрольная)

ЗАДАНИЕ ПО КУРСОВОЙ РАБОТЕ

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

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

a. Вход под администратором

b. Вход под пользователем

c. Выход

Учетные записи администратора и обычного пользователя должна содержать логин и пароль. Сведения об учетных записях должны храниться в отдельном файле, желательно предусмотреть механизм шифрования/дешифрования логинов/паролей.

3. Меню 2-го уровня:

— Для администратора:

a) Создание/открытие файла с данными

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

c) Редактирование записи

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

e) Просмотр всех данных в табличной форме

f) Различные процедуры поиска и фильтрации данных

g) Управление пользователями

h) Выход в меню 1-го уровня

— Для обычного пользователя:

a) Открытие файла с данными

b) Просмотр всех данных в табличной форме

c) Выполнение задачи

d) Различные процедуры поиска и фильтрации данных

e) Выход в меню 1-го уровня

4. Данные должны быть организованы в структуре (struct), не менее 7-ми полей, обязательно предусмотреть использование вложенных структур.

5. Предусмотреть обработку исключительных ситуаций

6. Построение программного кода должно соответствовать правилам, определенным в документе «Code Conventions» для соответствующего языка (технологии).

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

Индивидуальное задание

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

Данный курсовой проект написан на языке программирования СИ, с дополнительными функциями из языка программирования СИ++, с использованием компилятора Microsoft Visual Studio 2010.

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

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

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

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

1. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ОБ ИСПОЛЬЗУЕМЫХ АЛГОРИТМАХ

Алгоритм — это конечная последовательность инструкций исполнителю для выполнения некоторой работы или решения задачи.

Исполнитель — это компьютер или человек который принимает команды и может их выполнить.

Свойства алгоритмов:

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

— Точность (определенность). Каждая команда алгоритма должна определять однозначное действие исполнителя, чтобы при исполнении не задумываться, что означает команда;

— Понятность. Алгоритм, составленный для конкретного исполнителя, должен включать только те команды, которые входят в его систему команд;

— Конечность (результативность). Это значит, что исполнение алгоритма должно завершиться за конечное число шагов и обязательно с результатом;

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

Существует несколько типов алгоритмов. Основными различиями типов алгоритмов являются команды, которые используются при составлении алгоритмов (вычисление или присвоение, ветвление и повторение). Классически рассматривают три типа алгоритмов:

— Линейный;

— Разветвляющийся;

— Циклический.

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

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

Линейные алгоритмы.

Алгоритм, в котором выполняются все действия последовательно друг за другом, называется линейным.

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

Разветвляющиеся алгоритмы.

Всякий алгоритм составляется из простых команд, структурных команд и команд — обращений к вспомогательным алгоритмам. К структурным относится команда ветвления (Рисунок 1.1).

Рисунок 1.1 — Разветвляющийся алгоритм

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

Здесь <�серия 1> и <�серия 2> - некоторые последовательности линейных команд на положительной ветви (да) и отрицательной ветви (нет), условие — это арифметические действия, соединенные знаком отношения.

Циклические алгоритмы.

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

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

2. ОПИСАНИЕ ОРГАНИЗАЦИИ СТРУКТУР ХРАНИМЫХ ДАННЫХ

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

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

Основная структура курсовой работы выглядит так:

struct main

{

struct Man

{

char surname[30];

char name[30];

char patronymic [30];

int age;

int gender;

} Man;

struct Pension

{

int experience;

float individual_coefficient;

int pension;

} Pension;

} Main;

Где:

struct — ключевое слово, которое начинает определение структуры

main — имя структуры

char, int, float — типы данных элементов структуры

surname[30] — элемент структуры

Main, Man, Pension — структурные переменные Объявление структуры всегда должно начинаться с ключевого слова struct. Необязательно, чтобы структура имела имя, но тогда такая структура обязательно должна иметь структурные переменные, объявленные между закрывающей фигурной скобкой и точкой с запятой. Обязательно в объявлении структуры должны присутствовать фигурные скобочки, они обрамляют тело структуры, в котором объявляются её атрибуты (элементы).

Структурные переменные, при объявлении структуры, указывать необязательно.

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

Когда структура является членом другой структуры, то она называется вложенной.

В нашей главной структуре есть две вложенных структуры: Man и

Pension.

Сейчас рассмотрим каждый элемент структуре Man.

Surname, name, patronymic — это массивы из переменных типа char, в них хранятся фамилия, имя, отчество человека.

age — это переменная структуры типа int, в которой содержиться возраст человека.

gender — это переменная структуры типа int, в которую записывется определённое значение, зависящее от пола человека, двадцать если расчитывется пенсия для женщины, двадцать пять если расчитывается пенсия для мужчины. Данное значение поможет нам в расчёте пенсии далее.

Далее рассмотрим каждый элемент структуре Pension.

experience — это переменная структуры типа int, в которой содержиться стаж работы человека, далее влияющий на расчёт пенсии.

individual_coefficient — это переменная структуры типа float, в которой содержиться индивидуальный коэффициент человека. Это отношение средней зарплаты человека за определённый промежуток времни, к средней зарплате по стране в этот промежуток времени. И.к. помогает определить, какой бы была зарплата человека в данное время. Далее это показатель используется в формуле расчёта пенсии.

pension — это переменная структуры типа int, в которую записывается уже расчитанная пенсия человека.

3. СОЗДАНИЕ ПОЛЬЗОВАТЕЛЬСКИХ ФУНКЦИЙ ПРИЛОЖЕНИЯ

Функции меню

menu_Admin — функция меню для администратора. В меню всего десять пунктов.

menu_User — функция меню для пользователя. В меню содержится шесть пунктов.

Функции кодировки

code_Admin — функция делает проверку на правильность введённого пароля и логина для администратора.

code_User — функция делает проверку на правильность введённого пароля и логина для пользователя.

editing_code_Admin — функция даёт возможность изменить логин и пароль для админитратора.

editing_code_User — функция изменения логина и пароля для пользователя.

Вспомогательные функции и функции расчёта

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

calculation_of_pensions — функция расчёта пенсии. Расчитывает пенсию для человека в соответствии с введёнными данными.

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

view_file — функция просмотр информации из файла.

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

Add_in_File — функция добавления данных.

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

deleting_Data — функция удаления данных.

Функция удаляет данные по номеру введённого поля. Для начала происходит вызов функции считывания. Далее вызывается функция просмотра всех данных, для более удобной работы с программой. Вводится номер поля, данные, которого мы хотим удалить, по каким — либо причинам. После ввода номера из массива структур удаляется данный элемент массива, и массив перезаписывается в файла уже без удалённого элемента.

Sorting_Data — функция сортировки данных.

Функция, реализованная для администратора и для пользователя, данная функция сортирует данные хранящиеся в файле по пяти категориям:

— Фамилия;

— Возраст;

— Стаж;

— Индивидуальный коэффициент;

— Пенсия.

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

editing_Data — функция редактирования данных.

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

— Все данные;

— Фамилия;

— Возраст;

— Стаж;

— Индивидуальный коэффициент.

После редактирования, изменённые данные перезаписываются в файл.

search_data — функция поиска данных, реализованная для администратора и для пользователя. Функция осуществляет поиск данных по четырём категориям:

— Фамилия;

— Имя;

— Отчество;

— ФИО.

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

filtering — функция фильтрации данных, реализованная для администратора и для пользователя. Функция осуществляет фильтрацию от заданного значения «x» до заданного значения «y» по 9 категориям:

— Фамилия;

— Имя;

— Возраст;

— Стаж;

— Индивидуальный коэффициент;

— Пенсия;

— Фамилия и имя;

— Возраст и стаж;

— Индивидуальный коэффициент и пенсия.

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

4. СХЕМЫ АЛГОРИТМОВ РАБОТЫ ПРИЛОЖЕНИЯ

Функция main

Листинг программного кода:

int main ()

{

Done = FALSE;

system («color F0»);

setlocale (0, «russian»);

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

cout<<" Вход: n" ;

while (!Done)

{

cout<<" 1) Администраторn" ;

cout<<" 2) Пользовательn" ;

cout<<" 3) Выходn" ;

cout<<" Ваш выбор: n" ;

switch (_getch ())

{

case '1':

code_Admin ();

break;

case '2':

code_User ();

break;

case '3':

Done=TRUE;

break;

default:

cout<<" Такого пункта нет! Вы ввели неправильный вариант, попробуйте ввести ещё раз n" ;

}

}

Блок-схема Функция меню администратора Листинг программного кода:

int menu_User ()

{

int done = FALSE;

int vibor;

while (!done)

{

cout<<" n" ;

cout<<" 1) — Просмотреть данныеn" ;

cout<<" 2) — Сортировать данныеn" ;

cout<<" 3) — Поиск данныхn" ;

cout<<" 4) — Фильтрацияn" ;

cout<<" 5) — Изменение логина/ пароля n" ;

cout<<" 6) — Выход в меню 1-го порядка n" ;

cout<<" 7) — Выход из программы n" ;

cout<<" Ваш выбор: n" ;

switch (_getch ())

{

case '1':

system («cls»);

cout<<" 1) — Просмотреть данныеn" ;

view_file ();

break;

case '2':

system («cls»);

cout<<" 2) — Сортировать данныеn" ;

kol= schit ();

Sorting_Data ();

break;

case '3':

system («cls»);

cout<<" 3) — Поиск данныхn" ;

kol= schit ();

search_data ();

break;

case '4':

system («cls»);

cout<<" 4) — Фильтрацияn" ;

kol= schit ();

filtering ();

break;

case '5':

system («cls»);

cout<<" 5) — Изменение пароля/логинаn" ;

editing_code_User ();

break;

case '6':

system («cls»);

done = TRUE;

Done=FALSE;

break;

case '7':

system («cls»);

done = TRUE;

Done=TRUE;

break;

default:

cout<<" Такого пункта нет! Вы ввели неправильный вариант, попробуйте ввести ещё раз n" ;

}

}

return 0; }

Блок-схема:

Функция меню пользователя Листинг программного кода:

int menu_User ()

{

int done = FALSE;

int vibor;

while (!done)

{

cout<<" n" ;

cout<<" 1) — Просмотреть данныеn" ;

cout<<" 2) — Сортировать данныеn" ;

cout<<" 3) — Поиск данныхn" ;

cout<<" 4) — Фильтрацияn" ;

cout<<" 5) — Выход в меню 1-го порядка n" ;

cout<<" 6) — Выход из программы n" ;

cout<<" Ваш выбор: n" ;

switch (_getch ())

{

case '1':

system («cls»);

cout<<" 1) — Просмотреть данныеn" ;

view_file ();

break;

case '2':

system («cls»);

cout<<" 2) — Сортировать данныеn" ;

kol= schit ();

Sorting_Data ();

break;

case '3':

system («cls»);

cout<<" 3) — Поиск данныхn" ;

kol= schit ();

search_data ();

break;

case '4':

system («cls»);

cout<<" 4) — Фильтрацияn" ;

kol= schit ();

filtering ();

break;

case '5':

system («cls»);

done = TRUE;

Done=FALSE;

break;

case '6':

system («cls»);

done = TRUE;

Done=TRUE;

break;

default:

cout<<" Такого пункта нет! Вы ввели неправильный вариант, попробуйте ввести ещё раз n" ;

}

}

return 0; }

Блок-схема:

Функция редактирования данных Листинг программного кода:

Int editing_Data ()

{

int done = FALSE;

int h, j=0;

view_file ();

int Number;

cout<<" Введите номер поляn" ;

cin>> Number;

for (i=0;i

{

if (Number == i+1)

{

h=i;

printf («%-10s%-10s%-15s%-10s%-10s%-10s%-10s%n» ," Фамилия" ," Имя" ," Отчество" ," Возраст" ," Стаж" ," И.к." ," Нач. пенсия");

printf («%d.%-10s%-10s%-15s%-10d%-10d %-10.2f%-10d%n», i+1,A[i]. Man. surname, A[i].Man.name, A[i].Man.patronymic, A[i].Man.age, A[i].Pension.experience, A[i].Pension.individual_coefficient, A[i].Pension.pension);

j++;

}

}

if (j==0)

{cout<<" Такого поля нетn" ;}

else

{

while (!done)

{

cout<<" По каким полям будет осуществлено редактирование? n" ;

cout<<" 1) Всеn" ;

cout<<" 2) Фамилияn" ;

cout<<" 3) Возрастn" ;

cout<<" 4) Индивидуальный коэффициентn" ;

cout<<" 5) Стажn" ;

cout<<" Ваш выбор: n" ;

switch (_getch ())

{

case '1' :

while (!done)

{

cout<<" 1) Мужчинаn" ;

cout<<" 2) Женщинаn" ;

cout<<" Ваш выбор: n" ;

switch (_getch ())

{

case '1':

Main.Man.gender=25;done=TRUE;

break;

case '2':

Main.Man.gender=20;; done=TRUE;

break;

default:

cout<<" Такого пункта нет! Вы ввели неправильный вариант, попробуйте ввести ещё раз n" ;

}

}

done = FALSE;

cout<<" Введите фамилиюn" ;

cin>> K.Man.surname;

cout<<" Введите имяn" ;

cin>> K.Man.name;

cout<<" Введите отчествоn" ;

cin>> K.Man.patronymic;

cout<<" Введите возрастn" ;

cin>>K.Man.age;

cout<<" Введите кол-во лет стажаn" ;

cin>>K.Pension.experience;

cout<<" Введите индивидуальный коэффициентn" ;

cin>>K.Pension.individual_coefficient;

Main.Man.gender = K.Man.gender;

Main.Pension.individual_coefficient = K.Pension.individual_coefficient;

Main. Pension. experience=K.Pension.experience;

K.Pension.pension = calculation_of_pensions (Main);

cout <<" Пенсия = «<<» n" ;

if (!(File = fopen («Data.dat», «w+b»)))

{

cout<<" Невозможно создать файлn" ;

return 0;

}

for (i=0;i

{

if (i≠h)

{

fwrite (&A[i], 1, sizeof (A[i]), File);

}

else

{

fwrite (&K, 1, sizeof (K), File);

}

}

cout<<" Данные перезаписаны в файлn" ;

fclose (File);

view_file ();

break;

case '2':

cout<<" Введите фамилиюn" ;

cin>> K.Man.surname;

strcpy (A[h]. Man. surname, K.Man.surname);

if (!(File = fopen («Data.dat», «w+b»)))

{

cout<<" Невозможно создать файлn" ;

return 0;

}

for (i=0;i

{

fwrite (&A[i], 1, sizeof (A[i]), File);

}

cout<<" Данные перезаписаны в файлn" ;

fclose (File);

view_file ();

done=TRUE;

break;

case '3':

cout<<" Введите возрастn" ;

cin>>K.Man.age;

A[h]. Man. age=K.Man.age;

if (!(File = fopen («Data.dat», «w+b»)))

{

cout<<" Невозможно создать файлn" ;

return 0;

}

for (i=0;i

{

fwrite (&A[i], 1, sizeof (A[i]), File);

}

cout<<" Данные перезаписаны в файлn" ;

fclose (File);

view_file ();

done=TRUE;

break;

case '4':

cout<<" Введите индивидуальный коэффициентn" ;

cin>>K.Pension.individual_coefficient;

A[h]. Pension. individual_coefficient=K.Pension.individual_coefficient;

Main.Man.gender = A[h]. Man. gender;

Main.Pension.individual_coefficient = A[h]. Pension. individual_coefficient;

Main. Pension. experience=A[h]. Pension. experience;

A[h].Pension.pension = calculation_of_pensions (Main);

cout <<" Пенсия = «<<<» n";

if (!(File = fopen («Data.dat», «w+b»)))

{

cout<<" Невозможно создать файлn" ;

return 0;

}

for (i=0;i

{

fwrite (&A[i], 1, sizeof (A[i]), File);

}

cout<<" Данные перезаписаны в файлn" ;

fclose (File);

view_file ();

done=TRUE;

break;

case '5':

cout<<" Введите кол-во лет стажаn" ;

cin>>K.Pension.experience;

A[h]. Pension. experience=K.Pension.experience;

Main.Man.gender = A[h]. Man. gender;

Main.Pension.individual_coefficient = A[h]. Pension. individual_coefficient;

Main. Pension. experience=A[h]. Pension. experience;

A[h].Pension.pension = calculation_of_pensions (Main);

cout <<" Пенсия = «<

<<" n";

if (!(File = fopen («Data.dat», «w+b»)))

{

cout<<" Невозможно создать файлn" ;

return 0;

}

for (i=0;i

{

fwrite (&A[i], 1, sizeof (A[i]), File);

}

cout<<" Данные перезаписаны в файлn" ;

fclose (File);

view_file ();

done=TRUE;

break;

default:

cout<<" Такого пункта нет! Вы ввели неправильный вариант, попробуйте ввести ещё раз n" ;

}}

}

return 0;

}

алгоритм данные администратор пользователь Блок-схема Функция поиска данных Листинг программного кода:

int search_data ()

{

int done = FALSE;

char Surname[30];

char Name[30];

char Patronymic [30];

int k=0,h, y;

int j=0;

view_file ();

cout<<" По каким данным будет осуществлён поиск? n" ;

while (!done)

{

cout<< «1)Фамилияn» ;

cout<< «2)Имяn» ;

cout<< «3)Отчествоn» ;

cout<< «4)Фамилии, имени, отчествуn» ;

switch (_getch ())

{

case '1':

cout<<" Введите фамилию «;

cin>>Surname; k=strlen (Surname);

for (i=0;i

{

if (!strnicmp (Surname, A[i]. Man. surname, k))

{

if (j==0)

{

printf («%-10s%-10s%-15s%-10s%-10s%-10s%-10s%n» ," Фамилия" ," Имя" ," Отчество" ," Возраст" ," Стаж" ," И.к." ," Нач. пенсия");j++;

}

printf («%d.%-10s%-10s%-15s%-10d%-10d %-10.2f%-10d%n», i+1,A[i]. Man. surname, A[i].Man.name, A[i].Man.patronymic, A[i].Man.age, A[i].Pension.experience, A[i].Pension.individual_coefficient, A[i].Pension.pension);

}

}

if (j==0)

{cout<<" Такого поля нетn" ;}

done=TRUE;

break;

case '2':

cout<<" Введите имя «;

cin>>Name; h=strlen (Surname);

for (i=0;i

{

if (!strnicmp (Name, A[i]. Man.name, h))

{

if (j==0)

{

printf («%-10s%-10s%-15s%-10s%-10s%-10s%-10s%n» ," Фамилия" ," Имя" ," Отчество" ," Возраст" ," Стаж" ," И.к." ," Нач. пенсия");j++;

}

printf («%d.%-10s%-10s%-15s%-10d%-10d %-10.2f%-10d%n», i+1,A[i]. Man. surname, A[i].Man.name, A[i].Man.patronymic, A[i].Man.age, A[i].Pension.experience, A[i].Pension.individual_coefficient, A[i].Pension.pension);

}

}

if (j==0)

{cout<<" Такого поля нетn" ;}

done=TRUE;

break;

case '3':

cout<<" Введите отчество «;

cin>>Patronymic; y=strlen (Surname);

for (i=0;i

{

if (!strnicmp (Patronymic, A[i]. Man. patronymic, y))

{

if (j==0)

{

printf («%-10s%-10s%-15s%-10s%-10s%-10s%-10s%n» ," Фамилия" ," Имя" ," Отчество" ," Возраст" ," Стаж" ," И.к." ," Нач. пенсия");j++;

}

printf («%d.%-10s%-10s%-15s%-10d%-10d %-10.2f%-10d%n», i+1,A[i]. Man. surname, A[i].Man.name, A[i].Man.patronymic, A[i].Man.age, A[i].Pension.experience, A[i].Pension.individual_coefficient, A[i].Pension.pension);

}

}

if (j==0)

{cout<<" Такого поля нетn" ;}

done=TRUE;

break;

case '4':

cout<<" Введите фамилию «;

cin>>Surname; k=strlen (Surname);

cout<<" Введите имя «;

cin>>Name; h=strlen (Surname);

cout<<" Введите отчество «;

cin>>Patronymic; y=strlen (Surname);

for (i=0;i

{

if (!strnicmp (Surname, A[i]. Man. surname, k)&&!strnicmp (Name, A[i].Man.name, h)&&!strnicmp (Patronymic, A[i].Man.patronymic, y))

{

if (j==0)

{

printf («%-10s%-10s%-15s%-10s%-10s%-10s%-10s%n» ," Фамилия" ," Имя" ," Отчество" ," Возраст" ," Стаж" ," И.к." ," Нач. пенсия");j++;

}

printf («%d.%-10s%-10s%-15s%-10d%-10d %-10.2f%-10d%n», i+1,A[i]. Man. surname, A[i].Man.name, A[i].Man.patronymic, A[i].Man.age, A[i].Pension.experience, A[i].Pension.individual_coefficient, A[i].Pension.pension);

}

}

if (j==0)

{cout<<" Такого поля нетn" ;}

done=TRUE;

break;

default:

cout<<" Такого пункта нет! Вы ввели неправильный вариант, попробуйте ввести ещё раз n" ;

}}

return 0;

}

Блок-схема:

5. ОПИСАНИЕ ПРОГРАММЫ Данная программа начинается с меню первого уровня (Рисунок 5.1).

Рисунок 5.1 — Меню первого порядка Далее надо выбрать каким образом вы будете входить в программу. Для начала рассмотрим вход под администратором. Для входа надо ввести для начала логин и пароль. Если логин или пароль будет введён не верно, то появиться сообщение об ошибке (Рисунок 5.2).

Рисунок 5.2 — Неверный ввод пароля или логина Вам будет предоставлен выбор: повторить попытку, вернуться в меню первого порядка или выйти из программы.

Мы повторим попытку, и после ввода правильного пароля мы войдём в меню администратора (Рисунок 5.3).

Рисунок 5.3 — Меню администратора В данном меню нам предоставляется выбор из десяти пунктов, восемь из которых это выполняемые функции.

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

Это функция просмотра данных находящихся в файле (Рисунок 5.4).

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

Следуем дальше, нажмём клавишу два. После нажатия клавиши у нас сразу же спрашивается «какое количество данных будет введено?». Количество введённых данных зависит от выбора пользователя. Введём цифру один. Далее происходи запрос пола человека (мужчина, женщина).

Данный запрос важен, он поможет рассчитать далее пенсию. Введём значение «женщина». У нас будут запрошены основные данные о человеке: ФИО, количество полных лет, стаж работы и индивидуальный коэффициент.

После введения этих данных будет выведена на экран рассчитанная пенсия человека (Рисунок 5.5):

Рисунок 5.5 — Успешный расчёт пенсии После расчёта пенсии данные автоматически записываются в файл с данными. И опять же мы вернёмся в меню администратора.

Что ж пойдём дальше у нас по счёту третья функция — удаление дынных. Удаление данных осуществляется по номеру выбранного вами поля.

Для удобства перед удалением на экран выводятся все данные из файла (Рисунок 5.6).

Рисунок 5.6 — Удаление данных из файла по номеру поля Мы выбрали номер шесть, и вот, что у нас вышло (Рисунок 5.7):

Рисунок 5.7 — Успешное удаление данных из файла Двинемся дальше, следующая функция под номером четыре — сортировка данных. Сортировку данных мы можем произвести по пяти представленным пунктам. Далее после выбора пункта следует определить по возрастанию или по убыванию будет осуществлена сортировка (Рисунок 5.8).

Рисунок 5.8 — Сортировка данных по фамилии в возрастающем порядке После сортировки данные перезаписываются в файл.

Далее функция под номером пять — редактирование. Для начала надо ввести номер поля, которое мы собрались редактировать. Далее выбрать один из пяти вариантов (Рисунок 5.9).

Рисунок 5.9 — Редактирование данных по одному из столбцов.

Далее следует поиск данных. Как видно здесь мы сможем искать по одной из четырёх характеристик. Независимо от регистра. (Рисунок 5.10).

Рисунок 5.10 — Поиск данных по полной фамилии.

Так же мы можем и осуществить поиск лишь по фрагменту (букве или части слова) (Рисунок 5.11).

Рисунок 5.11 — Поиск и вывод на экран всех полей с фамилиями на «к»

Следующая функция фильтрация — мы можем отфильтровать от определённого «Х» до определённого «У» по девяти категориям.

Рисунок 5.12 — категории фильтрации После выбора категории мы должны ввести «Х» и «У». (Рисунок 5.12)

Рисунок 5.13 -Фильтрация по возрасту от пятидесяти до шестидесяти лет Следующая восьмая функция изменения логина и пароля, она достаточно проста, мы можем изменить как логин и пароль одновременно, так и по отдельности. (Рисунок 5.13)

Рисунок 5.14 — Категории изменения логина и пароля Девятая и десятая функции — это функции выхода в меню первого уровня и из программы соответственно.

Далее перейдём к пользователю, здесь нет практически никаких отличий от администраторских введений логина и пароля (Рисунок 5.14)

Рисунок 5.15 -Ввод логина и пароля для пользователя Меню пользователя отличается лишь количеством категорий, здесь их меньше всего семь (Рисунок 5.15)

Рисунок 5.16 — Меню пользователя ЗАКЛЮЧЕНИЕ Компьютеры проникли во все сферы деятельности человека, начиная с начального образования и заканчивая изучением новейших технологий, изучения новых видов материи, неизвестных пока человечеству. Применение компьютерных технологий облегчает процесс образования в средних и высших учебных заведениях, как самих учеников, студентов, так и рабочего персонала.

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

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

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Герберт Шилдт. Базавый курс С++: третье изданиеОсборн, 2013

2. Дейтел Х. Как программировать на С++. Х. Дейтел, П. Дейтел.1005с.

3. Керниган, Д. Ритчи. — Вильямс, 2013. — 304 с.

ПРИЛОЖЕНИЕ A

Листинг программного кода

#include

#include

#include

#include

#include

#include

#include

#include

#define FALSE 0

#define TRUE 1

using namespace std;

const int average_salary = 6 023 213;

struct main

{

struct Man

{

char surname[30];

char name[30];

char patronymic [30];

int age;

int gender;

} Man;

struct Pension

{

int experience;

float individual_coefficient;

int pension;

} Pension;

} Main;

int i;

int kol;

FILE *File;

struct main A[1000];

struct main a[1000];

struct main K;

struct main k;

int Done;

int menu_Admin ();

int code_Admin ();

int editing_code_Admin ();

int menu_User ();

int code_User ();

int editing_code_User ();

int Add_in_File ();

int view_file ();

int calculation_of_pensions (struct main Main);

int schit ();

int deleting_Data ();

int search_data ();

int Sorting_Data ();

int editing_Data ();

int filtering ();

int main ()

{

Done = FALSE;

system («color F0»);

setlocale (0, «russian»);

SetConsoleCP (1251);

SetConsoleOutputCP (1251);

cout<<" Вход: n" ;

while (!Done)

{

cout<<" 1) Администраторn" ;

cout<<" 2) Пользовательn" ;

cout<<" 3) Выходn" ;

cout<<" Ваш выбор: n" ;

switch (_getch ())

{

case '1':

code_Admin ();

break;

case '2':

code_User ();

break;

case '3':

Done=TRUE;

break;

default:

cout<<" Такого пункта нет! Вы ввели неправильный вариант, попробуйте ввести ещё раз n" ;

}

}

}

int calculation_of_pensions (struct main Main)

{

int Sum=0;

float a= 0.9;

int records[9];

int i;

int time_values;

int values;

int Salary_in_our_time;

time_values = (average_salary*130)/100;

time_values = time_values/10; // создание массива с расчётом пропорции состоящей из средней зарплаты * 130%

for (a=1,i=0;a>0,i<9;a=a-0.1,i++)

{

time_values = time_values*a;

records[i]=time_values;

time_values = records[0];

}

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

Salary_in_our_time =Main.Pension.individual_coefficient*average_salary;

values=Salary_in_our_time — average_salary;

values=values*0.1;// переведя зарплату на данный момент, мы берём 10% от её

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

{

Sum=Sum+records[i];

}

Sum=Sum+values;// сумма массива с пропорциями с 10% от зарплаты

Main.Man.gender =Main. Pension.experienceMain.Man.gender;// умножение полученной суммы на разность стажа с определённым значение зависящим от пола

a = (Main.Man.gender+55);

a=a/100;

Main.Pension.pension = Sum * a;

return Main.Pension.pension;

}

int schit ()

{

i=0;

if (!(File=fopen («Data.dat», «r+b»)))

printf («Невозможно открыть файлn»);

else

{

fseek (File, 0,0);

fread (&Main, sizeof (Main), 1, File);

while (!(feof (File)))

{

A[i]=Main;

i++;

fread (&Main, sizeof (Main), 1, File);

}

}

return i;

}

.ur

Показать весь текст
Заполнить форму текущей работой