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

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 28.05.2015
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

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

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<kol;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 <<"Пенсия = "<<K.Pension.pension<<"\n";

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

{

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

return 0;

}

for(i=0;i<kol;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<kol;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<kol;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 <<"Пенсия = "<<A[h].Pension.pension<<"\n";

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

{

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

return 0;

}

for(i=0;i<kol;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 <<"Пенсия = "<<A[h].Pension.pension<<"\n";

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

{

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

return 0;

}

for(i=0;i<kol;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<kol;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<kol;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<kol;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<kol;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<iostream>

#include<locale.h>

#include <stdio.h>

#include <stdlib.h>

#include <ctype.h>

#include <conio.h>

#include <string>

#include <windows.h>

#define FALSE 0

#define TRUE 1

using namespace std;

const int average_salary = 6023213;

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.experience -Main.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;

}

Размещено на Allbest.ur


Подобные документы

  • Технология разработки пользовательского интерфейса в среде Delphi. Создание таблицы, меню, форм для ввода и редактирования данных. Принципы организации меню как элемента интерфейса пользователя. Реализация сортировки, фильтрации, вычислений в таблице.

    курсовая работа [1,6 M], добавлен 13.11.2012

  • Словесное описание предметной области. Построение схемы функциональных зависимостей. Реализация базы данных средствами утилиты Enterprise Manager в формате SQL Server Management Studio. Разработка алгоритмов работы программы и приложения пользователя.

    дипломная работа [1,8 M], добавлен 26.03.2015

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

    контрольная работа [290,6 K], добавлен 17.07.2012

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

    курсовая работа [537,9 K], добавлен 28.06.2011

  • Изучение условий поставленной задачи и используемых данных для разработки программы хранения информации о рейсах поезда. Описание разработанных функций, листинга, блок-схем алгоритмов и дерева функции. Рассмотрение сценария диалога данной программы.

    курсовая работа [532,7 K], добавлен 20.07.2014

  • Принципы работы клавиатуры как физического устройства. Архитектура "интерактивных устройств ввода". Разработка программного приложения, выполняющего мониторинг активности пользователя на языке Borland Delphi 7. Назначение, функции и структура приложения.

    курсовая работа [376,9 K], добавлен 18.07.2014

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

    курсовая работа [1,2 M], добавлен 07.07.2012

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

    курсовая работа [380,9 K], добавлен 06.04.2015

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

    курсовая работа [1,3 M], добавлен 11.03.2014

  • Назначение базы данных для обеспечения работы автобусного парка. Основные возможности админпанели. Выполняемые базой данных и приложением функции. Инфологическое моделирование данных. Описание разработанного web-приложения. Проектирование базы данных.

    курсовая работа [2,2 M], добавлен 01.02.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.